@floor/vlist 0.5.1 → 0.5.2

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.
@@ -1 +1 @@
1
- var{defineProperty:n,getOwnPropertyNames:Pj,getOwnPropertyDescriptor:Oj}=Object,Gj=Object.prototype.hasOwnProperty;var Nj=new WeakMap,Lj=(Q)=>{var Z=Nj.get(Q),j;if(Z)return Z;if(Z=n({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")Pj(Q).map((J)=>!Gj.call(Z,J)&&n(Z,J,{get:()=>Q[J],enumerable:!(j=Oj(Q,J))||j.enumerable}));return Nj.set(Q,Z),Z};var wj=(Q,Z)=>{for(var j in Z)n(Q,j,{get:Z[j],enumerable:!0,configurable:!0,set:(J)=>Z[j]=()=>J})};var Kj=(Q,Z)=>()=>(Q&&(Z=Q(Q=0)),Z);var d=(Q)=>{return Q!==null&&typeof Q==="object"&&Q.__groupHeader===!0};var Wj=(Q,Z,j)=>{if(j===0)return 0;if(!Q.isVariable())return Math.floor(Z/Q.getHeight(0));let J=0,$=0;for(let q=j-1;q>=0;q--){let X=Q.getHeight(q);if($+X>Z)break;$+=X,J++}return Math.max(J,1)},e=(Q,Z,j)=>{if(j===0)return 0;let J=Math.floor(Z),$=Z-J,q=Math.max(0,Math.min(J,j-1));return Q.getOffset(q)+$*Q.getHeight(q)};var qj=16000000;var Dj=(Q,Z)=>{let j=Z.getTotalHeight(),J=j>qj,$=J?qj:j,q=j>0?$/j:1;return{isCompressed:J,actualHeight:j,virtualHeight:$,ratio:q}},Uj=(Q,Z,j,J,$,q,X)=>{if(!q.isCompressed||J===0)return j.getOffset(Q);let{virtualHeight:E}=q,B=E-$,W=B-Z;if(W<=$&&W>=-1){if(Z>=B-1){let v=j.getTotalHeight()-j.getOffset(Q);return $-v}let Y=Wj(j,$,J),V=Math.max(0,J-Y),k=Z/E*J,P=Math.max(0,Math.min(1,1-W/$)),w=j.getOffset(Q)-j.getOffset(V),R=j.getOffset(Q)-e(j,k,J);return R+(w-R)*P}let L=Z/E*J;return j.getOffset(Q)-e(j,L,J)};var kj=()=>{};var zj={};wj(zj,{createGridRenderer:()=>bj});var Fj=(Q=200)=>{let Z=[];return{acquire:()=>{let q=Z.pop();if(q)return q;let X=document.createElement("div");return X.setAttribute("role","option"),X},release:(q)=>{if(Z.length<Q)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-row"),q.removeAttribute("data-col"),Z.push(q)},clear:()=>{Z.length=0}}},bj=(Q,Z,j,J,$,q,X,E)=>{let B=Fj(),W=new Map,G=q,L=!1,Y=null,V=0,z="",k=(N)=>{if(Y&&V===N)return Y;return Y=Dj(N,j),V=N,Y},P={selected:!1,focused:!1},w=(N,K)=>{return P.selected=N,P.focused=K,P},R=`${$}-item ${$}-grid-item`,v=`${$}-item--selected`,H=`${$}-item--focused`,C=(N,K)=>{if(typeof K==="string")N.innerHTML=K;else N.replaceChildren(K)},F=(N,K,D)=>{N.classList.toggle(v,K),N.classList.toggle(H,D)},M=(N,K)=>{let D=J.getRow(N);if(K){let O=K.totalItems,A=k(O);if(A.isCompressed)return Uj(D,K.scrollTop,j,O,K.containerHeight,A,K.rangeStart)}return j.getOffset(D)},b=(N,K,D)=>{let O=N.dataset.id?.startsWith("__group_header"),A=O?0:J.getCol(K),_=O?0:J.getColumnOffset(A,G),y;if(L){let p=J.getRow(K),U=0,I=new Set;for(let f=0;f<K;f++){let x=J.getRow(f);if(x<p&&!I.has(x)){let m=j.getHeight(f);U+=m,I.add(x)}}y=U}else y=M(K,D);N.style.transform=`translate(${Math.round(_)}px, ${Math.round(y)}px)`},S=(N,K)=>{let D=N.dataset.id?.startsWith("__group_header"),O=D?G:J.getColumnWidth(G),A;if(L||D)A=j.getHeight(K)-J.gap;else{let _=J.getRow(K);A=j.getHeight(_)-J.gap}N.style.width=`${O}px`,N.style.height=`${A}px`},h=(N,K,D,O,A)=>{let _=B.acquire(),y=w(D,O);if(_.className=R,_.dataset.index=String(N),_.dataset.id=String(K.id),_.dataset.row=String(J.getRow(N)),_.dataset.col=String(J.getCol(N)),_.ariaSelected=String(D),E)_.id=`${E}-item-${N}`;if(X)z=String(X()),_.setAttribute("aria-setsize",z),_.setAttribute("aria-posinset",String(N+1));S(_,N);let p=Z(K,N,y);return C(_,p),F(_,D,O),b(_,N,A),_},u=(N,K,D,O,A)=>{if(K.start===0&&N.length>0)L=d(N[0]);for(let[U,I]of W)if(U<K.start||U>K.end)I.element.remove(),B.release(I.element),W.delete(U);let _=!1;if(X){let U=String(X());_=U!==z,z=U}let y=document.createDocumentFragment(),p=[];for(let U=K.start;U<=K.end;U++){let I=U-K.start,f=N[I];if(!f){console.warn(`⚠️ RENDER: Missing item at index ${U} (range: ${K.start}-${K.end}, items.length: ${N.length})`);continue}let x=D.has(f.id),m=U===O,T=W.get(U);if(T){let l=T.element.dataset.id,$j=String(f.id);if(l!==$j){let Vj=w(x,m),Aj=Z(f,U,Vj);C(T.element,Aj),T.element.dataset.id=$j,T.element.dataset.row=String(J.getRow(U)),T.element.dataset.col=String(J.getCol(U)),S(T.element,U)}if(F(T.element,x,m),T.element.ariaSelected=String(x),b(T.element,U,A),_)T.element.setAttribute("aria-setsize",z)}else{let l=h(U,f,x,m,A);y.appendChild(l),p.push({index:U,element:l})}}if(p.length>0){Q.appendChild(y);for(let{index:U,element:I}of p)W.set(U,{index:U,element:I})}},Qj=(N)=>{for(let[K,D]of W)b(D.element,K,N)},a=(N,K,D,O)=>{let A=W.get(N);if(A){let _=w(D,O),y=Z(K,N,_);C(A.element,y),F(A.element,D,O),A.element.dataset.id=String(K.id),A.element.ariaSelected=String(D),S(A.element,N)}},c=(N,K,D)=>{let O=W.get(N);if(O)F(O.element,K,D)},_j=(N)=>{return W.get(N)?.element},Ej=(N)=>{if(Math.abs(N-G)<1)return;G=N;for(let[K,D]of W)S(D.element,K),b(D.element,K)},Zj=()=>{for(let[,N]of W)N.element.remove(),B.release(N.element);W.clear()};return{render:u,updatePositions:Qj,updateItem:a,updateItemClasses:c,getElement:_j,updateContainerWidth:Ej,clear:Zj,destroy:()=>{Zj(),B.clear()}}};var Bj=Kj(()=>{kj()});var o=(Q,Z)=>{let j=0,J=Q.length-1;while(j<J){let $=j+J+1>>>1;if(Q[$].headerLayoutIndex<=Z)j=$;else J=$-1}return j},Xj=(Q,Z)=>{let j=0,J=Q.length-1;while(j<J){let $=j+J+1>>>1;if(Q[$].firstDataIndex<=Z)j=$;else J=$-1}return j},Yj=(Q,Z)=>{if(Q===0)return[];let j=[],J=Z(0),$=0,q=0;for(let X=1;X<Q;X++){let E=Z(X);if(E!==J){let B=X-$;j.push({key:J,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:$,count:B}),q=q+1+B,J=E,$=X}}return j.push({key:J,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:$,count:Q-$}),j},r=(Q,Z)=>{if(Q.length===0||Z.length===0)return[];let j=Q.length+Z.length,J=Array(j),$=0;for(let q of Z){J[$]={id:`__group_header_${q.groupIndex}`,__groupHeader:!0,groupKey:q.key,groupIndex:q.groupIndex},$++;for(let X=0;X<q.count;X++)J[$]=Q[q.firstDataIndex+X],$++}return J},s=(Q,Z)=>{let j=typeof Z==="number"?(J)=>Z:Z;return(J)=>{let $=Q.getEntry(J);if($.type==="header")return Q.getHeaderHeight($.group.groupIndex);return j($.dataIndex)}},i=(Q,Z)=>{let j=Yj(Q,Z.getGroupForIndex),J=Q+j.length,$=Z.headerHeight;return{get totalEntries(){return J},get groupCount(){return j.length},get groups(){return j},getEntry:(Y)=>{if(j.length===0)return{type:"item",dataIndex:Y,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let V=o(j,Y),z=j[V];if(Y===z.headerLayoutIndex)return{type:"header",group:z};let k=Y-z.headerLayoutIndex-1;return{type:"item",dataIndex:z.firstDataIndex+k,group:z}},layoutToDataIndex:(Y)=>{if(j.length===0)return Y;let V=o(j,Y),z=j[V];if(Y===z.headerLayoutIndex)return-1;let k=Y-z.headerLayoutIndex-1;return z.firstDataIndex+k},dataToLayoutIndex:(Y)=>{if(j.length===0)return Y;let V=Xj(j,Y),z=j[V],k=Y-z.firstDataIndex;return z.headerLayoutIndex+1+k},getGroupAtLayoutIndex:(Y)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let V=o(j,Y);return j[V]},getGroupAtDataIndex:(Y)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let V=Xj(j,Y);return j[V]},getHeaderHeight:typeof $==="number"?(Y)=>$:(Y)=>{let V=j[Y];if(!V)return 0;return $(V.key,Y)},rebuild:(Y)=>{j=Yj(Y,Z.getGroupForIndex),J=Y+j.length}}};var t=(Q,Z,j,J,$)=>{let q=document.createElement("div");q.className=`${$}-sticky-header`,q.setAttribute("role","presentation"),q.setAttribute("aria-hidden","true"),q.style.position="absolute",q.style.top="0",q.style.left="0",q.style.right="0",q.style.zIndex="5",q.style.pointerEvents="none",q.style.willChange="transform",q.style.overflow="hidden",Q.insertBefore(q,Q.firstChild);let X=-1,E=!1,B=0,W=(k)=>{if(k===X)return;X=k;let P=Z.groups;if(k<0||k>=P.length){q.textContent="";return}let w=P[k],R=J.headerTemplate(w.key,w.groupIndex),v=Z.getHeaderHeight(k);if(q.style.height=`${v}px`,typeof R==="string")q.innerHTML=R;else q.replaceChildren(R)},G=(k)=>{let P=Z.groups;if(P.length===0){Y();return}let w=0;for(let F=P.length-1;F>=0;F--)if(j.getOffset(P[F].headerLayoutIndex)<=k){w=F;break}let R=j.getOffset(P[0].headerLayoutIndex);if(k<R){Y();return}if(!E)L();W(w);let v=Z.getHeaderHeight(w),H=0,C=w+1;if(C<P.length){let M=j.getOffset(P[C].headerLayoutIndex)-k;if(M<v)H=M-v}if(H!==B)B=H,q.style.transform=H===0?"":`translateY(${Math.round(H)}px)`},L=()=>{if(E)return;E=!0,q.style.display=""},Y=()=>{if(!E)return;E=!1,q.style.display="none",X=-1,B=0,q.style.transform=""},V=()=>{let k=X;if(X=-1,k>=0)W(k)},z=()=>{q.remove(),X=-1,E=!1};return q.style.display="none",{update:G,refresh:V,show:L,hide:Y,destroy:z}};var Mj=(Q,Z,j,J,$,q)=>{if(J===0)return 0;let X=Math.max(0,Math.min(Q,J-1)),E=Z.getOffset(X),B=Z.getHeight(X),W=Z.getTotalHeight(),G=Math.max(0,W-j),L;switch(q){case"center":L=E-j/2+B/2;break;case"end":L=E-j+B;break;case"start":default:L=E;break}return Math.max(0,Math.min(L,G))};var jj=(Q,Z,j,J,$="start",q,X=Mj)=>{return X(Q,Z,j,J,q,$)};var Rj=(Q)=>{if(!Q.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(Q.headerHeight==null||Q.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!Q.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let Z=null,j=null,J=[],$=[];return{name:"withGroups",priority:10,setup(q){let{dom:X,emitter:E,config:B,rawConfig:W}=q,{classPrefix:G}=B;if(B.horizontal)throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withGroups cannot be used with reverse: true");let Y=W.item.height;J=W.items?[...W.items]:[];let V=J.length,z={getGroupForIndex:Q.getGroupForIndex,headerHeight:Q.headerHeight,headerTemplate:Q.headerTemplate,sticky:Q.sticky};Z=i(V,z),$=r(J,Z.groups);let k=s(Z,Y);q.setHeightConfig(k),q.rebuildHeightCache($.length),q.dataManager.setItems($,0,$.length);let P=W.item.template,{headerTemplate:w}=Q,R=(M,b,S)=>{if(d(M))return w(M.groupKey,M.groupIndex);return P(M,b,S)},v=q.methods.get("_getGridLayout"),H=q.methods.get("_replaceGridRenderer"),C=q.methods.get("_updateGridLayoutForGroups");if(v&&H){if(C)C((h)=>{let u=$[h];return u&&d(u)});let{createGridRenderer:M}=(Bj(),Lj(zj)),b=v(),S=M(X.items,R,q.heightCache,b,G,q.getContainerWidth(),()=>q.dataManager.getTotal(),B.ariaIdPrefix);H(S)}else q.replaceTemplate(R);if(X.root.classList.add(`${G}--grouped`),Q.sticky!==!1){j=t(X.root,Z,q.heightCache,z,G);let M=j;q.afterScroll.push((b,S)=>{M.update(b)}),j.update(q.scrollController.getScrollTop())}let F=()=>{if(!Z)return;Z.rebuild(J.length),$=r(J,Z.groups);let M=s(Z,Y);if(q.setHeightConfig(M),q.rebuildHeightCache($.length),q.dataManager.setItems($,0,$.length),j)j.refresh()};q.methods.set("setItems",(M)=>{J=[...M],F()}),q.methods.set("appendItems",(M)=>{J=[...J,...M],F()}),q.methods.set("prependItems",(M)=>{J=[...M,...J],F()}),q.methods.set("removeItem",(M)=>{J=J.filter((b)=>b.id!==M),F()}),q.methods.set("scrollToIndex",(M,b)=>{let S=Z.dataToLayoutIndex(M),{align:h,behavior:u,duration:Qj}=vj(b),a=q.dataManager.getTotal(),c=jj(S,q.heightCache,q.state.viewportState.containerHeight,a,h,q.getCachedCompression());if(u==="smooth")q.scrollController.scrollTo(c);else q.scrollController.scrollTo(c)}),q.methods.set("_getItems",()=>J),q.methods.set("_getTotal",()=>J.length),q.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;X.root.classList.remove(`${G}--grouped`)})},destroy(){if(j)j.destroy(),j=null}}},Jj=300,vj=(Q)=>{if(typeof Q==="string")return{align:Q,behavior:"auto",duration:Jj};if(Q&&typeof Q==="object")return{align:Q.align??"start",behavior:Q.behavior??"auto",duration:Q.duration??Jj};return{align:"start",behavior:"auto",duration:Jj}};export{Rj as withGroups,d as isGroupHeader,t as createStickyHeader,s as createGroupedHeightFn,i as createGroupLayout,r as buildLayoutItems};
1
+ var{defineProperty:a,getOwnPropertyNames:Pj,getOwnPropertyDescriptor:Oj}=Object,Gj=Object.prototype.hasOwnProperty;var Zj=new WeakMap,Lj=(Q)=>{var Z=Zj.get(Q),j;if(Z)return Z;if(Z=a({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")Pj(Q).map((J)=>!Gj.call(Z,J)&&a(Z,J,{get:()=>Q[J],enumerable:!(j=Oj(Q,J))||j.enumerable}));return Zj.set(Q,Z),Z};var wj=(Q,Z)=>{for(var j in Z)a(Q,j,{get:Z[j],enumerable:!0,configurable:!0,set:(J)=>Z[j]=()=>J})};var $j=(Q,Z)=>()=>(Q&&(Z=Q(Q=0)),Z);var d=(Q)=>{return Q!==null&&typeof Q==="object"&&Q.__groupHeader===!0};var Xj=(Q,Z,j)=>{if(j===0)return 0;if(!Q.isVariable())return Math.floor(Z/Q.getHeight(0));let J=0,$=0;for(let q=j-1;q>=0;q--){let X=Q.getHeight(q);if($+X>Z)break;$+=X,J++}return Math.max(J,1)},t=(Q,Z,j)=>{if(j===0)return 0;let J=Math.floor(Z),$=Z-J,q=Math.max(0,Math.min(J,j-1));return Q.getOffset(q)+$*Q.getHeight(q)};var jj=16000000;var Wj=(Q,Z)=>{let j=Z.getTotalHeight(),J=j>jj,$=J?jj:j,q=j>0?$/j:1;return{isCompressed:J,actualHeight:j,virtualHeight:$,ratio:q}},Mj=(Q,Z,j,J,$,q,X)=>{if(!q.isCompressed||J===0)return j.getOffset(Q);let{virtualHeight:M}=q,B=M-$,D=B-Z;if(D<=$&&D>=-1){if(Z>=B-1){let R=j.getTotalHeight()-j.getOffset(Q);return $-R}let Y=Xj(j,$,J),_=Math.max(0,J-Y),z=Z/M*J,P=Math.max(0,Math.min(1,1-D/$)),L=j.getOffset(Q)-j.getOffset(_),F=j.getOffset(Q)-t(j,z,J);return F+(L-F)*P}let G=Z/M*J;return j.getOffset(Q)-t(j,G,J)};var Dj=()=>{};var Uj={};wj(Uj,{createGridRenderer:()=>bj});var Fj=(Q=200)=>{let Z=[];return{acquire:()=>{let q=Z.pop();if(q)return q;let X=document.createElement("div");return X.setAttribute("role","option"),X},release:(q)=>{if(Z.length<Q)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-row"),q.removeAttribute("data-col"),Z.push(q)},clear:()=>{Z.length=0}}},bj=(Q,Z,j,J,$,q,X,M)=>{let B=Fj(),D=new Map,b=q,G=!1,Y=null,_=0,E="",z=(N)=>{if(Y&&_===N)return Y;return Y=Wj(N,j),_=N,Y},P={selected:!1,focused:!1},L=(N,K)=>{return P.selected=N,P.focused=K,P},F=`${$}-item ${$}-grid-item`,R=`${$}-item--selected`,H=`${$}-item--focused`,v=(N,K)=>{if(typeof K==="string")N.innerHTML=K;else N.replaceChildren(K)},W=(N,K,U)=>{N.classList.toggle(R,K),N.classList.toggle(H,U)},w=(N,K)=>{let U=J.getRow(N);if(K){let O=K.totalItems,A=z(O);if(A.isCompressed)return Mj(U,K.scrollTop,j,O,K.containerHeight,A,K.rangeStart)}return j.getOffset(U)},S=(N,K,U)=>{let O=N.dataset.id?.startsWith("__group_header"),A=O?0:J.getCol(K),V=O?0:J.getColumnOffset(A,b),y;if(G){let p=J.getRow(K),k=0,C=new Set;for(let f=0;f<K;f++){let x=J.getRow(f);if(x<p&&!C.has(x)){let h=j.getHeight(f);k+=h,C.add(x)}}y=k}else y=w(K,U);N.style.transform=`translate(${Math.round(V)}px, ${Math.round(y)}px)`},I=(N,K)=>{let U=N.dataset.id?.startsWith("__group_header"),O=U?b:J.getColumnWidth(b),A;if(G||U)A=j.getHeight(K)-J.gap;else{let V=J.getRow(K);A=j.getHeight(V)-J.gap}N.style.width=`${O}px`,N.style.height=`${A}px`},u=(N,K,U,O,A)=>{let V=B.acquire(),y=L(U,O);if(V.className=F,V.dataset.index=String(N),V.dataset.id=String(K.id),V.dataset.row=String(J.getRow(N)),V.dataset.col=String(J.getCol(N)),V.ariaSelected=String(U),M)V.id=`${M}-item-${N}`;if(X)E=String(X()),V.setAttribute("aria-setsize",E),V.setAttribute("aria-posinset",String(N+1));I(V,N);let p=Z(K,N,y);return v(V,p),W(V,U,O),S(V,N,A),V},s=(N,K,U,O,A)=>{if(K.start===0&&N.length>0)G=d(N[0]);for(let[k,C]of D)if(k<K.start||k>K.end)C.element.remove(),B.release(C.element),D.delete(k);let V=!1;if(X){let k=String(X());V=k!==E,E=k}let y=document.createDocumentFragment(),p=[];for(let k=K.start;k<=K.end;k++){let C=k-K.start,f=N[C];if(!f){console.warn(`⚠️ RENDER: Missing item at index ${k} (range: ${K.start}-${K.end}, items.length: ${N.length})`);continue}let x=U.has(f.id),h=k===O,T=D.get(k);if(T){let c=T.element.dataset.id,Qj=String(f.id);if(c!==Qj){let Vj=L(x,h),Aj=Z(f,k,Vj);v(T.element,Aj),T.element.dataset.id=Qj,T.element.dataset.row=String(J.getRow(k)),T.element.dataset.col=String(J.getCol(k)),I(T.element,k)}if(W(T.element,x,h),T.element.ariaSelected=String(x),S(T.element,k,A),V)T.element.setAttribute("aria-setsize",E)}else{let c=u(k,f,x,h,A);y.appendChild(c),p.push({index:k,element:c})}}if(p.length>0){Q.appendChild(y);for(let{index:k,element:C}of p)D.set(k,{index:k,element:C})}},g=(N)=>{for(let[K,U]of D)S(U.element,K,N)},zj=(N,K,U,O)=>{let A=D.get(N);if(A){let V=L(U,O),y=Z(K,N,V);v(A.element,y),W(A.element,U,O),A.element.dataset.id=String(K.id),A.element.ariaSelected=String(U),I(A.element,N)}},Bj=(N,K,U)=>{let O=D.get(N);if(O)W(O.element,K,U)},_j=(N)=>{return D.get(N)?.element},Ej=(N)=>{if(Math.abs(N-b)<1)return;b=N;for(let[K,U]of D)I(U.element,K),S(U.element,K)},Jj=()=>{for(let[,N]of D)N.element.remove(),B.release(N.element);D.clear()};return{render:s,updatePositions:g,updateItem:zj,updateItemClasses:Bj,getElement:_j,updateContainerWidth:Ej,clear:Jj,destroy:()=>{Jj(),B.clear()}}};var kj=$j(()=>{Dj()});var n=(Q,Z)=>{let j=0,J=Q.length-1;while(j<J){let $=j+J+1>>>1;if(Q[$].headerLayoutIndex<=Z)j=$;else J=$-1}return j},Nj=(Q,Z)=>{let j=0,J=Q.length-1;while(j<J){let $=j+J+1>>>1;if(Q[$].firstDataIndex<=Z)j=$;else J=$-1}return j},Kj=(Q,Z)=>{if(Q===0)return[];let j=[],J=Z(0),$=0,q=0;for(let X=1;X<Q;X++){let M=Z(X);if(M!==J){let B=X-$;j.push({key:J,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:$,count:B}),q=q+1+B,J=M,$=X}}return j.push({key:J,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:$,count:Q-$}),j},l=(Q,Z)=>{if(Q.length===0||Z.length===0)return[];let j=Q.length+Z.length,J=Array(j),$=0;for(let q of Z){J[$]={id:`__group_header_${q.groupIndex}`,__groupHeader:!0,groupKey:q.key,groupIndex:q.groupIndex},$++;for(let X=0;X<q.count;X++)J[$]=Q[q.firstDataIndex+X],$++}return J},r=(Q,Z)=>{let j=typeof Z==="number"?(J)=>Z:Z;return(J)=>{let $=Q.getEntry(J);if($.type==="header")return Q.getHeaderHeight($.group.groupIndex);return j($.dataIndex)}},o=(Q,Z)=>{let j=Kj(Q,Z.getGroupForIndex),J=Q+j.length,$=Z.headerHeight;return{get totalEntries(){return J},get groupCount(){return j.length},get groups(){return j},getEntry:(Y)=>{if(j.length===0)return{type:"item",dataIndex:Y,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let _=n(j,Y),E=j[_];if(Y===E.headerLayoutIndex)return{type:"header",group:E};let z=Y-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+z,group:E}},layoutToDataIndex:(Y)=>{if(j.length===0)return Y;let _=n(j,Y),E=j[_];if(Y===E.headerLayoutIndex)return-1;let z=Y-E.headerLayoutIndex-1;return E.firstDataIndex+z},dataToLayoutIndex:(Y)=>{if(j.length===0)return Y;let _=Nj(j,Y),E=j[_],z=Y-E.firstDataIndex;return E.headerLayoutIndex+1+z},getGroupAtLayoutIndex:(Y)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=n(j,Y);return j[_]},getGroupAtDataIndex:(Y)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=Nj(j,Y);return j[_]},getHeaderHeight:typeof $==="number"?(Y)=>$:(Y)=>{let _=j[Y];if(!_)return 0;return $(_.key,Y)},rebuild:(Y)=>{j=Kj(Y,Z.getGroupForIndex),J=Y+j.length}}};var i=(Q,Z,j,J,$)=>{let q=document.createElement("div");q.className=`${$}-sticky-header`,q.setAttribute("role","presentation"),q.setAttribute("aria-hidden","true"),q.style.position="absolute",q.style.top="0",q.style.left="0",q.style.right="0",q.style.zIndex="5",q.style.pointerEvents="none",q.style.willChange="transform",q.style.overflow="hidden",Q.insertBefore(q,Q.firstChild);let X=-1,M=!1,B=0,D=(z)=>{if(z===X)return;X=z;let P=Z.groups;if(z<0||z>=P.length){q.textContent="";return}let L=P[z],F=J.headerTemplate(L.key,L.groupIndex),R=Z.getHeaderHeight(z);if(q.style.height=`${R}px`,typeof F==="string")q.innerHTML=F;else q.replaceChildren(F)},b=(z)=>{let P=Z.groups;if(P.length===0){Y();return}let L=0;for(let W=P.length-1;W>=0;W--)if(j.getOffset(P[W].headerLayoutIndex)<=z){L=W;break}let F=j.getOffset(P[0].headerLayoutIndex);if(z<F){Y();return}if(!M)G();D(L);let R=Z.getHeaderHeight(L),H=0,v=L+1;if(v<P.length){let w=j.getOffset(P[v].headerLayoutIndex)-z;if(w<R)H=w-R}if(H!==B)B=H,q.style.transform=H===0?"":`translateY(${Math.round(H)}px)`},G=()=>{if(M)return;M=!0,q.style.display=""},Y=()=>{if(!M)return;M=!1,q.style.display="none",X=-1,B=0,q.style.transform=""},_=()=>{let z=X;if(X=-1,z>=0)D(z)},E=()=>{q.remove(),X=-1,M=!1};return q.style.display="none",{update:b,refresh:_,show:G,hide:Y,destroy:E}};var Yj=(Q,Z,j,J,$,q)=>{if(J===0)return 0;let X=Math.max(0,Math.min(Q,J-1)),M=Z.getOffset(X),B=Z.getHeight(X),D=Z.getTotalHeight(),b=Math.max(0,D-j),G;switch(q){case"center":G=M-j/2+B/2;break;case"end":G=M-j+B;break;case"start":default:G=M;break}return Math.max(0,Math.min(G,b))};var e=(Q,Z,j,J,$="start",q,X=Yj)=>{return X(Q,Z,j,J,q,$)};var Rj=(Q)=>{if(!Q.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(Q.headerHeight==null||Q.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!Q.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let Z=null,j=null,J=[],$=[];return{name:"withGroups",priority:10,setup(q){let{dom:X,config:M,rawConfig:B}=q,{classPrefix:D}=M;if(M.horizontal)throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(M.reverse)throw Error("[vlist/builder] withGroups cannot be used with reverse: true");let G=B.item.height;J=B.items?[...B.items]:[];let Y=J.length,_={getGroupForIndex:Q.getGroupForIndex,headerHeight:Q.headerHeight,headerTemplate:Q.headerTemplate,sticky:Q.sticky??!1};Z=o(Y,_),$=l(J,Z.groups);let E=r(Z,G);q.setHeightConfig(E),q.rebuildHeightCache($.length),q.dataManager.setItems($,0,$.length);let z=B.item.template,{headerTemplate:P}=Q,L=(W,w,S)=>{if(d(W))return P(W.groupKey,W.groupIndex);return z(W,w,S)},F=q.methods.get("_getGridLayout"),R=q.methods.get("_replaceGridRenderer"),H=q.methods.get("_updateGridLayoutForGroups");if(F&&R){if(H)H((I)=>{let u=$[I];return!!(u&&d(u))});let{createGridRenderer:W}=(kj(),Lj(Uj)),w=F(),S=W(X.items,L,q.heightCache,w,D,q.getContainerWidth(),()=>q.dataManager.getTotal(),M.ariaIdPrefix);R(S)}else q.replaceTemplate(L);if(X.root.classList.add(`${D}--grouped`),Q.sticky!==!1){j=i(X.root,Z,q.heightCache,{..._,sticky:_.sticky??!1},D);let W=j;q.afterScroll.push((w,S)=>{W.update(w)}),j.update(q.scrollController.getScrollTop())}let v=()=>{if(!Z)return;Z.rebuild(J.length),$=l(J,Z.groups);let W=r(Z,G);if(q.setHeightConfig(W),q.rebuildHeightCache($.length),q.dataManager.setItems($,0,$.length),j)j.refresh()};q.methods.set("setItems",(W)=>{J=[...W],v()}),q.methods.set("appendItems",(W)=>{J=[...J,...W],v()}),q.methods.set("prependItems",(W)=>{J=[...W,...J],v()}),q.methods.set("removeItem",(W)=>{J=J.filter((w)=>w.id!==W),v()}),q.methods.set("scrollToIndex",(W,w)=>{let S=Z.dataToLayoutIndex(W),{align:I,behavior:u}=vj(w),s=q.dataManager.getTotal(),g=e(S,q.heightCache,q.state.viewportState.containerHeight,s,I,q.getCachedCompression());if(u==="smooth")q.scrollController.scrollTo(g);else q.scrollController.scrollTo(g)}),q.methods.set("_getItems",()=>J),q.methods.set("_getTotal",()=>J.length),q.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;X.root.classList.remove(`${D}--grouped`)})},destroy(){if(j)j.destroy(),j=null}}},qj=300,vj=(Q)=>{if(typeof Q==="string")return{align:Q,behavior:"auto",duration:qj};if(Q&&typeof Q==="object")return{align:Q.align??"start",behavior:Q.behavior??"auto",duration:Q.duration??qj};return{align:"start",behavior:"auto",duration:qj}};export{Rj as withGroups,d as isGroupHeader,i as createStickyHeader,r as createGroupedHeightFn,o as createGroupLayout,l as buildLayoutItems};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:Gj,getOwnPropertyNames:xJ,getOwnPropertyDescriptor:hJ}=Object,mJ=Object.prototype.hasOwnProperty;var xj=new WeakMap,gJ=(j)=>{var $=xj.get(j),Q;if($)return $;if($=Gj({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")xJ(j).map((J)=>!mJ.call($,J)&&Gj($,J,{get:()=>j[J],enumerable:!(Q=hJ(j,J))||Q.enumerable}));return xj.set(j,$),$};var dJ=(j,$)=>{for(var Q in $)Gj(j,Q,{get:$[Q],enumerable:!0,configurable:!0,set:(J)=>$[Q]=()=>J})};var hj=(j,$)=>()=>(j&&($=j(j=0)),$);var Ej=200,I2=50,gj=15,dj=2,cj=50,L2=16000000;var X4=(j,$)=>{let Q=$;return{getOffset:(J)=>J*j,getHeight:(J)=>j,indexAtOffset:(J)=>{if(Q===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(J/j),Q-1))},getTotalHeight:()=>Q*j,getTotal:()=>Q,rebuild:(J)=>{Q=J},isVariable:()=>!1}},q4=(j,$)=>{let Q=$,J=new Float64Array(0),K=(q)=>{Q=q,J=new Float64Array(q+1),J[0]=0;for(let Z=0;Z<q;Z++)J[Z+1]=J[Z]+j(Z)};K($);let X=(q)=>{if(Q===0)return 0;if(q<=0)return 0;if(q>=J[Q])return Q-1;let Z=0,M=Q-1;while(Z<M){let U=Z+M+1>>>1;if(J[U]<=q)Z=U;else M=U-1}return Z};return{getOffset:(q)=>{if(q<=0)return 0;if(q>=Q)return J[Q];return J[q]},getHeight:(q)=>j(q),indexAtOffset:(q)=>X(q),getTotalHeight:()=>J[Q]??0,getTotal:()=>Q,rebuild:(q)=>K(q),isVariable:()=>!0}},lj=(j,$)=>{if(typeof j==="number")return X4(j,$);return q4(j,$)},Fj=(j,$,Q,J)=>{if(J===0)return 0;if(!j.isVariable())return Math.ceil(Q/j.getHeight(0));let K=0,X=0,q=$;while(q<J&&X<Q)X+=j.getHeight(q),K++,q++;return Math.max(1,K)},r2=(j,$,Q)=>{if(Q===0)return 0;if(!j.isVariable())return Math.floor($/j.getHeight(0));let J=0,K=0;for(let X=Q-1;X>=0;X--){let q=j.getHeight(X);if(K+q>$)break;K+=q,J++}return Math.max(J,1)},n2=(j,$,Q)=>{if(Q===0)return 0;let J=Math.floor($),K=$-J,X=Math.max(0,Math.min(J,Q-1));return j.getOffset(X)+K*j.getHeight(X)};var M2=(j,$)=>{let Q=$.getTotalHeight(),J=Q>L2,K=J?L2:Q,X=Q>0?K/Q:1;return{isCompressed:J,actualHeight:Q,virtualHeight:K,ratio:X}},o2=(j,$,Q,J,K,X)=>{if(J===0||$===0)return X.start=0,X.end=-1,X;if(!K.isCompressed){let N=Q.indexAtOffset(j),_=Q.indexAtOffset(j+$);if(_<J-1)_++;return X.start=Math.max(0,N),X.end=Math.min(J-1,Math.max(0,_)),X}let{virtualHeight:q}=K,M=j/q*J,U=Math.floor(M),D=Fj(Q,Math.max(0,U),$,J),F=Math.ceil(M)+D,b=q-$-j;if(b<=$&&b>=-1){let N=r2(Q,$,J),_=Math.max(0,J-N),W=Math.max(0,Math.min(1,1-b/$));U=Math.floor(U+(_-U)*W),F=b<=1?J-1:Math.min(J-1,U+D)}return X.start=Math.max(0,U),X.end=Math.min(J-1,Math.max(0,F)),X},sj=(j,$,Q,J)=>{if(Q===0)return J.start=0,J.end=-1,J;return J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$),J},H2=(j,$,Q,J,K,X,q)=>{if(!X.isCompressed||J===0)return Q.getOffset(j);let{virtualHeight:Z}=X,M=Z-K,U=M-$;if(U<=K&&U>=-1){if($>=M-1){let H=Q.getTotalHeight()-Q.getOffset(j);return K-H}let G=r2(Q,K,J),b=Math.max(0,J-G),_=$/Z*J,W=Math.max(0,Math.min(1,1-U/K)),A=Q.getOffset(j)-Q.getOffset(b),L=Q.getOffset(j)-n2(Q,_,J);return L+(A-L)*W}let F=$/Z*J;return Q.getOffset(j)-n2(Q,F,J)},i2=(j,$,Q,J,K,X="start")=>{if(J===0)return 0;let q;if(K.isCompressed){if(X==="end"&&j===J-1)return Math.max(0,K.virtualHeight-Q);q=j/J*K.virtualHeight}else q=$.getOffset(j);let Z=$.getHeight(j);switch(X){case"center":q-=(Q-Z)/2;break;case"end":q-=Q-Z;break}let M=K.virtualHeight-Q;return Math.max(0,Math.min(q,M))},aj=(j,$,Q,J)=>{if(Q===0)return 0;if(J.isCompressed){let K=j/J.virtualHeight;return Math.floor(K*Q)}return $.indexAtOffset(j)},rj=(j,$)=>{if(typeof $==="number")return j*$>L2;return $.getTotalHeight()>L2},nj=(j)=>{if(j<=0)return 0;return Math.floor(L2/j)},oj=(j,$)=>{let Q=M2(j,$);if(!Q.isCompressed)return`No compression needed (${j} items, ${(Q.actualHeight/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${j} items, ${(Q.actualHeight/1e6).toFixed(1)}M px → ${(Q.virtualHeight/1e6).toFixed(1)}M px virtual)`};var t2=()=>{};var b2=(j)=>{return j!==null&&typeof j==="object"&&j.__groupHeader===!0};var ij={};dJ(ij,{createGridRenderer:()=>p2});var K4=(j=200)=>{let $=[];return{acquire:()=>{let X=$.pop();if(X)return X;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(X)=>{if($.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"),$.push(X)},clear:()=>{$.length=0}}},p2=(j,$,Q,J,K,X,q,Z)=>{let M=K4(),U=new Map,D=X,F=!1,G=null,b=0,N="",_=(P)=>{if(G&&b===P)return G;return G=M2(P,Q),b=P,G},W={selected:!1,focused:!1},A=(P,C)=>{return W.selected=P,W.focused=C,W},L=`${K}-item ${K}-grid-item`,H=`${K}-item--selected`,R=`${K}-item--focused`,v=(P,C)=>{if(typeof C==="string")P.innerHTML=C;else P.replaceChildren(C)},B=(P,C,h)=>{P.classList.toggle(H,C),P.classList.toggle(R,h)},O=(P,C)=>{let h=J.getRow(P);if(C){let m=C.totalItems,a=_(m);if(a.isCompressed)return H2(h,C.scrollTop,Q,m,C.containerHeight,a,C.rangeStart)}return Q.getOffset(h)},V=(P,C,h)=>{let m=P.dataset.id?.startsWith("__group_header"),a=m?0:J.getCol(C),n=m?0:J.getColumnOffset(a,D),q2;if(F){let Z2=J.getRow(C),T=0,c=new Set;for(let x=0;x<C;x++){let J2=J.getRow(x);if(J2<Z2&&!c.has(J2)){let t=Q.getHeight(x);T+=t,c.add(J2)}}q2=T}else q2=O(C,h);P.style.transform=`translate(${Math.round(n)}px, ${Math.round(q2)}px)`},z=(P,C)=>{let h=P.dataset.id?.startsWith("__group_header"),m=h?D:J.getColumnWidth(D),a;if(F||h)a=Q.getHeight(C)-J.gap;else{let n=J.getRow(C);a=Q.getHeight(n)-J.gap}P.style.width=`${m}px`,P.style.height=`${a}px`},g=(P,C,h,m,a)=>{let n=M.acquire(),q2=A(h,m);if(n.className=L,n.dataset.index=String(P),n.dataset.id=String(C.id),n.dataset.row=String(J.getRow(P)),n.dataset.col=String(J.getCol(P)),n.ariaSelected=String(h),Z)n.id=`${Z}-item-${P}`;if(q)N=String(q()),n.setAttribute("aria-setsize",N),n.setAttribute("aria-posinset",String(P+1));z(n,P);let Z2=$(C,P,q2);return v(n,Z2),B(n,h,m),V(n,P,a),n},d=(P,C,h,m,a)=>{if(C.start===0&&P.length>0)F=b2(P[0]);for(let[T,c]of U)if(T<C.start||T>C.end)c.element.remove(),M.release(c.element),U.delete(T);let n=!1;if(q){let T=String(q());n=T!==N,N=T}let q2=document.createDocumentFragment(),Z2=[];for(let T=C.start;T<=C.end;T++){let c=T-C.start,x=P[c];if(!x){console.warn(`⚠️ RENDER: Missing item at index ${T} (range: ${C.start}-${C.end}, items.length: ${P.length})`);continue}let J2=h.has(x.id),t=T===m,Q2=U.get(T);if(Q2){let w=Q2.element.dataset.id,f=String(x.id);if(w!==f){let $2=A(J2,t),l=$(x,T,$2);v(Q2.element,l),Q2.element.dataset.id=f,Q2.element.dataset.row=String(J.getRow(T)),Q2.element.dataset.col=String(J.getCol(T)),z(Q2.element,T)}if(B(Q2.element,J2,t),Q2.element.ariaSelected=String(J2),V(Q2.element,T,a),n)Q2.element.setAttribute("aria-setsize",N)}else{let w=g(T,x,J2,t,a);q2.appendChild(w),Z2.push({index:T,element:w})}}if(Z2.length>0){j.appendChild(q2);for(let{index:T,element:c}of Z2)U.set(T,{index:T,element:c})}},s=(P)=>{for(let[C,h]of U)V(h.element,C,P)},j2=(P,C,h,m)=>{let a=U.get(P);if(a){let n=A(h,m),q2=$(C,P,n);v(a.element,q2),B(a.element,h,m),a.element.dataset.id=String(C.id),a.element.ariaSelected=String(h),z(a.element,P)}},i=(P,C,h)=>{let m=U.get(P);if(m)B(m.element,C,h)},k=(P)=>{return U.get(P)?.element},S=(P)=>{if(Math.abs(P-D)<1)return;D=P;for(let[C,h]of U)z(h.element,C),V(h.element,C)},p=()=>{for(let[,P]of U)P.element.remove(),M.release(P.element);U.clear()};return{render:d,updatePositions:s,updateItem:j2,updateItemClasses:i,getElement:k,updateContainerWidth:S,clear:p,destroy:()=>{p(),M.clear()}}};var e2=hj(()=>{t2()});var cJ=0,y2=5,lJ=100,Mj=2,sJ=(j=0)=>{let $=Array(y2);for(let Q=0;Q<y2;Q++)$[Q]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:$,sampleIndex:0,sampleCount:0}},aJ=(j,$)=>{let Q=performance.now(),J=Q-j.lastTime;if(J===0)return j;if(J>lJ){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=$,X.time=Q,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=$,j.lastTime=Q,j}let K=j.samples[j.sampleIndex];if(K.position=$,K.time=Q,j.sampleIndex=(j.sampleIndex+1)%y2,j.sampleCount=Math.min(j.sampleCount+1,y2),j.sampleCount>=Mj){let X=(j.sampleIndex-j.sampleCount+y2)%y2,q=j.samples[X],Z=$-q.position,M=Q-q.time;j.velocity=M>0?Math.abs(Z)/M:0}return j.lastPosition=$,j.lastTime=Q,j},mj=(j,$)=>{if(typeof j==="number"){let X=$;return{getOffset:(q)=>q*j,getHeight:()=>j,indexAtOffset:(q)=>{if(X===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(q/j),X-1))},getTotalHeight:()=>X*j,getTotal:()=>X,rebuild:(q)=>{X=q},isVariable:()=>!1}}let Q=$,J=new Float64Array(0),K=(X)=>{Q=X,J=new Float64Array(X+1),J[0]=0;for(let q=0;q<X;q++)J[q+1]=J[q]+j(q)};return K($),{getOffset:(X)=>{if(X<=0)return 0;if(X>=Q)return J[Q];return J[X]},getHeight:(X)=>j(X),indexAtOffset:(X)=>{if(Q===0)return 0;if(X<=0)return 0;if(X>=J[Q])return Q-1;let q=0,Z=Q-1;while(q<Z){let M=q+Z+1>>>1;if(J[M]<=X)q=M;else Z=M-1}return q},getTotalHeight:()=>J[Q]??0,getTotal:()=>Q,rebuild:(X)=>K(X),isVariable:()=>!0}},rJ=()=>{let j={},$=(X,q)=>{if(!j[X])j[X]=new Set;return j[X].add(q),()=>Q(X,q)},Q=(X,q)=>{j[X]?.delete(q)};return{on:$,off:Q,emit:(X,q)=>{j[X]?.forEach((Z)=>{try{Z(q)}catch(M){console.error(`[vlist] Error in "${X}" handler:`,M)}})},clear:()=>{for(let X in j)delete j[X]}}},nJ=(j)=>{if(typeof j==="string"){let $=document.querySelector(j);if(!$)throw Error(`[vlist/builder] Container not found: ${j}`);return $}return j},oJ=(j,$,Q,J)=>{let K=document.createElement("div");if(K.className=$,J)K.classList.add(`${$}--horizontal`);if(K.setAttribute("role","listbox"),K.setAttribute("tabindex","0"),Q)K.setAttribute("aria-label",Q);if(J)K.setAttribute("aria-orientation","horizontal");let X=document.createElement("div");if(X.className=`${$}-viewport`,J)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let q=document.createElement("div");if(q.className=`${$}-content`,q.style.position="relative",J)q.style.height="100%";else q.style.width="100%";let Z=document.createElement("div");if(Z.className=`${$}-items`,Z.style.position="relative",J)Z.style.height="100%";else Z.style.width="100%";return q.appendChild(Z),X.appendChild(q),K.appendChild(X),j.appendChild(K),{root:K,viewport:X,content:q,items:Z}},iJ=(j=100)=>{let $=[];return{acquire:()=>{let Q=$.pop();if(Q)return Q;let J=document.createElement("div");return J.setAttribute("role","option"),J},release:(Q)=>{if($.length<j)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),$.push(Q)},clear:()=>{$.length=0}}},tJ=(j,$,Q,J,K)=>{if(J===0||$===0){K.start=0,K.end=0;return}let X=Q.indexAtOffset(j),q=Q.indexAtOffset(j+$);if(q<J-1)q++;K.start=Math.max(0,X),K.end=Math.min(J-1,Math.max(0,q))},eJ=(j,$,Q,J)=>{if(Q===0){J.start=0,J.end=0;return}J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$)},j4=(j,$,Q,J,K)=>{if(J===0)return 0;let X=Math.max(0,Math.min(j,J-1)),q=$.getOffset(X),Z=$.getHeight(X),M=Math.max(0,$.getTotalHeight()-Q),U;switch(K){case"center":U=q-(Q-Z)/2;break;case"end":U=q-Q+Z;break;default:U=q}return Math.max(0,Math.min(U,M))},J4=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,$4=(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}},Aj=(j)=>{if(!j.container)throw Error("[vlist/builder] Container is required");if(!j.item)throw Error("[vlist/builder] item configuration is required");let $=j.direction==="horizontal",Q=$?"width":"height",J=$?j.item.width:j.item.height;if(J==null)throw Error(`[vlist/builder] item.${Q} is required${$?" when direction is 'horizontal'":""}`);if(typeof J==="number"&&J<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof J!=="number"&&typeof J!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`);if(!j.item.template)throw Error("[vlist/builder] item.template is required");if($&&j.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,X=!1,q={use(Z){if(X)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(Z.name,Z),q},build(){if(X)throw Error("[vlist/builder] .build() can only be called once");return X=!0,Q4(j,K,$,J)}};return q};function Q4(j,$,Q,J){let{item:K,items:X,overscan:q=3,classPrefix:Z="vlist",ariaLabel:M,reverse:U=!1,scroll:D}=j,F=D?.wheel??!0,G=D?.wrap??!1,b=U,N=`${Z}-${cJ++}`,_=J,W=Q?typeof K.height==="number"?K.height:void 0:typeof K.width==="number"?K.width:void 0,A=K.template,L={overscan:q,classPrefix:Z,reverse:b,wrap:G,horizontal:Q,ariaIdPrefix:N},H=Array.from($.values()).sort((Y,E)=>(Y.priority??50)-(E.priority??50)),R=new Set(H.map((Y)=>Y.name));for(let Y of H)if(Y.conflicts){for(let E of Y.conflicts)if(R.has(E))throw Error(`[vlist/builder] ${Y.name} and ${E} cannot be combined`)}if(Q){if(R.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(R.has("withGroups"))throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'")}if(b){if(R.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true");if(R.has("withGroups"))throw Error("[vlist/builder] withGroups cannot be used with reverse: true")}let v=nJ(j.container),B=oJ(v,Z,M,Q),O=rJ(),V=X?[...X]:[],z=mj(_,V.length),g=iJ(),d=B.viewport.clientHeight,s=B.viewport.clientWidth,j2=!1,i=!1,k=0,S=null,p=null,I=sJ(0),P={start:0,end:0},C={start:0,end:0},h={start:-1,end:-1},m={viewportState:{scrollTop:0,containerHeight:d,totalHeight:z.getTotalHeight(),actualHeight:z.getTotalHeight(),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},a=new Map,n={selected:!1,focused:!1},q2=`${Z}-item`,Z2="",T=new Map,c=()=>{T.clear();for(let Y=0;Y<V.length;Y++){let E=V[Y];if(E)T.set(E.id,Y)}};c();let x=null,J2=()=>x?x.getTotal():V.length,t=[],Q2=[],w=[],f=[],o=[],$2=[],l=new Map,X2=()=>{return Q?B.viewport.scrollLeft:B.viewport.scrollTop},K2=(Y)=>{if(Q)B.viewport.scrollLeft=Y;else B.viewport.scrollTop=Y},A2=(Y=2)=>{let E=z.getTotalHeight();return k+d>=E-Y},U2=!1,Y2,V2,B2=(Y,E,y,u,e)=>{tJ(Y,E,y,u,e)},G2=(Y,E,y,u,e)=>{return j4(Y,E,y,u,e)},D2=(Y,E)=>{if(typeof E==="string")Y.innerHTML=E;else Y.replaceChildren(E)},F2=(Y,E)=>{let y=Math.round(z.getOffset(E));if(Q)Y.style.transform=`translateX(${y}px)`;else Y.style.transform=`translateY(${y}px)`},FJ=(Y,E)=>{let y=g.acquire();if(y.className=q2,Q){if(y.style.width=`${z.getHeight(Y)}px`,W!=null)y.style.height=`${W}px`}else y.style.height=`${z.getHeight(Y)}px`;return y.dataset.index=String(Y),y.dataset.id=String(E.id),y.ariaSelected="false",y.id=`${N}-item-${Y}`,Z2=String(J2()),y.setAttribute("aria-setsize",Z2),y.setAttribute("aria-posinset",String(Y+1)),D2(y,A(E,Y,n)),F2(y,Y),y},w2=()=>{let Y=`${z.getTotalHeight()}px`;if(Q)B.content.style.width=Y;else B.content.style.height=Y},Dj=new Set,Nj=-1,LJ=()=>{if(j2)return;let Y=J2();if(B2(k,d,z,Y,P),eJ(P,q,Y,C),C.start===h.start&&C.end===h.end)return;let E=String(Y),y=E!==Z2;Z2=E;for(let[r,W2]of a)if(r<C.start||r>C.end)W2.remove(),g.release(W2),a.delete(r);let u=document.createDocumentFragment(),e=[];for(let r=C.start;r<=C.end;r++){let W2=x?x.getItem(r):V[r];if(!W2)continue;let _2=a.get(r);if(_2){let E2=_2.dataset.id,l2=String(W2.id);if(E2!==l2)if(D2(_2,A(W2,r,n)),_2.dataset.id=l2,Q)_2.style.width=`${z.getHeight(r)}px`;else _2.style.height=`${z.getHeight(r)}px`;F2(_2,r);let s2=Dj.has(W2.id),uJ=r===Nj;if(_2.classList.toggle(`${Z}-item--selected`,s2),_2.classList.toggle(`${Z}-item--focused`,uJ),_2.ariaSelected=s2?"true":"false",y)_2.setAttribute("aria-setsize",Z2)}else{let E2=FJ(r,W2),l2=Dj.has(W2.id),s2=r===Nj;if(l2)E2.classList.add(`${Z}-item--selected`),E2.ariaSelected="true";if(s2)E2.classList.add(`${Z}-item--focused`);u.appendChild(E2),e.push({index:r,element:E2})}}if(e.length>0){B.items.appendChild(u);for(let{index:r,element:W2}of e)a.set(r,W2)}h.start=C.start,h.end=C.end,m.lastRenderRange.start=C.start,m.lastRenderRange.end=C.end,m.viewportState.scrollTop=k,m.viewportState.visibleRange.start=P.start,m.viewportState.visibleRange.end=P.end,m.viewportState.renderRange.start=C.start,m.viewportState.renderRange.end=C.end,O.emit("range:change",{range:{start:C.start,end:C.end}})},OJ=()=>{h.start=-1,h.end=-1,Y2()};Y2=LJ,V2=OJ;let v2=()=>{if(j2)return;let Y=X2(),E=Y>=k?"down":"up";if(I=aJ(I,Y),!B.root.classList.contains(`${Z}--scrolling`))B.root.classList.add(`${Z}--scrolling`);k=Y,Y2(),O.emit("scroll",{scrollTop:Y,direction:E}),O.emit("velocity:change",{velocity:I.velocity,reliable:I.sampleCount>=Mj});for(let y=0;y<t.length;y++)t[y](Y,E);if(p)clearTimeout(p);p=setTimeout(()=>{B.root.classList.remove(`${Z}--scrolling`),I.velocity=0,I.sampleCount=0,O.emit("velocity:change",{velocity:0,reliable:!1})},D?.idleTimeout??150)},d2=null,P2=B.viewport;if(P2.addEventListener("scroll",v2,{passive:!0}),Q&&F)d2=(Y)=>{if(Y.deltaX)return;Y.preventDefault(),B.viewport.scrollLeft+=Y.deltaY},B.viewport.addEventListener("wheel",d2);B.viewport.classList.add(`${Z}-viewport--custom-scrollbar`);let vj=(Y)=>{let y=Y.target.closest("[data-index]");if(y){let u=parseInt(y.dataset.index??"-1",10);if(u>=0){let e=x?.getItem(u)??V[u];if(e){if(e.__groupHeader)return;O.emit("item:click",{item:e,index:u,event:Y})}}}for(let u=0;u<Q2.length;u++)Q2[u](Y)},zJ=(Y)=>{let y=Y.target.closest("[data-index]");if(y){let u=parseInt(y.dataset.index??"-1",10);if(u>=0){let e=x?.getItem(u)??V[u];if(e){if(e.__groupHeader)return;O.emit("item:dblclick",{item:e,index:u,event:Y})}}}},fj=(Y)=>{for(let E=0;E<w.length;E++)w[E](Y)};B.items.addEventListener("click",vj),B.items.addEventListener("dblclick",zJ),B.root.addEventListener("keydown",fj);let Wj=!0,bJ=()=>s,PJ=()=>d,_j=new ResizeObserver((Y)=>{if(j2)return;for(let E of Y){let y=E.contentRect.height,u=E.contentRect.width,e=Q?u:y;if(s=u,Math.abs(e-d)>1){if(d=e,m.viewportState.containerHeight=e,i)w2(),Y2(),O.emit("resize",{height:y,width:u})}if(i)for(let r=0;r<f.length;r++)f[r](u,y)}});if(Wj)_j.observe(B.viewport);let N2={get dom(){return B},get heightCache(){return z},get emitter(){return O},get config(){return L},get rawConfig(){return j},get renderer(){return{render:(Y,E,y,u,e)=>{Dj=y,Nj=u,V2()},updateItemClasses:(Y,E,y)=>{let u=a.get(Y);if(!u)return;u.classList.toggle(`${Z}-item--selected`,E),u.classList.toggle(`${Z}-item--focused`,y),u.ariaSelected=E?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(Y)=>a.get(Y)??null,clear:()=>{},destroy:()=>{}}},set renderer(Y){},get dataManager(){return x},set dataManager(Y){x=Y},get scrollController(){return Vj},set scrollController(Y){Vj=Y},state:m,getContainerWidth(){return s},afterScroll:t,clickHandlers:Q2,keydownHandlers:w,resizeHandlers:f,contentSizeHandlers:o,destroyHandlers:$2,methods:l,replaceTemplate(Y){A=Y},replaceRenderer(Y){},replaceDataManager(Y){x=Y},replaceScrollController(Y){Vj=Y},getItemsForRange(Y){let E=[];for(let y=Y.start;y<=Y.end;y++){let u=x?x.getItem(y):V[y];if(u)E.push(u)}return E},getAllLoadedItems(){if(x){let Y=x.getTotal(),E=[];for(let y=0;y<Y;y++){let u=x.getItem(y);if(u)E.push(u)}return E}return[...V]},getVirtualTotal(){return J2()},getCachedCompression(){return{isCompressed:!1,actualHeight:z.getTotalHeight(),virtualHeight:z.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:k,totalItems:J2(),containerHeight:d,rangeStart:C.start}},renderIfNeeded(){Y2()},forceRender(){V2()},getRenderFns(){return{renderIfNeeded:Y2,forceRender:V2}},setRenderFns(Y,E){Y2=Y,V2=E},setVirtualTotalFn(Y){J2=Y},rebuildHeightCache(Y){z.rebuild(Y??J2())},setHeightConfig(Y){z=mj(Y,J2())},updateContentSize(Y){let E=`${Y}px`;if(Q)B.content.style.width=E;else B.content.style.height=E},updateCompressionMode(){},setVisibleRangeFn(Y){B2=Y},setScrollToPosFn(Y){G2=Y},setPositionElementFn(Y){F2=Y},setScrollFns(Y,E){X2=Y,K2=(y)=>{E(y),v2()}},setScrollTarget(Y){P2.removeEventListener("scroll",v2),P2=Y,P2.addEventListener("scroll",v2,{passive:!0})},getScrollTarget(){return P2},setContainerDimensions(Y){bJ=Y.width,PJ=Y.height,s=Y.width(),d=Y.height(),m.viewportState.containerWidth=s,m.viewportState.containerHeight=d},disableViewportResize(){if(Wj)Wj=!1,_j.unobserve(B.viewport)}};x={getState:()=>({total:V.length,cached:V.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>V.length,getCached:()=>V.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Y)=>V[Y],getItemById:(Y)=>{let E=T.get(Y);return E!==void 0?V[E]:void 0},getIndexById:(Y)=>T.get(Y)??-1,isItemLoaded:(Y)=>Y>=0&&Y<V.length&&V[Y]!==void 0,getItemsInRange:(Y,E)=>{let y=[],u=Math.max(0,Y),e=Math.min(E,V.length-1);for(let r=u;r<=e;r++)y.push(V[r]);return y},setTotal:(Y)=>{},setItems:(Y,E=0,y)=>{if(E===0&&(y!==void 0||V.length===0))V=[...Y];else{let u=E+Y.length;if(V.length<u)V.length=u;for(let e=0;e<Y.length;e++)V[E+e]=Y[e]}if(c(),i){z.rebuild(J2()),w2(),N2.updateCompressionMode();for(let u=0;u<o.length;u++)o[u]();V2()}},updateItem:(Y,E)=>{let y=T.get(Y);if(y===void 0)return!1;let u=V[y];if(!u)return!1;if(V[y]={...u,...E},E.id!==void 0&&E.id!==Y)T.delete(Y),T.set(E.id,y);let e=a.get(y);if(e)D2(e,A(V[y],y,n)),e.dataset.id=String(V[y].id);return!0},removeItem:(Y)=>{let E=T.get(Y);if(E===void 0)return!1;if(V.splice(E,1),c(),i){z.rebuild(J2()),w2(),N2.updateCompressionMode();for(let y=0;y<o.length;y++)o[y]();V2()}return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{V=[],T.clear()},reset:()=>{if(V=[],T.clear(),i)z.rebuild(0),w2(),V2()}};let Vj={getScrollTop:()=>X2(),scrollTo:(Y)=>{K2(Y),k=Y,Y2()},scrollBy:(Y)=>{let E=X2()+Y;K2(E),k=E,Y2()},isAtTop:()=>k<=2,isAtBottom:(Y=2)=>A2(Y),getScrollPercentage:()=>{let Y=z.getTotalHeight(),E=Math.max(0,Y-d);return E>0?k/E:0},getVelocity:()=>I.velocity,isTracking:()=>I.sampleCount>=Mj,isScrolling:()=>B.root.classList.contains(`${Z}--scrolling`),updateConfig:()=>{},enableCompression:()=>{},disableCompression:()=>{},isCompressed:()=>U2,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{d=Y},destroy:()=>{}},Ij=new Map;for(let Y of H)if(Y.methods)for(let E of Y.methods){let y=Ij.get(E);if(y)throw Error(`[vlist/builder] Method "${E}" is registered by both "${y}" and "${Y.name}"`);Ij.set(E,Y.name)}for(let Y of H)Y.setup(N2);if(i=!0,N2.state.isInitialized=!0,w2(),Y2(),b&&V.length>0){let Y=G2(V.length-1,z,d,V.length,"end");K2(Y),k=Y,Y2()}let yJ=(Y)=>{N2.dataManager.setItems(Y,0,Y.length)},HJ=b?(Y)=>{let E=A2(2),y=V.length;if(N2.dataManager.setItems(Y,y),E&&V.length>0){let u=G2(V.length-1,z,d,V.length,"end");K2(u),k=u,Y2()}}:(Y)=>{let E=V.length;N2.dataManager.setItems(Y,E)},kJ=b?(Y)=>{let E=X2(),y=z.getTotalHeight(),u=[...V];N2.dataManager.clear(),N2.dataManager.setItems([...Y,...u],0);let r=z.getTotalHeight()-y;if(r>0)K2(E+r),k=E+r}:(Y)=>{let E=[...V];N2.dataManager.clear(),N2.dataManager.setItems([...Y,...E],0)},RJ=(Y,E)=>{N2.dataManager.updateItem(Y,E)},TJ=(Y)=>{N2.dataManager.removeItem(Y)},CJ=async()=>{if(N2.dataManager.reload)await N2.dataManager.reload()},c2=()=>{if(S!==null)cancelAnimationFrame(S),S=null},SJ=(Y,E,y)=>{if(c2(),Math.abs(E-Y)<1){K2(E),k=E,Y2();return}let u=performance.now(),e=(r)=>{let W2=r-u,_2=Math.min(W2/y,1),E2=Y+(E-Y)*J4(_2);if(K2(E2),k=E2,Y2(),_2<1)S=requestAnimationFrame(e);else S=null};S=requestAnimationFrame(e)},pj=(Y,E)=>{let{align:y,behavior:u,duration:e}=$4(E),r=J2(),W2=Y;if(G&&r>0)W2=(W2%r+r)%r;let _2=G2(W2,z,d,r,y);if(u==="smooth")SJ(X2(),_2,e);else c2(),K2(_2)},wJ=(Y,E)=>{let y=T.get(Y)??N2.dataManager.getIndexById(Y);if(y>=0)pj(y,E)},vJ=()=>X2(),fJ=(Y,E)=>{return O.on(Y,E)},IJ=(Y,E)=>{O.off(Y,E)},pJ=()=>{if(j2)return;if(j2=!0,N2.state.isDestroyed=!0,B.items.removeEventListener("click",vj),B.root.removeEventListener("keydown",fj),P2.removeEventListener("scroll",v2),_j.disconnect(),d2)B.viewport.removeEventListener("wheel",d2);if(p)clearTimeout(p);for(let Y=0;Y<$2.length;Y++)$2[Y]();for(let Y of H)if(Y.destroy)Y.destroy();c2();for(let[,Y]of a)Y.remove(),g.release(Y);a.clear(),g.clear(),O.clear(),B.root.remove()},uj={get element(){return B.root},get items(){if(l.has("_getItems"))return l.get("_getItems")();return V},get total(){if(l.has("_getTotal"))return l.get("_getTotal")();return J2()},setItems:l.has("setItems")?l.get("setItems"):yJ,appendItems:l.has("appendItems")?l.get("appendItems"):HJ,prependItems:l.has("prependItems")?l.get("prependItems"):kJ,updateItem:l.has("updateItem")?l.get("updateItem"):RJ,removeItem:l.has("removeItem")?l.get("removeItem"):TJ,reload:l.has("reload")?l.get("reload"):CJ,scrollToIndex:l.has("scrollToIndex")?l.get("scrollToIndex"):pj,scrollToItem:l.has("scrollToItem")?l.get("scrollToItem"):wJ,cancelScroll:l.has("cancelScroll")?l.get("cancelScroll"):c2,getScrollPosition:l.has("getScrollPosition")?l.get("getScrollPosition"):vJ,on:fJ,off:IJ,destroy:pJ};for(let[Y,E]of l){if(Y==="setItems"||Y==="appendItems"||Y==="prependItems"||Y==="updateItem"||Y==="removeItem"||Y==="reload"||Y==="scrollToIndex"||Y==="scrollToItem"||Y==="cancelScroll"||Y==="getScrollPosition")continue;uj[Y]=E}return uj}var a2=(j)=>{let $=Math.max(1,Math.floor(j.columns)),Q=j.gap??0,J=j.isHeaderFn,K={row:0,col:0},X=(N)=>{if(N<=0)return 0;if(!J)return Math.ceil(N/$);let _=0,W=0,A=0;for(let L=0;L<N;L++)if(J(L)){if(A++,W>0)_++,W=0;_++,W=0}else if(W++,W>=$)_++,W=0;if(W>0)_++;return _},q=(N)=>{return K.row=Z(N),K.col=M(N),K},Z=(N)=>{if(!J)return Math.floor(N/$);let _=0,W=0;for(let A=0;A<=N;A++)if(J(A)){if(W>0)_++,W=0;if(A===N)return _;_++,W=0}else{if(A===N)return _;if(W++,W>=$)_++,W=0}return console.warn(`⚠️ getRow(${N}) fell through - returning ${_}`),_},M=(N)=>{if(!J)return N%$;if(J(N))return 0;let _=0;for(let W=0;W<=N;W++)if(J(W))_=0;else{if(W===N)return _;if(_++,_>=$)_=0}return _},U=(N,_,W)=>{if(W<=0)return{start:0,end:-1};if(!J){let v=Math.max(0,N*$),B=Math.min(W-1,(_+1)*$-1);return{start:v,end:B}}let A=-1,L=-1,H=0,R=0;for(let v=0;v<W;v++){if(J(v)){if(R>0)H++,R=0;if(H>=N&&H<=_){if(A===-1)A=v;L=v}H++,R=0}else{if(H>=N&&H<=_){if(A===-1)A=v;L=v}if(R++,R>=$)H++,R=0}if(H>_&&R===0)break}if(A===-1)return{start:0,end:-1};return{start:A,end:L}},D=(N,_,W)=>{if(_<0||_>=$)return-1;let A=N*$+_;if(A<0||A>=W)return-1;return A},F=(N)=>{let _=($-1)*Q;return Math.max(0,(N-_)/$)};return{get columns(){return $},get gap(){return Q},update:(N)=>{if(N.columns!==void 0)$=Math.max(1,Math.floor(N.columns));if(N.gap!==void 0)Q=N.gap;if(N.isHeaderFn!==void 0)J=N.isHeaderFn},getTotalRows:X,getPosition:q,getRow:Z,getCol:M,getItemRange:U,getItemIndex:D,getColumnWidth:F,getColumnOffset:(N,_)=>{let W=F(_);return N*(W+Q)}}};e2();var Lj=(j,$,Q,J,K,X)=>{if(J===0||$===0)return X.start=0,X.end=-1,X;let q=Q.indexAtOffset(j),Z=Q.indexAtOffset(j+$);if(Z<J-1)Z++;return X.start=Math.max(0,q),X.end=Math.min(J-1,Math.max(0,Z)),X},Oj=(j,$,Q,J)=>{if(Q===0)return J.start=0,J.end=-1,J;return J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$),J},tj=(j,$,Q,J,K,X)=>{if(J===0)return 0;let q=Math.max(0,Math.min(j,J-1)),Z=$.getOffset(q),M=$.getHeight(q),U=$.getTotalHeight(),D=Math.max(0,U-Q),F;switch(X){case"center":F=Z-Q/2+M/2;break;case"end":F=Z-Q+M;break;case"start":default:F=Z;break}return Math.max(0,Math.min(F,D))},ej=(j,$,Q)=>{if(Q&&Q.isCompressed)return Q.virtualHeight;return $.getTotalHeight()},jJ=(j,$)=>{return $.getTotalHeight()},JJ=(j,$)=>{return $.getOffset(j)},$J=(j,$,Q)=>{let J=Math.max(0,$-Q);return Math.max(0,Math.min(j,J))};var zj=(j,$,Q,J,K,X=Lj)=>{return X(j.scrollTop,j.containerHeight,$,Q,K,j.visibleRange),Oj(j.visibleRange,J,Q,j.renderRange),j.totalHeight=K.virtualHeight,j.actualHeight=K.actualHeight,j.isCompressed=K.isCompressed,j.compressionRatio=K.ratio,j},O2=(j,$,Q,J,K="start",X,q=tj)=>{return q(j,$,Q,J,X,K)},QJ=(j,$)=>{return j.start===$.start&&j.end===$.end},XJ=(j,$)=>{return j>=$.start&&j<=$.end},qJ=(j)=>{if(j.end<j.start)return 0;return j.end-j.start+1};var KJ=(j,$)=>{let Q=[],J=[];for(let K=j.start;K<=j.end;K++)if(K<$.start||K>$.end)J.push(K);for(let K=$.start;K<=$.end;K++)if(K<j.start||K>j.end)Q.push(K);return{add:Q,remove:J}};t2();var YJ=(j)=>{if(!j.columns||j.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let $=null,Q=null;return{name:"withGrid",priority:10,setup(J){let{dom:K,emitter:X,config:q,rawConfig:Z}=J,{classPrefix:M}=q;if(q.horizontal)throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(q.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=Z.items?.some((B)=>B.__groupHeader===!0),D={columns:j.columns,gap:j.gap??0};if(U)D.isHeaderFn=(B)=>{let O=J.dataManager.getItem(B);return O&&O.__groupHeader===!0};$=a2(D);let F=$.gap;J.setVirtualTotalFn(()=>{let B=J.dataManager.getTotal();return $.getTotalRows(B)});let G=Z.item,b=q.horizontal?G.width:G.height,N={containerWidth:J.getContainerWidth(),columns:$.columns,gap:$.gap};if(typeof b==="function")J.setHeightConfig((B)=>{let O=N.containerWidth-2,V=(N.columns-1)*N.gap,z=(O-V)/N.columns,g={containerWidth:N.containerWidth,columns:N.columns,gap:N.gap,columnWidth:z};return b(B,g)+N.gap});else if(F>0)J.setHeightConfig(b+F);let _=J.dataManager.getTotal(),W=$.getTotalRows(_);J.rebuildHeightCache(),K.root.classList.add(`${M}--grid`);let A=J.getContainerWidth(),L=Z.item.template,H=()=>{Q=p2(K.items,L,J.heightCache,$,M,A,()=>J.dataManager.getTotal(),q.ariaIdPrefix),J.replaceRenderer(Q)};H(),J.methods.set("_getGridLayout",()=>$),J.methods.set("_getGridConfig",()=>D),J.methods.set("_replaceGridRenderer",(B)=>{Q=B}),J.methods.set("_updateGridLayoutForGroups",(B)=>{$.update({isHeaderFn:B});let O=J.dataManager.getTotal(),V=$.getTotalRows(O),z=0;for(let d=0;d<O;d++)if($.getCol(d)===0){let s=J.heightCache.getHeight(d);z+=s}let g=J.heightCache.getTotalHeight.bind(J.heightCache);J.heightCache.getTotalHeight=()=>z,J.dom.content.style.height=`${z}px`,H()}),J.methods.set("updateGrid",(B)=>{if(B.columns!==void 0){if(!Number.isInteger(B.columns)||B.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");D.columns=B.columns}if(B.gap!==void 0){if(B.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");D.gap=B.gap}if($)$.update(D);let O=J.getContainerWidth();if(N.containerWidth=O,N.columns=D.columns,N.gap=D.gap,Q)Q.updateContainerWidth(O);let V=Math.ceil(J.dataManager.getTotal()/D.columns);J.rebuildHeightCache(),J.updateContentSize(J.heightCache.getTotalHeight()),J.updateCompressionMode();for(let z=0;z<J.contentSizeHandlers.length;z++)J.contentSizeHandlers[z]();if(Q)Q.clear();J.forceRender()});let R=()=>{if(J.state.isDestroyed)return;let B=J.scrollController.getScrollTop(),O=J.state.viewportState.containerHeight,V=J.getVirtualTotal(),z={start:0,end:0};if(V===0||O===0)z.start=0,z.end=0;else{z.start=Math.max(0,J.heightCache.indexAtOffset(B));let I=J.heightCache.indexAtOffset(B+O);if(I<V-1)I++;z.end=Math.min(V-1,Math.max(0,I))}let g=q.overscan??3,d={start:Math.max(0,z.start-g),end:Math.min(V-1,z.end+g)};J.state.viewportState.scrollTop=B,J.state.viewportState.visibleRange=z,J.state.viewportState.renderRange=d;let s=J.state.lastRenderRange,j2=J.state.viewportState.isCompressed;if(d.start===s.start&&d.end===s.end){if(j2)Q.updatePositions(J.getCompressionContext());return}let i=J.dataManager.getTotal(),k=$.getItemRange(d.start,d.end,i),S=J.dataManager.getItemsInRange(k.start,k.end),p=j2?J.getCompressionContext():void 0;Q.render(S,k,new Set,-1,p),J.state.lastRenderRange={...d},X.emit("range:change",{range:d})},v=()=>{if(J.state.isDestroyed)return;J.state.lastRenderRange={start:-1,end:-1},R()};if(J.setRenderFns(R,v),J.resizeHandlers.push((B,O)=>{if(Q)Q.updateContainerWidth(B)}),J.methods.set("scrollToIndex",(B,O)=>{let V=Math.floor(B/j.columns),{align:z,behavior:g,duration:d}=Y4(O),s=J.dataManager.getState(),j2=$.getTotalRows(s.total),i=Math.max(0,Math.min(V,j2-1)),k=O2(i,J.heightCache,J.state.viewportState.containerHeight,j2,z,J.getCachedCompression());if(g==="smooth")J.scrollController.scrollTo(k);else J.scrollController.scrollTo(k)}),!J.methods.has("_getTotal"))J.methods.set("_getTotal",()=>J.dataManager.getTotal());J.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;K.root.classList.remove(`${M}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}},bj=300,Y4=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:bj};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??bj};return{align:"start",behavior:"auto",duration:bj}};var Pj=(j,$)=>{let Q=0,J=j.length-1;while(Q<J){let K=Q+J+1>>>1;if(j[K].headerLayoutIndex<=$)Q=K;else J=K-1}return Q},ZJ=(j,$)=>{let Q=0,J=j.length-1;while(Q<J){let K=Q+J+1>>>1;if(j[K].firstDataIndex<=$)Q=K;else J=K-1}return Q},BJ=(j,$)=>{if(j===0)return[];let Q=[],J=$(0),K=0,X=0;for(let q=1;q<j;q++){let Z=$(q);if(Z!==J){let M=q-K;Q.push({key:J,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:K,count:M}),X=X+1+M,J=Z,K=q}}return Q.push({key:J,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:K,count:j-K}),Q},u2=(j,$)=>{if(j.length===0||$.length===0)return[];let Q=j.length+$.length,J=Array(Q),K=0;for(let X of $){J[K]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},K++;for(let q=0;q<X.count;q++)J[K]=j[X.firstDataIndex+q],K++}return J},x2=(j,$)=>{let Q=typeof $==="number"?(J)=>$:$;return(J)=>{let K=j.getEntry(J);if(K.type==="header")return j.getHeaderHeight(K.group.groupIndex);return Q(K.dataIndex)}},jj=(j,$)=>{let Q=BJ(j,$.getGroupForIndex),J=j+Q.length,K=$.headerHeight;return{get totalEntries(){return J},get groupCount(){return Q.length},get groups(){return Q},getEntry:(G)=>{if(Q.length===0)return{type:"item",dataIndex:G,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let b=Pj(Q,G),N=Q[b];if(G===N.headerLayoutIndex)return{type:"header",group:N};let _=G-N.headerLayoutIndex-1;return{type:"item",dataIndex:N.firstDataIndex+_,group:N}},layoutToDataIndex:(G)=>{if(Q.length===0)return G;let b=Pj(Q,G),N=Q[b];if(G===N.headerLayoutIndex)return-1;let _=G-N.headerLayoutIndex-1;return N.firstDataIndex+_},dataToLayoutIndex:(G)=>{if(Q.length===0)return G;let b=ZJ(Q,G),N=Q[b],_=G-N.firstDataIndex;return N.headerLayoutIndex+1+_},getGroupAtLayoutIndex:(G)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=Pj(Q,G);return Q[b]},getGroupAtDataIndex:(G)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=ZJ(Q,G);return Q[b]},getHeaderHeight:typeof K==="number"?(G)=>K:(G)=>{let b=Q[G];if(!b)return 0;return K(b.key,G)},rebuild:(G)=>{Q=BJ(G,$.getGroupForIndex),J=G+Q.length}}};var Jj=(j,$,Q,J,K)=>{let X=document.createElement("div");X.className=`${K}-sticky-header`,X.setAttribute("role","presentation"),X.setAttribute("aria-hidden","true"),X.style.position="absolute",X.style.top="0",X.style.left="0",X.style.right="0",X.style.zIndex="5",X.style.pointerEvents="none",X.style.willChange="transform",X.style.overflow="hidden",j.insertBefore(X,j.firstChild);let q=-1,Z=!1,M=0,U=(_)=>{if(_===q)return;q=_;let W=$.groups;if(_<0||_>=W.length){X.textContent="";return}let A=W[_],L=J.headerTemplate(A.key,A.groupIndex),H=$.getHeaderHeight(_);if(X.style.height=`${H}px`,typeof L==="string")X.innerHTML=L;else X.replaceChildren(L)},D=(_)=>{let W=$.groups;if(W.length===0){G();return}let A=0;for(let B=W.length-1;B>=0;B--)if(Q.getOffset(W[B].headerLayoutIndex)<=_){A=B;break}let L=Q.getOffset(W[0].headerLayoutIndex);if(_<L){G();return}if(!Z)F();U(A);let H=$.getHeaderHeight(A),R=0,v=A+1;if(v<W.length){let O=Q.getOffset(W[v].headerLayoutIndex)-_;if(O<H)R=O-H}if(R!==M)M=R,X.style.transform=R===0?"":`translateY(${Math.round(R)}px)`},F=()=>{if(Z)return;Z=!0,X.style.display=""},G=()=>{if(!Z)return;Z=!1,X.style.display="none",q=-1,M=0,X.style.transform=""},b=()=>{let _=q;if(q=-1,_>=0)U(_)},N=()=>{X.remove(),q=-1,Z=!1};return X.style.display="none",{update:D,refresh:b,show:F,hide:G,destroy:N}};var UJ=(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 $=null,Q=null,J=[],K=[];return{name:"withGroups",priority:10,setup(X){let{dom:q,emitter:Z,config:M,rawConfig:U}=X,{classPrefix:D}=M;if(M.horizontal)throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(M.reverse)throw Error("[vlist/builder] withGroups cannot be used with reverse: true");let G=U.item.height;J=U.items?[...U.items]:[];let b=J.length,N={getGroupForIndex:j.getGroupForIndex,headerHeight:j.headerHeight,headerTemplate:j.headerTemplate,sticky:j.sticky};$=jj(b,N),K=u2(J,$.groups);let _=x2($,G);X.setHeightConfig(_),X.rebuildHeightCache(K.length),X.dataManager.setItems(K,0,K.length);let W=U.item.template,{headerTemplate:A}=j,L=(O,V,z)=>{if(b2(O))return A(O.groupKey,O.groupIndex);return W(O,V,z)},H=X.methods.get("_getGridLayout"),R=X.methods.get("_replaceGridRenderer"),v=X.methods.get("_updateGridLayoutForGroups");if(H&&R){if(v)v((g)=>{let d=K[g];return d&&b2(d)});let{createGridRenderer:O}=(e2(),gJ(ij)),V=H(),z=O(q.items,L,X.heightCache,V,D,X.getContainerWidth(),()=>X.dataManager.getTotal(),M.ariaIdPrefix);R(z)}else X.replaceTemplate(L);if(q.root.classList.add(`${D}--grouped`),j.sticky!==!1){Q=Jj(q.root,$,X.heightCache,N,D);let O=Q;X.afterScroll.push((V,z)=>{O.update(V)}),Q.update(X.scrollController.getScrollTop())}let B=()=>{if(!$)return;$.rebuild(J.length),K=u2(J,$.groups);let O=x2($,G);if(X.setHeightConfig(O),X.rebuildHeightCache(K.length),X.dataManager.setItems(K,0,K.length),Q)Q.refresh()};X.methods.set("setItems",(O)=>{J=[...O],B()}),X.methods.set("appendItems",(O)=>{J=[...J,...O],B()}),X.methods.set("prependItems",(O)=>{J=[...O,...J],B()}),X.methods.set("removeItem",(O)=>{J=J.filter((V)=>V.id!==O),B()}),X.methods.set("scrollToIndex",(O,V)=>{let z=$.dataToLayoutIndex(O),{align:g,behavior:d,duration:s}=Z4(V),j2=X.dataManager.getTotal(),i=O2(z,X.heightCache,X.state.viewportState.containerHeight,j2,g,X.getCachedCompression());if(d==="smooth")X.scrollController.scrollTo(i);else X.scrollController.scrollTo(i)}),X.methods.set("_getItems",()=>J),X.methods.set("_getTotal",()=>J.length),X.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;q.root.classList.remove(`${D}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}},yj=300,Z4=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:yj};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??yj};return{align:"start",behavior:"auto",duration:yj}};var $j=(j)=>({selected:new Set(j??[]),focusedIndex:-1}),h2=(j,$,Q)=>{if(Q==="none")return j;let J=new Set(j.selected);if(Q==="single"){if(J.clear(),$.length>0)J.add($[0])}else for(let K of $)J.add(K);return{...j,selected:J}},m2=(j,$)=>{let Q=new Set(j.selected);for(let J of $)Q.delete(J);return{...j,selected:Q}},k2=(j,$,Q)=>{if(Q==="none")return j;if(j.selected.has($))return m2(j,[$]);else return h2(j,[$],Q)},Qj=(j,$,Q)=>{if(Q!=="multiple")return j;return{...j,selected:new Set($.map((J)=>J.id))}},Xj=(j)=>({...j,selected:new Set}),Hj=(j,$)=>{return j.focusedIndex=$,j},kj=(j,$,Q=!0)=>{if($===0)return j;let J=j.focusedIndex-1;if(J<0)J=Q?$-1:0;return j.focusedIndex=J,j},Rj=(j,$,Q=!0)=>{if($===0)return j;let J=j.focusedIndex+1;if(J>=$)J=Q?0:$-1;return j.focusedIndex=J,j},Tj=(j,$)=>{if($===0)return j;return j.focusedIndex=0,j},Cj=(j,$)=>{if($===0)return j;return j.focusedIndex=$-1,j};var DJ=(j,$)=>{return j.selected.has($)},R2=(j)=>{return Array.from(j.selected)},T2=(j,$)=>{let Q=[];for(let J of j.selected){let K=$(J);if(K)Q.push(K)}return Q};var Sj=(j)=>{let $=j?.mode??"single",Q=j?.initial,J=$j(Q),K=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:q,emitter:Z,config:M}=X,{classPrefix:U,ariaIdPrefix:D}=M;if($==="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{renderIfNeeded:F,forceRender:G}=X.getRenderFns(),b=()=>{X.dom.items.querySelectorAll("[data-index]").forEach((H)=>{let R=H,v=R.dataset.id;if(v!==void 0){let B=/^\d+$/.test(v)?parseInt(v,10):v,O=J.selected.has(B),z=parseInt(R.dataset.index??"-1",10)===J.focusedIndex;R.classList.toggle(`${U}-item--selected`,O),R.classList.toggle(`${U}-item--focused`,z),R.ariaSelected=O?"true":"false"}})},N=()=>{if(X.state.isDestroyed)return;F(),b()},_=()=>{if(X.state.isDestroyed)return;G(),b()};X.setRenderFns(N,_);let W=()=>{b(),Z.emit("selection:change",{selected:R2(J),items:T2(J,(L)=>X.dataManager.getItemById(L))})};K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${U}-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",q.root.appendChild(K);let A=K;Z.on("selection:change",({selected:L})=>{let H=L.length;if(H===0)A.textContent="";else if(H===1)A.textContent="1 item selected";else A.textContent=`${H} items selected`}),X.clickHandlers.push((L)=>{if(X.state.isDestroyed)return;let R=L.target.closest("[data-index]");if(!R)return;let v=parseInt(R.dataset.index??"-1",10);if(v<0)return;let B=X.dataManager.getItem(v);if(!B)return;Z.emit("item:click",{item:B,index:v,event:L}),J=Hj(J,v),q.root.setAttribute("aria-activedescendant",`${D}-item-${v}`),J=k2(J,B.id,$),W()}),X.keydownHandlers.push((L)=>{if(X.state.isDestroyed)return;let H=X.dataManager.getTotal(),R=J.focusedIndex,v=!1,B=!1,O=J;switch(L.key){case"ArrowUp":O=kj(J,H),v=!0,B=!0;break;case"ArrowDown":O=Rj(J,H),v=!0,B=!0;break;case"Home":O=Tj(J,H),v=!0,B=!0;break;case"End":O=Cj(J,H),v=!0,B=!0;break;case" ":case"Enter":if(J.focusedIndex>=0){let V=X.dataManager.getItem(J.focusedIndex);if(V)O=k2(J,V.id,$);v=!0}break}if(v){L.preventDefault(),J=O;let V=J.focusedIndex;if(V>=0){let z=X.dataManager.getState(),g=O2(V,X.heightCache,X.state.viewportState.containerHeight,z.total,"center",X.getCachedCompression());X.scrollController.scrollTo(g),q.root.setAttribute("aria-activedescendant",`${D}-item-${V}`)}else q.root.removeAttribute("aria-activedescendant");if(B){let{selected:z}=J;if(R>=0&&R!==V){let g=X.dataManager.getItem(R);if(g)X.renderer.updateItemClasses(R,z.has(g.id),!1)}if(V>=0){let g=X.dataManager.getItem(V);if(g)X.renderer.updateItemClasses(V,z.has(g.id),!0)}}else _(),Z.emit("selection:change",{selected:R2(J),items:T2(J,(z)=>X.dataManager.getItemById(z))})}}),X.methods.set("select",(...L)=>{if($==="none")return;J=h2(J,L,$),W()}),X.methods.set("deselect",(...L)=>{J=m2(J,L),W()}),X.methods.set("toggleSelect",(L)=>{if($==="none")return;J=k2(J,L,$),W()}),X.methods.set("selectAll",()=>{if($!=="multiple")return;let L=X.getAllLoadedItems();J=Qj(J,L,$),W()}),X.methods.set("clearSelection",()=>{J=Xj(J);let{renderRange:L,isCompressed:H}=X.state.viewportState,R=X.getItemsForRange(L),v=H?X.getCompressionContext():void 0;X.renderer.render(R,L,J.selected,J.focusedIndex,v),Z.emit("selection:change",{selected:[],items:[]})}),X.methods.set("getSelected",()=>{return R2(J)}),X.methods.set("getSelectedItems",()=>{return T2(J,(L)=>X.dataManager.getItemById(L))}),X.destroyHandlers.push(()=>{if(A&&A.parentNode)A.remove()})},destroy(){if(K&&K.parentNode)K.remove();K=null}}};var C2=(j,$,Q={},J="vlist",K=!1)=>{let{autoHide:X=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:M=!0,hoverZoneWidth:U=16,showOnViewportEnter:D=!0}=Q,F=0,G=0,b=0,N=0,_=!1,W=!1,A=0,L=0,H=0,R=null,v=!1,B=null,O=null,V=K?"width":"height",z=K?"translateX":"translateY",g=K?(t)=>t.clientX:(t)=>t.clientY,d=K?"left":"top",s=document.createElement("div"),j2=document.createElement("div"),i=M?document.createElement("div"):null,k=()=>{if(s.className=`${J}-scrollbar`,j2.className=`${J}-scrollbar-thumb`,K)s.classList.add(`${J}-scrollbar--horizontal`);if(s.appendChild(j2),j.appendChild(s),i){if(i.className=`${J}-scrollbar-hover`,K)i.classList.add(`${J}-scrollbar-hover--horizontal`),i.style.height=`${U}px`;else i.style.width=`${U}px`;j.appendChild(i)}},S=()=>{if(R)clearTimeout(R),R=null},p=()=>{if(!X)return;S(),R=setTimeout(P,q)},I=()=>{if(F<=G)return;if(S(),!v)s.classList.add(`${J}-scrollbar--visible`),v=!0;if(X&&!_&&!W)p()},P=()=>{if(_||W)return;s.classList.remove(`${J}-scrollbar--visible`),v=!1},C=(t,Q2)=>{F=t,G=Q2;let w=F>G;if(s.style.display=w?"":"none",!w){P();return}let f=G/F;b=Math.max(Z,f*G),j2.style[V]=`${b}px`,N=G-b,h(H)},h=(t)=>{if(H=t,F<=G||N<=0)return;let Q2=F-G,f=Math.min(1,Math.max(0,t/Q2))*N;j2.style.transform=`${z}(${f}px)`},m=(t)=>{if(t.target===j2)return;let Q2=s.getBoundingClientRect(),o=g(t)-Q2[d]-b/2,l=Math.max(0,Math.min(o,N))/N,X2=F-G,K2=l*X2;$(K2),I()},a=(t)=>{t.preventDefault(),t.stopPropagation(),_=!0,A=g(t),L=H,S(),s.classList.add(`${J}-scrollbar--dragging`),document.addEventListener("mousemove",n),document.addEventListener("mouseup",q2)},n=(t)=>{if(!_)return;let Q2=g(t)-A,w=N>0?Q2/N:0,f=F-G,o=w*f,$2=Math.max(0,Math.min(L+o,f)),X2=$2/f*N;if(j2.style.transform=`${z}(${X2}px)`,O=$2,B===null)B=requestAnimationFrame(()=>{if(O!==null)$(O);B=null})},q2=()=>{if(_=!1,B!==null)cancelAnimationFrame(B),B=null;if(O!==null)$(O),O=null;if(s.classList.remove(`${J}-scrollbar--dragging`),X&&!W)p();document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",q2)},Z2=()=>{if(D)I()},T=()=>{if(!_){if(W=!1,X)p()}},c=()=>{W=!0,S(),I()},x=()=>{if(W=!1,!_&&X)p()},J2=()=>{if(S(),B!==null)cancelAnimationFrame(B),B=null;if(s.removeEventListener("click",m),s.removeEventListener("mouseenter",c),s.removeEventListener("mouseleave",x),j2.removeEventListener("mousedown",a),j.removeEventListener("mouseenter",Z2),j.removeEventListener("mouseleave",T),document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",q2),i){if(i.removeEventListener("mouseenter",c),i.removeEventListener("mouseleave",x),i.parentNode)i.parentNode.removeChild(i)}if(s.parentNode)s.parentNode.removeChild(s)};if(k(),s.addEventListener("click",m),s.addEventListener("mouseenter",c),s.addEventListener("mouseleave",x),j2.addEventListener("mousedown",a),j.addEventListener("mouseenter",Z2),j.addEventListener("mouseleave",T),i)i.addEventListener("mouseenter",c),i.addEventListener("mouseleave",x);return{show:I,hide:P,updateBounds:C,updatePosition:h,isVisible:()=>v,destroy:J2}};var NJ=(j)=>{let $=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:J,config:K}=Q,{classPrefix:X,horizontal:q}=K;if($=C2(J.viewport,(U)=>Q.scrollController.scrollTo(U),j??{},X,q),!J.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))J.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let Z=Q.getCachedCompression();$.updateBounds(Z.virtualHeight,Q.state.viewportState.containerHeight);let M=$;Q.afterScroll.push((U,D)=>{M.updatePosition(U),M.show()}),Q.resizeHandlers.push((U,D)=>{if(M){let F=Q.getCachedCompression();M.updateBounds(F.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.contentSizeHandlers.push(()=>{if(M){let U=Q.getCachedCompression();M.updateBounds(U.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.destroyHandlers.push(()=>{if(M)M.destroy()})},destroy(){if($)$.destroy(),$=null}}};t2();var WJ=(j=0)=>{let $=[,,,,,,,,];for(let Q=0;Q<8;Q++)$[Q]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:$,sampleIndex:0,sampleCount:0}},qj=(j,$)=>{let Q=performance.now(),J=Q-j.lastTime;if(J===0)return j;if(J>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=$,X.time=Q,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=$,j.lastTime=Q,j}let K=j.samples[j.sampleIndex];if(K.position=$,K.time=Q,j.sampleIndex=(j.sampleIndex+1)%8,j.sampleCount=Math.min(j.sampleCount+1,8),j.sampleCount>=2){let X=(j.sampleIndex-j.sampleCount+8)%8,q=j.samples[X],Z=$-q.position,M=Q-q.time;j.velocity=M>0?Z/M:0}return j.lastPosition=$,j.lastTime=Q,j},B4=(j)=>j.sampleCount>=3,_J=(j,$={})=>{let{wheel:Q=!0,sensitivity:J=1,smoothing:K=!1,idleTimeout:X=150,onScroll:q,onIdle:Z,scrollElement:M,horizontal:U=!1}=$,D=!!M,F=0,G=0,b=D?U?window.innerWidth:window.innerHeight:U?j.clientWidth:j.clientHeight,N=$.compressed??!1,_=$.compression,W=WJ(),A=!1,L=null,R=Kj(()=>{let T=U?j.scrollLeft:j.scrollTop,c=T>=F?"down":"up";if(W=qj(W,T),F=T,q)q({scrollTop:F,direction:c,velocity:W.velocity});g()}),B=Kj(()=>{let T=j.getBoundingClientRect(),c=U?Math.max(0,-T.left):Math.max(0,-T.top),x=c>=F?"down":"up";if(W=qj(W,c),F=c,!A)A=!0;if(q)q({scrollTop:F,direction:x,velocity:W.velocity});g()}),O=(T)=>{T.preventDefault()},V=(T)=>{if(T.deltaX)return;T.preventDefault(),j.scrollLeft+=T.deltaY},z=(T)=>{if(!N)return;T.preventDefault();let c=(U?T.deltaX||T.deltaY:T.deltaY)*J,x=F+c;if(K)x=F+c*0.3;if(x=Math.max(0,Math.min(x,G)),x!==F){let t=x>=F?"down":"up";if(W=qj(W,x),F=x,!A)A=!0;if(q)q({scrollTop:F,direction:t,velocity:W.velocity});g()}},g=()=>{if(L)clearTimeout(L);L=setTimeout(()=>{if(A=!1,W=WJ(F),Z)Z()},X)},d=(T)=>{if(N)return;if(N=!0,_=T,G=T.virtualHeight-b,D)return;if(R.cancel(),j.removeEventListener("scroll",R),!Q)j.removeEventListener("wheel",O);else if(U)j.removeEventListener("wheel",V);if(U)j.style.overflowX="hidden";else j.style.overflow="hidden";if(Q)j.addEventListener("wheel",z,{passive:!1});let c=U?j.scrollLeft:j.scrollTop;if(c>0){let x=U?_?.actualHeight??j.scrollWidth:_?.actualHeight??j.scrollHeight;F=c/x*G}if(U)j.scrollLeft=0;else j.scrollTop=0},s=()=>{if(!N)return;if(N=!1,D){_=void 0;return}if(j.removeEventListener("wheel",z),U)j.style.overflowX="auto";else j.style.overflow="auto";if(j.addEventListener("scroll",R,{passive:!0}),!Q)j.addEventListener("wheel",O,{passive:!1});else if(U)j.addEventListener("wheel",V,{passive:!1});if(_&&F>0){let c=F/G*(_.actualHeight-b);if(U)j.scrollLeft=c;else j.scrollTop=c}_=void 0},j2=()=>{if(D||N)return F;return U?j.scrollLeft:j.scrollTop},i=(T,c=!1)=>{let x=Math.max(0,Math.min(T,G||1/0));if(D){let J2=j.getBoundingClientRect();if(U){let t=J2.left+window.scrollX;window.scrollTo({left:t+x,behavior:c?"smooth":"auto"})}else{let t=J2.top+window.scrollY;window.scrollTo({top:t+x,behavior:c?"smooth":"auto"})}}else if(N){if(x===F)return;let t=x>=F?"down":"up";if(W=qj(W,x),F=x,!A)A=!0;if(q)q({scrollTop:F,direction:t,velocity:W.velocity});g()}else if(U)j.scrollTo({left:x,behavior:c?"smooth":"auto"});else j.scrollTo({top:x,behavior:c?"smooth":"auto"})},k=(T)=>{i(j2()+T)},S=()=>{return j2()<=0},p=(T=0)=>{let c=j2(),x=D||N?G:U?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;return c>=x-T},I=()=>{let T=j2(),c=D||N?G:U?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;if(c<=0)return 0;return Math.min(1,Math.max(0,T/c))},P=(T)=>{if(T.compression)_=T.compression,G=_.virtualHeight-b},C=()=>N,h=()=>Math.abs(W.velocity),m=()=>B4(W),a=()=>A,n=()=>D,q2=(T)=>{if(b=T,_)G=_.virtualHeight-b},Z2=()=>{if(L)clearTimeout(L);if(D)B.cancel(),window.removeEventListener("scroll",B);else R.cancel(),j.removeEventListener("scroll",R),j.removeEventListener("wheel",z),j.removeEventListener("wheel",O),j.removeEventListener("wheel",V)};if(D){if(N&&_)G=_.virtualHeight-b;window.addEventListener("scroll",B,{passive:!0})}else if(N&&_){if(G=_.virtualHeight-b,U)j.style.overflowX="hidden";else j.style.overflow="hidden";if(Q)j.addEventListener("wheel",z,{passive:!1})}else{if(U)j.style.overflowX="auto",j.style.overflowY="hidden";else j.style.overflow="auto";if(j.addEventListener("scroll",R,{passive:!0}),!Q)j.addEventListener("wheel",O,{passive:!1});else if(U)j.addEventListener("wheel",V,{passive:!1})}return{getScrollTop:j2,scrollTo:i,scrollBy:k,isAtTop:S,isAtBottom:p,getScrollPercentage:I,getVelocity:h,isTracking:m,isScrolling:a,updateConfig:P,enableCompression:d,disableCompression:s,isCompressed:C,isWindowMode:n,updateContainerHeight:q2,destroy:Z2}},Kj=(j)=>{let $=null,Q=null,J=(...K)=>{if(Q=K,$===null)$=requestAnimationFrame(()=>{if($=null,Q)j(...Q)})};return J.cancel=()=>{if($!==null)cancelAnimationFrame($),$=null},J};var VJ=()=>{let j=null,$=0,Q=!1;return{name:"withCompression",priority:20,setup(J){let{dom:K,config:X}=J,{classPrefix:q,horizontal:Z}=X,M=J.updateCompressionMode.bind(J),U=()=>{let F=J.getVirtualTotal(),G=M2(F,J.heightCache);if(G.isCompressed&&!Q){Q=!0,J.scrollController.enableCompression(G),J.updateContentSize(G.virtualHeight),J.setScrollFns(()=>$,(W)=>{$=W});let b=K.viewport,N=(W)=>{W.preventDefault();let A=G.virtualHeight-J.state.viewportState.containerHeight;$=Math.max(0,Math.min($+W.deltaY,A)),J.scrollController.scrollTo($)};if(b.addEventListener("wheel",N,{passive:!1}),J.destroyHandlers.push(()=>{b.removeEventListener("wheel",N)}),!K.viewport.querySelector(`.${q}-scrollbar-track`)){if(j=C2(K.viewport,(A)=>J.scrollController.scrollTo(A),{},q,Z),!K.viewport.classList.contains(`${q}-viewport--custom-scrollbar`))K.viewport.classList.add(`${q}-viewport--custom-scrollbar`);j.updateBounds(G.virtualHeight,J.state.viewportState.containerHeight);let W=j;J.afterScroll.push((A,L)=>{if(W)W.updatePosition(A),W.show()}),J.resizeHandlers.push((A,L)=>{if(W){let H=J.getCachedCompression();W.updateBounds(H.virtualHeight,J.state.viewportState.containerHeight)}})}}else if(!G.isCompressed&&Q)Q=!1,J.scrollController.disableCompression(),J.updateContentSize(G.actualHeight);else if(G.isCompressed)J.scrollController.updateConfig({compression:G}),J.updateContentSize(G.virtualHeight);if(j)j.updateBounds(G.virtualHeight,J.state.viewportState.containerHeight);J.state.cachedCompression={state:G,totalItems:F}};J.updateCompressionMode=U;let D=J.getCachedCompression.bind(J);J.getCachedCompression=()=>{if(J.state.cachedCompression)return J.state.cachedCompression.state;return D()},J.setVisibleRangeFn((F,G,b,N,_)=>{let W=M2(N,b);o2(F,G,b,N,W,_)}),J.setScrollToPosFn((F,G,b,N,_)=>{let W=M2(N,G);return i2(F,G,b,N,W,_)}),J.setPositionElementFn((F,G)=>{let b=J.getVirtualTotal(),N=M2(b,J.heightCache);if(N.isCompressed){let _=Math.round(H2(G,J.scrollController.getScrollTop(),J.heightCache,b,J.state.viewportState.containerHeight,N)),W=J.config.horizontal;F.style.transform=W?`translateX(${_}px)`:`translateY(${_}px)`}else{let _=Math.round(J.heightCache.getOffset(G)),W=J.config.horizontal;F.style.transform=W?`translateX(${_}px)`:`translateY(${_}px)`}}),U(),J.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};var GJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(j){j.methods.set("getScrollSnapshot",()=>{let $=j.scrollController.getScrollTop(),Q=j.getCachedCompression(),J=j.getVirtualTotal(),K=j.methods.get("getSelected"),X=K&&K().length>0?K():void 0;if(J===0){let U={index:0,offsetInItem:0};if(X)U.selectedIds=X;return U}let q,Z;if(Q.isCompressed){let D=$/Q.virtualHeight*J;q=Math.max(0,Math.min(Math.floor(D),J-1)),Z=(D-q)*j.heightCache.getHeight(q)}else q=j.heightCache.indexAtOffset($),Z=$-j.heightCache.getOffset(q);Z=Math.max(0,Z);let M={index:q,offsetInItem:Z};if(X)M.selectedIds=X;return M}),j.methods.set("restoreScroll",($)=>{let{index:Q,offsetInItem:J,selectedIds:K}=$,X=j.getCachedCompression(),q=j.getVirtualTotal();if(q===0)return;let Z=Math.max(0,Math.min(Q,q-1)),M;if(X.isCompressed){let D=j.heightCache.getHeight(Z),F=D>0?J/D:0;M=(Z+F)/q*X.virtualHeight}else M=j.heightCache.getOffset(Z)+J;let U=Math.max(0,X.virtualHeight-j.state.viewportState.containerHeight);if(M=Math.max(0,Math.min(M,U)),j.scrollController.scrollTo(M),K&&K.length>0){let D=j.methods.get("select");if(D)D(...K)}})}}};var Yj=(j={})=>{let{chunkSize:$=100,maxCachedItems:Q=5000,evictionBuffer:J=200,onEvict:K}=j,X=new Map,q=0,Z=0,M=(k)=>{let S=X.get(k);if(!S)S={items:Array($),count:0,lastAccess:Date.now()},X.set(k,S);else S.lastAccess=Date.now();return S},U=(k)=>{return Math.floor(k/$)},D=(k)=>{return k%$},F=()=>q,G=(k)=>{q=k},b=(k)=>{if(k<0||k>=q)return;let S=U(k),p=X.get(S);if(!p)return;return p.items[D(k)]},N=(k)=>{if(k<0||k>=q)return!1;let S=U(k),p=X.get(S);if(!p)return!1;return p.items[D(k)]!==void 0},_=(k,S)=>{let p=U(k),I=M(p),P=D(k),C=I.items[P]===void 0;if(I.items[P]=S,C)I.count++,Z++;if(k>=q)q=k+1},W=(k,S)=>{for(let p=0;p<S.length;p++){let I=S[p];if(I!==void 0)_(k+p,I)}},A=(k)=>{if(k<0||k>=q)return!1;let S=U(k),p=X.get(S);if(!p)return!1;let I=D(k);if(p.items[I]===void 0)return!1;if(p.items[I]=void 0,p.count--,Z--,p.count===0)X.delete(S);return!0},L=(k,S)=>{let p=[];for(let I=k;I<=S&&I<q;I++)p.push(b(I));return p},H=(k,S)=>{for(let p=k;p<=S&&p<q;p++)if(!N(p))return!1;return!0},R=()=>{let k=[],S=null,p=Array.from(X.keys()).sort((I,P)=>I-P);for(let I of p){let P=X.get(I);if(!P)continue;let C=I*$;for(let h=0;h<$;h++){let m=C+h;if(m>=q)break;if(P.items[h]!==void 0)if(S===null)S={start:m,end:m};else if(m===S.end+1)S.end=m;else k.push(S),S={start:m,end:m};else if(S!==null)k.push(S),S=null}}if(S!==null)k.push(S);return k},v=(k,S)=>{let p=[],I=null;for(let P=k;P<=S&&P<q;P++)if(!N(P))if(I===null)I={start:P,end:P};else I.end=P;else if(I!==null)p.push(I),I=null;if(I!==null)p.push(I);return p},B=(k)=>{return X.has(k)},O=(k)=>{let S=X.get(k);if(S)S.lastAccess=Date.now()},V=(k,S)=>{if(k>S||X.size===0)return;let p=Date.now(),I=U(Math.max(0,k)),P=U(Math.min(q-1,S));for(let C=I;C<=P;C++){let h=X.get(C);if(h)h.lastAccess=p}},z=(k,S)=>{if(Z<=Q)return 0;let p=Math.max(0,k-J),I=Math.min(q-1,S+J),P=U(p),C=U(I),h=0,m=[];for(let[a,n]of X)if(a<P||a>C)h+=n.count,m.push(a),Z-=n.count,X.delete(a);if(h>0&&K)K(h,m);return h},g=()=>{if(Z<=Q)return 0;let k=Array.from(X.entries()).sort(([,I],[,P])=>I.lastAccess-P.lastAccess),S=0,p=[];for(let[I,P]of k){if(Z<=Q)break;S+=P.count,Z-=P.count,p.push(I),X.delete(I)}if(S>0&&K)K(S,p);return S},d=()=>{return{totalItems:q,cachedItems:Z,cachedChunks:X.size,chunkSize:$,maxCachedItems:Q,memoryEfficiency:q>0?1-Z/q:1}},s=()=>Z,j2=()=>{X.clear(),Z=0};return{chunkSize:$,maxCachedItems:Q,getTotal:F,setTotal:G,get:b,has:N,set:_,setRange:W,delete:A,getRange:L,isRangeLoaded:H,getLoadedRanges:R,findUnloadedRanges:v,getChunkIndex:U,isChunkLoaded:B,touchChunk:O,touchChunksForRange:V,evictDistant:z,evictToLimit:g,getStats:d,getCachedCount:s,clear:j2,reset:()=>{j2(),q=0}}},Zj=(j)=>{if(j.length===0)return[];let $=[...j].sort((J,K)=>J.start-K.start),Q=[{...$[0]}];for(let J=1;J<$.length;J++){let K=$[J],X=Q[Q.length-1];if(K.start<=X.end+1)X.end=Math.max(X.end,K.end);else Q.push({...K})}return Q},g2=(j,$,Q)=>{let J=Math.floor(j.start/Q)*Q,K=Math.ceil((j.end+1)/Q)*Q-1,X={start:J,end:K};if($.length===0)return[X];let q=[],Z=Zj($),M=X.start;for(let U of Z){if(U.end<M)continue;if(U.start>X.end)break;if(U.start>M)q.push({start:M,end:Math.min(U.start-1,X.end)});if(M=U.end+1,M>X.end)break}if(M<=X.end)q.push({start:M,end:X.end});return q};var Bj=(j={})=>{let{enabled:$=!0,maskCharacter:Q="█",randomVariance:J=!0,maxSampleSize:K=20,customGenerator:X}=j,q=null,Z=!1,M=0,U=(A)=>{if(!$||Z||A.length===0)return;let L=new Map,H=new Map,R=Math.min(A.length,K);for(let v=0;v<R;v++){let B=A[v];if(!B||typeof B!=="object")continue;for(let[O,V]of Object.entries(B)){if(O.startsWith("_")||O==="id")continue;if(!H.has(O))H.set(O,{lengths:[],types:new Set});let z=H.get(O),g=Array.isArray(V)?"array":typeof V;if(z.types.add(g),typeof V==="string")z.lengths.push(V.length);else if(V!==null&&V!==void 0)z.lengths.push(String(V).length)}}for(let[v,B]of H){if(B.lengths.length===0)continue;let O=Math.min(...B.lengths),V=Math.max(...B.lengths),z=Math.round(B.lengths.reduce((d,s)=>d+s,0)/B.lengths.length),g="string";if(B.types.has("number")&&B.types.size===1)g="number";else if(B.types.has("boolean")&&B.types.size===1)g="boolean";else if(B.types.has("array"))g="array";else if(B.types.has("object")&&!B.types.has("string"))g="object";L.set(v,{minLength:O,maxLength:V,avgLength:z,type:g})}q=L,Z=!0},D=()=>Z,F=(A)=>{let L=A.avgLength;if(J&&A.minLength!==A.maxLength){if(L=Math.floor(Math.random()*(A.maxLength-A.minLength+1)+A.minLength),Math.random()<0.3)L=Math.max(1,L+Math.floor(Math.random()*3)-1)}return Q.repeat(Math.max(1,L))},G=(A)=>{if(X)return{...X(A),["_isPlaceholder"]:!0};let L={id:`__placeholder_${M++}`,["_isPlaceholder"]:!0,_index:A};if(!q||q.size===0)return L.label=Q.repeat(12),L;for(let[H,R]of q)switch(R.type){case"string":L[H]=F(R);break;case"number":L[H]=0;break;case"boolean":L[H]=!1;break;case"array":L[H]=[];break;case"object":L[H]={};break;default:L[H]=F(R)}return L};return{analyzeStructure:U,hasAnalyzedStructure:D,generate:G,generateRange:(A,L)=>{let H=[];for(let R=A;R<=L;R++)H.push(G(R));return H},isPlaceholder:(A)=>{if(!A||typeof A!=="object")return!1;return A._isPlaceholder===!0},getPlaceholderKey:()=>"_isPlaceholder",clear:()=>{q=null,Z=!1,M=0}}},z2=(j)=>{if(!j||typeof j!=="object")return!1;return j._isPlaceholder===!0},wj=(j)=>{return j.filter(($)=>!z2($))};var D4=50,Uj=(j={})=>{let{adapter:$,initialItems:Q,initialTotal:J,storage:K,placeholder:X,pageSize:q=D4,onStateChange:Z,onItemsLoaded:M,onItemsEvicted:U}=j,D=Yj({...K,onEvict:(w,f)=>{U?.(w),R()}}),F=null,G=()=>{if(!F)F=Bj(X);return F},b=new Map,N=!1,_,W=!0,A,L=[],H=new Map,R=()=>{Z?.(j2())},v=()=>{b.clear();let w=D.getLoadedRanges();for(let f of w)for(let o=f.start;o<=f.end;o++){let $2=D.get(o);if($2&&!z2($2))b.set($2.id,o)}},B=(w,f)=>{if(!z2(f))b.set(f.id,w)},O=(w)=>{b.delete(w)},V=(w,f)=>{return`${w}-${f}`},z=()=>D.getTotal(),g=()=>D.getCachedCount(),d=()=>N,s=()=>W,j2=()=>({total:D.getTotal(),cached:D.getCachedCount(),isLoading:N,pendingRanges:L,error:_,hasMore:W,cursor:A}),i=()=>D,k=()=>G(),S=(w)=>{let f=D.get(w);if(f!==void 0)return f;if(w>=0&&w<D.getTotal())return G().generate(w);return},p=(w)=>{let f=b.get(w);if(f===void 0)return;return D.get(f)},I=(w)=>{return b.get(w)??-1},P=(w)=>{let f=D.get(w);return f!==void 0&&!z2(f)},C=(w,f)=>{let o=[],$2=D.getTotal(),l=0,X2=0;D.touchChunksForRange(w,Math.min(f,$2-1));for(let K2=w;K2<=f&&K2<$2;K2++){let A2=D.get(K2);if(A2!==void 0)o.push(A2),l++;else o.push(G().generate(K2)),X2++}return o},h=(w)=>{D.setTotal(w),W=D.getCachedCount()<w,R()},m=(w,f=0,o)=>{if(F&&!F.hasAnalyzedStructure()&&w.length>0)F.analyzeStructure(w);for(let $2=0;$2<w.length;$2++){let l=w[$2];if(l!==void 0){let X2=f+$2;D.set(X2,l),B(X2,l)}}if(o!==void 0)D.setTotal(o);else if(f+w.length>D.getTotal())D.setTotal(f+w.length);W=D.getCachedCount()<D.getTotal(),M?.(w,f,D.getTotal()),R()},a=(w,f)=>{let o=b.get(w);if(o===void 0)return!1;let $2=D.get(o);if(!$2)return!1;let l={...$2,...f};if(D.set(o,l),f.id!==void 0&&f.id!==w)O(w),B(o,l);return R(),!0},n=(w)=>{let f=b.get(w);if(f===void 0)return!1;D.delete(f),O(w);let o=D.getTotal();if(o>0)D.setTotal(o-1);return R(),!0},q2=async(w,f)=>{if(!$)return;let o=V(w,f);if(H.has(o))return;let $2=D.getLoadedRanges(),l=g2({start:w,end:f},$2,D.chunkSize);if(l.length===0)return;let X2=D.chunkSize,K2=[];for(let U2 of l){let Y2=Math.floor(U2.start/X2),V2=Math.floor(U2.end/X2);for(let B2=Y2;B2<=V2;B2++){let G2=B2*X2,D2=G2+X2-1,S2=V(G2,D2);if(!K2.some((F2)=>F2.start===G2)&&!H.has(S2))K2.push({start:G2,end:D2})}}let A2=[];for(let U2 of l){let Y2=Math.floor(U2.start/X2),V2=Math.floor(U2.end/X2);for(let B2=Y2;B2<=V2;B2++){let G2=B2*X2,D2=G2+X2-1,S2=V(G2,D2);if(H.has(S2)){let F2=H.get(S2);if(!A2.includes(F2))A2.push(F2)}}}for(let U2 of K2){let Y2=V(U2.start,U2.end),V2=(async()=>{L.push(U2),N=!0,_=void 0,R();try{let B2=U2.end-U2.start+1,G2={offset:U2.start,limit:B2,cursor:void 0},D2=await $.read(G2);if(m(D2.items,U2.start,D2.total),D2.cursor)A=D2.cursor;if(D2.hasMore!==void 0)W=D2.hasMore;else if(D2.total!==void 0)W=D.getCachedCount()<D2.total}catch(B2){_=B2 instanceof Error?B2:Error(String(B2))}finally{H.delete(Y2),L=L.filter((B2)=>B2.start!==U2.start||B2.end!==U2.end),N=H.size>0,R()}})();H.set(Y2,V2),A2.push(V2)}await Promise.all(A2)},Z2=async(w,f)=>{if(D.isRangeLoaded(w,f))return;await q2(w,f)},T=async()=>{if(!$)return;await q2(0,q-1)},c=async()=>{if(!$||N||!W)return!1;let w=D.getCachedCount(),f=D.getTotal(),o=w,$2=Math.min(o+q-1,f>0?f-1:o+q-1);if(o>=f&&f>0)return W=!1,!1;return await q2(o,$2),D.getCachedCount()>w},x=async()=>{if(D.clear(),b.clear(),F)F.clear();A=void 0,W=!0,_=void 0,R(),await T()},J2=(w,f)=>{if(D.evictDistant(w,f)>0)v()},t=()=>{D.clear(),b.clear(),A=void 0,_=void 0,L=[],N=!1,R()},Q2=()=>{if(D.reset(),b.clear(),F)F.clear();A=void 0,W=!0,_=void 0,L=[],N=!1,R()};if(Q&&Q.length>0)m(Q,0,J??Q.length);else if(J!==void 0)D.setTotal(J);return{getState:j2,getTotal:z,getCached:g,getIsLoading:d,getHasMore:s,getStorage:i,getPlaceholders:k,getItem:S,getItemById:p,getIndexById:I,isItemLoaded:P,getItemsInRange:C,setTotal:h,setItems:m,updateItem:a,removeItem:n,loadRange:q2,ensureRange:Z2,loadInitial:T,loadMore:c,reload:x,evictDistant:J2,clear:t,reset:Q2}};var MJ=(j)=>{let{adapter:$,loading:Q}=j,J=Q?.cancelThreshold??gj,K=Q?.preloadThreshold??dj,X=Q?.preloadAhead??cj;return{name:"withData",priority:20,methods:["reload"],setup(q){let{emitter:Z}=q,M=q.config.reverse,U=q.config.overscan,D=Uj({adapter:$,pageSize:I2,onStateChange:()=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.updateCompressionMode(),q.state.viewportState=zj(q.state.viewportState,q.heightCache,q.getVirtualTotal(),U,q.getCachedCompression()),q.updateContentSize(q.state.viewportState.totalHeight),q.renderIfNeeded()},onItemsLoaded:(A,L,H)=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.forceRender(),Z.emit("load:end",{items:A,total:H})}});q.replaceDataManager(D);let F=null,G=null,b=0,N=()=>{if(G){let A=G;G=null,q.dataManager.ensureRange(A.start,A.end).catch((L)=>{Z.emit("error",{error:L,context:"ensureRange"})})}};q.afterScroll.push((A,L)=>{if(q.state.isDestroyed)return;let H=q.scrollController.getVelocity(),v=q.scrollController.isTracking()&&H<=J;if(G&&b>J&&H<=J){let V=G;G=null,q.dataManager.ensureRange(V.start,V.end).catch((z)=>{Z.emit("error",{error:z,context:"ensureRange"})})}if(b=H,v&&!q.dataManager.getIsLoading()&&q.dataManager.getHasMore()){if(M){if(A<Ej)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:I2}),q.dataManager.loadMore().catch((V)=>{Z.emit("error",{error:V,context:"loadMore"})})}else if(q.state.viewportState.totalHeight-A-q.state.viewportState.containerHeight<Ej)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:I2}),q.dataManager.loadMore().catch((z)=>{Z.emit("error",{error:z,context:"loadMore"})})}let{renderRange:B}=q.state.viewportState;if(!F||B.start!==F.start||B.end!==F.end)if(F={start:B.start,end:B.end},v){G=null;let{start:V,end:z}=B,g=q.getVirtualTotal();if(H>K)if(L==="down")z=Math.min(B.end+X,g-1);else V=Math.max(B.start-X,0);q.dataManager.ensureRange(V,z).catch((d)=>{Z.emit("error",{error:d,context:"ensureRange"})})}else G={start:B.start,end:B.end}});let _=200,W=null;q.afterScroll.push((A,L)=>{if(W!==null)clearTimeout(W);W=setTimeout(()=>{W=null,N()},_)}),q.destroyHandlers.push(()=>{if(W!==null)clearTimeout(W),W=null}),Z.on("load:start",()=>{q.dom.root.setAttribute("aria-busy","true")}),Z.on("load:end",()=>{q.dom.root.removeAttribute("aria-busy")}),q.methods.set("reload",async()=>{await q.dataManager.reload()}),Z.emit("load:start",{offset:0,limit:I2}),q.dataManager.loadInitial().catch((A)=>{Z.emit("error",{error:A,context:"loadInitial"})})}}};var AJ=()=>{let j=null;return{name:"withWindow",priority:5,setup($){let{dom:Q,state:J,config:K,emitter:X}=$;Q.root.style.overflow="visible",Q.root.style.height="auto",Q.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),$.disableViewportResize(),$.setScrollTarget(window),$.setScrollFns(()=>{let U=Q.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let D=Q.viewport.getBoundingClientRect();if(K.horizontal){let F=D.left+window.scrollX;window.scrollTo(F+U,window.scrollY)}else{let F=D.top+window.scrollY;window.scrollTo(window.scrollX,F+U)}}),$.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),J.viewportState.containerWidth=window.innerWidth,J.viewportState.containerHeight=window.innerHeight;let{innerHeight:q,innerWidth:Z}=window,M=()=>{let{innerWidth:U,innerHeight:D}=window,F=K.horizontal?U:D,G=K.horizontal?Z:q;if(Math.abs(F-G)<=1)return;q=D,Z=U,J.viewportState.containerWidth=U,J.viewportState.containerHeight=D,X.emit("resize",{width:U,height:D});for(let b=0;b<$.resizeHandlers.length;b++)$.resizeHandlers[b](U,D);$.renderIfNeeded()};window.addEventListener("resize",M,{passive:!0}),j=()=>{window.removeEventListener("resize",M)},$.destroyHandlers.push(j)},destroy(){if(j)j(),j=null}}};var N4=(j)=>{let $=Aj(j);if(j.scroll?.element===window)$=$.use(AJ());if(j.adapter)$=$.use(MJ({adapter:j.adapter,...j.loading&&{loading:j.loading}}));if(j.layout==="grid"){if(!j.grid)throw Error("[vlist/builder] grid configuration is required when layout is 'grid'");if(!j.grid.columns||j.grid.columns<1)throw Error("[vlist/builder] grid.columns must be a positive integer >= 1");let X={columns:j.grid.columns};if(j.grid.gap!==void 0)X.gap=j.grid.gap;$=$.use(YJ(X))}if(j.groups){if(j.direction==="horizontal")throw Error("[vlist/builder] horizontal direction cannot be combined with groups");let X={getGroupForIndex:j.groups.getGroupForIndex,headerHeight:typeof j.groups.headerHeight==="function"?j.groups.headerHeight("",0):j.groups.headerHeight,headerTemplate:j.groups.headerTemplate};if(j.groups.sticky!==void 0)X.sticky=j.groups.sticky;$=$.use(UJ(X))}let Q=j.selection?.mode||"none";if(Q!=="none"){let X={mode:Q};if(j.selection?.initial!==void 0)X.initial=j.selection.initial;$=$.use(Sj(X))}else $=$.use(Sj({mode:"none"}));$=$.use(VJ());let J=j.scroll?.scrollbar||j.scrollbar;if(J!=="none"){let X=typeof J==="object"?J:{};$=$.use(NJ(X))}$=$.use(GJ());let K=$.build();return K.update=(X)=>{if(X.grid&&K.updateGrid)K.updateGrid(X.grid);if(X.selectionMode!==void 0&&K.setSelectionMode)K.setSelectionMode(X.selectionMode);if(X.itemHeight!==void 0)console.warn("[vlist] Updating itemHeight via update() is not yet supported with the builder pattern. Please recreate the instance or use the full API from 'vlist/full'.");if(X.overscan!==void 0)console.warn("[vlist] Updating overscan via update() is not yet supported with the builder pattern.")},K};e2();var EJ=()=>{let j={},$=(Z,M)=>{if(!j[Z])j[Z]=new Set;return j[Z].add(M),()=>Q(Z,M)},Q=(Z,M)=>{j[Z]?.delete(M)};return{on:$,off:Q,emit:(Z,M)=>{j[Z]?.forEach((U)=>{try{U(M)}catch(D){console.error(`[vlist] Error in event handler for "${String(Z)}":`,D)}})},once:(Z,M)=>{let U=(D)=>{Q(Z,U),M(D)};return $(Z,U)},clear:(Z)=>{if(Z)delete j[Z];else for(let M in j)delete j[M]},listenerCount:(Z)=>{return j[Z]?.size??0}}};export{k2 as toggleSelection,Lj as simpleVisibleRange,h2 as selectItems,Qj as selectAll,QJ as rangesEqual,Kj as rafThrottle,rj as needsCompression,Zj as mergeRanges,DJ as isSelected,z2 as isPlaceholderItem,XJ as isInRange,b2 as isGroupHeader,T2 as getSelectedItems,R2 as getSelectedIds,qJ as getRangeCount,nj as getMaxItemsWithoutCompression,M2 as getCompressionState,oj as getCompressionInfo,M2 as getCompression,wj as filterPlaceholders,KJ as diffRanges,m2 as deselectItems,N4 as createVList,Jj as createStickyHeader,Yj as createSparseStorage,$j as createSelectionState,C2 as createScrollbar,_J as createScrollController,Bj as createPlaceholderManager,lj as createHeightCache,x2 as createGroupedHeightFn,jj as createGroupLayout,p2 as createGridRenderer,a2 as createGridLayout,EJ as createEmitter,Uj as createDataManager,Xj as clearSelection,$J as clampScrollPosition,ej as calculateTotalHeight,O2 as calculateScrollToIndex,Oj as calculateRenderRange,g2 as calculateMissingRanges,JJ as calculateItemOffset,aj as calculateIndexFromScrollPosition,o2 as calculateCompressedVisibleRange,i2 as calculateCompressedScrollToIndex,sj as calculateCompressedRenderRange,H2 as calculateCompressedItemPosition,jJ as calculateActualHeight,u2 as buildLayoutItems,L2 as MAX_VIRTUAL_HEIGHT};
1
+ var{defineProperty:Gj,getOwnPropertyNames:xJ,getOwnPropertyDescriptor:hJ}=Object,mJ=Object.prototype.hasOwnProperty;var xj=new WeakMap,gJ=(j)=>{var $=xj.get(j),Q;if($)return $;if($=Gj({},"__esModule",{value:!0}),j&&typeof j==="object"||typeof j==="function")xJ(j).map((J)=>!mJ.call($,J)&&Gj($,J,{get:()=>j[J],enumerable:!(Q=hJ(j,J))||Q.enumerable}));return xj.set(j,$),$};var dJ=(j,$)=>{for(var Q in $)Gj(j,Q,{get:$[Q],enumerable:!0,configurable:!0,set:(J)=>$[Q]=()=>J})};var hj=(j,$)=>()=>(j&&($=j(j=0)),$);var Ej=200,I2=50,gj=15,dj=2,cj=50,L2=16000000;var X4=(j,$)=>{let Q=$;return{getOffset:(J)=>J*j,getHeight:(J)=>j,indexAtOffset:(J)=>{if(Q===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(J/j),Q-1))},getTotalHeight:()=>Q*j,getTotal:()=>Q,rebuild:(J)=>{Q=J},isVariable:()=>!1}},q4=(j,$)=>{let Q=$,J=new Float64Array(0),K=(q)=>{Q=q,J=new Float64Array(q+1),J[0]=0;for(let Z=0;Z<q;Z++)J[Z+1]=J[Z]+j(Z)};K($);let X=(q)=>{if(Q===0)return 0;if(q<=0)return 0;if(q>=J[Q])return Q-1;let Z=0,V=Q-1;while(Z<V){let D=Z+V+1>>>1;if(J[D]<=q)Z=D;else V=D-1}return Z};return{getOffset:(q)=>{if(q<=0)return 0;if(q>=Q)return J[Q];return J[q]},getHeight:(q)=>j(q),indexAtOffset:(q)=>X(q),getTotalHeight:()=>J[Q]??0,getTotal:()=>Q,rebuild:(q)=>K(q),isVariable:()=>!0}},lj=(j,$)=>{if(typeof j==="number")return X4(j,$);return q4(j,$)},Fj=(j,$,Q,J)=>{if(J===0)return 0;if(!j.isVariable())return Math.ceil(Q/j.getHeight(0));let K=0,X=0,q=$;while(q<J&&X<Q)X+=j.getHeight(q),K++,q++;return Math.max(1,K)},r2=(j,$,Q)=>{if(Q===0)return 0;if(!j.isVariable())return Math.floor($/j.getHeight(0));let J=0,K=0;for(let X=Q-1;X>=0;X--){let q=j.getHeight(X);if(K+q>$)break;K+=q,J++}return Math.max(J,1)},n2=(j,$,Q)=>{if(Q===0)return 0;let J=Math.floor($),K=$-J,X=Math.max(0,Math.min(J,Q-1));return j.getOffset(X)+K*j.getHeight(X)};var M2=(j,$)=>{let Q=$.getTotalHeight(),J=Q>L2,K=J?L2:Q,X=Q>0?K/Q:1;return{isCompressed:J,actualHeight:Q,virtualHeight:K,ratio:X}},o2=(j,$,Q,J,K,X)=>{if(J===0||$===0)return X.start=0,X.end=-1,X;if(!K.isCompressed){let W=Q.indexAtOffset(j),N=Q.indexAtOffset(j+$);if(N<J-1)N++;return X.start=Math.max(0,W),X.end=Math.min(J-1,Math.max(0,N)),X}let{virtualHeight:q}=K,V=j/q*J,D=Math.floor(V),U=Fj(Q,Math.max(0,D),$,J),_=Math.ceil(V)+U,z=q-$-j;if(z<=$&&z>=-1){let W=r2(Q,$,J),N=Math.max(0,J-W),G=Math.max(0,Math.min(1,1-z/$));D=Math.floor(D+(N-D)*G),_=z<=1?J-1:Math.min(J-1,D+U)}return X.start=Math.max(0,D),X.end=Math.min(J-1,Math.max(0,_)),X},sj=(j,$,Q,J)=>{if(Q===0)return J.start=0,J.end=-1,J;return J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$),J},H2=(j,$,Q,J,K,X,q)=>{if(!X.isCompressed||J===0)return Q.getOffset(j);let{virtualHeight:Z}=X,V=Z-K,D=V-$;if(D<=K&&D>=-1){if($>=V-1){let y=Q.getTotalHeight()-Q.getOffset(j);return K-y}let L=r2(Q,K,J),z=Math.max(0,J-L),N=$/Z*J,G=Math.max(0,Math.min(1,1-D/K)),F=Q.getOffset(j)-Q.getOffset(z),O=Q.getOffset(j)-n2(Q,N,J);return O+(F-O)*G}let _=$/Z*J;return Q.getOffset(j)-n2(Q,_,J)},i2=(j,$,Q,J,K,X="start")=>{if(J===0)return 0;let q;if(K.isCompressed){if(X==="end"&&j===J-1)return Math.max(0,K.virtualHeight-Q);q=j/J*K.virtualHeight}else q=$.getOffset(j);let Z=$.getHeight(j);switch(X){case"center":q-=(Q-Z)/2;break;case"end":q-=Q-Z;break}let V=K.virtualHeight-Q;return Math.max(0,Math.min(q,V))},aj=(j,$,Q,J)=>{if(Q===0)return 0;if(J.isCompressed){let K=j/J.virtualHeight;return Math.floor(K*Q)}return $.indexAtOffset(j)},rj=(j,$)=>{if(typeof $==="number")return j*$>L2;return $.getTotalHeight()>L2},nj=(j)=>{if(j<=0)return 0;return Math.floor(L2/j)},oj=(j,$)=>{let Q=M2(j,$);if(!Q.isCompressed)return`No compression needed (${j} items, ${(Q.actualHeight/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${j} items, ${(Q.actualHeight/1e6).toFixed(1)}M px → ${(Q.virtualHeight/1e6).toFixed(1)}M px virtual)`};var t2=()=>{};var b2=(j)=>{return j!==null&&typeof j==="object"&&j.__groupHeader===!0};var ij={};dJ(ij,{createGridRenderer:()=>p2});var K4=(j=200)=>{let $=[];return{acquire:()=>{let X=$.pop();if(X)return X;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(X)=>{if($.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"),$.push(X)},clear:()=>{$.length=0}}},p2=(j,$,Q,J,K,X,q,Z)=>{let V=K4(),D=new Map,U=X,_=!1,L=null,z=0,W="",N=(b)=>{if(L&&z===b)return L;return L=M2(b,Q),z=b,L},G={selected:!1,focused:!1},F=(b,S)=>{return G.selected=b,G.focused=S,G},O=`${K}-item ${K}-grid-item`,y=`${K}-item--selected`,E=`${K}-item--focused`,R=(b,S)=>{if(typeof S==="string")b.innerHTML=S;else b.replaceChildren(S)},B=(b,S,h)=>{b.classList.toggle(y,S),b.classList.toggle(E,h)},H=(b,S)=>{let h=J.getRow(b);if(S){let m=S.totalItems,s=N(m);if(s.isCompressed)return H2(h,S.scrollTop,Q,m,S.containerHeight,s,S.rangeStart)}return Q.getOffset(h)},M=(b,S,h)=>{let m=b.dataset.id?.startsWith("__group_header"),s=m?0:J.getCol(S),r=m?0:J.getColumnOffset(s,U),q2;if(_){let Z2=J.getRow(S),k=0,d=new Set;for(let x=0;x<S;x++){let J2=J.getRow(x);if(J2<Z2&&!d.has(J2)){let o=Q.getHeight(x);k+=o,d.add(J2)}}q2=k}else q2=H(S,h);b.style.transform=`translate(${Math.round(r)}px, ${Math.round(q2)}px)`},T=(b,S)=>{let h=b.dataset.id?.startsWith("__group_header"),m=h?U:J.getColumnWidth(U),s;if(_||h)s=Q.getHeight(S)-J.gap;else{let r=J.getRow(S);s=Q.getHeight(r)-J.gap}b.style.width=`${m}px`,b.style.height=`${s}px`},g=(b,S,h,m,s)=>{let r=V.acquire(),q2=F(h,m);if(r.className=O,r.dataset.index=String(b),r.dataset.id=String(S.id),r.dataset.row=String(J.getRow(b)),r.dataset.col=String(J.getCol(b)),r.ariaSelected=String(h),Z)r.id=`${Z}-item-${b}`;if(q)W=String(q()),r.setAttribute("aria-setsize",W),r.setAttribute("aria-posinset",String(b+1));T(r,b);let Z2=$(S,b,q2);return R(r,Z2),B(r,h,m),M(r,b,s),r},t=(b,S,h,m,s)=>{if(S.start===0&&b.length>0)_=b2(b[0]);for(let[k,d]of D)if(k<S.start||k>S.end)d.element.remove(),V.release(d.element),D.delete(k);let r=!1;if(q){let k=String(q());r=k!==W,W=k}let q2=document.createDocumentFragment(),Z2=[];for(let k=S.start;k<=S.end;k++){let d=k-S.start,x=b[d];if(!x){console.warn(`⚠️ RENDER: Missing item at index ${k} (range: ${S.start}-${S.end}, items.length: ${b.length})`);continue}let J2=h.has(x.id),o=k===m,Q2=D.get(k);if(Q2){let v=Q2.element.dataset.id,f=String(x.id);if(v!==f){let $2=F(J2,o),c=$(x,k,$2);R(Q2.element,c),Q2.element.dataset.id=f,Q2.element.dataset.row=String(J.getRow(k)),Q2.element.dataset.col=String(J.getCol(k)),T(Q2.element,k)}if(B(Q2.element,J2,o),Q2.element.ariaSelected=String(J2),M(Q2.element,k,s),r)Q2.element.setAttribute("aria-setsize",W)}else{let v=g(k,x,J2,o,s);q2.appendChild(v),Z2.push({index:k,element:v})}}if(Z2.length>0){j.appendChild(q2);for(let{index:k,element:d}of Z2)D.set(k,{index:k,element:d})}},l=(b)=>{for(let[S,h]of D)M(h.element,S,b)},e=(b,S,h,m)=>{let s=D.get(b);if(s){let r=F(h,m),q2=$(S,b,r);R(s.element,q2),B(s.element,h,m),s.element.dataset.id=String(S.id),s.element.ariaSelected=String(h),T(s.element,b)}},j2=(b,S,h)=>{let m=D.get(b);if(m)B(m.element,S,h)},C=(b)=>{return D.get(b)?.element},w=(b)=>{if(Math.abs(b-U)<1)return;U=b;for(let[S,h]of D)T(h.element,S),M(h.element,S)},p=()=>{for(let[,b]of D)b.element.remove(),V.release(b.element);D.clear()};return{render:t,updatePositions:l,updateItem:e,updateItemClasses:j2,getElement:C,updateContainerWidth:w,clear:p,destroy:()=>{p(),V.clear()}}};var e2=hj(()=>{t2()});var cJ=0,y2=5,lJ=100,Mj=2,sJ=(j=0)=>{let $=Array(y2);for(let Q=0;Q<y2;Q++)$[Q]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:$,sampleIndex:0,sampleCount:0}},aJ=(j,$)=>{let Q=performance.now(),J=Q-j.lastTime;if(J===0)return j;if(J>lJ){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=$,X.time=Q,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=$,j.lastTime=Q,j}let K=j.samples[j.sampleIndex];if(K.position=$,K.time=Q,j.sampleIndex=(j.sampleIndex+1)%y2,j.sampleCount=Math.min(j.sampleCount+1,y2),j.sampleCount>=Mj){let X=(j.sampleIndex-j.sampleCount+y2)%y2,q=j.samples[X],Z=$-q.position,V=Q-q.time;j.velocity=V>0?Math.abs(Z)/V:0}return j.lastPosition=$,j.lastTime=Q,j},mj=(j,$)=>{if(typeof j==="number"){let X=$;return{getOffset:(q)=>q*j,getHeight:()=>j,indexAtOffset:(q)=>{if(X===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(q/j),X-1))},getTotalHeight:()=>X*j,getTotal:()=>X,rebuild:(q)=>{X=q},isVariable:()=>!1}}let Q=$,J=new Float64Array(0),K=(X)=>{Q=X,J=new Float64Array(X+1),J[0]=0;for(let q=0;q<X;q++)J[q+1]=J[q]+j(q)};return K($),{getOffset:(X)=>{if(X<=0)return 0;if(X>=Q)return J[Q];return J[X]},getHeight:(X)=>j(X),indexAtOffset:(X)=>{if(Q===0)return 0;if(X<=0)return 0;if(X>=J[Q])return Q-1;let q=0,Z=Q-1;while(q<Z){let V=q+Z+1>>>1;if(J[V]<=X)q=V;else Z=V-1}return q},getTotalHeight:()=>J[Q]??0,getTotal:()=>Q,rebuild:(X)=>K(X),isVariable:()=>!0}},rJ=()=>{let j={},$=(X,q)=>{if(!j[X])j[X]=new Set;return j[X].add(q),()=>Q(X,q)},Q=(X,q)=>{j[X]?.delete(q)};return{on:$,off:Q,emit:(X,q)=>{j[X]?.forEach((Z)=>{try{Z(q)}catch(V){console.error(`[vlist] Error in "${X}" handler:`,V)}})},clear:()=>{for(let X in j)delete j[X]}}},nJ=(j)=>{if(typeof j==="string"){let $=document.querySelector(j);if(!$)throw Error(`[vlist/builder] Container not found: ${j}`);return $}return j},oJ=(j,$,Q,J)=>{let K=document.createElement("div");if(K.className=$,J)K.classList.add(`${$}--horizontal`);if(K.setAttribute("role","listbox"),K.setAttribute("tabindex","0"),Q)K.setAttribute("aria-label",Q);if(J)K.setAttribute("aria-orientation","horizontal");let X=document.createElement("div");if(X.className=`${$}-viewport`,J)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let q=document.createElement("div");if(q.className=`${$}-content`,q.style.position="relative",J)q.style.height="100%";else q.style.width="100%";let Z=document.createElement("div");if(Z.className=`${$}-items`,Z.style.position="relative",J)Z.style.height="100%";else Z.style.width="100%";return q.appendChild(Z),X.appendChild(q),K.appendChild(X),j.appendChild(K),{root:K,viewport:X,content:q,items:Z}},iJ=(j=100)=>{let $=[];return{acquire:()=>{let Q=$.pop();if(Q)return Q;let J=document.createElement("div");return J.setAttribute("role","option"),J},release:(Q)=>{if($.length<j)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),$.push(Q)},clear:()=>{$.length=0}}},tJ=(j,$,Q,J,K)=>{if(J===0||$===0){K.start=0,K.end=0;return}let X=Q.indexAtOffset(j),q=Q.indexAtOffset(j+$);if(q<J-1)q++;K.start=Math.max(0,X),K.end=Math.min(J-1,Math.max(0,q))},eJ=(j,$,Q,J)=>{if(Q===0){J.start=0,J.end=0;return}J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$)},j4=(j,$,Q,J,K)=>{if(J===0)return 0;let X=Math.max(0,Math.min(j,J-1)),q=$.getOffset(X),Z=$.getHeight(X),V=Math.max(0,$.getTotalHeight()-Q),D;switch(K){case"center":D=q-(Q-Z)/2;break;case"end":D=q-Q+Z;break;default:D=q}return Math.max(0,Math.min(D,V))},J4=(j)=>j<0.5?2*j*j:-1+(4-2*j)*j,$4=(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}},Aj=(j)=>{if(!j.container)throw Error("[vlist/builder] Container is required");if(!j.item)throw Error("[vlist/builder] item configuration is required");let $=j.direction==="horizontal",Q=$?"width":"height",J=$?j.item.width:j.item.height;if(J==null)throw Error(`[vlist/builder] item.${Q} is required${$?" when direction is 'horizontal'":""}`);if(typeof J==="number"&&J<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof J!=="number"&&typeof J!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`);if(!j.item.template)throw Error("[vlist/builder] item.template is required");if($&&j.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,X=!1,q={use(Z){if(X)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(Z.name,Z),q},build(){if(X)throw Error("[vlist/builder] .build() can only be called once");return X=!0,Q4(j,K,$,J)}};return q};function Q4(j,$,Q,J){let{item:K,items:X,overscan:q=3,classPrefix:Z="vlist",ariaLabel:V,reverse:D=!1,scroll:U}=j,_=U?.wheel??!0,L=U?.wrap??!1,z=D,W=`${Z}-${cJ++}`,N=J,G=Q?typeof K.height==="number"?K.height:void 0:typeof K.width==="number"?K.width:void 0,F=K.template,O={overscan:q,classPrefix:Z,reverse:z,wrap:L,horizontal:Q,ariaIdPrefix:W},y=Array.from($.values()).sort((Y,A)=>(Y.priority??50)-(A.priority??50)),E=new Set(y.map((Y)=>Y.name));for(let Y of y)if(Y.conflicts){for(let A of Y.conflicts)if(E.has(A))throw Error(`[vlist/builder] ${Y.name} and ${A} cannot be combined`)}if(Q){if(E.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(E.has("withGroups"))throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'")}if(z){if(E.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true");if(E.has("withGroups"))throw Error("[vlist/builder] withGroups cannot be used with reverse: true")}let R=nJ(j.container),B=oJ(R,Z,V,Q),H=rJ(),M=X?[...X]:[],T=mj(N,M.length),g=iJ(),t=B.viewport.clientHeight,l=B.viewport.clientWidth,e=!1,j2=!1,C=0,w=null,p=null,u=sJ(0),b={start:0,end:0},S={start:0,end:0},h={start:-1,end:-1},m={viewportState:{scrollTop:0,containerHeight:t,totalHeight:T.getTotalHeight(),actualHeight:T.getTotalHeight(),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},s=new Map,r={selected:!1,focused:!1},q2=`${Z}-item`,Z2="",k=new Map,d=()=>{k.clear();for(let Y=0;Y<M.length;Y++){let A=M[Y];if(A)k.set(A.id,Y)}};d();let x=null,J2=()=>x?x.getTotal():M.length,o=[],Q2=[],v=[],f=[],n=[],$2=[],c=new Map,X2=()=>{return Q?B.viewport.scrollLeft:B.viewport.scrollTop},K2=(Y)=>{if(Q)B.viewport.scrollLeft=Y;else B.viewport.scrollTop=Y},A2=(Y=2)=>{let A=T.getTotalHeight();return C+t>=A-Y},U2=!1,Y2,V2,B2=(Y,A,P,I,i)=>{tJ(Y,A,P,I,i)},G2=(Y,A,P,I,i)=>{return j4(Y,A,P,I,i)},D2=(Y,A)=>{if(typeof A==="string")Y.innerHTML=A;else Y.replaceChildren(A)},F2=(Y,A)=>{let P=Math.round(T.getOffset(A));if(Q)Y.style.transform=`translateX(${P}px)`;else Y.style.transform=`translateY(${P}px)`},FJ=(Y,A)=>{let P=g.acquire();if(P.className=q2,Q){if(P.style.width=`${T.getHeight(Y)}px`,G!=null)P.style.height=`${G}px`}else P.style.height=`${T.getHeight(Y)}px`;return P.dataset.index=String(Y),P.dataset.id=String(A.id),P.ariaSelected="false",P.id=`${W}-item-${Y}`,Z2=String(J2()),P.setAttribute("aria-setsize",Z2),P.setAttribute("aria-posinset",String(Y+1)),D2(P,F(A,Y,r)),F2(P,Y),P},w2=()=>{let Y=`${T.getTotalHeight()}px`;if(Q)B.content.style.width=Y;else B.content.style.height=Y},Dj=new Set,Wj=-1,LJ=()=>{if(e)return;let Y=J2();if(B2(C,t,T,Y,b),eJ(b,q,Y,S),S.start===h.start&&S.end===h.end)return;let A=String(Y),P=A!==Z2;Z2=A;for(let[a,N2]of s)if(a<S.start||a>S.end)N2.remove(),g.release(N2),s.delete(a);let I=document.createDocumentFragment(),i=[];for(let a=S.start;a<=S.end;a++){let N2=x?x.getItem(a):M[a];if(!N2)continue;let _2=s.get(a);if(_2){let E2=_2.dataset.id,l2=String(N2.id);if(E2!==l2)if(D2(_2,F(N2,a,r)),_2.dataset.id=l2,Q)_2.style.width=`${T.getHeight(a)}px`;else _2.style.height=`${T.getHeight(a)}px`;F2(_2,a);let s2=Dj.has(N2.id),uJ=a===Wj;if(_2.classList.toggle(`${Z}-item--selected`,s2),_2.classList.toggle(`${Z}-item--focused`,uJ),_2.ariaSelected=s2?"true":"false",P)_2.setAttribute("aria-setsize",Z2)}else{let E2=FJ(a,N2),l2=Dj.has(N2.id),s2=a===Wj;if(l2)E2.classList.add(`${Z}-item--selected`),E2.ariaSelected="true";if(s2)E2.classList.add(`${Z}-item--focused`);I.appendChild(E2),i.push({index:a,element:E2})}}if(i.length>0){B.items.appendChild(I);for(let{index:a,element:N2}of i)s.set(a,N2)}h.start=S.start,h.end=S.end,m.lastRenderRange.start=S.start,m.lastRenderRange.end=S.end,m.viewportState.scrollTop=C,m.viewportState.visibleRange.start=b.start,m.viewportState.visibleRange.end=b.end,m.viewportState.renderRange.start=S.start,m.viewportState.renderRange.end=S.end,H.emit("range:change",{range:{start:S.start,end:S.end}})},OJ=()=>{h.start=-1,h.end=-1,Y2()};Y2=LJ,V2=OJ;let v2=()=>{if(e)return;let Y=X2(),A=Y>=C?"down":"up";if(u=aJ(u,Y),!B.root.classList.contains(`${Z}--scrolling`))B.root.classList.add(`${Z}--scrolling`);C=Y,Y2(),H.emit("scroll",{scrollTop:Y,direction:A}),H.emit("velocity:change",{velocity:u.velocity,reliable:u.sampleCount>=Mj});for(let P=0;P<o.length;P++)o[P](Y,A);if(p)clearTimeout(p);p=setTimeout(()=>{B.root.classList.remove(`${Z}--scrolling`),u.velocity=0,u.sampleCount=0,H.emit("velocity:change",{velocity:0,reliable:!1})},U?.idleTimeout??150)},d2=null,P2=B.viewport;if(P2.addEventListener("scroll",v2,{passive:!0}),Q&&_)d2=(Y)=>{if(Y.deltaX)return;Y.preventDefault(),B.viewport.scrollLeft+=Y.deltaY},B.viewport.addEventListener("wheel",d2);B.viewport.classList.add(`${Z}-viewport--custom-scrollbar`);let vj=(Y)=>{let P=Y.target.closest("[data-index]");if(P){let I=parseInt(P.dataset.index??"-1",10);if(I>=0){let i=x?.getItem(I)??M[I];if(i){if(i.__groupHeader)return;H.emit("item:click",{item:i,index:I,event:Y})}}}for(let I=0;I<Q2.length;I++)Q2[I](Y)},zJ=(Y)=>{let P=Y.target.closest("[data-index]");if(P){let I=parseInt(P.dataset.index??"-1",10);if(I>=0){let i=x?.getItem(I)??M[I];if(i){if(i.__groupHeader)return;H.emit("item:dblclick",{item:i,index:I,event:Y})}}}},fj=(Y)=>{for(let A=0;A<v.length;A++)v[A](Y)};B.items.addEventListener("click",vj),B.items.addEventListener("dblclick",zJ),B.root.addEventListener("keydown",fj);let Nj=!0,bJ=()=>l,PJ=()=>t,_j=new ResizeObserver((Y)=>{if(e)return;for(let A of Y){let P=A.contentRect.height,I=A.contentRect.width,i=Q?I:P;if(l=I,Math.abs(i-t)>1){if(t=i,m.viewportState.containerHeight=i,j2)w2(),Y2(),H.emit("resize",{height:P,width:I})}if(j2)for(let a=0;a<f.length;a++)f[a](I,P)}});if(Nj)_j.observe(B.viewport);let W2={get dom(){return B},get heightCache(){return T},get emitter(){return H},get config(){return O},get rawConfig(){return j},get renderer(){return{render:(Y,A,P,I,i)=>{Dj=P,Wj=I,V2()},updateItemClasses:(Y,A,P)=>{let I=s.get(Y);if(!I)return;I.classList.toggle(`${Z}-item--selected`,A),I.classList.toggle(`${Z}-item--focused`,P),I.ariaSelected=A?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(Y)=>s.get(Y)??null,clear:()=>{},destroy:()=>{}}},set renderer(Y){},get dataManager(){return x},set dataManager(Y){x=Y},get scrollController(){return Vj},set scrollController(Y){Vj=Y},state:m,getContainerWidth(){return l},afterScroll:o,clickHandlers:Q2,keydownHandlers:v,resizeHandlers:f,contentSizeHandlers:n,destroyHandlers:$2,methods:c,replaceTemplate(Y){F=Y},replaceRenderer(Y){},replaceDataManager(Y){x=Y},replaceScrollController(Y){Vj=Y},getItemsForRange(Y){let A=[];for(let P=Y.start;P<=Y.end;P++){let I=x?x.getItem(P):M[P];if(I)A.push(I)}return A},getAllLoadedItems(){if(x){let Y=x.getTotal(),A=[];for(let P=0;P<Y;P++){let I=x.getItem(P);if(I)A.push(I)}return A}return[...M]},getVirtualTotal(){return J2()},getCachedCompression(){return{isCompressed:!1,actualHeight:T.getTotalHeight(),virtualHeight:T.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:C,totalItems:J2(),containerHeight:t,rangeStart:S.start}},renderIfNeeded(){Y2()},forceRender(){V2()},getRenderFns(){return{renderIfNeeded:Y2,forceRender:V2}},setRenderFns(Y,A){Y2=Y,V2=A},setVirtualTotalFn(Y){J2=Y},rebuildHeightCache(Y){T.rebuild(Y??J2())},setHeightConfig(Y){T=mj(Y,J2())},updateContentSize(Y){let A=`${Y}px`;if(Q)B.content.style.width=A;else B.content.style.height=A},updateCompressionMode(){},setVisibleRangeFn(Y){B2=Y},setScrollToPosFn(Y){G2=Y},setPositionElementFn(Y){F2=Y},setScrollFns(Y,A){X2=Y,K2=(P)=>{A(P),v2()}},setScrollTarget(Y){P2.removeEventListener("scroll",v2),P2=Y,P2.addEventListener("scroll",v2,{passive:!0})},getScrollTarget(){return P2},setContainerDimensions(Y){bJ=Y.width,PJ=Y.height,l=Y.width(),t=Y.height(),m.viewportState.containerHeight=t},disableViewportResize(){if(Nj)Nj=!1,_j.unobserve(B.viewport)}};x={getState:()=>({total:M.length,cached:M.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>M.length,getCached:()=>M.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Y)=>M[Y],getItemById:(Y)=>{let A=k.get(Y);return A!==void 0?M[A]:void 0},getIndexById:(Y)=>k.get(Y)??-1,isItemLoaded:(Y)=>Y>=0&&Y<M.length&&M[Y]!==void 0,getItemsInRange:(Y,A)=>{let P=[],I=Math.max(0,Y),i=Math.min(A,M.length-1);for(let a=I;a<=i;a++)P.push(M[a]);return P},setTotal:(Y)=>{},setItems:(Y,A=0,P)=>{if(A===0&&(P!==void 0||M.length===0))M=[...Y];else{let I=A+Y.length;if(M.length<I)M.length=I;for(let i=0;i<Y.length;i++)M[A+i]=Y[i]}if(d(),j2){T.rebuild(J2()),w2(),W2.updateCompressionMode();for(let I=0;I<n.length;I++)n[I]();V2()}},updateItem:(Y,A)=>{let P=k.get(Y);if(P===void 0)return!1;let I=M[P];if(!I)return!1;if(M[P]={...I,...A},A.id!==void 0&&A.id!==Y)k.delete(Y),k.set(A.id,P);let i=s.get(P);if(i)D2(i,F(M[P],P,r)),i.dataset.id=String(M[P].id);return!0},removeItem:(Y)=>{let A=k.get(Y);if(A===void 0)return!1;if(M.splice(A,1),d(),j2){T.rebuild(J2()),w2(),W2.updateCompressionMode();for(let P=0;P<n.length;P++)n[P]();V2()}return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{M=[],k.clear()},reset:()=>{if(M=[],k.clear(),j2)T.rebuild(0),w2(),V2()}};let Vj={getScrollTop:()=>X2(),scrollTo:(Y)=>{K2(Y),C=Y,Y2()},scrollBy:(Y)=>{let A=X2()+Y;K2(A),C=A,Y2()},isAtTop:()=>C<=2,isAtBottom:(Y=2)=>A2(Y),getScrollPercentage:()=>{let Y=T.getTotalHeight(),A=Math.max(0,Y-t);return A>0?C/A:0},getVelocity:()=>u.velocity,isTracking:()=>u.sampleCount>=Mj,isScrolling:()=>B.root.classList.contains(`${Z}--scrolling`),updateConfig:()=>{},enableCompression:()=>{},disableCompression:()=>{},isCompressed:()=>U2,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{t=Y},destroy:()=>{}},Ij=new Map;for(let Y of y)if(Y.methods)for(let A of Y.methods){let P=Ij.get(A);if(P)throw Error(`[vlist/builder] Method "${A}" is registered by both "${P}" and "${Y.name}"`);Ij.set(A,Y.name)}for(let Y of y)Y.setup(W2);if(j2=!0,W2.state.isInitialized=!0,w2(),Y2(),z&&M.length>0){let Y=G2(M.length-1,T,t,M.length,"end");K2(Y),C=Y,Y2()}let yJ=(Y)=>{W2.dataManager.setItems(Y,0,Y.length)},HJ=z?(Y)=>{let A=A2(2),P=M.length;if(W2.dataManager.setItems(Y,P),A&&M.length>0){let I=G2(M.length-1,T,t,M.length,"end");K2(I),C=I,Y2()}}:(Y)=>{let A=M.length;W2.dataManager.setItems(Y,A)},kJ=z?(Y)=>{let A=X2(),P=T.getTotalHeight(),I=[...M];W2.dataManager.clear(),W2.dataManager.setItems([...Y,...I],0);let a=T.getTotalHeight()-P;if(a>0)K2(A+a),C=A+a}:(Y)=>{let A=[...M];W2.dataManager.clear(),W2.dataManager.setItems([...Y,...A],0)},RJ=(Y,A)=>{W2.dataManager.updateItem(Y,A)},TJ=(Y)=>{W2.dataManager.removeItem(Y)},CJ=async()=>{if(W2.dataManager.reload)await W2.dataManager.reload()},c2=()=>{if(w!==null)cancelAnimationFrame(w),w=null},SJ=(Y,A,P)=>{if(c2(),Math.abs(A-Y)<1){K2(A),C=A,Y2();return}let I=performance.now(),i=(a)=>{let N2=a-I,_2=Math.min(N2/P,1),E2=Y+(A-Y)*J4(_2);if(K2(E2),C=E2,Y2(),_2<1)w=requestAnimationFrame(i);else w=null};w=requestAnimationFrame(i)},pj=(Y,A)=>{let{align:P,behavior:I,duration:i}=$4(A),a=J2(),N2=Y;if(L&&a>0)N2=(N2%a+a)%a;let _2=G2(N2,T,t,a,P);if(I==="smooth")SJ(X2(),_2,i);else c2(),K2(_2)},wJ=(Y,A)=>{let P=k.get(Y)??W2.dataManager.getIndexById(Y);if(P>=0)pj(P,A)},vJ=()=>X2(),fJ=(Y,A)=>{return H.on(Y,A)},IJ=(Y,A)=>{H.off(Y,A)},pJ=()=>{if(e)return;if(e=!0,W2.state.isDestroyed=!0,B.items.removeEventListener("click",vj),B.root.removeEventListener("keydown",fj),P2.removeEventListener("scroll",v2),_j.disconnect(),d2)B.viewport.removeEventListener("wheel",d2);if(p)clearTimeout(p);for(let Y=0;Y<$2.length;Y++)$2[Y]();for(let Y of y)if(Y.destroy)Y.destroy();c2();for(let[,Y]of s)Y.remove(),g.release(Y);s.clear(),g.clear(),H.clear(),B.root.remove()},uj={get element(){return B.root},get items(){if(c.has("_getItems"))return c.get("_getItems")();return M},get total(){if(c.has("_getTotal"))return c.get("_getTotal")();return J2()},setItems:c.has("setItems")?c.get("setItems"):yJ,appendItems:c.has("appendItems")?c.get("appendItems"):HJ,prependItems:c.has("prependItems")?c.get("prependItems"):kJ,updateItem:c.has("updateItem")?c.get("updateItem"):RJ,removeItem:c.has("removeItem")?c.get("removeItem"):TJ,reload:c.has("reload")?c.get("reload"):CJ,scrollToIndex:c.has("scrollToIndex")?c.get("scrollToIndex"):pj,scrollToItem:c.has("scrollToItem")?c.get("scrollToItem"):wJ,cancelScroll:c.has("cancelScroll")?c.get("cancelScroll"):c2,getScrollPosition:c.has("getScrollPosition")?c.get("getScrollPosition"):vJ,on:fJ,off:IJ,destroy:pJ};for(let[Y,A]of c){if(Y==="setItems"||Y==="appendItems"||Y==="prependItems"||Y==="updateItem"||Y==="removeItem"||Y==="reload"||Y==="scrollToIndex"||Y==="scrollToItem"||Y==="cancelScroll"||Y==="getScrollPosition")continue;uj[Y]=A}return uj}var a2=(j)=>{let $=Math.max(1,Math.floor(j.columns)),Q=j.gap??0,J=j.isHeaderFn,K={row:0,col:0},X=(W)=>{if(W<=0)return 0;if(!J)return Math.ceil(W/$);let N=0,G=0,F=0;for(let O=0;O<W;O++)if(J(O)){if(F++,G>0)N++,G=0;N++,G=0}else if(G++,G>=$)N++,G=0;if(G>0)N++;return N},q=(W)=>{return K.row=Z(W),K.col=V(W),K},Z=(W)=>{if(!J)return Math.floor(W/$);let N=0,G=0;for(let F=0;F<=W;F++)if(J(F)){if(G>0)N++,G=0;if(F===W)return N;N++,G=0}else{if(F===W)return N;if(G++,G>=$)N++,G=0}return console.warn(`⚠️ getRow(${W}) fell through - returning ${N}`),N},V=(W)=>{if(!J)return W%$;if(J(W))return 0;let N=0;for(let G=0;G<=W;G++)if(J(G))N=0;else{if(G===W)return N;if(N++,N>=$)N=0}return N},D=(W,N,G)=>{if(G<=0)return{start:0,end:-1};if(!J){let R=Math.max(0,W*$),B=Math.min(G-1,(N+1)*$-1);return{start:R,end:B}}let F=-1,O=-1,y=0,E=0;for(let R=0;R<G;R++){if(J(R)){if(E>0)y++,E=0;if(y>=W&&y<=N){if(F===-1)F=R;O=R}y++,E=0}else{if(y>=W&&y<=N){if(F===-1)F=R;O=R}if(E++,E>=$)y++,E=0}if(y>N&&E===0)break}if(F===-1)return{start:0,end:-1};return{start:F,end:O}},U=(W,N,G)=>{if(N<0||N>=$)return-1;let F=W*$+N;if(F<0||F>=G)return-1;return F},_=(W)=>{let N=($-1)*Q;return Math.max(0,(W-N)/$)};return{get columns(){return $},get gap(){return Q},update:(W)=>{if(W.columns!==void 0)$=Math.max(1,Math.floor(W.columns));if(W.gap!==void 0)Q=W.gap;if(W.isHeaderFn!==void 0)J=W.isHeaderFn},getTotalRows:X,getPosition:q,getRow:Z,getCol:V,getItemRange:D,getItemIndex:U,getColumnWidth:_,getColumnOffset:(W,N)=>{let G=_(N);return W*(G+Q)}}};e2();var Lj=(j,$,Q,J,K,X)=>{if(J===0||$===0)return X.start=0,X.end=-1,X;let q=Q.indexAtOffset(j),Z=Q.indexAtOffset(j+$);if(Z<J-1)Z++;return X.start=Math.max(0,q),X.end=Math.min(J-1,Math.max(0,Z)),X},Oj=(j,$,Q,J)=>{if(Q===0)return J.start=0,J.end=-1,J;return J.start=Math.max(0,j.start-$),J.end=Math.min(Q-1,j.end+$),J},tj=(j,$,Q,J,K,X)=>{if(J===0)return 0;let q=Math.max(0,Math.min(j,J-1)),Z=$.getOffset(q),V=$.getHeight(q),D=$.getTotalHeight(),U=Math.max(0,D-Q),_;switch(X){case"center":_=Z-Q/2+V/2;break;case"end":_=Z-Q+V;break;case"start":default:_=Z;break}return Math.max(0,Math.min(_,U))},ej=(j,$,Q)=>{if(Q&&Q.isCompressed)return Q.virtualHeight;return $.getTotalHeight()},jJ=(j,$)=>{return $.getTotalHeight()},JJ=(j,$)=>{return $.getOffset(j)},$J=(j,$,Q)=>{let J=Math.max(0,$-Q);return Math.max(0,Math.min(j,J))};var zj=(j,$,Q,J,K,X=Lj)=>{return X(j.scrollTop,j.containerHeight,$,Q,K,j.visibleRange),Oj(j.visibleRange,J,Q,j.renderRange),j.totalHeight=K.virtualHeight,j.actualHeight=K.actualHeight,j.isCompressed=K.isCompressed,j.compressionRatio=K.ratio,j},O2=(j,$,Q,J,K="start",X,q=tj)=>{return q(j,$,Q,J,X,K)},QJ=(j,$)=>{return j.start===$.start&&j.end===$.end},XJ=(j,$)=>{return j>=$.start&&j<=$.end},qJ=(j)=>{if(j.end<j.start)return 0;return j.end-j.start+1};var KJ=(j,$)=>{let Q=[],J=[];for(let K=j.start;K<=j.end;K++)if(K<$.start||K>$.end)J.push(K);for(let K=$.start;K<=$.end;K++)if(K<j.start||K>j.end)Q.push(K);return{add:Q,remove:J}};t2();var YJ=(j)=>{if(!j.columns||j.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let $=null,Q=null;return{name:"withGrid",priority:10,setup(J){let{dom:K,emitter:X,config:q,rawConfig:Z}=J,{classPrefix:V}=q;if(q.horizontal)throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(q.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let D=Z.items?.some((E)=>E.__groupHeader===!0),U={columns:j.columns,gap:j.gap??0};if(D)U.isHeaderFn=(E)=>{let R=J.dataManager.getItem(E);return!!(R&&R.__groupHeader===!0)};$=a2(U);let _=$.gap;J.setVirtualTotalFn(()=>{let E=J.dataManager.getTotal();return $.getTotalRows(E)});let L=Z.item,z=q.horizontal?L.width:L.height,W={containerWidth:J.getContainerWidth(),columns:$.columns,gap:$.gap};if(typeof z==="function")J.setHeightConfig((E)=>{let R=W.containerWidth-2,B=(W.columns-1)*W.gap,H=(R-B)/W.columns,M={containerWidth:W.containerWidth,columns:W.columns,gap:W.gap,columnWidth:H,row:$.getRow(E),column:$.getCol(E),totalRows:$.getTotalRows(J.dataManager.getTotal()),totalColumns:W.columns};return z(E,M)+W.gap});else if(_>0)J.setHeightConfig(z+_);J.rebuildHeightCache(),K.root.classList.add(`${V}--grid`);let N=J.getContainerWidth(),G=Z.item.template,F=()=>{Q=p2(K.items,G,J.heightCache,$,V,N,()=>J.dataManager.getTotal(),q.ariaIdPrefix),J.replaceRenderer(Q)};F(),J.methods.set("_getGridLayout",()=>$),J.methods.set("_getGridConfig",()=>U),J.methods.set("_replaceGridRenderer",(E)=>{Q=E}),J.methods.set("_updateGridLayoutForGroups",(E)=>{$.update({isHeaderFn:E});let R=J.dataManager.getTotal(),B=0;for(let H=0;H<R;H++)if($.getCol(H)===0){let M=J.heightCache.getHeight(H);B+=M}J.heightCache.getTotalHeight=()=>B,J.dom.content.style.height=`${B}px`,F()}),J.methods.set("updateGrid",(E)=>{if(E.columns!==void 0){if(!Number.isInteger(E.columns)||E.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");U.columns=E.columns}if(E.gap!==void 0){if(E.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");U.gap=E.gap}if($)$.update(U);let R=J.getContainerWidth();if(W.containerWidth=R,W.columns=U.columns,W.gap=U.gap??0,Q)Q.updateContainerWidth(R);J.rebuildHeightCache(),J.updateContentSize(J.heightCache.getTotalHeight()),J.updateCompressionMode();for(let B=0;B<J.contentSizeHandlers.length;B++)J.contentSizeHandlers[B]();if(Q)Q.clear();J.forceRender()});let O=()=>{if(J.state.isDestroyed)return;let E=J.scrollController.getScrollTop(),R=J.state.viewportState.containerHeight,B=J.getVirtualTotal(),H={start:0,end:0};if(B===0||R===0)H.start=0,H.end=0;else{H.start=Math.max(0,J.heightCache.indexAtOffset(E));let w=J.heightCache.indexAtOffset(E+R);if(w<B-1)w++;H.end=Math.min(B-1,Math.max(0,w))}let M=q.overscan??3,T={start:Math.max(0,H.start-M),end:Math.min(B-1,H.end+M)};J.state.viewportState.scrollTop=E,J.state.viewportState.visibleRange=H,J.state.viewportState.renderRange=T;let g=J.state.lastRenderRange,t=J.state.viewportState.isCompressed;if(T.start===g.start&&T.end===g.end){if(t)Q.updatePositions(J.getCompressionContext());return}let l=J.dataManager.getTotal(),e=$.getItemRange(T.start,T.end,l),j2=J.dataManager.getItemsInRange(e.start,e.end),C=t?J.getCompressionContext():void 0;Q.render(j2,e,new Set,-1,C),J.state.lastRenderRange={...T},X.emit("range:change",{range:T})},y=()=>{if(J.state.isDestroyed)return;J.state.lastRenderRange={start:-1,end:-1},O()};if(J.setRenderFns(O,y),J.resizeHandlers.push((E,R)=>{if(Q)Q.updateContainerWidth(E)}),J.methods.set("scrollToIndex",(E,R)=>{let B=Math.floor(E/j.columns),{align:H,behavior:M}=Y4(R),T=J.dataManager.getState(),g=$.getTotalRows(T.total),t=Math.max(0,Math.min(B,g-1)),l=O2(t,J.heightCache,J.state.viewportState.containerHeight,g,H,J.getCachedCompression());if(M==="smooth")J.scrollController.scrollTo(l);else J.scrollController.scrollTo(l)}),!J.methods.has("_getTotal"))J.methods.set("_getTotal",()=>J.dataManager.getTotal());J.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;K.root.classList.remove(`${V}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}},bj=300,Y4=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:bj};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??bj};return{align:"start",behavior:"auto",duration:bj}};var Pj=(j,$)=>{let Q=0,J=j.length-1;while(Q<J){let K=Q+J+1>>>1;if(j[K].headerLayoutIndex<=$)Q=K;else J=K-1}return Q},ZJ=(j,$)=>{let Q=0,J=j.length-1;while(Q<J){let K=Q+J+1>>>1;if(j[K].firstDataIndex<=$)Q=K;else J=K-1}return Q},BJ=(j,$)=>{if(j===0)return[];let Q=[],J=$(0),K=0,X=0;for(let q=1;q<j;q++){let Z=$(q);if(Z!==J){let V=q-K;Q.push({key:J,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:K,count:V}),X=X+1+V,J=Z,K=q}}return Q.push({key:J,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:K,count:j-K}),Q},u2=(j,$)=>{if(j.length===0||$.length===0)return[];let Q=j.length+$.length,J=Array(Q),K=0;for(let X of $){J[K]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},K++;for(let q=0;q<X.count;q++)J[K]=j[X.firstDataIndex+q],K++}return J},x2=(j,$)=>{let Q=typeof $==="number"?(J)=>$:$;return(J)=>{let K=j.getEntry(J);if(K.type==="header")return j.getHeaderHeight(K.group.groupIndex);return Q(K.dataIndex)}},jj=(j,$)=>{let Q=BJ(j,$.getGroupForIndex),J=j+Q.length,K=$.headerHeight;return{get totalEntries(){return J},get groupCount(){return Q.length},get groups(){return Q},getEntry:(L)=>{if(Q.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let z=Pj(Q,L),W=Q[z];if(L===W.headerLayoutIndex)return{type:"header",group:W};let N=L-W.headerLayoutIndex-1;return{type:"item",dataIndex:W.firstDataIndex+N,group:W}},layoutToDataIndex:(L)=>{if(Q.length===0)return L;let z=Pj(Q,L),W=Q[z];if(L===W.headerLayoutIndex)return-1;let N=L-W.headerLayoutIndex-1;return W.firstDataIndex+N},dataToLayoutIndex:(L)=>{if(Q.length===0)return L;let z=ZJ(Q,L),W=Q[z],N=L-W.firstDataIndex;return W.headerLayoutIndex+1+N},getGroupAtLayoutIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=Pj(Q,L);return Q[z]},getGroupAtDataIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=ZJ(Q,L);return Q[z]},getHeaderHeight:typeof K==="number"?(L)=>K:(L)=>{let z=Q[L];if(!z)return 0;return K(z.key,L)},rebuild:(L)=>{Q=BJ(L,$.getGroupForIndex),J=L+Q.length}}};var Jj=(j,$,Q,J,K)=>{let X=document.createElement("div");X.className=`${K}-sticky-header`,X.setAttribute("role","presentation"),X.setAttribute("aria-hidden","true"),X.style.position="absolute",X.style.top="0",X.style.left="0",X.style.right="0",X.style.zIndex="5",X.style.pointerEvents="none",X.style.willChange="transform",X.style.overflow="hidden",j.insertBefore(X,j.firstChild);let q=-1,Z=!1,V=0,D=(N)=>{if(N===q)return;q=N;let G=$.groups;if(N<0||N>=G.length){X.textContent="";return}let F=G[N],O=J.headerTemplate(F.key,F.groupIndex),y=$.getHeaderHeight(N);if(X.style.height=`${y}px`,typeof O==="string")X.innerHTML=O;else X.replaceChildren(O)},U=(N)=>{let G=$.groups;if(G.length===0){L();return}let F=0;for(let B=G.length-1;B>=0;B--)if(Q.getOffset(G[B].headerLayoutIndex)<=N){F=B;break}let O=Q.getOffset(G[0].headerLayoutIndex);if(N<O){L();return}if(!Z)_();D(F);let y=$.getHeaderHeight(F),E=0,R=F+1;if(R<G.length){let H=Q.getOffset(G[R].headerLayoutIndex)-N;if(H<y)E=H-y}if(E!==V)V=E,X.style.transform=E===0?"":`translateY(${Math.round(E)}px)`},_=()=>{if(Z)return;Z=!0,X.style.display=""},L=()=>{if(!Z)return;Z=!1,X.style.display="none",q=-1,V=0,X.style.transform=""},z=()=>{let N=q;if(q=-1,N>=0)D(N)},W=()=>{X.remove(),q=-1,Z=!1};return X.style.display="none",{update:U,refresh:z,show:_,hide:L,destroy:W}};var UJ=(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 $=null,Q=null,J=[],K=[];return{name:"withGroups",priority:10,setup(X){let{dom:q,config:Z,rawConfig:V}=X,{classPrefix:D}=Z;if(Z.horizontal)throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(Z.reverse)throw Error("[vlist/builder] withGroups cannot be used with reverse: true");let _=V.item.height;J=V.items?[...V.items]:[];let L=J.length,z={getGroupForIndex:j.getGroupForIndex,headerHeight:j.headerHeight,headerTemplate:j.headerTemplate,sticky:j.sticky??!1};$=jj(L,z),K=u2(J,$.groups);let W=x2($,_);X.setHeightConfig(W),X.rebuildHeightCache(K.length),X.dataManager.setItems(K,0,K.length);let N=V.item.template,{headerTemplate:G}=j,F=(B,H,M)=>{if(b2(B))return G(B.groupKey,B.groupIndex);return N(B,H,M)},O=X.methods.get("_getGridLayout"),y=X.methods.get("_replaceGridRenderer"),E=X.methods.get("_updateGridLayoutForGroups");if(O&&y){if(E)E((T)=>{let g=K[T];return!!(g&&b2(g))});let{createGridRenderer:B}=(e2(),gJ(ij)),H=O(),M=B(q.items,F,X.heightCache,H,D,X.getContainerWidth(),()=>X.dataManager.getTotal(),Z.ariaIdPrefix);y(M)}else X.replaceTemplate(F);if(q.root.classList.add(`${D}--grouped`),j.sticky!==!1){Q=Jj(q.root,$,X.heightCache,{...z,sticky:z.sticky??!1},D);let B=Q;X.afterScroll.push((H,M)=>{B.update(H)}),Q.update(X.scrollController.getScrollTop())}let R=()=>{if(!$)return;$.rebuild(J.length),K=u2(J,$.groups);let B=x2($,_);if(X.setHeightConfig(B),X.rebuildHeightCache(K.length),X.dataManager.setItems(K,0,K.length),Q)Q.refresh()};X.methods.set("setItems",(B)=>{J=[...B],R()}),X.methods.set("appendItems",(B)=>{J=[...J,...B],R()}),X.methods.set("prependItems",(B)=>{J=[...B,...J],R()}),X.methods.set("removeItem",(B)=>{J=J.filter((H)=>H.id!==B),R()}),X.methods.set("scrollToIndex",(B,H)=>{let M=$.dataToLayoutIndex(B),{align:T,behavior:g}=Z4(H),t=X.dataManager.getTotal(),l=O2(M,X.heightCache,X.state.viewportState.containerHeight,t,T,X.getCachedCompression());if(g==="smooth")X.scrollController.scrollTo(l);else X.scrollController.scrollTo(l)}),X.methods.set("_getItems",()=>J),X.methods.set("_getTotal",()=>J.length),X.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;q.root.classList.remove(`${D}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}},yj=300,Z4=(j)=>{if(typeof j==="string")return{align:j,behavior:"auto",duration:yj};if(j&&typeof j==="object")return{align:j.align??"start",behavior:j.behavior??"auto",duration:j.duration??yj};return{align:"start",behavior:"auto",duration:yj}};var $j=(j)=>({selected:new Set(j??[]),focusedIndex:-1}),h2=(j,$,Q)=>{if(Q==="none")return j;let J=new Set(j.selected);if(Q==="single"){if(J.clear(),$.length>0)J.add($[0])}else for(let K of $)J.add(K);return{...j,selected:J}},m2=(j,$)=>{let Q=new Set(j.selected);for(let J of $)Q.delete(J);return{...j,selected:Q}},k2=(j,$,Q)=>{if(Q==="none")return j;if(j.selected.has($))return m2(j,[$]);else return h2(j,[$],Q)},Qj=(j,$,Q)=>{if(Q!=="multiple")return j;return{...j,selected:new Set($.map((J)=>J.id))}},Xj=(j)=>({...j,selected:new Set}),Hj=(j,$)=>{return j.focusedIndex=$,j},kj=(j,$,Q=!0)=>{if($===0)return j;let J=j.focusedIndex-1;if(J<0)J=Q?$-1:0;return j.focusedIndex=J,j},Rj=(j,$,Q=!0)=>{if($===0)return j;let J=j.focusedIndex+1;if(J>=$)J=Q?0:$-1;return j.focusedIndex=J,j},Tj=(j,$)=>{if($===0)return j;return j.focusedIndex=0,j},Cj=(j,$)=>{if($===0)return j;return j.focusedIndex=$-1,j};var DJ=(j,$)=>{return j.selected.has($)},R2=(j)=>{return Array.from(j.selected)},T2=(j,$)=>{let Q=[];for(let J of j.selected){let K=$(J);if(K)Q.push(K)}return Q};var Sj=(j)=>{let $=j?.mode??"single",Q=j?.initial,J=$j(Q),K=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:q,emitter:Z,config:V}=X,{classPrefix:D,ariaIdPrefix:U}=V;if($==="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{renderIfNeeded:_,forceRender:L}=X.getRenderFns(),z=()=>{X.dom.items.querySelectorAll("[data-index]").forEach((y)=>{let E=y,R=E.dataset.id;if(R!==void 0){let B=/^\d+$/.test(R)?parseInt(R,10):R,H=J.selected.has(B),T=parseInt(E.dataset.index??"-1",10)===J.focusedIndex;E.classList.toggle(`${D}-item--selected`,H),E.classList.toggle(`${D}-item--focused`,T),E.ariaSelected=H?"true":"false"}})},W=()=>{if(X.state.isDestroyed)return;_(),z()},N=()=>{if(X.state.isDestroyed)return;L(),z()};X.setRenderFns(W,N);let G=()=>{z(),Z.emit("selection:change",{selected:R2(J),items:T2(J,(O)=>X.dataManager.getItemById(O))})};K=document.createElement("div"),K.setAttribute("aria-live","polite"),K.setAttribute("aria-atomic","true"),K.className=`${D}-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",q.root.appendChild(K);let F=K;Z.on("selection:change",({selected:O})=>{let y=O.length;if(y===0)F.textContent="";else if(y===1)F.textContent="1 item selected";else F.textContent=`${y} items selected`}),X.clickHandlers.push((O)=>{if(X.state.isDestroyed)return;let E=O.target.closest("[data-index]");if(!E)return;let R=parseInt(E.dataset.index??"-1",10);if(R<0)return;let B=X.dataManager.getItem(R);if(!B)return;Z.emit("item:click",{item:B,index:R,event:O}),J=Hj(J,R),q.root.setAttribute("aria-activedescendant",`${U}-item-${R}`),J=k2(J,B.id,$),G()}),X.keydownHandlers.push((O)=>{if(X.state.isDestroyed)return;let y=X.dataManager.getTotal(),E=J.focusedIndex,R=!1,B=!1,H=J;switch(O.key){case"ArrowUp":H=kj(J,y),R=!0,B=!0;break;case"ArrowDown":H=Rj(J,y),R=!0,B=!0;break;case"Home":H=Tj(J,y),R=!0,B=!0;break;case"End":H=Cj(J,y),R=!0,B=!0;break;case" ":case"Enter":if(J.focusedIndex>=0){let M=X.dataManager.getItem(J.focusedIndex);if(M)H=k2(J,M.id,$);R=!0}break}if(R){O.preventDefault(),J=H;let M=J.focusedIndex;if(M>=0){let T=X.dataManager.getState(),g=O2(M,X.heightCache,X.state.viewportState.containerHeight,T.total,"center",X.getCachedCompression());X.scrollController.scrollTo(g),q.root.setAttribute("aria-activedescendant",`${U}-item-${M}`)}else q.root.removeAttribute("aria-activedescendant");if(B){let{selected:T}=J;if(E>=0&&E!==M){let g=X.dataManager.getItem(E);if(g)X.renderer.updateItemClasses(E,T.has(g.id),!1)}if(M>=0){let g=X.dataManager.getItem(M);if(g)X.renderer.updateItemClasses(M,T.has(g.id),!0)}}else N(),Z.emit("selection:change",{selected:R2(J),items:T2(J,(T)=>X.dataManager.getItemById(T))})}}),X.methods.set("select",(...O)=>{J=h2(J,O,$),G()}),X.methods.set("deselect",(...O)=>{J=m2(J,O),G()}),X.methods.set("toggleSelect",(O)=>{J=k2(J,O,$),G()}),X.methods.set("selectAll",()=>{if($!=="multiple")return;let O=X.getAllLoadedItems();J=Qj(J,O,$),G()}),X.methods.set("clearSelection",()=>{J=Xj(J);let{renderRange:O,isCompressed:y}=X.state.viewportState,E=X.getItemsForRange(O),R=y?X.getCompressionContext():void 0;X.renderer.render(E,O,J.selected,J.focusedIndex,R),Z.emit("selection:change",{selected:[],items:[]})}),X.methods.set("getSelected",()=>{return R2(J)}),X.methods.set("getSelectedItems",()=>{return T2(J,(O)=>X.dataManager.getItemById(O))}),X.destroyHandlers.push(()=>{if(F&&F.parentNode)F.remove()})},destroy(){if(K&&K.parentNode)K.remove();K=null}}};var C2=(j,$,Q={},J="vlist",K=!1)=>{let{autoHide:X=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:V=!0,hoverZoneWidth:D=16,showOnViewportEnter:U=!0}=Q,_=0,L=0,z=0,W=0,N=!1,G=!1,F=0,O=0,y=0,E=null,R=!1,B=null,H=null,M=K?"width":"height",T=K?"translateX":"translateY",g=K?(o)=>o.clientX:(o)=>o.clientY,t=K?"left":"top",l=document.createElement("div"),e=document.createElement("div"),j2=V?document.createElement("div"):null,C=()=>{if(l.className=`${J}-scrollbar`,e.className=`${J}-scrollbar-thumb`,K)l.classList.add(`${J}-scrollbar--horizontal`);if(l.appendChild(e),j.appendChild(l),j2){if(j2.className=`${J}-scrollbar-hover`,K)j2.classList.add(`${J}-scrollbar-hover--horizontal`),j2.style.height=`${D}px`;else j2.style.width=`${D}px`;j.appendChild(j2)}},w=()=>{if(E)clearTimeout(E),E=null},p=()=>{if(!X)return;w(),E=setTimeout(b,q)},u=()=>{if(_<=L)return;if(w(),!R)l.classList.add(`${J}-scrollbar--visible`),R=!0;if(X&&!N&&!G)p()},b=()=>{if(N||G)return;l.classList.remove(`${J}-scrollbar--visible`),R=!1},S=(o,Q2)=>{_=o,L=Q2;let v=_>L;if(l.style.display=v?"":"none",!v){b();return}let f=L/_;z=Math.max(Z,f*L),e.style[M]=`${z}px`,W=L-z,h(y)},h=(o)=>{if(y=o,_<=L||W<=0)return;let Q2=_-L,f=Math.min(1,Math.max(0,o/Q2))*W;e.style.transform=`${T}(${f}px)`},m=(o)=>{if(o.target===e)return;let Q2=l.getBoundingClientRect(),n=g(o)-Q2[t]-z/2,c=Math.max(0,Math.min(n,W))/W,X2=_-L,K2=c*X2;$(K2),u()},s=(o)=>{o.preventDefault(),o.stopPropagation(),N=!0,F=g(o),O=y,w(),l.classList.add(`${J}-scrollbar--dragging`),document.addEventListener("mousemove",r),document.addEventListener("mouseup",q2)},r=(o)=>{if(!N)return;let Q2=g(o)-F,v=W>0?Q2/W:0,f=_-L,n=v*f,$2=Math.max(0,Math.min(O+n,f)),X2=$2/f*W;if(e.style.transform=`${T}(${X2}px)`,H=$2,B===null)B=requestAnimationFrame(()=>{if(H!==null)$(H);B=null})},q2=()=>{if(N=!1,B!==null)cancelAnimationFrame(B),B=null;if(H!==null)$(H),H=null;if(l.classList.remove(`${J}-scrollbar--dragging`),X&&!G)p();document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",q2)},Z2=()=>{if(U)u()},k=()=>{if(!N){if(G=!1,X)p()}},d=()=>{G=!0,w(),u()},x=()=>{if(G=!1,!N&&X)p()},J2=()=>{if(w(),B!==null)cancelAnimationFrame(B),B=null;if(l.removeEventListener("click",m),l.removeEventListener("mouseenter",d),l.removeEventListener("mouseleave",x),e.removeEventListener("mousedown",s),j.removeEventListener("mouseenter",Z2),j.removeEventListener("mouseleave",k),document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",q2),j2){if(j2.removeEventListener("mouseenter",d),j2.removeEventListener("mouseleave",x),j2.parentNode)j2.parentNode.removeChild(j2)}if(l.parentNode)l.parentNode.removeChild(l)};if(C(),l.addEventListener("click",m),l.addEventListener("mouseenter",d),l.addEventListener("mouseleave",x),e.addEventListener("mousedown",s),j.addEventListener("mouseenter",Z2),j.addEventListener("mouseleave",k),j2)j2.addEventListener("mouseenter",d),j2.addEventListener("mouseleave",x);return{show:u,hide:b,updateBounds:S,updatePosition:h,isVisible:()=>R,destroy:J2}};var WJ=(j)=>{let $=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:J,config:K}=Q,{classPrefix:X,horizontal:q}=K;if($=C2(J.viewport,(D)=>Q.scrollController.scrollTo(D),j??{},X,q),!J.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))J.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let Z=Q.getCachedCompression();$.updateBounds(Z.virtualHeight,Q.state.viewportState.containerHeight);let V=$;Q.afterScroll.push((D,U)=>{V.updatePosition(D),V.show()}),Q.resizeHandlers.push((D,U)=>{if(V){let _=Q.getCachedCompression();V.updateBounds(_.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.contentSizeHandlers.push(()=>{if(V){let D=Q.getCachedCompression();V.updateBounds(D.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.destroyHandlers.push(()=>{if(V)V.destroy()})},destroy(){if($)$.destroy(),$=null}}};t2();var NJ=(j=0)=>{let $=[,,,,,,,,];for(let Q=0;Q<8;Q++)$[Q]={position:0,time:0};return{velocity:0,lastPosition:j,lastTime:performance.now(),samples:$,sampleIndex:0,sampleCount:0}},qj=(j,$)=>{let Q=performance.now(),J=Q-j.lastTime;if(J===0)return j;if(J>100){j.sampleCount=0,j.sampleIndex=0,j.velocity=0;let X=j.samples[0];return X.position=$,X.time=Q,j.sampleIndex=1,j.sampleCount=1,j.lastPosition=$,j.lastTime=Q,j}let K=j.samples[j.sampleIndex];if(K.position=$,K.time=Q,j.sampleIndex=(j.sampleIndex+1)%8,j.sampleCount=Math.min(j.sampleCount+1,8),j.sampleCount>=2){let X=(j.sampleIndex-j.sampleCount+8)%8,q=j.samples[X],Z=$-q.position,V=Q-q.time;j.velocity=V>0?Z/V:0}return j.lastPosition=$,j.lastTime=Q,j},B4=(j)=>j.sampleCount>=3,_J=(j,$={})=>{let{wheel:Q=!0,sensitivity:J=1,smoothing:K=!1,idleTimeout:X=150,onScroll:q,onIdle:Z,scrollElement:V,horizontal:D=!1}=$,U=!!V,_=0,L=0,z=U?D?window.innerWidth:window.innerHeight:D?j.clientWidth:j.clientHeight,W=$.compressed??!1,N=$.compression,G=NJ(),F=!1,O=null,E=Kj(()=>{let k=D?j.scrollLeft:j.scrollTop,d=k>=_?"down":"up";if(G=qj(G,k),_=k,q)q({scrollTop:_,direction:d,velocity:G.velocity});g()}),B=Kj(()=>{let k=j.getBoundingClientRect(),d=D?Math.max(0,-k.left):Math.max(0,-k.top),x=d>=_?"down":"up";if(G=qj(G,d),_=d,!F)F=!0;if(q)q({scrollTop:_,direction:x,velocity:G.velocity});g()}),H=(k)=>{k.preventDefault()},M=(k)=>{if(k.deltaX)return;k.preventDefault(),j.scrollLeft+=k.deltaY},T=(k)=>{if(!W)return;k.preventDefault();let d=(D?k.deltaX||k.deltaY:k.deltaY)*J,x=_+d;if(K)x=_+d*0.3;if(x=Math.max(0,Math.min(x,L)),x!==_){let o=x>=_?"down":"up";if(G=qj(G,x),_=x,!F)F=!0;if(q)q({scrollTop:_,direction:o,velocity:G.velocity});g()}},g=()=>{if(O)clearTimeout(O);O=setTimeout(()=>{if(F=!1,G=NJ(_),Z)Z()},X)},t=(k)=>{if(W)return;if(W=!0,N=k,L=k.virtualHeight-z,U)return;if(E.cancel(),j.removeEventListener("scroll",E),!Q)j.removeEventListener("wheel",H);else if(D)j.removeEventListener("wheel",M);if(D)j.style.overflowX="hidden";else j.style.overflow="hidden";if(Q)j.addEventListener("wheel",T,{passive:!1});let d=D?j.scrollLeft:j.scrollTop;if(d>0){let x=D?N?.actualHeight??j.scrollWidth:N?.actualHeight??j.scrollHeight;_=d/x*L}if(D)j.scrollLeft=0;else j.scrollTop=0},l=()=>{if(!W)return;if(W=!1,U){N=void 0;return}if(j.removeEventListener("wheel",T),D)j.style.overflowX="auto";else j.style.overflow="auto";if(j.addEventListener("scroll",E,{passive:!0}),!Q)j.addEventListener("wheel",H,{passive:!1});else if(D)j.addEventListener("wheel",M,{passive:!1});if(N&&_>0){let d=_/L*(N.actualHeight-z);if(D)j.scrollLeft=d;else j.scrollTop=d}N=void 0},e=()=>{if(U||W)return _;return D?j.scrollLeft:j.scrollTop},j2=(k,d=!1)=>{let x=Math.max(0,Math.min(k,L||1/0));if(U){let J2=j.getBoundingClientRect();if(D){let o=J2.left+window.scrollX;window.scrollTo({left:o+x,behavior:d?"smooth":"auto"})}else{let o=J2.top+window.scrollY;window.scrollTo({top:o+x,behavior:d?"smooth":"auto"})}}else if(W){if(x===_)return;let o=x>=_?"down":"up";if(G=qj(G,x),_=x,!F)F=!0;if(q)q({scrollTop:_,direction:o,velocity:G.velocity});g()}else if(D)j.scrollTo({left:x,behavior:d?"smooth":"auto"});else j.scrollTo({top:x,behavior:d?"smooth":"auto"})},C=(k)=>{j2(e()+k)},w=()=>{return e()<=0},p=(k=0)=>{let d=e(),x=U||W?L:D?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;return d>=x-k},u=()=>{let k=e(),d=U||W?L:D?j.scrollWidth-j.clientWidth:j.scrollHeight-j.clientHeight;if(d<=0)return 0;return Math.min(1,Math.max(0,k/d))},b=(k)=>{if(k.compression)N=k.compression,L=N.virtualHeight-z},S=()=>W,h=()=>Math.abs(G.velocity),m=()=>B4(G),s=()=>F,r=()=>U,q2=(k)=>{if(z=k,N)L=N.virtualHeight-z},Z2=()=>{if(O)clearTimeout(O);if(U)B.cancel(),window.removeEventListener("scroll",B);else E.cancel(),j.removeEventListener("scroll",E),j.removeEventListener("wheel",T),j.removeEventListener("wheel",H),j.removeEventListener("wheel",M)};if(U){if(W&&N)L=N.virtualHeight-z;window.addEventListener("scroll",B,{passive:!0})}else if(W&&N){if(L=N.virtualHeight-z,D)j.style.overflowX="hidden";else j.style.overflow="hidden";if(Q)j.addEventListener("wheel",T,{passive:!1})}else{if(D)j.style.overflowX="auto",j.style.overflowY="hidden";else j.style.overflow="auto";if(j.addEventListener("scroll",E,{passive:!0}),!Q)j.addEventListener("wheel",H,{passive:!1});else if(D)j.addEventListener("wheel",M,{passive:!1})}return{getScrollTop:e,scrollTo:j2,scrollBy:C,isAtTop:w,isAtBottom:p,getScrollPercentage:u,getVelocity:h,isTracking:m,isScrolling:s,updateConfig:b,enableCompression:t,disableCompression:l,isCompressed:S,isWindowMode:r,updateContainerHeight:q2,destroy:Z2}},Kj=(j)=>{let $=null,Q=null,J=(...K)=>{if(Q=K,$===null)$=requestAnimationFrame(()=>{if($=null,Q)j(...Q)})};return J.cancel=()=>{if($!==null)cancelAnimationFrame($),$=null},J};var VJ=()=>{let j=null,$=0,Q=!1;return{name:"withCompression",priority:20,setup(J){let{dom:K,config:X}=J,{classPrefix:q,horizontal:Z}=X,V=()=>{let U=J.getVirtualTotal(),_=M2(U,J.heightCache);if(_.isCompressed&&!Q){Q=!0,J.scrollController.enableCompression(_),J.updateContentSize(_.virtualHeight),J.setScrollFns(()=>$,(N)=>{$=N});let L=K.viewport,z=(N)=>{N.preventDefault();let G=_.virtualHeight-J.state.viewportState.containerHeight;$=Math.max(0,Math.min($+N.deltaY,G)),J.scrollController.scrollTo($)};if(L.addEventListener("wheel",z,{passive:!1}),J.destroyHandlers.push(()=>{L.removeEventListener("wheel",z)}),!K.viewport.querySelector(`.${q}-scrollbar-track`)){if(j=C2(K.viewport,(G)=>J.scrollController.scrollTo(G),{},q,Z),!K.viewport.classList.contains(`${q}-viewport--custom-scrollbar`))K.viewport.classList.add(`${q}-viewport--custom-scrollbar`);j.updateBounds(_.virtualHeight,J.state.viewportState.containerHeight);let N=j;J.afterScroll.push((G,F)=>{if(N)N.updatePosition(G),N.show()}),J.resizeHandlers.push((G,F)=>{if(N){let O=J.getCachedCompression();N.updateBounds(O.virtualHeight,J.state.viewportState.containerHeight)}})}}else if(!_.isCompressed&&Q)Q=!1,J.scrollController.disableCompression(),J.updateContentSize(_.actualHeight);else if(_.isCompressed)J.scrollController.updateConfig({compression:_}),J.updateContentSize(_.virtualHeight);if(j)j.updateBounds(_.virtualHeight,J.state.viewportState.containerHeight);J.state.cachedCompression={state:_,totalItems:U}};J.updateCompressionMode=V;let D=J.getCachedCompression.bind(J);J.getCachedCompression=()=>{if(J.state.cachedCompression)return J.state.cachedCompression.state;return D()},J.setVisibleRangeFn((U,_,L,z,W)=>{let N=M2(z,L);o2(U,_,L,z,N,W)}),J.setScrollToPosFn((U,_,L,z,W)=>{let N=M2(z,_);return i2(U,_,L,z,N,W)}),J.setPositionElementFn((U,_)=>{let L=J.getVirtualTotal(),z=M2(L,J.heightCache);if(z.isCompressed){let W=Math.round(H2(_,J.scrollController.getScrollTop(),J.heightCache,L,J.state.viewportState.containerHeight,z)),N=J.config.horizontal;U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}else{let W=Math.round(J.heightCache.getOffset(_)),N=J.config.horizontal;U.style.transform=N?`translateX(${W}px)`:`translateY(${W}px)`}}),V(),J.destroyHandlers.push(()=>{if(j)j.destroy(),j=null})},destroy(){if(j)j.destroy(),j=null}}};var GJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(j){j.methods.set("getScrollSnapshot",()=>{let $=j.scrollController.getScrollTop(),Q=j.getCachedCompression(),J=j.getVirtualTotal(),K=j.methods.get("getSelected"),X=K&&K().length>0?K():void 0;if(J===0){let D={index:0,offsetInItem:0};if(X)D.selectedIds=X;return D}let q,Z;if(Q.isCompressed){let U=$/Q.virtualHeight*J;q=Math.max(0,Math.min(Math.floor(U),J-1)),Z=(U-q)*j.heightCache.getHeight(q)}else q=j.heightCache.indexAtOffset($),Z=$-j.heightCache.getOffset(q);Z=Math.max(0,Z);let V={index:q,offsetInItem:Z};if(X)V.selectedIds=X;return V}),j.methods.set("restoreScroll",($)=>{let{index:Q,offsetInItem:J,selectedIds:K}=$,X=j.getCachedCompression(),q=j.getVirtualTotal();if(q===0)return;let Z=Math.max(0,Math.min(Q,q-1)),V;if(X.isCompressed){let U=j.heightCache.getHeight(Z),_=U>0?J/U:0;V=(Z+_)/q*X.virtualHeight}else V=j.heightCache.getOffset(Z)+J;let D=Math.max(0,X.virtualHeight-j.state.viewportState.containerHeight);if(V=Math.max(0,Math.min(V,D)),j.scrollController.scrollTo(V),K&&K.length>0){let U=j.methods.get("select");if(U)U(...K)}})}}};var Yj=(j={})=>{let{chunkSize:$=100,maxCachedItems:Q=5000,evictionBuffer:J=200,onEvict:K}=j,X=new Map,q=0,Z=0,V=(C)=>{let w=X.get(C);if(!w)w={items:Array($),count:0,lastAccess:Date.now()},X.set(C,w);else w.lastAccess=Date.now();return w},D=(C)=>{return Math.floor(C/$)},U=(C)=>{return C%$},_=()=>q,L=(C)=>{q=C},z=(C)=>{if(C<0||C>=q)return;let w=D(C),p=X.get(w);if(!p)return;return p.items[U(C)]},W=(C)=>{if(C<0||C>=q)return!1;let w=D(C),p=X.get(w);if(!p)return!1;return p.items[U(C)]!==void 0},N=(C,w)=>{let p=D(C),u=V(p),b=U(C),S=u.items[b]===void 0;if(u.items[b]=w,S)u.count++,Z++;if(C>=q)q=C+1},G=(C,w)=>{for(let p=0;p<w.length;p++){let u=w[p];if(u!==void 0)N(C+p,u)}},F=(C)=>{if(C<0||C>=q)return!1;let w=D(C),p=X.get(w);if(!p)return!1;let u=U(C);if(p.items[u]===void 0)return!1;if(p.items[u]=void 0,p.count--,Z--,p.count===0)X.delete(w);return!0},O=(C,w)=>{let p=[];for(let u=C;u<=w&&u<q;u++)p.push(z(u));return p},y=(C,w)=>{for(let p=C;p<=w&&p<q;p++)if(!W(p))return!1;return!0},E=()=>{let C=[],w=null,p=Array.from(X.keys()).sort((u,b)=>u-b);for(let u of p){let b=X.get(u);if(!b)continue;let S=u*$;for(let h=0;h<$;h++){let m=S+h;if(m>=q)break;if(b.items[h]!==void 0)if(w===null)w={start:m,end:m};else if(m===w.end+1)w.end=m;else C.push(w),w={start:m,end:m};else if(w!==null)C.push(w),w=null}}if(w!==null)C.push(w);return C},R=(C,w)=>{let p=[],u=null;for(let b=C;b<=w&&b<q;b++)if(!W(b))if(u===null)u={start:b,end:b};else u.end=b;else if(u!==null)p.push(u),u=null;if(u!==null)p.push(u);return p},B=(C)=>{return X.has(C)},H=(C)=>{let w=X.get(C);if(w)w.lastAccess=Date.now()},M=(C,w)=>{if(C>w||X.size===0)return;let p=Date.now(),u=D(Math.max(0,C)),b=D(Math.min(q-1,w));for(let S=u;S<=b;S++){let h=X.get(S);if(h)h.lastAccess=p}},T=(C,w)=>{if(Z<=Q)return 0;let p=Math.max(0,C-J),u=Math.min(q-1,w+J),b=D(p),S=D(u),h=0,m=[];for(let[s,r]of X)if(s<b||s>S)h+=r.count,m.push(s),Z-=r.count,X.delete(s);if(h>0&&K)K(h,m);return h},g=()=>{if(Z<=Q)return 0;let C=Array.from(X.entries()).sort(([,u],[,b])=>u.lastAccess-b.lastAccess),w=0,p=[];for(let[u,b]of C){if(Z<=Q)break;w+=b.count,Z-=b.count,p.push(u),X.delete(u)}if(w>0&&K)K(w,p);return w},t=()=>{return{totalItems:q,cachedItems:Z,cachedChunks:X.size,chunkSize:$,maxCachedItems:Q,memoryEfficiency:q>0?1-Z/q:1}},l=()=>Z,e=()=>{X.clear(),Z=0};return{chunkSize:$,maxCachedItems:Q,getTotal:_,setTotal:L,get:z,has:W,set:N,setRange:G,delete:F,getRange:O,isRangeLoaded:y,getLoadedRanges:E,findUnloadedRanges:R,getChunkIndex:D,isChunkLoaded:B,touchChunk:H,touchChunksForRange:M,evictDistant:T,evictToLimit:g,getStats:t,getCachedCount:l,clear:e,reset:()=>{e(),q=0}}},Zj=(j)=>{if(j.length===0)return[];let $=[...j].sort((J,K)=>J.start-K.start),Q=[{...$[0]}];for(let J=1;J<$.length;J++){let K=$[J],X=Q[Q.length-1];if(K.start<=X.end+1)X.end=Math.max(X.end,K.end);else Q.push({...K})}return Q},g2=(j,$,Q)=>{let J=Math.floor(j.start/Q)*Q,K=Math.ceil((j.end+1)/Q)*Q-1,X={start:J,end:K};if($.length===0)return[X];let q=[],Z=Zj($),V=X.start;for(let D of Z){if(D.end<V)continue;if(D.start>X.end)break;if(D.start>V)q.push({start:V,end:Math.min(D.start-1,X.end)});if(V=D.end+1,V>X.end)break}if(V<=X.end)q.push({start:V,end:X.end});return q};var Bj=(j={})=>{let{enabled:$=!0,maskCharacter:Q="█",randomVariance:J=!0,maxSampleSize:K=20,customGenerator:X}=j,q=null,Z=!1,V=0,D=(F)=>{if(!$||Z||F.length===0)return;let O=new Map,y=new Map,E=Math.min(F.length,K);for(let R=0;R<E;R++){let B=F[R];if(!B||typeof B!=="object")continue;for(let[H,M]of Object.entries(B)){if(H.startsWith("_")||H==="id")continue;if(!y.has(H))y.set(H,{lengths:[],types:new Set});let T=y.get(H),g=Array.isArray(M)?"array":typeof M;if(T.types.add(g),typeof M==="string")T.lengths.push(M.length);else if(M!==null&&M!==void 0)T.lengths.push(String(M).length)}}for(let[R,B]of y){if(B.lengths.length===0)continue;let H=Math.min(...B.lengths),M=Math.max(...B.lengths),T=Math.round(B.lengths.reduce((t,l)=>t+l,0)/B.lengths.length),g="string";if(B.types.has("number")&&B.types.size===1)g="number";else if(B.types.has("boolean")&&B.types.size===1)g="boolean";else if(B.types.has("array"))g="array";else if(B.types.has("object")&&!B.types.has("string"))g="object";O.set(R,{minLength:H,maxLength:M,avgLength:T,type:g})}q=O,Z=!0},U=()=>Z,_=(F)=>{let O=F.avgLength;if(J&&F.minLength!==F.maxLength){if(O=Math.floor(Math.random()*(F.maxLength-F.minLength+1)+F.minLength),Math.random()<0.3)O=Math.max(1,O+Math.floor(Math.random()*3)-1)}return Q.repeat(Math.max(1,O))},L=(F)=>{if(X)return{...X(F),["_isPlaceholder"]:!0};let O={id:`__placeholder_${V++}`,["_isPlaceholder"]:!0,_index:F};if(!q||q.size===0)return O.label=Q.repeat(12),O;for(let[y,E]of q)switch(E.type){case"string":O[y]=_(E);break;case"number":O[y]=0;break;case"boolean":O[y]=!1;break;case"array":O[y]=[];break;case"object":O[y]={};break;default:O[y]=_(E)}return O};return{analyzeStructure:D,hasAnalyzedStructure:U,generate:L,generateRange:(F,O)=>{let y=[];for(let E=F;E<=O;E++)y.push(L(E));return y},isPlaceholder:(F)=>{if(!F||typeof F!=="object")return!1;return F._isPlaceholder===!0},getPlaceholderKey:()=>"_isPlaceholder",clear:()=>{q=null,Z=!1,V=0}}},z2=(j)=>{if(!j||typeof j!=="object")return!1;return j._isPlaceholder===!0},wj=(j)=>{return j.filter(($)=>!z2($))};var D4=50,Uj=(j={})=>{let{adapter:$,initialItems:Q,initialTotal:J,storage:K,placeholder:X,pageSize:q=D4,onStateChange:Z,onItemsLoaded:V,onItemsEvicted:D}=j,U=Yj({...K,onEvict:(v,f)=>{D?.(v),E()}}),_=null,L=()=>{if(!_)_=Bj(X);return _},z=new Map,W=!1,N,G=!0,F,O=[],y=new Map,E=()=>{Z?.(e())},R=()=>{z.clear();let v=U.getLoadedRanges();for(let f of v)for(let n=f.start;n<=f.end;n++){let $2=U.get(n);if($2&&!z2($2))z.set($2.id,n)}},B=(v,f)=>{if(!z2(f))z.set(f.id,v)},H=(v)=>{z.delete(v)},M=(v,f)=>{return`${v}-${f}`},T=()=>U.getTotal(),g=()=>U.getCachedCount(),t=()=>W,l=()=>G,e=()=>({total:U.getTotal(),cached:U.getCachedCount(),isLoading:W,pendingRanges:O,error:N,hasMore:G,cursor:F}),j2=()=>U,C=()=>L(),w=(v)=>{let f=U.get(v);if(f!==void 0)return f;if(v>=0&&v<U.getTotal())return L().generate(v);return},p=(v)=>{let f=z.get(v);if(f===void 0)return;return U.get(f)},u=(v)=>{return z.get(v)??-1},b=(v)=>{let f=U.get(v);return f!==void 0&&!z2(f)},S=(v,f)=>{let n=[],$2=U.getTotal(),c=0,X2=0;U.touchChunksForRange(v,Math.min(f,$2-1));for(let K2=v;K2<=f&&K2<$2;K2++){let A2=U.get(K2);if(A2!==void 0)n.push(A2),c++;else n.push(L().generate(K2)),X2++}return n},h=(v)=>{U.setTotal(v),G=U.getCachedCount()<v,E()},m=(v,f=0,n)=>{if(_&&!_.hasAnalyzedStructure()&&v.length>0)_.analyzeStructure(v);for(let $2=0;$2<v.length;$2++){let c=v[$2];if(c!==void 0){let X2=f+$2;U.set(X2,c),B(X2,c)}}if(n!==void 0)U.setTotal(n);else if(f+v.length>U.getTotal())U.setTotal(f+v.length);G=U.getCachedCount()<U.getTotal(),V?.(v,f,U.getTotal()),E()},s=(v,f)=>{let n=z.get(v);if(n===void 0)return!1;let $2=U.get(n);if(!$2)return!1;let c={...$2,...f};if(U.set(n,c),f.id!==void 0&&f.id!==v)H(v),B(n,c);return E(),!0},r=(v)=>{let f=z.get(v);if(f===void 0)return!1;U.delete(f),H(v);let n=U.getTotal();if(n>0)U.setTotal(n-1);return E(),!0},q2=async(v,f)=>{if(!$)return;let n=M(v,f);if(y.has(n))return;let $2=U.getLoadedRanges(),c=g2({start:v,end:f},$2,U.chunkSize);if(c.length===0)return;let X2=U.chunkSize,K2=[];for(let U2 of c){let Y2=Math.floor(U2.start/X2),V2=Math.floor(U2.end/X2);for(let B2=Y2;B2<=V2;B2++){let G2=B2*X2,D2=G2+X2-1,S2=M(G2,D2);if(!K2.some((F2)=>F2.start===G2)&&!y.has(S2))K2.push({start:G2,end:D2})}}let A2=[];for(let U2 of c){let Y2=Math.floor(U2.start/X2),V2=Math.floor(U2.end/X2);for(let B2=Y2;B2<=V2;B2++){let G2=B2*X2,D2=G2+X2-1,S2=M(G2,D2);if(y.has(S2)){let F2=y.get(S2);if(!A2.includes(F2))A2.push(F2)}}}for(let U2 of K2){let Y2=M(U2.start,U2.end),V2=(async()=>{O.push(U2),W=!0,N=void 0,E();try{let B2=U2.end-U2.start+1,G2={offset:U2.start,limit:B2,cursor:void 0},D2=await $.read(G2);if(m(D2.items,U2.start,D2.total),D2.cursor)F=D2.cursor;if(D2.hasMore!==void 0)G=D2.hasMore;else if(D2.total!==void 0)G=U.getCachedCount()<D2.total}catch(B2){N=B2 instanceof Error?B2:Error(String(B2))}finally{y.delete(Y2),O=O.filter((B2)=>B2.start!==U2.start||B2.end!==U2.end),W=y.size>0,E()}})();y.set(Y2,V2),A2.push(V2)}await Promise.all(A2)},Z2=async(v,f)=>{if(U.isRangeLoaded(v,f))return;await q2(v,f)},k=async()=>{if(!$)return;await q2(0,q-1)},d=async()=>{if(!$||W||!G)return!1;let v=U.getCachedCount(),f=U.getTotal(),n=v,$2=Math.min(n+q-1,f>0?f-1:n+q-1);if(n>=f&&f>0)return G=!1,!1;return await q2(n,$2),U.getCachedCount()>v},x=async()=>{if(U.clear(),z.clear(),_)_.clear();F=void 0,G=!0,N=void 0,E(),await k()},J2=(v,f)=>{if(U.evictDistant(v,f)>0)R()},o=()=>{U.clear(),z.clear(),F=void 0,N=void 0,O=[],W=!1,E()},Q2=()=>{if(U.reset(),z.clear(),_)_.clear();F=void 0,G=!0,N=void 0,O=[],W=!1,E()};if(Q&&Q.length>0)m(Q,0,J??Q.length);else if(J!==void 0)U.setTotal(J);return{getState:e,getTotal:T,getCached:g,getIsLoading:t,getHasMore:l,getStorage:j2,getPlaceholders:C,getItem:w,getItemById:p,getIndexById:u,isItemLoaded:b,getItemsInRange:S,setTotal:h,setItems:m,updateItem:s,removeItem:r,loadRange:q2,ensureRange:Z2,loadInitial:k,loadMore:d,reload:x,evictDistant:J2,clear:o,reset:Q2}};var MJ=(j)=>{let{adapter:$,loading:Q}=j,J=Q?.cancelThreshold??gj,K=Q?.preloadThreshold??dj,X=Q?.preloadAhead??cj;return{name:"withData",priority:20,methods:["reload"],setup(q){let{emitter:Z}=q,V=q.config.reverse,D=q.config.overscan,U=Uj({adapter:$,pageSize:I2,onStateChange:()=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.updateCompressionMode(),q.state.viewportState=zj(q.state.viewportState,q.heightCache,q.getVirtualTotal(),D,q.getCachedCompression()),q.updateContentSize(q.state.viewportState.totalHeight),q.renderIfNeeded()},onItemsLoaded:(F,O,y)=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.forceRender(),Z.emit("load:end",{items:F,total:y})}});q.replaceDataManager(U);let _=null,L=null,z=0,W=()=>{if(L){let F=L;L=null,q.dataManager.ensureRange(F.start,F.end).catch((O)=>{Z.emit("error",{error:O,context:"ensureRange"})})}};q.afterScroll.push((F,O)=>{if(q.state.isDestroyed)return;let y=q.scrollController.getVelocity(),R=q.scrollController.isTracking()&&y<=J;if(L&&z>J&&y<=J){let M=L;L=null,q.dataManager.ensureRange(M.start,M.end).catch((T)=>{Z.emit("error",{error:T,context:"ensureRange"})})}if(z=y,R&&!q.dataManager.getIsLoading()&&q.dataManager.getHasMore()){if(V){if(F<Ej)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:I2}),q.dataManager.loadMore().catch((M)=>{Z.emit("error",{error:M,context:"loadMore"})})}else if(q.state.viewportState.totalHeight-F-q.state.viewportState.containerHeight<Ej)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:I2}),q.dataManager.loadMore().catch((T)=>{Z.emit("error",{error:T,context:"loadMore"})})}let{renderRange:B}=q.state.viewportState;if(!_||B.start!==_.start||B.end!==_.end)if(_={start:B.start,end:B.end},R){L=null;let{start:M,end:T}=B,g=q.getVirtualTotal();if(y>K)if(O==="down")T=Math.min(B.end+X,g-1);else M=Math.max(B.start-X,0);q.dataManager.ensureRange(M,T).catch((t)=>{Z.emit("error",{error:t,context:"ensureRange"})})}else L={start:B.start,end:B.end}});let N=200,G=null;q.afterScroll.push((F,O)=>{if(G!==null)clearTimeout(G);G=setTimeout(()=>{G=null,W()},N)}),q.destroyHandlers.push(()=>{if(G!==null)clearTimeout(G),G=null}),Z.on("load:start",()=>{q.dom.root.setAttribute("aria-busy","true")}),Z.on("load:end",()=>{q.dom.root.removeAttribute("aria-busy")}),q.methods.set("reload",async()=>{await q.dataManager.reload()}),Z.emit("load:start",{offset:0,limit:I2}),q.dataManager.loadInitial().catch((F)=>{Z.emit("error",{error:F,context:"loadInitial"})})}}};var AJ=()=>{let j=null;return{name:"withWindow",priority:5,setup($){let{dom:Q,state:J,config:K,emitter:X}=$;Q.root.style.overflow="visible",Q.root.style.height="auto",Q.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),$.disableViewportResize(),$.setScrollTarget(window),$.setScrollFns(()=>{let D=Q.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-D.left);else return Math.max(0,-D.top)},(D)=>{let U=Q.viewport.getBoundingClientRect();if(K.horizontal){let _=U.left+window.scrollX;window.scrollTo(_+D,window.scrollY)}else{let _=U.top+window.scrollY;window.scrollTo(window.scrollX,_+D)}}),$.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),J.viewportState.containerHeight=window.innerHeight;let{innerHeight:q,innerWidth:Z}=window,V=()=>{let{innerWidth:D,innerHeight:U}=window,_=K.horizontal?D:U,L=K.horizontal?Z:q;if(Math.abs(_-L)<=1)return;q=U,Z=D,J.viewportState.containerHeight=U,X.emit("resize",{width:D,height:U});for(let z=0;z<$.resizeHandlers.length;z++)$.resizeHandlers[z](D,U);$.renderIfNeeded()};window.addEventListener("resize",V,{passive:!0}),j=()=>{window.removeEventListener("resize",V)},$.destroyHandlers.push(j)},destroy(){if(j)j(),j=null}}};var W4=(j)=>{let $=Aj(j);if(j.scroll?.element===window)$=$.use(AJ());if(j.adapter)$=$.use(MJ({adapter:j.adapter,...j.loading&&{loading:j.loading}}));if(j.layout==="grid"){if(!j.grid)throw Error("[vlist/builder] grid configuration is required when layout is 'grid'");if(!j.grid.columns||j.grid.columns<1)throw Error("[vlist/builder] grid.columns must be a positive integer >= 1");let X={columns:j.grid.columns};if(j.grid.gap!==void 0)X.gap=j.grid.gap;$=$.use(YJ(X))}if(j.groups){if(j.direction==="horizontal")throw Error("[vlist/builder] horizontal direction cannot be combined with groups");let X={getGroupForIndex:j.groups.getGroupForIndex,headerHeight:typeof j.groups.headerHeight==="function"?j.groups.headerHeight("",0):j.groups.headerHeight,headerTemplate:j.groups.headerTemplate};if(j.groups.sticky!==void 0)X.sticky=j.groups.sticky;$=$.use(UJ(X))}let Q=j.selection?.mode||"none";if(Q!=="none"){let X={mode:Q};if(j.selection?.initial!==void 0)X.initial=j.selection.initial;$=$.use(Sj(X))}else $=$.use(Sj({mode:"none"}));$=$.use(VJ());let J=j.scroll?.scrollbar||j.scrollbar;if(J!=="none"){let X=typeof J==="object"?J:{};$=$.use(WJ(X))}$=$.use(GJ());let K=$.build();return K.update=(X)=>{if(X.grid&&K.updateGrid)K.updateGrid(X.grid);if(X.selectionMode!==void 0&&K.setSelectionMode)K.setSelectionMode(X.selectionMode);if(X.itemHeight!==void 0)console.warn("[vlist] Updating itemHeight via update() is not yet supported with the builder pattern. Please recreate the instance or use the full API from 'vlist/full'.");if(X.overscan!==void 0)console.warn("[vlist] Updating overscan via update() is not yet supported with the builder pattern.")},K};e2();var EJ=()=>{let j={},$=(Z,V)=>{if(!j[Z])j[Z]=new Set;return j[Z].add(V),()=>Q(Z,V)},Q=(Z,V)=>{j[Z]?.delete(V)};return{on:$,off:Q,emit:(Z,V)=>{j[Z]?.forEach((D)=>{try{D(V)}catch(U){console.error(`[vlist] Error in event handler for "${String(Z)}":`,U)}})},once:(Z,V)=>{let D=(U)=>{Q(Z,D),V(U)};return $(Z,D)},clear:(Z)=>{if(Z)delete j[Z];else for(let V in j)delete j[V]},listenerCount:(Z)=>{return j[Z]?.size??0}}};export{k2 as toggleSelection,Lj as simpleVisibleRange,h2 as selectItems,Qj as selectAll,QJ as rangesEqual,Kj as rafThrottle,rj as needsCompression,Zj as mergeRanges,DJ as isSelected,z2 as isPlaceholderItem,XJ as isInRange,b2 as isGroupHeader,T2 as getSelectedItems,R2 as getSelectedIds,qJ as getRangeCount,nj as getMaxItemsWithoutCompression,M2 as getCompressionState,oj as getCompressionInfo,M2 as getCompression,wj as filterPlaceholders,KJ as diffRanges,m2 as deselectItems,W4 as createVList,Jj as createStickyHeader,Yj as createSparseStorage,$j as createSelectionState,C2 as createScrollbar,_J as createScrollController,Bj as createPlaceholderManager,lj as createHeightCache,x2 as createGroupedHeightFn,jj as createGroupLayout,p2 as createGridRenderer,a2 as createGridLayout,EJ as createEmitter,Uj as createDataManager,Xj as clearSelection,$J as clampScrollPosition,ej as calculateTotalHeight,O2 as calculateScrollToIndex,Oj as calculateRenderRange,g2 as calculateMissingRanges,JJ as calculateItemOffset,aj as calculateIndexFromScrollPosition,o2 as calculateCompressedVisibleRange,i2 as calculateCompressedScrollToIndex,sj as calculateCompressedRenderRange,H2 as calculateCompressedItemPosition,jJ as calculateActualHeight,u2 as buildLayoutItems,L2 as MAX_VIRTUAL_HEIGHT};
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/compression/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAevE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAC1B,CAAC,SAAS,SAAS,GAAG,SAAS,OAC5B,WAAW,CAAC,CAAC,CA6QjB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/compression/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAevE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAC1B,CAAC,SAAS,SAAS,GAAG,SAAS,OAC5B,WAAW,CAAC,CAAC,CA2QjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/grid/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAUvE,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EACtD,QAAQ,gBAAgB,KACvB,WAAW,CAAC,CAAC,CA8Zf,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/grid/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAUvE,gCAAgC;AAChC,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EACtD,QAAQ,gBAAgB,KACvB,WAAW,CAAC,CAAC,CA4Zf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/groups/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAuBvE,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAE5C,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC;IAE1E,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EACxD,QAAQ,kBAAkB,KACzB,WAAW,CAAC,CAAC,CAoQf,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/groups/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAuBvE,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAE5C,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC;IAE1E,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EACxD,QAAQ,kBAAkB,KACzB,WAAW,CAAC,CAAC,CAuQf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/selection/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAyBvE,qCAAqC;AACrC,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAClC;AAMD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3D,SAAS,qBAAqB,KAC7B,WAAW,CAAC,CAAC,CA0Wf,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/selection/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAwBvE,qCAAqC;AACrC,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB,kCAAkC;IAClC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAClC;AAMD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3D,SAAS,qBAAqB,KAC7B,WAAW,CAAC,CAAC,CAwWf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/snapshots/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAUvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,OAAK,WAAW,CAAC,CAAC,CA4G9E,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/snapshots/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAMvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,GACxB,CAAC,SAAS,SAAS,GAAG,SAAS,OAC5B,WAAW,CAAC,CAAC,CA8FjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/window/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,SAAS,GAAG,SAAS,OAC5B,WAAW,CAAC,CAAC,CA+HjB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/window/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,UAAU,GACrB,CAAC,SAAS,SAAS,GAAG,SAAS,OAC5B,WAAW,CAAC,CAAC,CA6HjB,CAAC"}