@floor/vlist 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
4
4
 
5
- **v1.3.5** — [Changelog](./changelog.txt)
5
+ **v1.3.6** — [Changelog](./changelog.txt)
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/%40floor%2Fvlist.svg)](https://www.npmjs.com/package/@floor/vlist)
8
8
  [![CI](https://github.com/floor/vlist/actions/workflows/ci.yml/badge.svg)](https://github.com/floor/vlist/actions/workflows/ci.yml)
@@ -41,7 +41,7 @@ export interface SimpleDataManager<T extends VListItem = VListItem> {
41
41
  setTotal: (total: number) => void;
42
42
  setItems: (items: T[], offset?: number, total?: number) => void;
43
43
  updateItem: (index: number, updates: Partial<T>) => boolean;
44
- removeItem: (index: number) => boolean;
44
+ removeItem: (id: string | number) => boolean;
45
45
  loadRange: (start: number, end: number) => Promise<void>;
46
46
  ensureRange: (start: number, end: number) => Promise<void>;
47
47
  loadInitial: () => Promise<void>;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:i0,getOwnPropertyNames:gJ,getOwnPropertyDescriptor:xJ}=Object,mJ=Object.prototype.hasOwnProperty;var T2=new WeakMap,dJ=(J)=>{var X=T2.get(J),q;if(X)return X;if(X=i0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")gJ(J).map((j)=>!mJ.call(X,j)&&i0(X,j,{get:()=>J[j],enumerable:!(q=xJ(J,j))||q.enumerable}));return T2.set(J,X),X};var cJ=(J,X)=>{for(var q in X)i0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var k2=(J,X)=>()=>(J&&(X=J(J=0)),X);var lJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},rJ=(J,X)=>{let q=X,j=new Float64Array(0),Y=(K)=>{q=K,j=new Float64Array(K+1),j[0]=0;for(let B=0;B<K;B++)j[B+1]=j[B]+J(B)};Y(X);let Q=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=j[q])return q-1;let B=0,N=q-1;while(B<N){let U=B+N+1>>>1;if(j[U]<=K)B=U;else N=U-1}return B};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return j[q];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Q(K),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(K)=>Y(K),isVariable:()=>!0}},$0=(J,X)=>{if(typeof J==="number")return lJ(J,X);return rJ(J,X)},m0=(J,X,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let Y=0,Q=0,K=X;while(K<j&&Q<q)Q+=J.getSize(K),Y++,K++;return Math.max(1,Y)},t0=(J,X,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getSize(0));let j=0,Y=0;for(let Q=q-1;Q>=0;Q--){let K=J.getSize(Q);if(Y+K>X)break;Y+=K,j++}return Math.max(j,1)},P2=(J,X,q)=>{if(q===0)return 0;let j=Math.floor(X),Y=X-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+Y*J.getSize(Q)};var S0=(J,X,q)=>{let j=Array.from(X).sort((K,B)=>K-B);if(j.length<=1)return;let Y=[];for(let K=0;K<j.length;K++){let B=q(j[K]);if(B)Y.push(B)}if(Y.length<=1)return;let Q=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===Q)Q=Q.nextSibling;else J.insertBefore(B,Q)}};var x2=3,m2="vlist",J2=200,I0=50,d2=50,c2=5,l2=2,Q2=16000000,r2=150,a2="x",s2=20,j2="_isPlaceholder",o2="__placeholder_";var w0=(J,X)=>{let q=X.getTotalSize(),j=q>Q2,Y=j?Q2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},i2=(J,X,q,j,Y,Q)=>{if(j===0||X===0)return Q.start=0,Q.end=-1,Q;if(!Y.isCompressed){let E=q.indexAtOffset(J),v=q.indexAtOffset(J+X);if(v<j-1)v++;return Q.start=Math.max(0,E),Q.end=Math.min(j-1,Math.max(0,v)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=m0(q,Math.max(0,U),X,j),P=Math.ceil(N)+W,y=K-X-J;if(y<=X&&y>=-1){let E=t0(q,X,j),v=Math.max(0,j-E),_=Math.max(0,Math.min(1,1-y/X));U=Math.floor(U+(v-U)*_),P=y<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,P)),Q},l0=(J,X,q,j,Y,Q,K)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);let{virtualSize:B}=Q,N=B-Y,U=N-X;if(U<=Y&&U>=-1){if(X>=N-1){let L=q.getTotalSize()-q.getOffset(J);return Y-L}let y=t0(q,Y,j),E=Math.max(0,j-y),_=X/B*j,O=Math.max(0,Math.min(1,1-U/Y)),A=q.getOffset(J)-q.getOffset(E),M=q.getOffset(J)-P2(q,_,j);return M+(A-M)*O}let W=X/B,P=q.getTotalSize(),b=W*P;return q.getOffset(J)-b},t2=(J,X,q,j,Y,Q="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(Q==="end"&&J===j-1)return Math.max(0,Y.virtualSize-q);K=J/j*Y.virtualSize}else K=X.getOffset(J);let B=X.getSize(J);switch(Q){case"center":K-=(q-B)/2;break;case"end":K-=q-B;break}let N=Y.virtualSize-q;return Math.max(0,Math.min(K,N))};var q2=()=>{};var R0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var WJ={};cJ(WJ,{createGridRenderer:()=>K2});var q1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),X.push(Q)},clear:()=>{X.length=0}}},X1=1,K2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=q1(),W=new Map,P=Q,b=!1,y=null,E=0,v=0,_="",O=-1,A=(D)=>{if(y&&E===D)return y;return y=w0(D,q),E=D,y},M={selected:!1,focused:!1},L=(D,k)=>{return M.selected=D,M.focused=k,M},$=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,I=`${Y}-item--focused`,w=(D,k)=>{if(typeof k==="string")D.innerHTML=k;else D.replaceChildren(k)},g=(D,k,x)=>{D.classList.toggle(V,k),D.classList.toggle(I,x)},l=(D,k)=>{let x=j.getRow(D);if(k){let F=k.totalItems,f=A(F);if(f.isCompressed)return l0(x,k.scrollPosition,q,F,k.containerSize,f,k.rangeStart)}return q.getOffset(x)},z=(D,k)=>{let x=b&&j.getCol(D)===0,F=x?0:j.getCol(D),f=x?0:j.getColumnOffset(F,P),p;if(b){let t=j.getRow(D),u=0,s=new Set;for(let j0=0;j0<D;j0++){let m=j.getRow(j0);if(m<t&&!s.has(m)){let o=q.getSize(j0);u+=o,s.add(m)}}p=u}else p=l(D,k);if(N)return`translate(${Math.round(p)}px, ${Math.round(f)}px)`;return`translate(${Math.round(f)}px, ${Math.round(p)}px)`},d=(D,k)=>{D.style.transform=k},i=(D,k)=>{let x=D.dataset.id?.startsWith("__group_header"),F=x?P:j.getColumnWidth(P),f;if(b||x)f=q.getSize(k)-j.gap;else{let p=j.getRow(k);f=q.getSize(p)-j.gap}if(N)D.style.width=`${f}px`,D.style.height=`${F}px`;else D.style.width=`${F}px`,D.style.height=`${f}px`},h=(D,k,x,F,f)=>{let p=U.acquire(),t=L(x,F);if(p.className=$,p.dataset.index=String(D),p.dataset.id=String(k.id),p.dataset.row=String(j.getRow(D)),p.dataset.col=String(j.getCol(D)),p.ariaSelected=String(x),B)p.id=`${B}-item-${D}`;if(K){let s=K();if(s!==O)O=s,_=String(s);p.setAttribute("aria-setsize",_),p.setAttribute("aria-posinset",String(D+1))}i(p,D);let u=X(k,D,t);return w(p,u),g(p,x,F),d(p,f),{element:p,lastItemId:k.id,lastSelected:x,lastFocused:F,lastTransform:f,lastSeenFrame:v}},H=(D,k,x,F,f)=>{if(v++,k.start===0&&D.length>0)b=R0(D[0]);for(let[u,s]of W)if(u>=k.start&&u<=k.end)s.lastSeenFrame=v;else if(v-s.lastSeenFrame>X1)U.release(s.element),W.delete(u);let p=!1;if(K){let u=K();if(u!==O)O=u,_=String(u),p=!0}let t=null;for(let u=k.start;u<=k.end;u++){let s=u-k.start,j0=D[s];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${u} (range: ${k.start}-${k.end}, items.length: ${D.length})`);continue}let m=x.has(j0.id),o=u===F,n=W.get(u);if(n){let q0=n.lastItemId!==j0.id,e=n.lastSelected!==m,X0=n.lastFocused!==o;if(q0||e||X0){if(q0){let _0=L(m,o),Y0=X(j0,u,_0);w(n.element,Y0),n.element.dataset.id=String(j0.id),n.element.dataset.row=String(j.getRow(u)),n.element.dataset.col=String(j.getCol(u)),i(n.element,u)}g(n.element,m,o),n.element.ariaSelected=String(m),n.lastItemId=j0.id,n.lastSelected=m,n.lastFocused=o}let B0=z(u,f);if(n.lastTransform!==B0)d(n.element,B0),n.lastTransform=B0;if(p)n.element.setAttribute("aria-setsize",_)}else{let q0=z(u,f),e=h(u,j0,m,o,q0);if(!t)t=document.createDocumentFragment();t.appendChild(e.element),W.set(u,e)}}if(t)J.appendChild(t)},S=(D)=>{for(let[k,x]of W){let F=z(k,D);if(x.lastTransform!==F)d(x.element,F),x.lastTransform=F}},G=(D,k,x,F)=>{let f=W.get(D);if(!f)return;let p=f.lastItemId!==k.id,t=f.lastSelected!==x,u=f.lastFocused!==F;if(p||t||u){let s=L(x,F),j0=X(k,D,s);w(f.element,j0),g(f.element,x,F),f.element.dataset.id=String(k.id),f.element.ariaSelected=String(x),i(f.element,D),f.lastItemId=k.id,f.lastSelected=x,f.lastFocused=F}},T=(D,k,x)=>{let F=W.get(D);if(!F)return;let f=F.lastSelected!==k,p=F.lastFocused!==x;if(f||p)g(F.element,k,x),F.lastSelected=k,F.lastFocused=x},R=(D)=>{return W.get(D)?.element},Z=(D)=>{if(Math.abs(D-P)<1)return;P=D;for(let[k,x]of W){i(x.element,k);let F=z(k);d(x.element,F),x.lastTransform=F}},C=()=>{S0(J,W.keys(),(D)=>W.get(D)?.element)},a=()=>{for(let[,D]of W)U.release(D.element);W.clear()};return{render:H,updatePositions:S,updateItem:G,updateItemClasses:T,getElement:R,sortDOM:C,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var B2=k2(()=>{q2()});var b2=2,H2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},y2=(J,X)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=X,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[Q],B=X-K.position,N=q-K.time;J.velocity=N>0?Math.abs(B)/N:0}return J.lastPosition=X,J.lastTime=q,J};var $2=(J,X)=>{let q=new Map,j=(Q)=>{let K=q.get(Q);return K!==void 0?K:J},Y=$0(j,X);return{getOffset(Q){return Y.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return Y.indexAtOffset(Q)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(Q){if(Q<Y.getTotal()){for(let K of q.keys())if(K>=Q)q.delete(K)}Y=$0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,K){q.set(Q,K)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var w2=()=>{let J={},X=(B,N)=>{if(!J[B])J[B]=new Set;return J[B].add(N),()=>q(B,N)},q=(B,N)=>{J[B]?.delete(N)};return{on:X,off:q,emit:(B,N)=>{J[B]?.forEach((U)=>{try{U(N)}catch(W){console.error(`[vlist] Error in event handler for "${String(B)}":`,W)}})},once:(B,N)=>{let U=(W)=>{q(B,U),N(W)};return X(B,U)},clear:(B)=>{if(B)delete J[B];else for(let N in J)delete J[N]},listenerCount:(B)=>{return J[B]?.size??0}}};var R2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},v2=(J,X,q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);Y.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${X}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let K=document.createElement("div");if(K.className=`${X}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${X}-items`,B.setAttribute("role","listbox"),q)B.setAttribute("aria-label",q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";return K.appendChild(B),Q.appendChild(K),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B}};var z2=(J=100)=>{let X=[];return{acquire:()=>{let q=X.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(X.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),X.push(q)},clear:()=>{X.length=0}}};var C2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=m0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},S2=(J,X,q,j)=>{if(q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(q-1,J.end+X)},f2=(J,X,q,j,Y,Q=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U+Q-q),P;switch(Y){case"center":P=B-(q-N)/2;break;case"end":P=Q>0&&B+N>=U?W:B-q+N;break;default:P=B}return Math.max(0,Math.min(P,W))};var d0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return d0;if(typeof J==="number")return J===0?d0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?d0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?d0:{top:X,right:q,bottom:j,left:Y}},c0=(J,X)=>X?J.left+J.right:J.top+J.bottom,C0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var I2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:P,idleHandlers:b,afterScroll:y,clickHandlers:E,keydownHandlers:v,resizeHandlers:_,destroyHandlers:O,methods:A,onScrollFrame:M,resizeObserver:L,renderRange:$}=X;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return Q},adjustScrollPosition(V){if(J.mp===0)return V;let I=U?J.cw:J.ch,w=J.hc.getTotalSize(),g=Math.max(0,w-I),l=Math.max(0,w+J.mp-I);if(V>=g)return l;return Math.min(V,l)},get renderer(){return{render:(V,I,w,g,l)=>{J.ss=w,J.fi=g,J.ffn()},updateItemClasses:(V,I,w)=>{let g=K.get(V);if(!g)return;g.classList.toggle(`${W}-item--selected`,I),g.classList.toggle(`${W}-item--focused`,w),g.ariaSelected=I?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(V)=>K.get(V)??null,clear:()=>{},destroy:()=>{}}},set renderer(V){},get dataManager(){return J.dm},set dataManager(V){J.dm=V},get scrollController(){return J.sc},set scrollController(V){J.sc=V},state:N,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:b,clickHandlers:E,keydownHandlers:v,resizeHandlers:_,contentSizeHandlers:P,destroyHandlers:O,methods:A,replaceTemplate(V){J.at=V},replaceRenderer(V){},replaceDataManager(V){J.dm=V},replaceScrollController(V){J.sc=V},getItemsForRange(V){let{dm:I,it:w}=J,g=[];for(let l=V.start;l<=V.end;l++){let z=I?I.getItem(l):w[l];if(z)g.push(z)}return g},getAllLoadedItems(){let V=J.dm;if(V){let I=V.getTotal(),w=[];for(let g=0;g<I;g++){let l=V.getItem(g);if(l)w.push(l)}return w}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let V=J.hc;return{isCompressed:!1,actualSize:V.getTotalSize(),virtualSize:V.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:$.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,V]of K)V.remove(),B.release(V);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(V,I){J.rfn=V,J.ffn=I},setVirtualTotalFn(V){J.vtf=V},rebuildSizeCache(V){J.hc.rebuild(V??J.vtf())},setSizeConfig(V){if(J.hc=$0(V,J.vtf()),J.gp>0){let I=J.hc.getTotalSize,w=J.gp;J.hc.getTotalSize=()=>{let g=I();return g>0?g-w:0}}},updateContentSize(V){let I=`${V+J.mp}px`;if(U)q.content.style.width=I;else q.content.style.height=I},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,I){J.sgt=V,J.sst=(w)=>{I(w),M()}},setScrollTarget(V){J.st.removeEventListener("scroll",M),J.st=V,J.st.addEventListener("scroll",M,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(V){J.gcw=V.width,J.gch=V.height,J.cw=V.width(),J.ch=V.height(),N.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,L.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(V){J.sif=V}}},p2=(J,X,q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:Q,applyTemplate:K,updateContentSize:B}=X,N=()=>{J.hc.rebuild(J.vtf()),B(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let P=J.it,b=[],y=Math.max(0,U),E=Math.min(W,P.length-1);for(let v=y;v<=E;v++)b.push(P[v]);return b},setTotal:(U)=>{},setItems:(U,W=0,P)=>{let b=J.it;if(W===0&&(P!==void 0||b.length===0))J.it=U;else{let y=W+U.length;if(b.length<y)b.length=y;for(let E=0;E<U.length;E++)b[W+E]=U[E]}if(J.ii)N()},updateItem:(U,W)=>{let P=J.it;if(U<0||U>=P.length)return!1;let b=P[U];if(!b)return!1;P[U]={...b,...W};let y=j.get(U);if(y)K(y,J.at(P[U],U,Y)),y.dataset.id=String(P[U].id);return!0},removeItem:(U)=>{if(U<0||U>=J.it.length)return!1;if(J.it.splice(U,1),J.ii)N();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},h2=(J,X)=>{let{dom:q,classPrefix:j}=X;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let Q=J.sgt()+Y;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),Q=Math.max(0,Y-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var u2=(J,X,q,j,Y,Q,K,B,N,U=0)=>{let W=(_,O=!1)=>{let A=q?X.viewport.scrollWidth-X.viewport.clientWidth:X.viewport.scrollHeight-X.viewport.clientHeight;if(A<=0||_<A-2)return!1;let M=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(M>_){if(J.sst(M),J.ls=M,O)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let P=new WeakMap,b=0,y=!1,E=null,v=()=>{if(y){let _=J.sgt();K(),y=!1,W(_,!0)}};return E=new ResizeObserver((_)=>{if(J.id)return;let O=!1,A=j.start;for(let M of _){let L=P.get(M.target);if(L===void 0)continue;let $=q?M.borderBoxSize[0].inlineSize:M.borderBoxSize[0].blockSize;if(!B.isMeasured(L)){let V=$+U,I=B.getSize(L);if(B.setMeasuredSize(L,V),O=!0,L<A&&V!==I)b+=V-I;E.unobserve(M.target);let w=M.target;if(q)w.style.width=`${$}px`;else w.style.height=`${$}px`}}if(!O)return;if(B.rebuild(J.vtf()),J.hc=B,b!==0){let M=J.sgt();J.sst(M+b),J.ls=M+b,b=0}if(Q())y=!0;else{let M=J.sgt();K(),y=!1,W(M)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:E,ei:P,mc:B,fl:v,se:W}};var e0=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,H0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,X)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,K,B)=>{if(j(),Math.abs(K-Q)<1){J.scrollTo(K);return}let N=performance.now(),U=(W)=>{let P=W-N,b=Math.min(P/B,1),y=Q+(K-Q)*e0(b);if(J.scrollTo(y),X(),b<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var g2=(J,X,q,j,Y,Q,K,B,N,U,W,P,b,y,E,v,_,O)=>{let A=(G)=>{N.dataManager.setItems(G,0,G.length)},M=U?(G)=>{let T=J.sab(2),R=J.it.length;if(N.dataManager.setItems(G,R),T&&J.it.length>0){let Z=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(Z),J.ls=Z,J.rfn()}}:(G)=>{let T=J.it.length;N.dataManager.setItems(G,T)},L=U?(G)=>{let T=J.sgt(),R=J.hc.getTotalSize(),Z=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...G,...Z],0);let a=J.hc.getTotalSize()-R;if(a>0)J.sst(T+a),J.ls=T+a}:(G)=>{let T=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...G,...T],0)},$=(G,T)=>{N.dataManager.updateItem(G,T)},V=(G)=>{N.dataManager.removeItem(G)},I=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},w=null,g=()=>{if(w!==null)cancelAnimationFrame(w),w=null},l=(G,T,R)=>{if(g(),Math.abs(T-G)<1){J.sst(T),J.ls=T,J.rfn();return}let Z=performance.now(),C=(a)=>{let r=a-Z,D=Math.min(r/R,1),k=G+(T-G)*e0(D);if(J.sst(k),J.ls=k,J.rfn(),D<1)w=requestAnimationFrame(C);else w=null};w=requestAnimationFrame(C)},z=(G,T)=>{let{align:R,behavior:Z,duration:C}=H0(T),a=J.vtf(),r=G;if(W&&a>0)r=(r%a+a)%a;let D=J.gsp(r,J.hc,J.ch,a,R);if(Z==="smooth")l(J.sgt(),D,C);else g(),J.sst(D)},d=()=>J.sgt(),i=(G,T)=>{return q.on(G,T)},h=(G,T)=>{q.off(G,T)},H=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",P),X.items.removeEventListener("dblclick",b),X.root.removeEventListener("keydown",y),J.st.removeEventListener("scroll",E),v.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);O();for(let G=0;G<B.length;G++)B[G]();for(let G of K)if(G.destroy)G.destroy();g();for(let[,G]of j)G.remove(),Y.release(G);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},S={get element(){return X.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):A,appendItems:Q.has("appendItems")?Q.get("appendItems"):M,prependItems:Q.has("prependItems")?Q.get("prependItems"):L,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):V,reload:Q.has("reload")?Q.get("reload"):I,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):z,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):g,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):d,on:i,off:h,destroy:H};for(let[G,T]of Q){if(G.charCodeAt(0)===95||G==="setItems"||G==="appendItems"||G==="prependItems"||G==="updateItem"||G==="removeItem"||G==="reload"||G==="scrollToIndex"||G==="scrollToItem"||G==="cancelScroll"||G==="getScrollPosition")continue;S[G]=T}return S};var aJ=0,n2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.orientation==="horizontal",q=X?"width":"height",j=X?"estimatedWidth":"estimatedHeight",Y=X?J.item.width:J.item.height,Q=X?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${X?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,N={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),N},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,sJ(J,K,X,Y,Q??null)}};return N};function sJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=x2,classPrefix:N=m2,ariaLabel:U,padding:W,reverse:P=!1,scroll:b}=J,y=b,E=y?.wheel??!0,v=y?.wrap??!1,_=P,O=`${N}-${aJ++}`,A=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,M=j??Y,L=j==null&&Y!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,V=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,I={overscan:B,classPrefix:N,reverse:_,wrap:v,horizontal:q,ariaIdPrefix:O},w=Array.from(X.values()).sort((c,J0)=>(c.priority??50)-(J0.priority??50)),g=new Set(w.map((c)=>c.name));for(let c of w)if(c.conflicts){for(let J0 of c.conflicts)if(g.has(J0))throw Error(`[vlist/builder] ${c.name} and ${J0} cannot be combined`)}if(_){if(g.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let l=R2(J.container),z=v2(l,N,U,q);if(y?.wheel===!1)if(q)z.viewport.style.overflowX="hidden";else z.viewport.style.overflow="hidden";if(y?.scrollbar==="none")z.viewport.classList.add(`${N}-viewport--no-scrollbar`);let d=b0(W),i=c0(d,q);if(d.top||d.right||d.bottom||d.left)z.content.style.boxSizing="border-box",z.content.style.padding=`${d.top}px ${d.right}px ${d.bottom}px ${d.left}px`;let h=w2(),H=K||[],S=typeof M==="function"&&(X.has("withGrid")||X.has("withMasonry")),G=A>0?typeof M==="function"?(c)=>M(c)+A:M+A:M,T=L?$2(Y+A,H.length):$0(G,S?0:H.length);if(A>0){let c=T.getTotalSize;T.getTotalSize=()=>{let J0=c();return J0>0?J0-A:0}}let R=z2(),Z={it:H,hc:T,ch:z.viewport.clientHeight,cw:z.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:H2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>z.viewport.scrollLeft:()=>z.viewport.scrollTop,sst:q?(c)=>{z.viewport.scrollLeft=c}:(c)=>{z.viewport.scrollTop=c},sab:(c=2)=>{let J0=Z.hc.getTotalSize();return Z.ls+Z.ch>=J0-c},sic:!1,rfn:null,ffn:null,gvr:(c,J0,Q0,Z0,M0)=>{C2(c,J0,Q0,Z0,M0)},gsp:(c,J0,Q0,Z0,M0)=>{return f2(c,J0,Q0,Z0,M0,Z.mp)},pef:null,at:Q.template,vre:!0,st:z.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch,gp:A,mp:i,sif:(c)=>c};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let C=null,a=!1,r={start:0,end:0},D={start:0,end:0},k={start:-1,end:-1},x={viewportState:{scrollPosition:0,containerSize:q?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},F=new Map,f=()=>{S0(z.items,F.keys(),(c)=>F.get(c))},p=()=>{let c=`${Z.hc.getTotalSize()+i}px`;if(q)z.content.style.width=c;else z.content.style.height=c},u=u2(Z,z,q,r,k,()=>a,p,L?T:null,L,A),s={selected:!1,focused:!1},j0=`${N}-item`,m=Q.striped,o=!!m,n=m==="data"||m==="even"||m==="odd",q0=`${N}-item--odd`,e=[],X0=[],B0=[],_0=[],Y0=[],G0=[],D0=[],U0=new Map,A0=null,W0=null,L0=!1,v0=()=>{if(L0)return;L0=!0,A0=U0.get("_getSelectedIds")??null,W0=U0.get("_getFocusedIndex")??null},s0=(c,J0)=>{if(typeof J0==="string")c.innerHTML=J0;else c.replaceChildren(J0)},zJ=(c,J0)=>{let Q0=Math.round(Z.hc.getOffset(J0));if(q)c.style.transform=`translateX(${Q0}px)`;else c.style.transform=`translateY(${Q0}px)`};Z.pef=zJ;let CJ=(c,J0)=>{let Q0=R.acquire();Q0.className=j0;let Z0=!L||u.mc&&u.mc.isMeasured(c);if(q){if(Z0)Q0.style.width=`${Z.hc.getSize(c)-A}px`;else Q0.style.width="";if(V!=null)Q0.style.height=`${V}px`}else if(Z0)Q0.style.height=`${Z.hc.getSize(c)-A}px`;else Q0.style.height="";if(Q0.dataset.index=String(c),Q0.dataset.id=String(J0.id),Q0.ariaSelected="false",Q0.id=`${O}-item-${c}`,Z.la=String(Z.vtf()),Q0.setAttribute("aria-setsize",Z.la),Q0.setAttribute("aria-posinset",String(c+1)),String(J0.id).startsWith("__placeholder_"))Q0.classList.add(`${N}-item--placeholder`);if(o)if(n){let V0=Z.sif(c);if(V0<0)Q0.classList.remove(q0);else Q0.classList.toggle(q0,(V0&1)===1)}else Q0.classList.toggle(q0,(c&1)===1);return s0(Q0,Z.at(J0,c,s)),Z.pef(Q0,c),Q0},SJ=()=>{if(Z.id)return;v0();let c=A0?A0():Z.ss,J0=W0?W0():Z.fi,Q0=Z.vtf(),Z0=q?Z.cw:Z.ch;if(Z.gvr(Z.ls,Z0,Z.hc,Q0,r),S2(r,B,Q0,D),D.start===k.start&&D.end===k.end){if(Z.sic)for(let[K0,O0]of F)Z.pef(O0,K0);return}let M0=String(Q0),V0=M0!==Z.la;Z.la=M0;for(let[K0,O0]of F)if(K0<D.start||K0>D.end)O0.remove(),R.release(O0),F.delete(K0);let N0=document.createDocumentFragment(),F0=[],T0=[];for(let K0=D.start;K0<=D.end;K0++){let O0=Z.dm?Z.dm.getItem(K0):Z.it[K0];if(O0===void 0)continue;let E0=F.get(K0);if(E0){let k0=E0.dataset.id,p0=String(O0.id);if(k0!==p0){let uJ=k0?.startsWith("__placeholder_"),F2=p0.startsWith("__placeholder_");s0(E0,Z.at(O0,K0,s)),E0.dataset.id=p0;let L2=!L||u.mc&&u.mc.isMeasured(K0);if(q)E0.style.width=L2?`${Z.hc.getSize(K0)-A}px`:"";else E0.style.height=L2?`${Z.hc.getSize(K0)-A}px`:"";if(F2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(uJ&&!F2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,K0);let x0=c.has(O0.id),hJ=K0===J0;if(E0.classList.toggle(`${N}-item--selected`,x0),E0.classList.toggle(`${N}-item--focused`,hJ),E0.ariaSelected=x0?"true":"false",V0)E0.setAttribute("aria-setsize",Z.la)}else{let k0=CJ(K0,O0);T0.push({index:K0,element:k0});let p0=c.has(O0.id),x0=K0===J0;if(p0)k0.classList.add(`${N}-item--selected`),k0.ariaSelected="true";if(x0)k0.classList.add(`${N}-item--focused`);N0.appendChild(k0),F0.push({index:K0,element:k0})}}if(F0.length>0){z.items.appendChild(N0);for(let{index:K0,element:O0}of F0)F.set(K0,O0)}if(L&&u.ob&&u.mc&&u.ei){for(let{index:K0,element:O0}of T0)if(!u.mc.isMeasured(K0))u.ei.set(O0,K0),u.ob.observe(O0)}k.start=D.start,k.end=D.end,x.lastRenderRange.start=D.start,x.lastRenderRange.end=D.end,x.viewportState.scrollPosition=Z.ls,x.viewportState.visibleRange.start=r.start,x.viewportState.visibleRange.end=r.end,x.viewportState.renderRange.start=D.start,x.viewportState.renderRange.end=D.end,h.emit("range:change",{range:{start:D.start,end:D.end}})},fJ=()=>{k.start=-1,k.end=-1,Z.rfn()};Z.rfn=SJ,Z.ffn=fJ;let IJ=()=>{z.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),u.fl(),f();for(let c=0;c<X0.length;c++)X0[c]();h.emit("scroll:idle",{scrollPosition:Z.ls})},pJ=()=>{if(C)clearTimeout(C);C=setTimeout(IJ,y?.idleTimeout??r2)},u0=()=>{if(Z.id)return;let c=Z.sgt();if(c===Z.ls&&a)return;let J0=c>=Z.ls?"down":"up";if(Z.vt=y2(Z.vt,c),!z.root.classList.contains(`${N}--scrolling`))z.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=c,Z.rfn(),h.emit("scroll",{scrollPosition:c,direction:J0}),h.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=b2});for(let Q0=0;Q0<e.length;Q0++)e[Q0](c,J0);pJ()},z0=null;if(Z.st.addEventListener("scroll",u0,{passive:!0}),E&&!q&&!$)z0=(c)=>{if(x.viewportState.isCompressed)return;let J0=z.viewport.scrollWidth>z.viewport.clientWidth;if(J0&&Math.abs(c.deltaX)>Math.abs(c.deltaY))return;if(c.preventDefault(),J0&&c.deltaX!==0)z.viewport.scrollLeft+=c.deltaX;let Q0=Z.sgt(),Z0=z.viewport.scrollHeight-z.viewport.clientHeight,M0=Math.max(0,Math.min(Q0+c.deltaY,Z0));if(Math.abs(M0-Q0)<1)return;Z.sst(M0),u0()},Z.wh=z0,z.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&E)z0=(c)=>{if(c.deltaX)return;c.preventDefault(),z.viewport.scrollLeft+=c.deltaY},Z.wh=z0,z.viewport.addEventListener("wheel",z0,{passive:!1});let G2=(c)=>{let J0=c.target.closest("[data-index]");if(!J0)return null;let Q0=parseInt(J0.dataset.index??"-1",10);if(Q0<0)return null;let Z0=Z.dm?.getItem(Q0)??Z.it[Q0];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:Q0}},M2=(c)=>{let J0=G2(c);if(J0)h.emit("item:click",{item:J0.item,index:J0.index,event:c});for(let Q0=0;Q0<B0.length;Q0++)B0[Q0](c)},O2=(c)=>{let J0=G2(c);if(J0)h.emit("item:dblclick",{item:J0.item,index:J0.index,event:c})},E2=(c)=>{for(let J0=0;J0<_0.length;J0++)_0[J0](c)};z.items.addEventListener("click",M2),z.items.addEventListener("dblclick",O2),z.root.addEventListener("keydown",E2);let o0=new ResizeObserver((c)=>{if(Z.id)return;for(let J0 of c){let Q0=J0.contentRect.height,Z0=J0.contentRect.width,M0=q?Z0:Q0,V0=q?Z.cw:Z.ch;if(Z.cw=Z0,Z.ch=Q0,Math.abs(M0-V0)>1){if(x.viewportState.containerSize=M0,Z.ii)p(),Z.rfn(),h.emit("resize",{height:Q0,width:Z0})}if(Z.ii)for(let N0=0;N0<Y0.length;N0++)Y0[N0](Z0,Q0)}});if(Z.vre)o0.observe(z.viewport);let n0={dom:z,emitter:h,resolvedConfig:I,rawConfig:J,rendered:F,pool:R,itemState:s,sharedState:x,renderRange:D,isHorizontal:q,classPrefix:N,contentSizeHandlers:G0,idleHandlers:X0,afterScroll:e,clickHandlers:B0,keydownHandlers:_0,resizeHandlers:Y0,destroyHandlers:D0,methods:U0,onScrollFrame:u0,resizeObserver:o0,applyTemplate:s0,updateContentSize:p},g0=I2(Z,n0);Z.dm=p2(Z,n0,g0),Z.sc=h2(Z,n0);let A2=new Map;for(let c of w)if(c.methods)for(let J0 of c.methods){let Q0=A2.get(J0);if(Q0)throw Error(`[vlist/builder] Method "${J0}" is registered by both "${Q0}" and "${c.name}"`);A2.set(J0,c.name)}for(let c of w)c.setup(g0);if(!U0.has("_getFocusedIndex")){let c=-1,J0=`${N}-item--focused`,Q0=(V0,N0)=>{let F0=Z.vtf();if(N0<0||N0>=F0)return;c=N0,z.root.setAttribute("aria-activedescendant",`${O}-item-${N0}`);let T0=q?Z.cw:Z.ch;if(Z.sst(Z.gsp(N0,Z.hc,T0,F0,"center")),Z.ls=Z.sgt(),Z.rfn(),V0>=0&&V0!==N0)F.get(V0)?.classList.remove(J0);F.get(N0)?.classList.add(J0)},Z0=()=>{if(Z.id)return;if(!z.root.matches(":focus-visible"))return;let V0=Z.vtf();if(V0===0)return;Q0(-1,c>=0?Math.min(c,V0-1):0)};z.root.addEventListener("focusin",Z0);let M0=(V0)=>{if(Z.id)return;let N0=V0.relatedTarget;if(N0&&z.root.contains(N0))return;if(c>=0)F.get(c)?.classList.remove(J0);z.root.removeAttribute("aria-activedescendant")};z.root.addEventListener("focusout",M0),_0.push((V0)=>{if(Z.id)return;let N0=Z.vtf();if(N0===0)return;let F0=c,T0=F0;switch(V0.key){case"ArrowUp":T0=F0<=0?N0-1:F0-1;break;case"ArrowDown":T0=F0>=N0-1?0:F0+1;break;case"Home":T0=0;break;case"End":T0=N0-1;break;default:return}V0.preventDefault(),Q0(F0,T0)}),D0.push(()=>{z.root.removeEventListener("focusin",Z0),z.root.removeEventListener("focusout",M0)})}if(Z.ii=!0,g0.state.isInitialized=!0,p(),Z.rfn(),_&&Z.it.length>0){let c=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(c),Z.ls=c,Z.rfn()}return g2(Z,z,h,F,R,U0,w,D0,g0,_,v,M2,O2,E2,u0,o0,()=>{if(u.ob)u.ob.disconnect()},()=>{if(C)clearTimeout(C)})}q2();var h0=(J,X,q={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:N=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,P=0,b=0,y=0,E=0,v=!1,_=!1,O=0,A=0,M=0,L=null,$=!1,V=null,I=null,w=Y?"width":"height",g=Y?"translateX":"translateY",l=Y?(u)=>u.clientX:(u)=>u.clientY,z=Y?"left":"top",d=document.createElement("div"),i=document.createElement("div"),h=N?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,i.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(i),J.appendChild(d),h){if(h.className=`${j}-scrollbar-hover`,Y)h.classList.add(`${j}-scrollbar-hover--horizontal`),h.style.height=`${U}px`;else h.style.width=`${U}px`;J.appendChild(h)}},S=()=>{if(L)clearTimeout(L),L=null},G=()=>{if(!Q)return;S(),L=setTimeout(R,K)},T=()=>{if(P<=b)return;if(S(),!$)d.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!v&&!_)G()},R=()=>{if(v||_)return;d.classList.remove(`${j}-scrollbar--visible`),$=!1},Z=(u,s)=>{P=u,b=s;let j0=P>b;if(d.style.display=j0?"":"none",!j0){R();return}let m=b/P;y=Math.max(B,m*b),i.style[w]=`${y}px`,E=b-y,C(M)},C=(u)=>{if(M=u,P<=b||E<=0)return;let s=P-b,m=Math.min(1,Math.max(0,u/s))*E;i.style.transform=`${g}(${m}px)`},a=(u)=>{if(u.target===i)return;let s=d.getBoundingClientRect(),o=l(u)-s[z]-y/2,q0=Math.max(0,Math.min(o,E))/E,e=P-b,X0=q0*e;X(X0),T()},r=(u)=>{u.preventDefault(),u.stopPropagation(),v=!0,O=l(u),A=M,S(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",D),document.addEventListener("mouseup",k)},D=(u)=>{if(!v)return;let s=l(u)-O,j0=E>0?s/E:0,m=P-b,o=j0*m,n=Math.max(0,Math.min(A+o,m)),e=n/m*E;if(i.style.transform=`${g}(${e}px)`,I=n,V===null)V=requestAnimationFrame(()=>{if(I!==null)X(I);V=null})},k=()=>{if(v=!1,V!==null)cancelAnimationFrame(V),V=null;if(I!==null)X(I),I=null;if(d.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)G();document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",k)},x=()=>{if(W)T()},F=()=>{if(!v){if(_=!1,Q)G()}},f=()=>{_=!0,S(),T()},p=()=>{if(_=!1,!v&&Q)G()},t=()=>{if(S(),V!==null)cancelAnimationFrame(V),V=null;if(d.removeEventListener("click",a),d.removeEventListener("mouseenter",f),d.removeEventListener("mouseleave",p),i.removeEventListener("mousedown",r),J.removeEventListener("mouseenter",x),J.removeEventListener("mouseleave",F),document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",k),h){if(h.removeEventListener("mouseenter",f),h.removeEventListener("mouseleave",p),h.parentNode)h.parentNode.removeChild(h)}if(d.parentNode)d.parentNode.removeChild(d)};if(H(),d.addEventListener("click",a),d.addEventListener("mouseenter",f),d.addEventListener("mouseleave",p),i.addEventListener("mousedown",r),J.addEventListener("mouseenter",x),J.addEventListener("mouseleave",F),h)h.addEventListener("mouseenter",f),h.addEventListener("mouseleave",p);return{show:T,hide:R,updateBounds:Z,updatePosition:C,isVisible:()=>$,destroy:t}};var e2=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=h0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,K),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let B=q.getCachedCompression();X.updateBounds(B.virtualSize,q.state.viewportState.containerSize);let N=X;q.afterScroll.push((U,W)=>{N.updatePosition(U),N.show()}),q.resizeHandlers.push((U,W)=>{if(N){let P=q.getCachedCompression();N.updateBounds(P.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(N){let U=q.getCachedCompression();N.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(N)N.destroy()})},destroy(){if(X)X.destroy(),X=null}}};var oJ=0.65,nJ=0.5,iJ=0.95,tJ=0.1,eJ=5,J1=100,JJ=()=>{let J=null,X=0,q=!1,j=0,Y=null,Q=0,K=0,B=null,N=[];return{name:"withScale",priority:20,setup(U){let{dom:W,config:P}=U,{classPrefix:b,horizontal:y}=P,E=()=>{let A=U.getVirtualTotal(),M=w0(A,U.sizeCache);if(M.isCompressed&&!q){q=!0,U.scrollController.enableCompression(M),U.updateContentSize(M.virtualSize),U.setScrollFns(()=>X,(d)=>{if(X=d,j=d,Y!==null)cancelAnimationFrame(Y),Y=null});let L=()=>{let d=j-X;if(Math.abs(d)<nJ)X=j,Y=null;else{X+=d*oJ;let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,h)),Y=requestAnimationFrame(L)}U.scrollController.scrollTo(X)},$=W.viewport,V=(d)=>{d.preventDefault();let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+d.deltaY,h)),Y===null)Y=requestAnimationFrame(L)};$.addEventListener("wheel",V,{passive:!1});let I=()=>{if(B!==null)cancelAnimationFrame(B),B=null},w=(d)=>{if(I(),Y!==null)cancelAnimationFrame(Y),Y=null;let i=d.touches[0];if(!i)return;let h=y?i.clientX:i.clientY;Q=h,K=X,N=[{time:performance.now(),y:h}]},g=(d)=>{d.preventDefault();let i=d.touches[0];if(!i)return;let h=y?i.clientX:i.clientY,H=performance.now();if(N.push({time:H,y:h}),N.length>eJ)N.shift();let S=Q-h,T=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,R=Math.max(0,Math.min(K+S,T));X=R,j=R,U.scrollController.scrollTo(R)},l=(d)=>{let i=performance.now(),h=N.filter((T)=>i-T.time<J1),H=0;if(h.length>=2){let T=h[0],R=h[h.length-1],Z=R.time-T.time;if(Z>0)H=(T.y-R.y)/Z}if(N=[],Math.abs(H)<tJ)return;let S=H*16,G=()=>{if(S*=iJ,Math.abs(S)<0.5){B=null;return}let R=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+S;if(Z=Math.max(0,Math.min(Z,R)),Z<=0&&S<0||Z>=R&&S>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(G)};B=requestAnimationFrame(G)};if($.addEventListener("touchstart",w,{passive:!0}),$.addEventListener("touchmove",g,{passive:!1}),$.addEventListener("touchend",l,{passive:!0}),$.addEventListener("touchcancel",l,{passive:!0}),U.destroyHandlers.push(()=>{if($.removeEventListener("wheel",V),$.removeEventListener("touchstart",w),$.removeEventListener("touchmove",g),$.removeEventListener("touchend",l),$.removeEventListener("touchcancel",l),I(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${b}-scrollbar`)){if(J=h0(W.viewport,(i)=>U.scrollController.scrollTo(i),{},b,y),!W.viewport.classList.contains(`${b}-viewport--custom-scrollbar`))W.viewport.classList.add(`${b}-viewport--custom-scrollbar`);J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);let d=J;U.afterScroll.push((i,h)=>{if(d)d.updatePosition(i),d.show()}),U.resizeHandlers.push((i,h)=>{if(d){let H=U.getCachedCompression();d.updateBounds(H.virtualSize,U.state.viewportState.containerSize)}})}}else if(!M.isCompressed&&q)q=!1,U.scrollController.disableCompression(),U.updateContentSize(M.actualSize);else if(M.isCompressed)U.scrollController.updateConfig({compression:M}),U.updateContentSize(M.virtualSize);if(J)J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);U.state.cachedCompression={state:M,totalItems:A}};U.updateCompressionMode=E;let v=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return v()},U.setVisibleRangeFn((A,M,L,$,V)=>{_=null,O=null;let I=w0($,L);i2(A,M,L,$,I,V)}),U.setScrollToPosFn((A,M,L,$,V)=>{let I=w0($,M);return t2(A,M,L,$,I,V)});let _=null,O=null;U.setPositionElementFn((A,M)=>{let L=U.getVirtualTotal(),$=w0(L,U.sizeCache);if($.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||M<O)O=M,_=Math.round(l0(M,V,U.sizeCache,L,U.state.viewportState.containerSize,$));let I=_+U.sizeCache.getOffset(M)-U.sizeCache.getOffset(O),w=U.config.horizontal;A.style.transform=w?`translateX(${I}px)`:`translateY(${I}px)`}else{let V=Math.round(U.sizeCache.getOffset(M)),I=U.config.horizontal;A.style.transform=I?`translateX(${V}px)`:`translateY(${V}px)`}}),E(),U.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(B!==null)cancelAnimationFrame(B),B=null}}};var QJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:Y}=J,Q=new Map,K=0,B=0,N=(H)=>{let S=Q.get(H);if(!S)S={items:Array(X),count:0,lastAccess:Date.now()},Q.set(H,S);else S.lastAccess=Date.now();return S},U=(H)=>{return Math.floor(H/X)},W=(H)=>{return H%X},P=()=>K,b=(H)=>{K=H},y=(H)=>{if(H<0||H>=K)return;let S=U(H),G=Q.get(S);if(!G)return;return G.items[W(H)]},E=(H)=>{if(H<0||H>=K)return!1;let S=U(H),G=Q.get(S);if(!G)return!1;return G.items[W(H)]!==void 0},v=(H,S)=>{let G=U(H),T=N(G),R=W(H),Z=T.items[R]===void 0;if(T.items[R]=S,Z)T.count++,B++;if(H>=K)K=H+1},_=(H,S)=>{for(let G=0;G<S.length;G++){let T=S[G];if(T!==void 0)v(H+G,T)}},O=(H)=>{if(H<0||H>=K)return!1;let S=U(H),G=Q.get(S);if(!G)return!1;let T=W(H);if(G.items[T]===void 0)return!1;if(G.items[T]=void 0,G.count--,B--,G.count===0)Q.delete(S);return!0},A=(H,S)=>{let G=[];for(let T=H;T<=S&&T<K;T++)G.push(y(T));return G},M=(H,S)=>{for(let G=H;G<=S&&G<K;G++)if(!E(G))return!1;return!0},L=()=>{let H=[],S=null,G=Array.from(Q.keys()).sort((T,R)=>T-R);for(let T of G){let R=Q.get(T);if(!R)continue;let Z=T*X;for(let C=0;C<X;C++){let a=Z+C;if(a>=K)break;if(R.items[C]!==void 0)if(S===null)S={start:a,end:a};else if(a===S.end+1)S.end=a;else H.push(S),S={start:a,end:a};else if(S!==null)H.push(S),S=null}}if(S!==null)H.push(S);return H},$=(H,S)=>{let G=[],T=null;for(let R=H;R<=S&&R<K;R++)if(!E(R))if(T===null)T={start:R,end:R};else T.end=R;else if(T!==null)G.push(T),T=null;if(T!==null)G.push(T);return G},V=(H)=>{return Q.has(H)},I=(H)=>{let S=Q.get(H);if(S)S.lastAccess=Date.now()},w=(H,S)=>{if(H>S||Q.size===0)return;let G=Date.now(),T=U(Math.max(0,H)),R=U(Math.min(K-1,S));for(let Z=T;Z<=R;Z++){let C=Q.get(Z);if(C)C.lastAccess=G}},g=(H,S)=>{if(B<=q)return 0;let G=Math.max(0,H-j),T=Math.min(K-1,S+j),R=U(G),Z=U(T),C=0,a=[];for(let[r,D]of Q)if(r<R||r>Z)C+=D.count,a.push(r),B-=D.count,Q.delete(r);if(C>0&&Y)Y(C,a);return C},l=()=>{if(B<=q)return 0;let H=Array.from(Q.entries()).sort(([,T],[,R])=>T.lastAccess-R.lastAccess),S=0,G=[];for(let[T,R]of H){if(B<=q)break;S+=R.count,B-=R.count,G.push(T),Q.delete(T)}if(S>0&&Y)Y(S,G);return S},z=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},d=()=>B,i=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:P,setTotal:b,get:y,has:E,set:v,setRange:_,delete:O,getRange:A,isRangeLoaded:M,getLoadedRanges:L,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:V,touchChunk:I,touchChunksForRange:w,evictDistant:g,evictToLimit:l,getStats:z,getCachedCount:d,clear:i,reset:()=>{i(),K=0}}},Q1=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],Q=q[q.length-1];if(Y.start<=Q.end+1)Q.end=Math.max(Q.end,Y.end);else q.push({...Y})}return q},jJ=(J,X,q)=>{let j=Math.floor(J.start/q)*q,Y=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:Y};if(X.length===0)return[Q];let K=[],B=Q1(X),N=Q.start;for(let U of B){if(U.end<N)continue;if(U.start>Q.end)break;if(U.start>N)K.push({start:N,end:Math.min(U.start-1,Q.end)});if(N=U.end+1,N>Q.end)break}if(N<=Q.end)K.push({start:N,end:Q.end});return K};var qJ=(J={})=>{let{maskCharacter:X=a2,maxSampleSize:q=s2}=J,j=[],Y=!1,Q=0,K=(P)=>{if(Y||P.length===0)return;let b=Math.min(P.length,q);for(let y=0;y<b;y++){let E=P[y];if(!E||typeof E!=="object")continue;let v={};for(let[_,O]of Object.entries(E)){if(_.startsWith("_")||_==="id")continue;v[_]=String(O??"").length}if(Object.keys(v).length>0)j.push(v)}Y=!0},B=()=>Y,N=(P)=>{let b={id:`${o2}${Q++}`,[j2]:!0,_index:P};if(j.length===0)return b.label=X.repeat(12),b;let y=j[P%j.length];for(let[E,v]of Object.entries(y))b[E]=X.repeat(Math.max(1,v));return b};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(P,b)=>{let y=[];for(let E=P;E<=b;E++)y.push(N(E));return y},clear:()=>{j=[],Y=!1,Q=0}}},r0=(J)=>{if(!J||typeof J!=="object")return!1;return J[j2]===!0};var j1=50,XJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=j1,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=QJ({...Y,onEvict:(m,o)=>{U?.(m),$()}}),P=null,b=()=>{if(!P)P=qJ(Q);return P},y=new Map,E=!1,v,_=!0,O,A=[],M=0,L=new Map,$=()=>{B?.(h())},V=()=>{y.clear();let m=W.getLoadedRanges();for(let o of m)for(let n=o.start;n<=o.end;n++){let q0=W.get(n);if(q0&&!r0(q0))y.set(q0.id,n)}},I=(m,o)=>{if(!r0(o))y.set(o.id,m)},w=(m)=>{y.delete(m)},g=(m,o)=>{return`${m}-${o}`},l=()=>W.getTotal(),z=()=>W.getCachedCount(),d=()=>E,i=()=>_,h=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:E,pendingRanges:A,error:v,hasMore:_,cursor:O}),H=()=>W,S=()=>b(),G=(m)=>{let o=W.get(m);if(o!==void 0)return o;if(m>=0&&m<W.getTotal())return b().generate(m);return},T=(m)=>{let o=y.get(m);if(o===void 0)return;return W.get(o)},R=(m)=>{return y.get(m)??-1},Z=(m)=>{let o=W.get(m);return o!==void 0&&!r0(o)},C=(m,o)=>{let n=[],q0=W.getTotal(),e=0,X0=0;W.touchChunksForRange(m,Math.min(o,q0-1));for(let B0=m;B0<=o&&B0<q0;B0++){let _0=W.get(B0);if(_0!==void 0)n.push(_0),e++;else n.push(b().generate(B0)),X0++}return n},a=(m)=>{W.setTotal(m),_=W.getCachedCount()<m,$()},r=(m,o=0,n)=>{if(X&&m.length>0){let q0=b();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(m)}for(let q0=0;q0<m.length;q0++){let e=m[q0];if(e!==void 0){let X0=o+q0;W.set(X0,e),I(X0,e)}}if(n!==void 0)W.setTotal(n);else if(o+m.length>W.getTotal())W.setTotal(o+m.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)_=!1;$(),N?.(m,o,W.getTotal())},D=(m,o)=>{let n=y.get(m);if(n===void 0)return!1;let q0=W.get(n);if(!q0)return!1;let e={...q0,...o};if(W.set(n,e),o.id!==void 0&&o.id!==m)w(m),I(n,e);return $(),!0},k=(m)=>{let o=y.get(m);if(o===void 0)return!1;W.delete(o),w(m);let n=W.getTotal();if(n>0)W.setTotal(n-1);return $(),!0},x=async(m,o)=>{if(!X)return;let n=g(m,o);if(L.has(n))return;let q0=W.getLoadedRanges(),e=jJ({start:m,end:o},q0,W.chunkSize);if(e.length===0)return;let X0=W.chunkSize,B0=[];for(let Y0 of e){let G0=Math.floor(Y0.start/X0),D0=Math.floor(Y0.end/X0);for(let U0=G0;U0<=D0;U0++){let A0=U0*X0,W0=A0+X0-1,L0=g(A0,W0);if(!B0.some((v0)=>v0.start===A0)&&!L.has(L0))B0.push({start:A0,end:W0})}}let _0=[];for(let Y0 of e){let G0=Math.floor(Y0.start/X0),D0=Math.floor(Y0.end/X0);for(let U0=G0;U0<=D0;U0++){let A0=U0*X0,W0=A0+X0-1,L0=g(A0,W0);if(L.has(L0)){let v0=L.get(L0);if(!_0.includes(v0))_0.push(v0)}}}for(let Y0 of B0){let G0=g(Y0.start,Y0.end),D0=(async()=>{A.push(Y0),E=!0,v=void 0,$();try{let U0=Y0.end-Y0.start+1,A0={offset:Y0.start,limit:U0,cursor:void 0},W0=await X.read(A0);if(r(W0.items,Y0.start,W0.total),W0.cursor)O=W0.cursor;let L0=Y0.start+W0.items.length;if(L0>=M){if(M=L0,W0.hasMore!==void 0)_=W0.hasMore;else if(W0.total!==void 0)_=L0<W0.total}}catch(U0){v=U0 instanceof Error?U0:Error(String(U0))}finally{L.delete(G0),A=A.filter((U0)=>U0.start!==Y0.start||U0.end!==Y0.end),E=L.size>0,$()}})();L.set(G0,D0),_0.push(D0)}await Promise.all(_0)},F=async(m,o)=>{if(W.isRangeLoaded(m,o))return;await x(m,o)},f=async()=>{if(!X)return;await x(0,K-1)},p=async()=>{if(!X||E||!_)return!1;let m=W.getCachedCount(),o=W.getTotal(),n=m,q0=Math.min(n+K-1,o>0?o-1:n+K-1);if(n>=o&&o>0)return _=!1,!1;return await x(n,q0),W.getCachedCount()>m},t=async()=>{if(W.clear(),W.setTotal(0),y.clear(),P)P.clear();L.clear(),A=[],E=!1,O=void 0,_=!0,M=0,v=void 0,$()},u=(m,o)=>{if(W.evictDistant(m,o)>0)V()},s=()=>{W.clear(),y.clear(),O=void 0,v=void 0,A=[],E=!1,$()},j0=()=>{if(W.reset(),y.clear(),P)P.clear();O=void 0,_=!0,M=0,v=void 0,A=[],E=!1,$()};if(q&&q.length>0)r(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:h,getTotal:l,getCached:z,getIsLoading:d,getHasMore:i,getStorage:H,getPlaceholders:S,getItem:G,getItemById:T,getIndexById:R,isItemLoaded:Z,getItemsInRange:C,setTotal:a,setItems:r,updateItem:D,removeItem:k,loadRange:x,ensureRange:F,loadInitial:f,loadMore:p,reload:t,evictDistant:u,clear:s,reset:j0}};var YJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??c2,B=q?.preloadThreshold??l2,N=q?.preloadAhead??d2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,P=U.config.reverse,b=XJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let w=U.getVirtualTotal();U.sizeCache.rebuild(w),U.updateCompressionMode();let g=U.getCachedCompression();U.state.viewportState.totalSize=g.virtualSize,U.state.viewportState.actualSize=g.actualSize,U.state.viewportState.isCompressed=g.isCompressed,U.state.viewportState.compressionRatio=g.ratio,U.updateContentSize(g.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(w,g,l)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:w,total:l,offset:g})}});U.replaceDataManager(b);let y=null,E=null,v=0,_=!1,O=null,A=120,M=(w=!1)=>{if(_=!1,E=null,w)y=null;if(O!==null)clearTimeout(O),O=null},L=()=>{if(E){let w=E;E=null,U.dataManager.ensureRange(w.start,w.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})}};U.afterScroll.push((w,g)=>{if(U.state.isDestroyed)return;let l=U.scrollController.getVelocity(),d=U.scrollController.isTracking()&&l<=K;if(v>K&&l<=K)_=!0;else if(_&&l>K)M();if(_&&l<0.5)M(!0);if(v=l,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(_||E))M(!0),d=!0;let h=_&&l>0.5;if(d&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(P){if(w<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((G)=>{W.emit("error",{error:G,context:"loadMore"})})}else if(U.state.viewportState.totalSize-w-U.state.viewportState.containerSize<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((T)=>{W.emit("error",{error:T,context:"loadMore"})})}let{renderRange:H}=U.state.viewportState;if(!y||H.start!==y.start||H.end!==y.end){if(y={start:H.start,end:H.end},d&&!h){if(E=null,O!==null)clearTimeout(O),O=null;let{start:G,end:T}=H,R=U.getVirtualTotal();if(l>B)if(g==="down")T=Math.min(H.end+N,R-1);else G=Math.max(H.start-N,0);U.dataManager.ensureRange(G,T).catch((Z)=>{W.emit("error",{error:Z,context:"ensureRange"})})}else if(E={start:H.start,end:H.end},h){if(O!==null)clearTimeout(O);O=setTimeout(()=>{O=null,L(),M()},A)}}});let $=200,V=null;U.afterScroll.push((w,g)=>{if(V!==null)clearTimeout(V);V=setTimeout(()=>{V=null,L(),M()},$)}),U.destroyHandlers.push(()=>{if(V!==null)clearTimeout(V),V=null;M()});let I=()=>{if(U.state.isDestroyed)return;y=null;let{renderRange:w}=U.state.viewportState;if(w.end>0)U.dataManager.ensureRange(w.start,w.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})});L()};if(window.addEventListener("online",I),U.destroyHandlers.push(()=>{window.removeEventListener("online",I)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{y=null,E=null,U.forceRender();let{renderRange:w}=U.state.viewportState;if(w.end>0)W.emit("load:start",{offset:w.start,limit:w.end-w.start+1}),await U.dataManager.ensureRange(w.start,w.end)}),U.methods.set("reload",async()=>{y=null,E=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:w}=U.state.viewportState;if(w.end>0)await U.dataManager.ensureRange(w.start,w.end)}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((w)=>{W.emit("error",{error:w,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var UJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:q,state:j,config:Y,emitter:Q}=X;if(q.root.style.overflow="visible",q.root.style.height="auto",Y.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.disableWheelHandler(),X.setScrollTarget(window),X.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(Y.horizontal){let P=W.left+window.scrollX;window.scrollTo(P+U,window.scrollY)}else{let P=W.top+window.scrollY;window.scrollTo(window.scrollX,P+U)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,N=()=>{let{innerWidth:U,innerHeight:W}=window,P=Y.horizontal?U:W,b=Y.horizontal?B:K;if(Math.abs(P-b)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let y=0;y<X.resizeHandlers.length;y++)X.resizeHandlers[y](U,W);X.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),J=()=>{window.removeEventListener("resize",N)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)q=Y;else j=Y-1}return q},KJ=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].firstDataIndex<=X)q=Y;else j=Y-1}return q},BJ=(J,X)=>{if(J===0)return[];let q=[],j=X(0),Y=0,Q=0;for(let K=1;K<J;K++){let B=X(K);if(B!==j){let N=K-Y;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:N}),Q=Q+1+N,j=B,Y=K}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:J-Y}),q},Y2=(J,X)=>{if(J.length===0||X.length===0)return[];let q=J.length+X.length,j=Array(q),Y=0;for(let Q of X){j[Y]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},Y++;for(let K=0;K<Q.count;K++)j[Y]=J[Q.firstDataIndex+K],Y++}return j},U2=(J,X)=>{let q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return q(Y.dataIndex)}},ZJ=(J,X)=>{let q=BJ(J,X.getGroupForIndex),j=J+q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(b)=>{if(q.length===0)return{type:"item",dataIndex:b,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=X2(q,b),E=q[y];if(b===E.headerLayoutIndex)return{type:"header",group:E};let v=b-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+v,group:E}},layoutToDataIndex:(b)=>{if(q.length===0)return b;let y=X2(q,b),E=q[y];if(b===E.headerLayoutIndex)return-1;let v=b-E.headerLayoutIndex-1;return E.firstDataIndex+v},dataToLayoutIndex:(b)=>{if(q.length===0)return b;let y=KJ(q,b),E=q[y],v=b-E.firstDataIndex;return E.headerLayoutIndex+1+v},getGroupAtLayoutIndex:(b)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=X2(q,b);return q[y]},getGroupAtDataIndex:(b)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=KJ(q,b);return q[y]},getHeaderHeight:typeof Y==="number"?(b)=>Y:(b)=>{let y=q[b];if(!y)return 0;return Y(y.key,b)},rebuild:(b)=>{q=BJ(b,X.getGroupForIndex),j=b+q.length}}};var NJ=(J,X,q,j,Y,Q=!1,K=0)=>{let B=document.createElement("div");if(B.className=`${Y}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",Q)B.style.top="0",B.style.bottom="0",B.style.left=K?`${K}px`:"0";else B.style.top=K?`${K}px`:"0",B.style.left="0",B.style.right="0";J.insertBefore(B,J.firstChild);let N=-1,U=!1,W=0,P=(O)=>{if(O===N)return;N=O;let A=X.groups;if(O<0||O>=A.length){B.textContent="";return}let M=A[O],L=j.headerTemplate(M.key,M.groupIndex),$=X.getHeaderHeight(O);if(Q)B.style.width=`${$}px`;else B.style.height=`${$}px`;if(typeof L==="string")B.innerHTML=L;else B.replaceChildren(L)},b=(O)=>{let A=X.groups;if(A.length===0){E();return}let M=q.getOffset(A[0].headerLayoutIndex);if(O<M){E();return}let L=0,$=A.length-1;while(L<$){let l=L+$+1>>>1;if(q.getOffset(A[l].headerLayoutIndex)<=O)L=l;else $=l-1}let V=L;if(!U)y();P(V);let I=X.getHeaderHeight(V),w=0,g=V+1;if(g<A.length){let z=q.getOffset(A[g].headerLayoutIndex)-O;if(z<I)w=z-I}if(w!==W)if(W=w,w===0)B.style.transform="";else{let l=Math.round(w);B.style.transform=Q?`translateX(${l}px)`:`translateY(${l}px)`}},y=()=>{if(U)return;U=!0,B.style.display=""},E=()=>{if(!U)return;U=!1,B.style.display="none",N=-1,W=0,B.style.transform=""},v=()=>{let O=N;if(N=-1,O>=0)P(O)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:b,refresh:v,show:y,hide:E,destroy:_}};var _J=(J,X,q,j,Y,Q)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U-q),P;switch(Q){case"center":P=B-q/2+N/2;break;case"end":P=B-q+N;break;case"start":default:P=B;break}return Math.max(0,Math.min(P,W))};var y0=(J,X,q,j,Y="start",Q,K=_J)=>{return K(J,X,q,j,Q,Y)};var VJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(Q){let{dom:K,config:B,rawConfig:N}=Q,{classPrefix:U}=B,P=N.item.height;j=N.items?[...N.items]:[];let b=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=ZJ(b,y),Y=Y2(j,X.groups);let E=U2(X,P);Q.setSizeConfig(E),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let v=N.item.template,{headerTemplate:_}=J,O=(h,H,S)=>{if(R0(h))return _(h.groupKey,h.groupIndex);return v(h,H,S)},A=Q.methods.get("_getGridLayout"),M=Q.methods.get("_replaceGridRenderer"),L=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),I=Q.methods.get("_getTableHeaderHeight");if(A&&M){if(L)L((G)=>{let T=Y[G];return!!(T&&R0(T))});let{createGridRenderer:h}=(B2(),dJ(WJ)),H=A(),S=h(K.items,O,Q.sizeCache,H,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);M(S)}else if($&&V)V((h)=>R0(h),J.headerTemplate);else Q.replaceTemplate(O);let w=I?I():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=NJ(K.root,X,Q.sizeCache,{...y,sticky:y.sticky??!1},U,B.horizontal,w);let h=q;Q.afterScroll.push((H,S)=>{h.update(H)}),q.update(Q.scrollController.getScrollTop())}let g=N.item?.striped,l=()=>{if(g!=="data"&&g!=="even"&&g!=="odd")return;let h=new Int32Array(Y.length),H=g==="odd"?1:0,S=0;for(let G=0;G<Y.length;G++)if(R0(Y[G])){if(h[G]=-1,g==="even"||g==="odd")S=0}else h[G]=S+++H;Q.setStripeIndexFn((G)=>{if(G<0||G>=h.length)return G;return h[G]})};l();let z=()=>{if(!X)return;X.rebuild(j.length),Y=Y2(j,X.groups);let h=U2(X,P);if(Q.setSizeConfig(h),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),l(),q)q.refresh()};Q.methods.set("setItems",(h)=>{j=h.slice(),z()}),Q.methods.set("appendItems",(h)=>{j.push(...h),z()}),Q.methods.set("prependItems",(h)=>{j.unshift(...h),z()}),Q.methods.set("removeItem",(h)=>{j=j.filter((H)=>H.id!==h),z()});let{animateScroll:d,cancelScroll:i}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(h,H)=>{let S=X.dataToLayoutIndex(h),{align:G,behavior:T,duration:R}=H0(H),Z=Q.dataManager.getTotal(),C=Q.adjustScrollPosition(y0(S,Q.sizeCache,Q.state.viewportState.containerSize,Z,G,Q.getCachedCompression()));if(T==="smooth")d(Q.scrollController.getScrollTop(),C,R);else i(),Q.scrollController.scrollTo(C)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(i(),q)q.destroy(),q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var DJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},Q=(E)=>{if(E<=0)return 0;if(!j)return Math.ceil(E/X);let v=0,_=0,O=0;for(let A=0;A<E;A++)if(j(A)){if(O++,_>0)v++,_=0;v++,_=0}else if(_++,_>=X)v++,_=0;if(_>0)v++;return v},K=(E)=>{return Y.row=B(E),Y.col=N(E),Y},B=(E)=>{if(!j)return Math.floor(E/X);let v=0,_=0;for(let O=0;O<=E;O++)if(j(O)){if(_>0)v++,_=0;if(O===E)return v;v++,_=0}else{if(O===E)return v;if(_++,_>=X)v++,_=0}return console.warn(`⚠️ getRow(${E}) fell through - returning ${v}`),v},N=(E)=>{if(!j)return E%X;if(j(E))return 0;let v=0;for(let _=0;_<=E;_++)if(j(_))v=0;else{if(_===E)return v;if(v++,v>=X)v=0}return v},U=(E,v,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,E*X),V=Math.min(_-1,(v+1)*X-1);return{start:$,end:V}}let O=-1,A=-1,M=0,L=0;for(let $=0;$<_;$++){if(j($)){if(L>0)M++,L=0;if(M>=E&&M<=v){if(O===-1)O=$;A=$}M++,L=0}else{if(M>=E&&M<=v){if(O===-1)O=$;A=$}if(L++,L>=X)M++,L=0}if(M>v&&L===0)break}if(O===-1)return{start:0,end:-1};return{start:O,end:A}},W=(E,v,_)=>{if(v<0||v>=X)return-1;let O=E*X+v;if(O<0||O>=_)return-1;return O},P=(E)=>{let v=(X-1)*q;return Math.max(0,(E-v)/X)};return{get columns(){return X},get gap(){return q},update:(E)=>{if(E.columns!==void 0)X=Math.max(1,Math.floor(E.columns));if(E.gap!==void 0)q=E.gap;if(E.isHeaderFn!==void 0)j=E.isHeaderFn},getTotalRows:Q,getPosition:K,getRow:B,getCol:N,getItemRange:U,getItemIndex:W,getColumnWidth:P,getColumnOffset:(E,v)=>{let _=P(v);return E*(_+q)}}};B2();var Y1=new Set,GJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:Q,config:K,rawConfig:B}=j,{classPrefix:N}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,W=C0(b0(B.padding),U),P=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},b=B.items?.some((C)=>C.__groupHeader===!0),y={columns:J.columns,gap:J.gap??0};if(b)y.isHeaderFn=(C)=>{let a=j.dataManager.getItem(C);return!!(a&&a.__groupHeader===!0)};X=DJ(y);let E=X.gap;j.setVirtualTotalFn(()=>{let C=j.dataManager.getTotal();return X.getTotalRows(C)});let v=B.item,_=K.horizontal?v.width:v.height,O={containerWidth:P(),columns:X.columns,gap:X.gap},A={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof _==="function")j.setSizeConfig((C)=>{let a=O.containerWidth-2,r=(O.columns-1)*O.gap;return A.containerWidth=O.containerWidth,A.columns=O.columns,A.gap=O.gap,A.columnWidth=(a-r)/O.columns,A.row=X.getRow(C),A.column=X.getCol(C),A.totalRows=X.getTotalRows(j.dataManager.getTotal()),A.totalColumns=O.columns,_(C,A)+O.gap});else if(E>0)j.setSizeConfig(_+E);if(j.rebuildSizeCache(),E>0){let C=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=C();return a>0?a-O.gap:0}}Y.root.classList.add(`${N}--grid`);let M=P(),L=B.item.template,$=()=>{q=K2(Y.items,L,j.sizeCache,X,N,M,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>y),j.methods.set("_replaceGridRenderer",(C)=>{q=C}),j.methods.set("_updateGridLayoutForGroups",(C)=>{X.update({isHeaderFn:C});let a=j.dataManager.getTotal(),r=0;for(let D=0;D<a;D++)if(X.getCol(D)===0){let k=j.sizeCache.getSize(D);r+=k}j.sizeCache.getTotalSize=()=>r,j.updateContentSize(r),$()}),j.methods.set("updateGrid",(C)=>{if(C.columns!==void 0){if(!Number.isInteger(C.columns)||C.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");y.columns=C.columns}if(C.gap!==void 0){if(C.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");y.gap=C.gap}if(X)X.update(y);let a=P();if(O.containerWidth=a,O.columns=y.columns,O.gap=y.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let r=0;r<j.contentSizeHandlers.length;r++)j.contentSizeHandlers[r]();if(q)q.clear();j.forceRender()});let V=null,I=null,w=!1,g=()=>{if(w)return;w=!0,V=j.methods.get("_getSelectedIds")??null,I=j.methods.get("_getFocusedIndex")??null},l=-1,z=-1,d=!0,i=K.overscan,h={start:0,end:0},H={start:0,end:0},S=()=>{if(j.state.isDestroyed)return;let C=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!d&&C===l&&a===z)return;l=C,z=a,d=!1;let r=j.getVirtualTotal();if(r===0||a===0)h.start=0,h.end=0;else h.start=Math.max(0,j.sizeCache.indexAtOffset(C)),h.end=Math.min(r-1,Math.max(0,j.sizeCache.indexAtOffset(C+a-1)));H.start=Math.max(0,h.start-i),H.end=Math.min(r-1,h.end+i);let D=j.state.viewportState;D.scrollPosition=C,D.visibleRange.start=h.start,D.visibleRange.end=h.end,D.renderRange.start=H.start,D.renderRange.end=H.end;let k=j.state.lastRenderRange,x=D.isCompressed,F=j.dataManager.getTotal(),f=X.getItemRange(H.start,H.end,F),p=j.dataManager.getItemsInRange(f.start,f.end),t=x?j.getCompressionContext():void 0;g();let u=V?V():Y1,s=I?I():-1;if(q.render(p,f,u,s,t),k.start!==H.start||k.end!==H.end)k.start=H.start,k.end=H.end,Q.emit("range:change",{range:{start:H.start,end:H.end}})},G=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,d=!0,S()};j.setRenderFns(S,G);let T=typeof _==="function";j.resizeHandlers.push((C,a)=>{let r=(U?a:C)-W;if(O.containerWidth=r,q)q.updateContainerWidth(r);if(T){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let D=0;D<j.contentSizeHandlers.length;D++)j.contentSizeHandlers[D]();if(q)q.clear();j.forceRender()}});let{animateScroll:R,cancelScroll:Z}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(C,a)=>{let r=Math.floor(C/J.columns),{align:D,behavior:k,duration:x}=H0(a),F=j.dataManager.getState(),f=X.getTotalRows(F.total),p=Math.max(0,Math.min(r,f-1)),t=j.adjustScrollPosition(y0(p,j.sizeCache,j.state.viewportState.containerSize,f,D,j.getCachedCompression()));if(k==="smooth")R(j.scrollController.getScrollTop(),t,x);else Z(),j.scrollController.scrollTo(t)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(Z(),q)q.destroy(),q=null;Y.root.classList.remove(`${N}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var MJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,Y=0,Q=[],K=()=>{let _=(X-1)*q;Y=Math.max(0,(j-_)/X),Q=Array(X);let O=Y+q;for(let A=0;A<X;A++)Q[A]=A*O};K();let B=[],N=0,U=[],W=(_)=>{let O=0,A=_[0];for(let M=1;M<_.length;M++){let L=_[M];if(L<A)A=L,O=M}return O},P=(_,O)=>{if(_<=0)return N=0,B=[],[];let A=Array(X).fill(0),M=Array(X);for(let V=0;V<X;V++)M[V]=[];let L=Array(_);for(let V=0;V<_;V++){let I=W(A),w=O(V),g=A[I];L[V]={index:V,x:Q[I],y:g,lane:I,size:w,crossSize:Y},M[I].push(V),A[I]=g+w+q}B=M;let $=0;for(let V=0;V<X;V++){let I=A[V],w=I>0?I-q:0;if(w>$)$=w}return N=$,L},b=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let O=Array(X).fill(0);for(let M of _){let L=M.y+M.size,$=O[M.lane];if(L>$)O[M.lane]=L}let A=0;for(let M=0;M<X;M++)if(O[M]>A)A=O[M];return A},y=(_,O,A)=>{if(_.length===0||A<=O)return U.length=0,U;if(B.length===0||B.length!==X)return E(_,O,A);U.length=0;for(let M=0;M<X;M++){let L=B[M],$=L.length;if($===0)continue;let V=0,I=$;while(V<I){let w=V+I>>>1,g=_[L[w]];if(g.y+g.size<=O)V=w+1;else I=w}for(let w=V;w<$;w++){let g=_[L[w]];if(g.y>=A)break;U.push(g)}}return U},E=(_,O,A)=>{let M=[];for(let L of _)if(L.y+L.size>O&&L.y<A)M.push(L);return M};return{get columns(){return X},get gap(){return q},get containerSize(){return j},update:(_)=>{let O=!1;if(_.columns!==void 0){let A=Math.max(1,Math.floor(_.columns));if(A!==X)X=A,O=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,O=!0;if(_.containerSize!==void 0&&_.containerSize!==j)j=_.containerSize,O=!0;if(O)K()},calculateLayout:P,getTotalSize:b,getVisibleItems:y}};var U1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),X.push(Q)},clear:()=>{X.length=0}}},K1=1,OJ=(J,X,q,j=!1,Y,Q)=>{let K=U1(),B=new Map,N=new Set,U=0,W="",P=-1,b={selected:!1,focused:!1},y=(l,z)=>{return b.selected=l,b.focused=z,b},E=`${q}-item ${q}-masonry-item`,v=`${q}-item--selected`,_=`${q}-item--focused`,O=(l,z)=>{if(typeof z==="string")l.innerHTML=z;else l.replaceChildren(z)},A=(l,z,d)=>{l.classList.toggle(v,z),l.classList.toggle(_,d)},M=(l,z)=>{if(j)l.style.transform=`translate(${Math.round(z.y)}px, ${Math.round(z.x)}px)`;else l.style.transform=`translate(${Math.round(z.x)}px, ${Math.round(z.y)}px)`},L=(l,z)=>{if(j)l.style.width=`${z.size}px`,l.style.height=`${z.crossSize}px`;else l.style.width=`${z.crossSize}px`,l.style.height=`${z.size}px`},$=(l,z,d,i,h)=>{let H=K.acquire(),S=y(i,h);if(H.className=E,H.dataset.index=String(l),H.dataset.id=String(z.id),H.dataset.lane=String(d.lane),H.ariaSelected=String(i),Q)H.id=`${Q}-item-${l}`;if(Y){let T=Y();if(T!==P)P=T,W=String(T);H.setAttribute("aria-setsize",W),H.setAttribute("aria-posinset",String(l+1))}L(H,d);let G=X(z,l,S);return O(H,G),A(H,i,h),M(H,d),{element:H,lastItemId:z.id,lastSelected:i,lastFocused:h,lastY:d.y,lastX:d.x,lastSize:d.size,lastCrossSize:d.crossSize,lastSeenFrame:U}},V=(l,z,d,i)=>{U++,N.clear();for(let H=0;H<z.length;H++)N.add(z[H].index);for(let[H,S]of B)if(N.has(H))S.lastSeenFrame=U;else if(U-S.lastSeenFrame>K1)K.release(S.element),B.delete(H);let h=null;for(let H=0;H<z.length;H++){let S=z[H],G=S.index,T=l(G);if(!T)continue;let R=d.has(T.id),Z=G===i,C=B.get(G);if(C){let a=C.lastItemId!==T.id,r=C.lastSelected!==R,D=C.lastFocused!==Z,k=C.lastY!==S.y||C.lastX!==S.x,x=C.lastSize!==S.size||C.lastCrossSize!==S.crossSize;if(a||r||D){let F=y(R,Z),f=X(T,G,F);O(C.element,f),A(C.element,R,Z),C.element.dataset.id=String(T.id),C.element.ariaSelected=String(R),C.lastItemId=T.id,C.lastSelected=R,C.lastFocused=Z}if(x)L(C.element,S),C.lastSize=S.size,C.lastCrossSize=S.crossSize;if(k)M(C.element,S),C.lastY=S.y,C.lastX=S.x}else{let a=$(G,T,S,R,Z);if(!h)h=document.createDocumentFragment();h.appendChild(a.element),B.set(G,a)}}if(h)J.appendChild(h)},I=()=>{for(let{element:l}of B.values())K.release(l);B.clear(),J.innerHTML=""};return{render:V,getElement:(l)=>B.get(l)?.element,sortDOM:()=>{S0(J,B.keys(),(l)=>B.get(l)?.element)},clear:I,destroy:()=>{I(),K.clear()}}};var B1=new Set,Z1=100,EJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let X=null,q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:Q,emitter:K,config:B,rawConfig:N}=Y,U=B.classPrefix,W=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let P=b0(N.padding),b=C0(P,W),y=c0(P,W),E=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-b},v={columns:J.columns,gap:J.gap??0,containerSize:E()};X=MJ(v);let _=N.item,O=W&&N.item.width?N.item.width:_.height,A={containerWidth:0,columns:0,gap:0,columnWidth:0},M=typeof O==="function"?(r)=>O(r,A):()=>O,L=()=>{let r=Y.dataManager.getTotal(),D=X;A.containerWidth=D.containerSize,A.columns=D.columns,A.gap=D.gap;let k=(D.columns-1)*D.gap;A.columnWidth=Math.max(0,(A.containerWidth-k)/D.columns),j=D.calculateLayout(r,M);let x=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>x,Y.updateContentSize(x)},$=N.item.template;q=OJ(Q.items,$,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,I=null,w=!1,g=()=>{if(w)return;w=!0,V=Y.methods.get("_getSelectedIds")??null,I=Y.methods.get("_getFocusedIndex")??null},l=(r)=>Y.dataManager.getItem(r),z=-1,d=-1,i=!0,h=B.overscan*Z1,H=()=>{if(Y.state.isDestroyed)return;g();let r=Y.scrollController.getScrollTop(),D=Y.state.viewportState.containerSize;if(!i&&r===z&&D===d)return;z=r,d=D,i=!1;let k=Math.max(0,r-h),x=r+D+h,F=X.getVisibleItems(j,k,x),f=V?V():B1,p=I?I():-1;if(q&&F.length>0)q.render(l,F,f,p);let t=Y.state.viewportState;t.scrollPosition=r;let u=F.length,s=u>0?F[0].index:0,j0=u>0?F[u-1].index:0;t.visibleRange.start=s,t.visibleRange.end=j0,t.renderRange.start=s,t.renderRange.end=j0;let m=Y.state.lastRenderRange;if(m.start!==s||m.end!==j0)m.start=s,m.end=j0,K.emit("range:change",{range:{start:s,end:j0}})},S=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,i=!0,H()};Y.setRenderFns(H,S);let G=(r,D)=>{let k=(W?D:r)-b;if(X&&X.containerSize!==k){if(X.update({containerSize:k}),L(),q)q.clear();S()}};Y.resizeHandlers.push(G);let T=()=>{L(),S()},R=Y.dataManager,Z=(r)=>{if(typeof R[r]!=="function")return;let D=R[r].bind(R);R[r]=(...k)=>{D(...k),T()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:C,cancelScroll:a}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(r,D)=>{let k=j[r];if(!k)return;let{align:x,behavior:F,duration:f}=H0(D),p=k.y,t=Y.state.viewportState.containerSize,u=p;if(x==="center")u=p-t/2+k.size/2;else if(x==="end"){u=p-t+k.size;let s=X.getTotalSize(j);if(r===j.length-1)u=Math.max(0,s+y-t)}if(u=Math.max(0,u),u=Y.adjustScrollPosition(u),F==="smooth")C(Y.scrollController.getScrollTop(),u,f);else a(),Y.scrollController.scrollTo(u)}),L(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),Z2=(J,X,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},N2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},a0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return N2(J,[X]);else return Z2(J,[X],q)},FJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},LJ=(J)=>({...J,selected:new Set}),_2=(J,X)=>{return J.focusedIndex=X,J},TJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?X-1:0;return J.focusedIndex=j,J},kJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=q?0:X-1;return J.focusedIndex=j,J},bJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},HJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var W2=(J)=>{return Array.from(J.selected)},V2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var yJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=AJ(q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:K,emitter:B,config:N}=Q,{classPrefix:U,ariaIdPrefix:W}=N;if(X==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let P=new Map,b=()=>{P.clear();let M=Q.dataManager.getTotal(),L=Q.dataManager.getCached();if(L===0)return;if(L>=M){for(let V=0;V<M;V++){let I=Q.dataManager.getItem(V);if(I)P.set(I.id,V)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let V=$.getLoadedRanges();for(let I of V)for(let w=I.start;w<=I.end;w++){let g=Q.dataManager.getItem(w);if(g)P.set(g.id,w)}}};B.on("load:end",({items:M,offset:L})=>{if(!M||M.length===0)return;if(L!==void 0)for(let $=0;$<M.length;$++){let V=M[$];if(V&&V.id!==void 0)P.set(V.id,L+$)}else b()}),b(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=Q.getRenderFns(),E=()=>{y();let M=(L)=>{let $=P.get(L);if($===void 0)return;return Q.dataManager.getItem($)};B.emit("selection:change",{selected:W2(j),items:V2(j,M)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${U}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(K.root.getAttribute("role")==="grid"?K.root.parentElement??K.root:K.root).appendChild(Y);let _=Y;B.on("selection:change",({selected:M})=>{let L=M.length;if(L===0)_.textContent="";else if(L===1)_.textContent="1 item selected";else _.textContent=`${L} items selected`});let O=()=>{if(Q.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let M=Q.dataManager.getTotal();if(M===0)return;let L=j.focusedIndex>=0?Math.min(j.focusedIndex,M-1):0;j=_2(j,L),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${W}-item-${L}`),Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(L,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(L);if($)Q.renderer.updateItemClasses(L,j.selected.has($.id),!0)};K.root.addEventListener("focusin",O);let A=(M)=>{if(Q.state.isDestroyed)return;let L=M.relatedTarget;if(L&&K.root.contains(L))return;let $=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),$>=0){let V=Q.dataManager.getItem($);if(V)Q.renderer.updateItemClasses($,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",A),Q.clickHandlers.push((M)=>{if(Q.state.isDestroyed)return;let $=M.target.closest("[data-index]");if(!$)return;let V=parseInt($.dataset.index??"-1",10);if(V<0)return;let I=Q.dataManager.getItem(V);if(!I)return;B.emit("item:click",{item:I,index:V,event:M}),j=_2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=a0(j,I.id,X),E()}),Q.keydownHandlers.push((M)=>{if(Q.state.isDestroyed)return;let L=Q.dataManager.getTotal(),$=j.focusedIndex,V=!1,I=!1,w=j;switch(M.key){case"ArrowUp":w=TJ(j,L,N.wrap),w.focusVisible=!0,V=!0,I=!0;break;case"ArrowDown":w=kJ(j,L,N.wrap),w.focusVisible=!0,V=!0,I=!0;break;case"Home":w=bJ(j,L),w.focusVisible=!0,V=!0,I=!0;break;case"End":w=HJ(j,L),w.focusVisible=!0,V=!0,I=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let g=Q.dataManager.getItem(j.focusedIndex);if(g)w=a0(j,g.id,X),w.focusVisible=!0;V=!0}break}if(V){M.preventDefault(),j=w;let g=j.focusedIndex;if(g>=0){let l=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(g,Q.sizeCache,Q.state.viewportState.containerSize,l.total,"center",Q.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${W}-item-${g}`)}else K.root.removeAttribute("aria-activedescendant");if(I){let{selected:l}=j;if($>=0&&$!==g){let z=Q.dataManager.getItem($);if(z)Q.renderer.updateItemClasses($,l.has(z.id),!1)}if(g>=0){let z=Q.dataManager.getItem(g);if(z)Q.renderer.updateItemClasses(g,l.has(z.id),!0)}}else E()}}),Q.methods.set("select",(...M)=>{j=Z2(j,M,X),E()}),Q.methods.set("deselect",(...M)=>{j=N2(j,M),E()}),Q.methods.set("toggleSelect",(M)=>{j=a0(j,M,X),E()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let M=Q.getAllLoadedItems();j=FJ(j,M,X),b(),E()}),Q.methods.set("clearSelection",()=>{j=LJ(j),E()}),Q.methods.set("getSelected",()=>{return W2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(L)=>{let $=P.get(L);if($===void 0)return;return Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(_&&_.parentNode)_.remove();K.root.removeEventListener("focusin",O),K.root.removeEventListener("focusout",A)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var PJ=(J)=>{let X=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let Y=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),K=q.getVirtualTotal(),B=q.methods.get("getSelected"),N=B&&B().length>0?B():void 0;if(K===0){let b={index:0,offsetInItem:0,total:0};if(N)b.selectedIds=N;return b}let U,W;if(Q.isCompressed){let y=Y/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor(y),K-1)),W=(y-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let P={index:U,offsetInItem:W,total:K};if(N)P.selectedIds=N;return P});let j=(Y)=>{let{index:Q,offsetInItem:K,selectedIds:B}=Y,N=q.getVirtualTotal();if(N===0)return;if(!Number.isFinite(Q)||!Number.isFinite(K))return;if(q.sizeCache.getTotal()!==N){q.sizeCache.rebuild(N),q.updateCompressionMode();let _=q.getCachedCompression();q.updateContentSize(_.virtualSize)}let W=q.getCachedCompression(),P=Math.max(0,Math.min(Q,N-1)),b;if(W.isCompressed){let _=q.sizeCache.getSize(P),O=_>0?K/_:0;b=(P+O)/N*W.virtualSize}else b=q.sizeCache.getOffset(P)+K;let y=q.state.viewportState.containerSize,E=Math.max(0,W.virtualSize-y);if(b=Math.max(0,Math.min(b,E)),q.scrollController.scrollTo(b),B&&B.length>0){let _=q.methods.get("select");if(_)_(...B)}let v=q.methods.get("loadVisibleRange");if(v)requestAnimationFrame(()=>{v()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var $J=(J,X=50,q=1/0,j=!0)=>{let Y=J,Q=[],K=0,B=()=>{Q=Y.map((_,O)=>({def:_,index:O,width:0,minWidth:N1(_.minWidth??X,1),maxWidth:_.maxWidth??q,resizable:_.resizable??j,offset:0}))},N=(_)=>{if(Q.length===0){K=0;return}let O=0,A=0;for(let M=0;M<Q.length;M++){let L=Q[M],$=L.def;if($.width!==void 0)L.width=D2($.width,L.minWidth,L.maxWidth),O+=L.width;else A++}if(A>0){let L=Math.max(0,_-O)/A;for(let $=0;$<Q.length;$++){let V=Q[$];if(V.def.width===void 0)V.width=D2(L,V.minWidth,V.maxWidth)}}U()},U=()=>{let _=0;for(let O=0;O<Q.length;O++){let A=Q[O];A.offset=_,_+=A.width}K=_},W=(_,O)=>{if(_<0||_>=Q.length)return 0;let A=Q[_];if(!A.resizable)return A.width;let M=D2(O,A.minWidth,A.maxWidth);return A.width=M,U(),M},P=(_)=>{return Q[_]},b=(_)=>{if(Q.length===0)return;if(_<0)return Q[0];if(_>=K)return Q[Q.length-1];let O=0,A=Q.length-1;while(O<A){let M=O+A>>>1,L=Q[M];if(_<L.offset)A=M-1;else if(_>=L.offset+L.width)O=M+1;else return L}return Q[O]},y=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},E=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},v=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:v,resizeColumn:W,getColumn:P,getColumnAtX:b,getColumnOffset:y,getColumnWidth:E}},D2=(J,X,q)=>Math.min(q,Math.max(X,J)),N1=(J,X)=>Math.max(X,J);var wJ=(J,X,q,j,Y,Q,K)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let N=document.createElement("div");N.className=`${j}-table-header`,N.setAttribute("role","row"),N.setAttribute("aria-rowindex","1"),N.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),N.appendChild(U),B.appendChild(N),J.insertBefore(B,J.firstChild),X.style.position="absolute",X.style.top=`${q}px`,X.style.left="0",X.style.right="0",X.style.bottom="0",X.style.height="auto";let W=[],P=[],b=[],y=!0,E=null,v="asc",_=null,O=!1,A=-1,M=0,L=0,$=(G,T)=>{let R=document.createElement("div");R.className=`${j}-table-header-cell`,R.setAttribute("role","columnheader"),R.setAttribute("aria-colindex",String(T+1)),R.dataset.columnKey=G.def.key;let Z=G.def.align;if(Z==="center")R.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")R.classList.add(`${j}-table-header-cell--right`);let C=document.createElement("div");C.className=`${j}-table-header-content`;let a=G.def.header?G.def.header(G.def):G.def.label;if(typeof a==="string")C.textContent=a;else C.appendChild(a);if(R.appendChild(C),G.def.sortable){let r=document.createElement("span");r.className=`${j}-table-header-sort`,r.setAttribute("aria-hidden","true"),R.appendChild(r),b.push(r),R.classList.add(`${j}-table-header-cell--sortable`)}else b.push(null);if(G.resizable){let r=document.createElement("div");r.className=`${j}-table-header-resize`,r.dataset.resizeIndex=String(T),R.appendChild(r),P.push(r)}return R},V=(G)=>{_=G,U.textContent="",W=[],P=[],b=[];let T=G.columns;for(let R=0;R<T.length;R++){let Z=T[R],C=$(Z,R);W.push(C),U.appendChild(C)}if(I(G),E)w(E,v)},I=(G)=>{_=G;let T=G.columns;U.style.width=`${G.totalWidth}px`;for(let R=0;R<W.length&&R<T.length;R++){let Z=W[R],C=T[R];Z.style.width=`${C.width}px`}},w=(G,T)=>{if(E=G,v=T,!_)return;let R=_.columns;for(let Z=0;Z<b.length&&Z<R.length;Z++){let C=b[Z];if(!C)continue;if(R[Z].def.key===G&&G!==null)C.textContent=T==="asc"?"▲":"▼",C.style.opacity="0.7",W[Z].setAttribute("aria-sort",T==="asc"?"ascending":"descending");else C.textContent="",C.style.opacity="0",W[Z].removeAttribute("aria-sort")}},g=(G)=>{U.style.transform=`translateX(${-G}px)`},l=(G)=>{let T=G.target;if(!T.dataset.resizeIndex)return;if(G.preventDefault(),G.stopPropagation(),A=parseInt(T.dataset.resizeIndex,10),!_)return;let R=_.getColumn(A);if(!R||!R.resizable)return;O=!0,M=G.clientX,L=R.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",T.classList.add(`${j}-table-header-resize--active`),T.setPointerCapture(G.pointerId),T.addEventListener("pointermove",z),T.addEventListener("pointerup",d),T.addEventListener("pointercancel",d)},z=(G)=>{if(!O||!_)return;let T=G.clientX-M;if(Math.abs(T)<1)return;let R=Math.max(0,L+T);Y(A,R)},d=(G)=>{if(!O)return;let T=G.target;T.removeEventListener("pointermove",z),T.removeEventListener("pointerup",d),T.removeEventListener("pointercancel",d);try{T.releasePointerCapture(G.pointerId)}catch{}T.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",O=!1,A=-1},i=(G)=>{let T=G.target;if(T.dataset.resizeIndex!==void 0)return;if(O)return;let R=T;while(R&&!R.dataset.columnKey)if(R=R.parentElement,R===N||R===null)return;if(!R||!R.dataset.columnKey)return;let Z=R.dataset.columnKey;if(!_)return;let C=_.columns,a=-1;for(let D=0;D<C.length;D++)if(C[D].def.key===Z){a=D;break}if(a===-1)return;let r=C[a];if(K)K({key:Z,index:a,event:G});if(r.def.sortable&&Q){let D;if(E===Z)if(v==="asc")D="desc";else D=null;else D="asc";Q({key:Z,index:a,direction:D})}};return N.addEventListener("pointerdown",l),N.addEventListener("click",i),{element:N,update:I,updateSort:w,rebuild:V,show:()=>{if(y)return;y=!0,N.style.display=""},hide:()=>{if(!y)return;y=!1,N.style.display="none"},destroy:()=>{N.removeEventListener("pointerdown",l),N.removeEventListener("click",i),X.style.position="",X.style.top="",X.style.left="",X.style.right="",X.style.bottom="",B.remove(),W=[],P=[],b=[],_=null,y=!1},syncScroll:g}};var _1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(X.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",X.push(Q)},clear:()=>{X.length=0}}},RJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=_1(),W=new Map,P=-1,b=q,y=null,E=null,v=null,_=(D,k)=>{E=D,v=k},O=(D,k)=>{if(k)D.setAttribute("aria-selected","true");else D.removeAttribute("aria-selected")},A=`${Y}-item ${Y}-table-row`,M=`${Y}-item--selected`,L=`${Y}-item--focused`,$=`${Y}-table-cell`,V=`${Y}-table-cell--center`,I=`${Y}-table-cell--right`,w=`${Y}-item--odd`,g=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,l=`${Y}-table-group-header-content`,z=(D,k,x,F)=>{if(x.def.cell){let f=x.def.cell(k,x.def,F);if(typeof f==="string")D.innerHTML=f;else D.replaceChildren(f)}else{let f=k[x.def.key];D.textContent=f!=null?String(f):""}},d=(D,k,x,F)=>{let f=A;if(B){if(y){let p=y(k);if(p>=0&&(p&1)===1)f+=` ${w}`}else if((k&1)===1)f+=` ${w}`}if(x)f+=` ${M}`;if(F)f+=` ${L}`;D.className=f},i=(D,k)=>{let x=k.def.align;if(x==="center")D.classList.add(V),D.classList.remove(I);else if(x==="right")D.classList.add(I),D.classList.remove(V);else D.classList.remove(V,I)},h=(D,k)=>{let F=b.columns.length;if(k.length===F)return k;let f=[];for(let p=0;p<F;p++){let t;if(p<k.length)t=k[p];else t=document.createElement("div"),t.className=$,D.appendChild(t);f.push(t)}for(let p=F;p<k.length;p++)k[p].remove();return f},H=(D,k,x)=>{let F=U.acquire(),f=D;F.style.width=`${b.totalWidth}px`;let p=x.getSize(k);F.style.height=`${p}px`,F.className=g,F.setAttribute("role","presentation"),F.setAttribute("data-id",String(D.id)),F.setAttribute("data-index",String(k)),F.removeAttribute("aria-selected"),F.removeAttribute("aria-rowindex"),F.replaceChildren();let t=document.createElement("div");if(t.className=l,v){let s=v(f.groupKey,f.groupIndex);if(typeof s==="string")t.innerHTML=s;else t.appendChild(s)}F.appendChild(t);let u=x.getOffset(k);return F.style.transform=`translateY(${u}px)`,{element:F,cells:[],index:k,isGroupHeader:!0,lastItemId:D.id,lastSelected:!1,lastFocused:!1,lastOffset:u,lastHeight:p}},S=(D,k,x,F,f)=>{let p=U.acquire();p.style.width=`${b.totalWidth}px`;let t=f.getSize(k);p.style.height=`${t}px`,d(p,k,x,F),p.setAttribute("role","row"),p.setAttribute("data-id",String(D.id)),p.setAttribute("data-index",String(k)),p.id=`${Q}-${k}`,p.setAttribute("aria-rowindex",String(k+2));let u=K();if(u!==P)P=u;O(p,x);let s=h(p,[]),j0=b.columns;for(let o=0;o<s.length&&o<j0.length;o++){let n=s[o],q0=j0[o];n.style.left=`${q0.offset}px`,n.style.width=`${q0.width}px`,n.setAttribute("role","gridcell"),n.setAttribute("aria-colindex",String(o+1)),i(n,q0),z(n,D,q0,k)}let m=f.getOffset(k);return p.style.transform=`translateY(${m}px)`,{element:p,cells:s,index:k,isGroupHeader:!1,lastItemId:D.id,lastSelected:x,lastFocused:F,lastOffset:m,lastHeight:t}},G=(D,k,x,F)=>{for(let[s,j0]of W)if(s<k.start||s>k.end)U.release(j0.element),W.delete(s);let f=!1,p=K();if(p!==P)P=p,f=!0;let t=null,u=X();y=typeof B==="string"&&N?N():null;for(let s=k.start;s<=k.end;s++){let j0=s-k.start,m=D[j0];if(!m)continue;let o=x.has(m.id),n=s===F,q0=E?E(m):!1,e=W.get(s);if(e){if(e.isGroupHeader!==q0){U.release(e.element),W.delete(s);let X0=q0?H(m,s,u):S(m,s,o,n,u);if(W.set(s,X0),!t)t=document.createDocumentFragment();t.appendChild(X0.element);continue}if(q0){if(e.lastItemId!==m.id){let Y0=m,G0=e.element.firstElementChild;if(G0&&v){let D0=v(Y0.groupKey,Y0.groupIndex);if(typeof D0==="string")G0.innerHTML=D0;else G0.replaceChildren(D0)}e.element.setAttribute("data-id",String(m.id)),e.lastItemId=m.id}let B0=u.getOffset(s);if(e.lastOffset!==B0)e.lastOffset=B0,e.element.style.transform=`translateY(${B0}px)`;let _0=u.getSize(s);if(e.lastHeight!==_0)e.lastHeight=_0,e.element.style.height=`${_0}px`}else{let X0=e.lastItemId!==m.id,B0=e.lastSelected!==o,_0=e.lastFocused!==n;if(X0){let D0=b.columns;for(let U0=0;U0<e.cells.length&&U0<D0.length;U0++)z(e.cells[U0],m,D0[U0],s);d(e.element,s,o,n),e.element.setAttribute("data-id",String(m.id)),O(e.element,o),e.lastItemId=m.id,e.lastSelected=o,e.lastFocused=n}else if(B0||_0)d(e.element,s,o,n),O(e.element,o),e.lastSelected=o,e.lastFocused=n;let Y0=u.getOffset(s);if(e.lastOffset!==Y0)e.lastOffset=Y0,e.element.style.transform=`translateY(${Y0}px)`;let G0=u.getSize(s);if(e.lastHeight!==G0)e.lastHeight=G0,e.element.style.height=`${G0}px`;if(f)e.element.setAttribute("aria-rowindex",String(s+2))}}else{let X0=q0?H(m,s,u):S(m,s,o,n,u);if(W.set(s,X0),!t)t=document.createDocumentFragment();t.appendChild(X0.element)}}if(t)J.appendChild(t)},T=(D,k,x,F)=>{let f=W.get(D);if(!f)return;if(f.isGroupHeader)return;let p=f.lastItemId!==k.id,t=f.lastSelected!==x,u=f.lastFocused!==F;if(p||t||u){if(p){let s=b.columns;for(let j0=0;j0<f.cells.length&&j0<s.length;j0++)z(f.cells[j0],k,s[j0],D);f.element.setAttribute("data-id",String(k.id)),f.lastItemId=k.id}d(f.element,D,x,F),O(f.element,x),f.lastSelected=x,f.lastFocused=F}},R=(D,k,x)=>{let F=W.get(D);if(!F)return;if(F.isGroupHeader)return;let f=F.lastSelected!==k,p=F.lastFocused!==x;if(f||p)d(F.element,D,k,x),O(F.element,k),F.lastSelected=k,F.lastFocused=x},Z=(D)=>{b=D;let k=D.columns;for(let[,x]of W)if(x.element.style.width=`${D.totalWidth}px`,x.cells.length>0)for(let F=0;F<x.cells.length&&F<k.length;F++){let f=x.cells[F],p=k[F];f.style.left=`${p.offset}px`,f.style.width=`${p.width}px`}},C=(D)=>{return W.get(D)?.element},a=()=>{for(let[,D]of W)U.release(D.element);W.clear(),P=-1};return{render:G,updateItem:T,updateItemClasses:R,getElement:C,updateColumnLayout:Z,setGroupHeaderFn:_,clear:a,destroy:()=>{a(),U.clear()}}};var W1=new Set,vJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let X=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:Q,emitter:K,config:B}=Y,{classPrefix:N}=B;if(B.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,P=J.maxColumnWidth??1/0,b=J.columnBorders??!1,y=J.rowBorders??!0,E=J.rowHeight,v=C0(b0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof E==="number"?E:40),O=J.sort?.key??null,A=J.sort?.direction??"asc";if(X=$J(J.columns,W,P,U),typeof E==="function")Y.setSizeConfig(E);else if(typeof E==="number")Y.setSizeConfig(E);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),y)Q.root.classList.add(`${N}--table-row-borders`);if(b)Q.root.classList.add(`${N}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let M=-1,L=Q.items.getAttribute("aria-label");if(L)Q.root.setAttribute("aria-label",L),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth()-v;X.resolve($);let V=(F,f)=>{if(!X)return;let p=X.getColumn(F);if(!p)return;let t=p.width,u=X.resizeColumn(F,f);if(q)q.update(X);if(j)j.updateColumnLayout(X);g(),K.emit("column:resize",{key:p.def.key,index:F,previousWidth:t,width:u})},I=(F)=>{if(F.direction===null)O=null,A="asc";else O=F.key,A=F.direction;if(q)q.updateSort(O,A);K.emit("column:sort",F)},w=(F)=>{K.emit("column:click",F)};if(q=wJ(Q.root,Q.viewport,_,N,V,I,w),q.rebuild(X),O)q.updateSort(O,A);let g=()=>{if(!X)return;let F=X.totalWidth;Q.content.style.minWidth=`${F}px`,Q.items.style.minWidth=`${F}px`};g(),j=RJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let l=null,z=null,d=!1,i=()=>{if(d)return;d=!0,l=Y.methods.get("_getSelectedIds")??null,z=Y.methods.get("_getFocusedIndex")??null},h=-1,H=-1,S=-1,G=!0,T=B.overscan,R={start:0,end:0},Z={start:0,end:0},C=()=>{if(Y.state.isDestroyed)return;let F=Y.scrollController.getScrollTop(),f=Y.state.viewportState.containerSize,p=Y.getVirtualTotal();if(!G&&F===h&&f===H&&p===S)return;h=F,H=f,S=p,G=!1;let t=p+1;if(t!==M)M=t,Q.root.setAttribute("aria-rowcount",String(t));if(p===0||f===0)R.start=0,R.end=0;else R.start=Math.max(0,Y.sizeCache.indexAtOffset(F)),R.end=Math.min(p-1,Math.max(0,Y.sizeCache.indexAtOffset(F+f-1)));Z.start=Math.max(0,R.start-T),Z.end=Math.min(p-1,R.end+T);let u=Y.state.viewportState;u.scrollPosition=F,u.visibleRange.start=R.start,u.visibleRange.end=R.end,u.renderRange.start=Z.start,u.renderRange.end=Z.end;let s=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);i();let m=l?l():W1,o=z?z():-1;if(j.render(j0,Z,m,o),s.start!==Z.start||s.end!==Z.end)s.start=Z.start,s.end=Z.end,K.emit("range:change",{range:{start:Z.start,end:Z.end}})},a=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,G=!0,C()};Y.setRenderFns(C,a);let r=q,D=-1,k=()=>{let F=Q.viewport.scrollLeft;if(F!==D){if(D=F,r.syncScroll)r.syncScroll(F)}};Y.afterScroll.push(()=>{k()});let x=()=>{k()};Q.viewport.addEventListener("scroll",x,{passive:!0}),Y.resizeHandlers.push((F,f)=>{if(!X)return;if(X.resolve(F-v),q)q.update(X);if(j)j.updateColumnLayout(X);g()}),Y.methods.set("updateColumns",(F)=>{if(!X||!q)return;if(X.updateColumns(F),X.resolve(Y.getContainerWidth()-v),q.rebuild(X),O)q.updateSort(O,A);if(g(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(F,f)=>{if(!X)return;let p;if(typeof F==="string"){let t=X.columns;p=-1;for(let u=0;u<t.length;u++)if(t[u].def.key===F){p=u;break}if(p===-1)return}else p=F;V(p,f)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let F={},f=X.columns;for(let p=0;p<f.length;p++)F[f[p].def.key]=f[p].width;return F}),Y.methods.set("setSort",(F,f)=>{if(O=F,A=f??"asc",q)q.updateSort(O,A)}),Y.methods.set("getSort",()=>{return{key:O,direction:A}}),Y.methods.set("_getTableLayout",()=>X),Y.methods.set("_replaceTableRenderer",(F)=>{j=F}),Y.methods.set("_updateTableForGroups",(F,f)=>{if(j)j.setGroupHeaderFn(F,f)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{g()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",x),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${N}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let F=Q.root.getAttribute("aria-label");if(F)Q.items.setAttribute("aria-label",F),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};export{vJ as withTable,PJ as withSnapshots,yJ as withSelection,e2 as withScrollbar,JJ as withScale,UJ as withPage,EJ as withMasonry,VJ as withGroups,GJ as withGrid,YJ as withAsync,n2 as vlist};
1
+ var{defineProperty:i0,getOwnPropertyNames:gJ,getOwnPropertyDescriptor:xJ}=Object,mJ=Object.prototype.hasOwnProperty;var T2=new WeakMap,dJ=(J)=>{var X=T2.get(J),q;if(X)return X;if(X=i0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")gJ(J).map((j)=>!mJ.call(X,j)&&i0(X,j,{get:()=>J[j],enumerable:!(q=xJ(J,j))||q.enumerable}));return T2.set(J,X),X};var cJ=(J,X)=>{for(var q in X)i0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var k2=(J,X)=>()=>(J&&(X=J(J=0)),X);var lJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},rJ=(J,X)=>{let q=X,j=new Float64Array(0),Y=(K)=>{q=K,j=new Float64Array(K+1),j[0]=0;for(let B=0;B<K;B++)j[B+1]=j[B]+J(B)};Y(X);let Q=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=j[q])return q-1;let B=0,N=q-1;while(B<N){let U=B+N+1>>>1;if(j[U]<=K)B=U;else N=U-1}return B};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return j[q];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Q(K),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(K)=>Y(K),isVariable:()=>!0}},w0=(J,X)=>{if(typeof J==="number")return lJ(J,X);return rJ(J,X)},m0=(J,X,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let Y=0,Q=0,K=X;while(K<j&&Q<q)Q+=J.getSize(K),Y++,K++;return Math.max(1,Y)},t0=(J,X,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getSize(0));let j=0,Y=0;for(let Q=q-1;Q>=0;Q--){let K=J.getSize(Q);if(Y+K>X)break;Y+=K,j++}return Math.max(j,1)},$2=(J,X,q)=>{if(q===0)return 0;let j=Math.floor(X),Y=X-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+Y*J.getSize(Q)};var S0=(J,X,q)=>{let j=Array.from(X).sort((K,B)=>K-B);if(j.length<=1)return;let Y=[];for(let K=0;K<j.length;K++){let B=q(j[K]);if(B)Y.push(B)}if(Y.length<=1)return;let Q=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===Q)Q=Q.nextSibling;else J.insertBefore(B,Q)}};var x2=3,m2="vlist",J2=200,I0=50,d2=50,c2=5,l2=2,Q2=16000000,r2=150,a2="x",s2=20,j2="_isPlaceholder",o2="__placeholder_";var R0=(J,X)=>{let q=X.getTotalSize(),j=q>Q2,Y=j?Q2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},i2=(J,X,q,j,Y,Q)=>{if(j===0||X===0)return Q.start=0,Q.end=-1,Q;if(!Y.isCompressed){let A=q.indexAtOffset(J),v=q.indexAtOffset(J+X);if(v<j-1)v++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,v)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=m0(q,Math.max(0,U),X,j),w=Math.ceil(N)+W,y=K-X-J;if(y<=X&&y>=-1){let A=t0(q,X,j),v=Math.max(0,j-A),_=Math.max(0,Math.min(1,1-y/X));U=Math.floor(U+(v-U)*_),w=y<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,w)),Q},l0=(J,X,q,j,Y,Q,K)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);let{virtualSize:B}=Q,N=B-Y,U=N-X;if(U<=Y&&U>=-1){if(X>=N-1){let T=q.getTotalSize()-q.getOffset(J);return Y-T}let y=t0(q,Y,j),A=Math.max(0,j-y),_=X/B*j,G=Math.max(0,Math.min(1,1-U/Y)),E=q.getOffset(J)-q.getOffset(A),D=q.getOffset(J)-$2(q,_,j);return D+(E-D)*G}let W=X/B,w=q.getTotalSize(),k=W*w;return q.getOffset(J)-k},t2=(J,X,q,j,Y,Q="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(Q==="end"&&J===j-1)return Math.max(0,Y.virtualSize-q);K=J/j*Y.virtualSize}else K=X.getOffset(J);let B=X.getSize(J);switch(Q){case"center":K-=(q-B)/2;break;case"end":K-=q-B;break}let N=Y.virtualSize-q;return Math.max(0,Math.min(K,N))};var q2=()=>{};var v0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var WJ={};cJ(WJ,{createGridRenderer:()=>K2});var q1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),X.push(Q)},clear:()=>{X.length=0}}},X1=1,K2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=q1(),W=new Map,w=Q,k=!1,y=null,A=0,v=0,_="",G=-1,E=(F)=>{if(y&&A===F)return y;return y=R0(F,q),A=F,y},D={selected:!1,focused:!1},T=(F,x)=>{return D.selected=F,D.focused=x,D},$=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,u=`${Y}-item--focused`,c=(F,x)=>{if(typeof x==="string")F.innerHTML=x;else F.replaceChildren(x)},r=(F,x,z)=>{F.classList.toggle(V,x),F.classList.toggle(u,z)},S=(F,x)=>{let z=j.getRow(F);if(x){let O=x.totalItems,m=E(O);if(m.isCompressed)return l0(z,x.scrollPosition,q,O,x.containerSize,m,x.rangeStart)}return q.getOffset(z)},H=(F,x)=>{let z=k&&j.getCol(F)===0,O=z?0:j.getCol(F),m=z?0:j.getColumnOffset(O,w),I;if(k){let s=j.getRow(F),b=0,o=new Set;for(let j0=0;j0<F;j0++){let f=j.getRow(j0);if(f<s&&!o.has(f)){let n=q.getSize(j0);b+=n,o.add(f)}}I=b}else I=S(F,x);if(N)return`translate(${Math.round(I)}px, ${Math.round(m)}px)`;return`translate(${Math.round(m)}px, ${Math.round(I)}px)`},g=(F,x)=>{F.style.transform=x},t=(F,x)=>{let z=F.dataset.id?.startsWith("__group_header"),O=z?w:j.getColumnWidth(w),m;if(k||z)m=q.getSize(x)-j.gap;else{let I=j.getRow(x);m=q.getSize(I)-j.gap}if(N)F.style.width=`${m}px`,F.style.height=`${O}px`;else F.style.width=`${O}px`,F.style.height=`${m}px`},h=(F,x,z,O,m)=>{let I=U.acquire(),s=T(z,O);if(I.className=$,I.dataset.index=String(F),I.dataset.id=String(x.id),I.dataset.row=String(j.getRow(F)),I.dataset.col=String(j.getCol(F)),I.ariaSelected=String(z),B)I.id=`${B}-item-${F}`;if(K){let o=K();if(o!==G)G=o,_=String(o);I.setAttribute("aria-setsize",_),I.setAttribute("aria-posinset",String(F+1))}t(I,F);let b=X(x,F,s);return c(I,b),r(I,z,O),g(I,m),{element:I,lastItemId:x.id,lastSelected:z,lastFocused:O,lastTransform:m,lastSeenFrame:v}},R=(F,x,z,O,m)=>{if(v++,x.start===0&&F.length>0)k=v0(F[0]);for(let[b,o]of W)if(b>=x.start&&b<=x.end)o.lastSeenFrame=v;else if(v-o.lastSeenFrame>X1)U.release(o.element),W.delete(b);let I=!1;if(K){let b=K();if(b!==G)G=b,_=String(b),I=!0}let s=null;for(let b=x.start;b<=x.end;b++){let o=b-x.start,j0=F[o];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${b} (range: ${x.start}-${x.end}, items.length: ${F.length})`);continue}let f=z.has(j0.id),n=b===O,i=W.get(b);if(i){let q0=i.lastItemId!==j0.id,X0=i.lastSelected!==f,Y0=i.lastFocused!==n;if(q0||X0||Y0){if(q0){let Z0=T(f,n),K0=X(j0,b,Z0);c(i.element,K0),i.element.dataset.id=String(j0.id),i.element.dataset.row=String(j.getRow(b)),i.element.dataset.col=String(j.getCol(b)),t(i.element,b)}r(i.element,f,n),i.element.ariaSelected=String(f),i.lastItemId=j0.id,i.lastSelected=f,i.lastFocused=n}let e=H(b,m);if(i.lastTransform!==e)g(i.element,e),i.lastTransform=e;if(I)i.element.setAttribute("aria-setsize",_)}else{let q0=H(b,m),X0=h(b,j0,f,n,q0);if(!s)s=document.createDocumentFragment();s.appendChild(X0.element),W.set(b,X0)}}if(s)J.appendChild(s)},p=(F)=>{for(let[x,z]of W){let O=H(x,F);if(z.lastTransform!==O)g(z.element,O),z.lastTransform=O}},P=(F,x,z,O)=>{let m=W.get(F);if(!m)return;let I=m.lastItemId!==x.id,s=m.lastSelected!==z,b=m.lastFocused!==O;if(I||s||b){let o=T(z,O),j0=X(x,F,o);c(m.element,j0),r(m.element,z,O),m.element.dataset.id=String(x.id),m.element.ariaSelected=String(z),t(m.element,F),m.lastItemId=x.id,m.lastSelected=z,m.lastFocused=O}},M=(F,x,z)=>{let O=W.get(F);if(!O)return;let m=O.lastSelected!==x,I=O.lastFocused!==z;if(m||I)r(O.element,x,z),O.lastSelected=x,O.lastFocused=z},L=(F)=>{return W.get(F)?.element},Z=(F)=>{if(Math.abs(F-w)<1)return;w=F;for(let[x,z]of W){t(z.element,x);let O=H(x);g(z.element,O),z.lastTransform=O}},C=()=>{S0(J,W.keys(),(F)=>W.get(F)?.element)},a=()=>{for(let[,F]of W)U.release(F.element);W.clear()};return{render:R,updatePositions:p,updateItem:P,updateItemClasses:M,getElement:L,sortDOM:C,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var B2=k2(()=>{q2()});var H2=2,b2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},y2=(J,X)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=X,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[Q],B=X-K.position,N=q-K.time;J.velocity=N>0?Math.abs(B)/N:0}return J.lastPosition=X,J.lastTime=q,J};var P2=(J,X)=>{let q=new Map,j=(Q)=>{let K=q.get(Q);return K!==void 0?K:J},Y=w0(j,X);return{getOffset(Q){return Y.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return Y.indexAtOffset(Q)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(Q){if(Q<Y.getTotal()){for(let K of q.keys())if(K>=Q)q.delete(K)}Y=w0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,K){q.set(Q,K)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var w2=()=>{let J={},X=(B,N)=>{if(!J[B])J[B]=new Set;return J[B].add(N),()=>q(B,N)},q=(B,N)=>{J[B]?.delete(N)};return{on:X,off:q,emit:(B,N)=>{J[B]?.forEach((U)=>{try{U(N)}catch(W){console.error(`[vlist] Error in event handler for "${String(B)}":`,W)}})},once:(B,N)=>{let U=(W)=>{q(B,U),N(W)};return X(B,U)},clear:(B)=>{if(B)delete J[B];else for(let N in J)delete J[N]},listenerCount:(B)=>{return J[B]?.size??0}}};var R2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},v2=(J,X,q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);Y.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${X}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let K=document.createElement("div");if(K.className=`${X}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${X}-items`,B.setAttribute("role","listbox"),q)B.setAttribute("aria-label",q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";return K.appendChild(B),Q.appendChild(K),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B}};var z2=(J=100)=>{let X=[];return{acquire:()=>{let q=X.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(X.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),X.push(q)},clear:()=>{X.length=0}}};var C2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=m0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},S2=(J,X,q,j)=>{if(q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(q-1,J.end+X)},f2=(J,X,q,j,Y,Q=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U+Q-q),w;switch(Y){case"center":w=B-(q-N)/2;break;case"end":w=Q>0&&B+N>=U?W:B-q+N;break;default:w=B}return Math.max(0,Math.min(w,W))};var d0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return d0;if(typeof J==="number")return J===0?d0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?d0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?d0:{top:X,right:q,bottom:j,left:Y}},c0=(J,X)=>X?J.left+J.right:J.top+J.bottom,C0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var I2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:w,idleHandlers:k,afterScroll:y,clickHandlers:A,keydownHandlers:v,resizeHandlers:_,destroyHandlers:G,methods:E,onScrollFrame:D,resizeObserver:T,renderRange:$}=X;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return Q},adjustScrollPosition(V){if(J.mp===0)return V;let u=U?J.cw:J.ch,c=J.hc.getTotalSize(),r=Math.max(0,c-u),S=Math.max(0,c+J.mp-u);if(V>=r)return S;return Math.min(V,S)},get renderer(){return{render:(V,u,c,r,S)=>{J.ss=c,J.fi=r,J.ffn()},updateItemClasses:(V,u,c)=>{let r=K.get(V);if(!r)return;r.classList.toggle(`${W}-item--selected`,u),r.classList.toggle(`${W}-item--focused`,c),r.ariaSelected=u?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(V)=>K.get(V)??null,clear:()=>{},destroy:()=>{}}},set renderer(V){},get dataManager(){return J.dm},set dataManager(V){J.dm=V},get scrollController(){return J.sc},set scrollController(V){J.sc=V},state:N,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:k,clickHandlers:A,keydownHandlers:v,resizeHandlers:_,contentSizeHandlers:w,destroyHandlers:G,methods:E,replaceTemplate(V){J.at=V},replaceRenderer(V){},replaceDataManager(V){J.dm=V},replaceScrollController(V){J.sc=V},getItemsForRange(V){let{dm:u,it:c}=J,r=[];for(let S=V.start;S<=V.end;S++){let H=u?u.getItem(S):c[S];if(H)r.push(H)}return r},getAllLoadedItems(){let V=J.dm;if(V){let u=V.getTotal(),c=[];for(let r=0;r<u;r++){let S=V.getItem(r);if(S)c.push(S)}return c}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let V=J.hc;return{isCompressed:!1,actualSize:V.getTotalSize(),virtualSize:V.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:$.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,V]of K)V.remove(),B.release(V);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(V,u){J.rfn=V,J.ffn=u},setVirtualTotalFn(V){J.vtf=V},rebuildSizeCache(V){J.hc.rebuild(V??J.vtf())},setSizeConfig(V){if(J.hc=w0(V,J.vtf()),J.gp>0){let u=J.hc.getTotalSize,c=J.gp;J.hc.getTotalSize=()=>{let r=u();return r>0?r-c:0}}},updateContentSize(V){let u=`${V+J.mp}px`;if(U)q.content.style.width=u;else q.content.style.height=u},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,u){J.sgt=V,J.sst=(c)=>{u(c),D()}},setScrollTarget(V){J.st.removeEventListener("scroll",D),J.st=V,J.st.addEventListener("scroll",D,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(V){J.gcw=V.width,J.gch=V.height,J.cw=V.width(),J.ch=V.height(),N.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,T.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(V){J.sif=V}}},p2=(J,X,q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:Q,applyTemplate:K,updateContentSize:B}=X,N=()=>{J.hc.rebuild(J.vtf()),B(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let w=J.it,k=[],y=Math.max(0,U),A=Math.min(W,w.length-1);for(let v=y;v<=A;v++)k.push(w[v]);return k},setTotal:(U)=>{},setItems:(U,W=0,w)=>{let k=J.it;if(W===0&&(w!==void 0||k.length===0))J.it=U;else{let y=W+U.length;if(k.length<y)k.length=y;for(let A=0;A<U.length;A++)k[W+A]=U[A]}if(J.ii)N()},updateItem:(U,W)=>{let w=J.it;if(U<0||U>=w.length)return!1;let k=w[U];if(!k)return!1;w[U]={...k,...W};let y=j.get(U);if(y)K(y,J.at(w[U],U,Y)),y.dataset.id=String(w[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((w)=>w.id===U);if(W<0||W>=J.it.length)return!1;if(J.it.splice(W,1),J.ii)N();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},h2=(J,X)=>{let{dom:q,classPrefix:j}=X;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let Q=J.sgt()+Y;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),Q=Math.max(0,Y-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var u2=(J,X,q,j,Y,Q,K,B,N,U=0)=>{let W=(_,G=!1)=>{let E=q?X.viewport.scrollWidth-X.viewport.clientWidth:X.viewport.scrollHeight-X.viewport.clientHeight;if(E<=0||_<E-2)return!1;let D=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(D>_){if(J.sst(D),J.ls=D,G)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let w=new WeakMap,k=0,y=!1,A=null,v=()=>{if(y){let _=J.sgt();K(),y=!1,W(_,!0)}};return A=new ResizeObserver((_)=>{if(J.id)return;let G=!1,E=j.start;for(let D of _){let T=w.get(D.target);if(T===void 0)continue;let $=q?D.borderBoxSize[0].inlineSize:D.borderBoxSize[0].blockSize;if(!B.isMeasured(T)){let V=$+U,u=B.getSize(T);if(B.setMeasuredSize(T,V),G=!0,T<E&&V!==u)k+=V-u;A.unobserve(D.target);let c=D.target;if(q)c.style.width=`${$}px`;else c.style.height=`${$}px`}}if(!G)return;if(B.rebuild(J.vtf()),J.hc=B,k!==0){let D=J.sgt();J.sst(D+k),J.ls=D+k,k=0}if(Q())y=!0;else{let D=J.sgt();K(),y=!1,W(D)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:A,ei:w,mc:B,fl:v,se:W}};var e0=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,y0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,X)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,K,B)=>{if(j(),Math.abs(K-Q)<1){J.scrollTo(K);return}let N=performance.now(),U=(W)=>{let w=W-N,k=Math.min(w/B,1),y=Q+(K-Q)*e0(k);if(J.scrollTo(y),X(),k<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var g2=(J,X,q,j,Y,Q,K,B,N,U,W,w,k,y,A,v,_,G)=>{let E=(M)=>{N.dataManager.setItems(M,0,M.length)},D=U?(M)=>{let L=J.sab(2),Z=J.it.length;if(N.dataManager.setItems(M,Z),L&&J.it.length>0){let C=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(C),J.ls=C,J.rfn()}}:(M)=>{let L=J.it.length;N.dataManager.setItems(M,L)},T=U?(M)=>{let L=J.sgt(),Z=J.hc.getTotalSize(),C=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...M,...C],0);let d=J.hc.getTotalSize()-Z;if(d>0)J.sst(L+d),J.ls=L+d}:(M)=>{let L=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...M,...L],0)},$=(M,L)=>{N.dataManager.updateItem(M,L)},V=!1,u=(M)=>{let L=N.dataManager.removeItem(M);if(L){if(q.emit("data:change",{type:"remove",id:M}),N.forceRender(),!V){let Z=N.dataManager;if(typeof Z.ensureRange==="function")V=!0,queueMicrotask(()=>{V=!1;let{start:C,end:a}=N.state.viewportState.renderRange;if(a>=C)Z.ensureRange(C,a).catch(()=>{})})}}return L},c=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},r=null,S=()=>{if(r!==null)cancelAnimationFrame(r),r=null},H=(M,L,Z)=>{if(S(),Math.abs(L-M)<1){J.sst(L),J.ls=L,J.rfn();return}let C=performance.now(),a=(d)=>{let F=d-C,x=Math.min(F/Z,1),z=M+(L-M)*e0(x);if(J.sst(z),J.ls=z,J.rfn(),x<1)r=requestAnimationFrame(a);else r=null};r=requestAnimationFrame(a)},g=(M,L)=>{let{align:Z,behavior:C,duration:a}=y0(L),d=J.vtf(),F=M;if(W&&d>0)F=(F%d+d)%d;let x=J.gsp(F,J.hc,J.ch,d,Z);if(C==="smooth")H(J.sgt(),x,a);else S(),J.sst(x)},t=()=>J.sgt(),h=(M,L)=>{return q.on(M,L)},R=(M,L)=>{q.off(M,L)},p=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",w),X.items.removeEventListener("dblclick",k),X.root.removeEventListener("keydown",y),J.st.removeEventListener("scroll",A),v.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);G();for(let M=0;M<B.length;M++)B[M]();for(let M of K)if(M.destroy)M.destroy();S();for(let[,M]of j)M.remove(),Y.release(M);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},P={get element(){return X.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):E,appendItems:Q.has("appendItems")?Q.get("appendItems"):D,prependItems:Q.has("prependItems")?Q.get("prependItems"):T,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):u,reload:Q.has("reload")?Q.get("reload"):c,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):g,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):S,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):t,on:h,off:R,destroy:p};for(let[M,L]of Q){if(M.charCodeAt(0)===95||M==="setItems"||M==="appendItems"||M==="prependItems"||M==="updateItem"||M==="removeItem"||M==="reload"||M==="scrollToIndex"||M==="scrollToItem"||M==="cancelScroll"||M==="getScrollPosition")continue;P[M]=L}return P};var aJ=0,n2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.orientation==="horizontal",q=X?"width":"height",j=X?"estimatedWidth":"estimatedHeight",Y=X?J.item.width:J.item.height,Q=X?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${X?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,N={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),N},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,sJ(J,K,X,Y,Q??null)}};return N};function sJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=x2,classPrefix:N=m2,ariaLabel:U,padding:W,reverse:w=!1,scroll:k}=J,y=k,A=y?.wheel??!0,v=y?.wrap??!1,_=w,G=`${N}-${aJ++}`,E=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,D=j??Y,T=j==null&&Y!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,V=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,u={overscan:B,classPrefix:N,reverse:_,wrap:v,horizontal:q,ariaIdPrefix:G},c=Array.from(X.values()).sort((l,J0)=>(l.priority??50)-(J0.priority??50)),r=new Set(c.map((l)=>l.name));for(let l of c)if(l.conflicts){for(let J0 of l.conflicts)if(r.has(J0))throw Error(`[vlist/builder] ${l.name} and ${J0} cannot be combined`)}if(_){if(r.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=R2(J.container),H=v2(S,N,U,q);if(y?.wheel===!1)if(q)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(y?.scrollbar==="none")H.viewport.classList.add(`${N}-viewport--no-scrollbar`);let g=b0(W),t=c0(g,q);if(g.top||g.right||g.bottom||g.left)H.content.style.boxSizing="border-box",H.content.style.padding=`${g.top}px ${g.right}px ${g.bottom}px ${g.left}px`;let h=w2(),R=K||[],p=typeof D==="function"&&(X.has("withGrid")||X.has("withMasonry")),P=E>0?typeof D==="function"?(l)=>D(l)+E:D+E:D,M=T?P2(Y+E,R.length):w0(P,p?0:R.length);if(E>0){let l=M.getTotalSize;M.getTotalSize=()=>{let J0=l();return J0>0?J0-E:0}}let L=z2(),Z={it:R,hc:M,ch:H.viewport.clientHeight,cw:H.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:b2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,sst:q?(l)=>{H.viewport.scrollLeft=l}:(l)=>{H.viewport.scrollTop=l},sab:(l=2)=>{let J0=Z.hc.getTotalSize();return Z.ls+Z.ch>=J0-l},sic:!1,rfn:null,ffn:null,gvr:(l,J0,Q0,_0,G0)=>{C2(l,J0,Q0,_0,G0)},gsp:(l,J0,Q0,_0,G0)=>{return f2(l,J0,Q0,_0,G0,Z.mp)},pef:null,at:Q.template,vre:!0,st:H.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch,gp:E,mp:t,sif:(l)=>l};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let C=null,a=!1,d={start:0,end:0},F={start:0,end:0},x={start:-1,end:-1},z={viewportState:{scrollPosition:0,containerSize:q?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},O=new Map,m=()=>{S0(H.items,O.keys(),(l)=>O.get(l))},I=()=>{let l=`${Z.hc.getTotalSize()+t}px`;if(q)H.content.style.width=l;else H.content.style.height=l},b=u2(Z,H,q,d,x,()=>a,I,T?M:null,T,E),o={selected:!1,focused:!1},j0=`${N}-item`,f=Q.striped,n=!!f,i=f==="data"||f==="even"||f==="odd",q0=`${N}-item--odd`,X0=[],Y0=[],e=[],Z0=[],K0=[],A0=[],M0=[],U0=new Map,V0=null,N0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,V0=U0.get("_getSelectedIds")??null,N0=U0.get("_getFocusedIndex")??null},s0=(l,J0)=>{if(typeof J0==="string")l.innerHTML=J0;else l.replaceChildren(J0)},zJ=(l,J0)=>{let Q0=Math.round(Z.hc.getOffset(J0));if(q)l.style.transform=`translateX(${Q0}px)`;else l.style.transform=`translateY(${Q0}px)`};Z.pef=zJ;let CJ=(l,J0)=>{let Q0=L.acquire();Q0.className=j0;let _0=!T||b.mc&&b.mc.isMeasured(l);if(q){if(_0)Q0.style.width=`${Z.hc.getSize(l)-E}px`;else Q0.style.width="";if(V!=null)Q0.style.height=`${V}px`}else if(_0)Q0.style.height=`${Z.hc.getSize(l)-E}px`;else Q0.style.height="";if(Q0.dataset.index=String(l),Q0.dataset.id=String(J0.id),Q0.ariaSelected="false",Q0.id=`${G}-item-${l}`,Z.la=String(Z.vtf()),Q0.setAttribute("aria-setsize",Z.la),Q0.setAttribute("aria-posinset",String(l+1)),String(J0.id).startsWith("__placeholder_"))Q0.classList.add(`${N}-item--placeholder`);if(n)if(i){let D0=Z.sif(l);if(D0<0)Q0.classList.remove(q0);else Q0.classList.toggle(q0,(D0&1)===1)}else Q0.classList.toggle(q0,(l&1)===1);return s0(Q0,Z.at(J0,l,o)),Z.pef(Q0,l),Q0},SJ=()=>{if(Z.id)return;T0();let l=V0?V0():Z.ss,J0=N0?N0():Z.fi,Q0=Z.vtf(),_0=q?Z.cw:Z.ch;if(Z.gvr(Z.ls,_0,Z.hc,Q0,d),S2(d,B,Q0,F),F.start===x.start&&F.end===x.end){if(Z.sic)for(let[B0,O0]of O)Z.pef(O0,B0);return}let G0=String(Q0),D0=G0!==Z.la;Z.la=G0;for(let[B0,O0]of O)if(B0<F.start||B0>F.end)O0.remove(),L.release(O0),O.delete(B0);let W0=document.createDocumentFragment(),L0=[],k0=[];for(let B0=F.start;B0<=F.end;B0++){let O0=Z.dm?Z.dm.getItem(B0):Z.it[B0];if(O0===void 0)continue;let E0=O.get(B0);if(E0){let H0=E0.dataset.id,p0=String(O0.id);if(H0!==p0){let uJ=H0?.startsWith("__placeholder_"),F2=p0.startsWith("__placeholder_");s0(E0,Z.at(O0,B0,o)),E0.dataset.id=p0;let L2=!T||b.mc&&b.mc.isMeasured(B0);if(q)E0.style.width=L2?`${Z.hc.getSize(B0)-E}px`:"";else E0.style.height=L2?`${Z.hc.getSize(B0)-E}px`:"";if(F2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(uJ&&!F2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,B0);let x0=l.has(O0.id),hJ=B0===J0;if(E0.classList.toggle(`${N}-item--selected`,x0),E0.classList.toggle(`${N}-item--focused`,hJ),E0.ariaSelected=x0?"true":"false",D0)E0.setAttribute("aria-setsize",Z.la)}else{let H0=CJ(B0,O0);k0.push({index:B0,element:H0});let p0=l.has(O0.id),x0=B0===J0;if(p0)H0.classList.add(`${N}-item--selected`),H0.ariaSelected="true";if(x0)H0.classList.add(`${N}-item--focused`);W0.appendChild(H0),L0.push({index:B0,element:H0})}}if(L0.length>0){H.items.appendChild(W0);for(let{index:B0,element:O0}of L0)O.set(B0,O0)}if(T&&b.ob&&b.mc&&b.ei){for(let{index:B0,element:O0}of k0)if(!b.mc.isMeasured(B0))b.ei.set(O0,B0),b.ob.observe(O0)}x.start=F.start,x.end=F.end,z.lastRenderRange.start=F.start,z.lastRenderRange.end=F.end,z.viewportState.scrollPosition=Z.ls,z.viewportState.visibleRange.start=d.start,z.viewportState.visibleRange.end=d.end,z.viewportState.renderRange.start=F.start,z.viewportState.renderRange.end=F.end,h.emit("range:change",{range:{start:F.start,end:F.end}})},fJ=()=>{x.start=-1,x.end=-1,Z.rfn()};Z.rfn=SJ,Z.ffn=fJ;let IJ=()=>{H.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),b.fl(),m();for(let l=0;l<Y0.length;l++)Y0[l]();h.emit("scroll:idle",{scrollPosition:Z.ls})},pJ=()=>{if(C)clearTimeout(C);C=setTimeout(IJ,y?.idleTimeout??r2)},u0=()=>{if(Z.id)return;let l=Z.sgt();if(l===Z.ls&&a)return;let J0=l>=Z.ls?"down":"up";if(Z.vt=y2(Z.vt,l),!H.root.classList.contains(`${N}--scrolling`))H.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=l,Z.rfn(),h.emit("scroll",{scrollPosition:l,direction:J0}),h.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=H2});for(let Q0=0;Q0<X0.length;Q0++)X0[Q0](l,J0);pJ()},z0=null;if(Z.st.addEventListener("scroll",u0,{passive:!0}),A&&!q&&!$)z0=(l)=>{if(z.viewportState.isCompressed)return;let J0=H.viewport.scrollWidth>H.viewport.clientWidth;if(J0&&Math.abs(l.deltaX)>Math.abs(l.deltaY))return;if(l.preventDefault(),J0&&l.deltaX!==0)H.viewport.scrollLeft+=l.deltaX;let Q0=Z.sgt(),_0=H.viewport.scrollHeight-H.viewport.clientHeight,G0=Math.max(0,Math.min(Q0+l.deltaY,_0));if(Math.abs(G0-Q0)<1)return;Z.sst(G0),u0()},Z.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(l)=>{if(l.deltaX)return;l.preventDefault(),H.viewport.scrollLeft+=l.deltaY},Z.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});let M2=(l)=>{let J0=l.target.closest("[data-index]");if(!J0)return null;let Q0=parseInt(J0.dataset.index??"-1",10);if(Q0<0)return null;let _0=Z.dm?.getItem(Q0)??Z.it[Q0];if(!_0||_0.__groupHeader)return null;return{item:_0,index:Q0}},G2=(l)=>{let J0=M2(l);if(J0)h.emit("item:click",{item:J0.item,index:J0.index,event:l});for(let Q0=0;Q0<e.length;Q0++)e[Q0](l)},O2=(l)=>{let J0=M2(l);if(J0)h.emit("item:dblclick",{item:J0.item,index:J0.index,event:l})},E2=(l)=>{for(let J0=0;J0<Z0.length;J0++)Z0[J0](l)};H.items.addEventListener("click",G2),H.items.addEventListener("dblclick",O2),H.root.addEventListener("keydown",E2);let o0=new ResizeObserver((l)=>{if(Z.id)return;for(let J0 of l){let Q0=J0.contentRect.height,_0=J0.contentRect.width,G0=q?_0:Q0,D0=q?Z.cw:Z.ch;if(Z.cw=_0,Z.ch=Q0,Math.abs(G0-D0)>1){if(z.viewportState.containerSize=G0,Z.ii)I(),Z.rfn(),h.emit("resize",{height:Q0,width:_0})}if(Z.ii)for(let W0=0;W0<K0.length;W0++)K0[W0](_0,Q0)}});if(Z.vre)o0.observe(H.viewport);let n0={dom:H,emitter:h,resolvedConfig:u,rawConfig:J,rendered:O,pool:L,itemState:o,sharedState:z,renderRange:F,isHorizontal:q,classPrefix:N,contentSizeHandlers:A0,idleHandlers:Y0,afterScroll:X0,clickHandlers:e,keydownHandlers:Z0,resizeHandlers:K0,destroyHandlers:M0,methods:U0,onScrollFrame:u0,resizeObserver:o0,applyTemplate:s0,updateContentSize:I},g0=I2(Z,n0);Z.dm=p2(Z,n0,g0),Z.sc=h2(Z,n0);let A2=new Map;for(let l of c)if(l.methods)for(let J0 of l.methods){let Q0=A2.get(J0);if(Q0)throw Error(`[vlist/builder] Method "${J0}" is registered by both "${Q0}" and "${l.name}"`);A2.set(J0,l.name)}for(let l of c)l.setup(g0);if(!U0.has("_getFocusedIndex")){let l=-1,J0=`${N}-item--focused`,Q0=(D0,W0)=>{let L0=Z.vtf();if(W0<0||W0>=L0)return;l=W0,H.root.setAttribute("aria-activedescendant",`${G}-item-${W0}`);let k0=q?Z.cw:Z.ch;if(Z.sst(Z.gsp(W0,Z.hc,k0,L0,"center")),Z.ls=Z.sgt(),Z.rfn(),D0>=0&&D0!==W0)O.get(D0)?.classList.remove(J0);O.get(W0)?.classList.add(J0)},_0=()=>{if(Z.id)return;if(!H.root.matches(":focus-visible"))return;let D0=Z.vtf();if(D0===0)return;Q0(-1,l>=0?Math.min(l,D0-1):0)};H.root.addEventListener("focusin",_0);let G0=(D0)=>{if(Z.id)return;let W0=D0.relatedTarget;if(W0&&H.root.contains(W0))return;if(l>=0)O.get(l)?.classList.remove(J0);H.root.removeAttribute("aria-activedescendant")};H.root.addEventListener("focusout",G0),Z0.push((D0)=>{if(Z.id)return;let W0=Z.vtf();if(W0===0)return;let L0=l,k0=L0;switch(D0.key){case"ArrowUp":k0=L0<=0?W0-1:L0-1;break;case"ArrowDown":k0=L0>=W0-1?0:L0+1;break;case"Home":k0=0;break;case"End":k0=W0-1;break;default:return}D0.preventDefault(),Q0(L0,k0)}),M0.push(()=>{H.root.removeEventListener("focusin",_0),H.root.removeEventListener("focusout",G0)})}if(Z.ii=!0,g0.state.isInitialized=!0,I(),Z.rfn(),_&&Z.it.length>0){let l=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(l),Z.ls=l,Z.rfn()}return g2(Z,H,h,O,L,U0,c,M0,g0,_,v,G2,O2,E2,u0,o0,()=>{if(b.ob)b.ob.disconnect()},()=>{if(C)clearTimeout(C)})}q2();var h0=(J,X,q={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:N=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,w=0,k=0,y=0,A=0,v=!1,_=!1,G=0,E=0,D=0,T=null,$=!1,V=null,u=null,c=Y?"width":"height",r=Y?"translateX":"translateY",S=Y?(b)=>b.clientX:(b)=>b.clientY,H=Y?"left":"top",g=document.createElement("div"),t=document.createElement("div"),h=N?document.createElement("div"):null,R=()=>{if(g.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,Y)g.classList.add(`${j}-scrollbar--horizontal`);if(g.appendChild(t),J.appendChild(g),h){if(h.className=`${j}-scrollbar-hover`,Y)h.classList.add(`${j}-scrollbar-hover--horizontal`),h.style.height=`${U}px`;else h.style.width=`${U}px`;J.appendChild(h)}},p=()=>{if(T)clearTimeout(T),T=null},P=()=>{if(!Q)return;p(),T=setTimeout(L,K)},M=()=>{if(w<=k)return;if(p(),!$)g.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!v&&!_)P()},L=()=>{if(v||_)return;g.classList.remove(`${j}-scrollbar--visible`),$=!1},Z=(b,o)=>{w=b,k=o;let j0=w>k;if(g.style.display=j0?"":"none",!j0){L();return}let f=k/w;y=Math.max(B,f*k),t.style[c]=`${y}px`,A=k-y,C(D)},C=(b)=>{if(D=b,w<=k||A<=0)return;let o=w-k,f=Math.min(1,Math.max(0,b/o))*A;t.style.transform=`${r}(${f}px)`},a=(b)=>{if(b.target===t)return;let o=g.getBoundingClientRect(),n=S(b)-o[H]-y/2,q0=Math.max(0,Math.min(n,A))/A,X0=w-k,Y0=q0*X0;X(Y0),M()},d=(b)=>{b.preventDefault(),b.stopPropagation(),v=!0,G=S(b),E=D,p(),g.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",F),document.addEventListener("mouseup",x)},F=(b)=>{if(!v)return;let o=S(b)-G,j0=A>0?o/A:0,f=w-k,n=j0*f,i=Math.max(0,Math.min(E+n,f)),X0=i/f*A;if(t.style.transform=`${r}(${X0}px)`,u=i,V===null)V=requestAnimationFrame(()=>{if(u!==null)X(u);V=null})},x=()=>{if(v=!1,V!==null)cancelAnimationFrame(V),V=null;if(u!==null)X(u),u=null;if(g.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)P();document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",x)},z=()=>{if(W)M()},O=()=>{if(!v){if(_=!1,Q)P()}},m=()=>{_=!0,p(),M()},I=()=>{if(_=!1,!v&&Q)P()},s=()=>{if(p(),V!==null)cancelAnimationFrame(V),V=null;if(g.removeEventListener("click",a),g.removeEventListener("mouseenter",m),g.removeEventListener("mouseleave",I),t.removeEventListener("mousedown",d),J.removeEventListener("mouseenter",z),J.removeEventListener("mouseleave",O),document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",x),h){if(h.removeEventListener("mouseenter",m),h.removeEventListener("mouseleave",I),h.parentNode)h.parentNode.removeChild(h)}if(g.parentNode)g.parentNode.removeChild(g)};if(R(),g.addEventListener("click",a),g.addEventListener("mouseenter",m),g.addEventListener("mouseleave",I),t.addEventListener("mousedown",d),J.addEventListener("mouseenter",z),J.addEventListener("mouseleave",O),h)h.addEventListener("mouseenter",m),h.addEventListener("mouseleave",I);return{show:M,hide:L,updateBounds:Z,updatePosition:C,isVisible:()=>$,destroy:s}};var e2=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=h0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,K),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let B=q.getCachedCompression();X.updateBounds(B.virtualSize,q.state.viewportState.containerSize);let N=X;q.afterScroll.push((U,W)=>{N.updatePosition(U),N.show()}),q.resizeHandlers.push((U,W)=>{if(N){let w=q.getCachedCompression();N.updateBounds(w.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(N){let U=q.getCachedCompression();N.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(N)N.destroy()})},destroy(){if(X)X.destroy(),X=null}}};var oJ=0.65,nJ=0.5,iJ=0.95,tJ=0.1,eJ=5,J1=100,JJ=()=>{let J=null,X=0,q=!1,j=0,Y=null,Q=0,K=0,B=null,N=[];return{name:"withScale",priority:20,setup(U){let{dom:W,config:w}=U,{classPrefix:k,horizontal:y}=w,A=()=>{let E=U.getVirtualTotal(),D=R0(E,U.sizeCache);if(D.isCompressed&&!q){q=!0,U.scrollController.enableCompression(D),U.updateContentSize(D.virtualSize),U.setScrollFns(()=>X,(g)=>{if(X=g,j=g,Y!==null)cancelAnimationFrame(Y),Y=null});let T=()=>{let g=j-X;if(Math.abs(g)<nJ)X=j,Y=null;else{X+=g*oJ;let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,h)),Y=requestAnimationFrame(T)}U.scrollController.scrollTo(X)},$=W.viewport,V=(g)=>{g.preventDefault();let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+g.deltaY,h)),Y===null)Y=requestAnimationFrame(T)};$.addEventListener("wheel",V,{passive:!1});let u=()=>{if(B!==null)cancelAnimationFrame(B),B=null},c=(g)=>{if(u(),Y!==null)cancelAnimationFrame(Y),Y=null;let t=g.touches[0];if(!t)return;let h=y?t.clientX:t.clientY;Q=h,K=X,N=[{time:performance.now(),y:h}]},r=(g)=>{g.preventDefault();let t=g.touches[0];if(!t)return;let h=y?t.clientX:t.clientY,R=performance.now();if(N.push({time:R,y:h}),N.length>eJ)N.shift();let p=Q-h,M=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,L=Math.max(0,Math.min(K+p,M));X=L,j=L,U.scrollController.scrollTo(L)},S=(g)=>{let t=performance.now(),h=N.filter((M)=>t-M.time<J1),R=0;if(h.length>=2){let M=h[0],L=h[h.length-1],Z=L.time-M.time;if(Z>0)R=(M.y-L.y)/Z}if(N=[],Math.abs(R)<tJ)return;let p=R*16,P=()=>{if(p*=iJ,Math.abs(p)<0.5){B=null;return}let L=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+p;if(Z=Math.max(0,Math.min(Z,L)),Z<=0&&p<0||Z>=L&&p>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(P)};B=requestAnimationFrame(P)};if($.addEventListener("touchstart",c,{passive:!0}),$.addEventListener("touchmove",r,{passive:!1}),$.addEventListener("touchend",S,{passive:!0}),$.addEventListener("touchcancel",S,{passive:!0}),U.destroyHandlers.push(()=>{if($.removeEventListener("wheel",V),$.removeEventListener("touchstart",c),$.removeEventListener("touchmove",r),$.removeEventListener("touchend",S),$.removeEventListener("touchcancel",S),u(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${k}-scrollbar`)){if(J=h0(W.viewport,(t)=>U.scrollController.scrollTo(t),{},k,y),!W.viewport.classList.contains(`${k}-viewport--custom-scrollbar`))W.viewport.classList.add(`${k}-viewport--custom-scrollbar`);J.updateBounds(D.virtualSize,U.state.viewportState.containerSize);let g=J;U.afterScroll.push((t,h)=>{if(g)g.updatePosition(t),g.show()}),U.resizeHandlers.push((t,h)=>{if(g){let R=U.getCachedCompression();g.updateBounds(R.virtualSize,U.state.viewportState.containerSize)}})}}else if(!D.isCompressed&&q)q=!1,U.scrollController.disableCompression(),U.updateContentSize(D.actualSize);else if(D.isCompressed)U.scrollController.updateConfig({compression:D}),U.updateContentSize(D.virtualSize);if(J)J.updateBounds(D.virtualSize,U.state.viewportState.containerSize);U.state.cachedCompression={state:D,totalItems:E}};U.updateCompressionMode=A;let v=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return v()},U.setVisibleRangeFn((E,D,T,$,V)=>{_=null,G=null;let u=R0($,T);i2(E,D,T,$,u,V)}),U.setScrollToPosFn((E,D,T,$,V)=>{let u=R0($,D);return t2(E,D,T,$,u,V)});let _=null,G=null;U.setPositionElementFn((E,D)=>{let T=U.getVirtualTotal(),$=R0(T,U.sizeCache);if($.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||D<G)G=D,_=Math.round(l0(D,V,U.sizeCache,T,U.state.viewportState.containerSize,$));let u=_+U.sizeCache.getOffset(D)-U.sizeCache.getOffset(G),c=U.config.horizontal;E.style.transform=c?`translateX(${u}px)`:`translateY(${u}px)`}else{let V=Math.round(U.sizeCache.getOffset(D)),u=U.config.horizontal;E.style.transform=u?`translateX(${V}px)`:`translateY(${V}px)`}}),A(),U.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(B!==null)cancelAnimationFrame(B),B=null}}};var QJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:Y}=J,Q=new Map,K=0,B=0,N=(R)=>{let p=Q.get(R);if(!p)p={items:Array(X),count:0,lastAccess:Date.now()},Q.set(R,p);else p.lastAccess=Date.now();return p},U=(R)=>{return Math.floor(R/X)},W=(R)=>{return R%X},w=()=>K,k=(R)=>{K=R},y=(R)=>{if(R<0||R>=K)return;let p=U(R),P=Q.get(p);if(!P)return;return P.items[W(R)]},A=(R)=>{if(R<0||R>=K)return!1;let p=U(R),P=Q.get(p);if(!P)return!1;return P.items[W(R)]!==void 0},v=(R,p)=>{let P=U(R),M=N(P),L=W(R),Z=M.items[L]===void 0;if(M.items[L]=p,Z)M.count++,B++;if(R>=K)K=R+1},_=(R,p)=>{for(let P=0;P<p.length;P++){let M=p[P];if(M!==void 0)v(R+P,M)}},G=(R)=>{if(R<0||R>=K)return!1;let p=U(R),P=Q.get(p),M=W(R);if(!(P!==void 0&&P.items[M]!==void 0))return!1;let Z=p,C=Array.from(Q.keys()).filter((d)=>d>=Z).sort((d,F)=>d-F),a=[];for(let d of C){let F=Q.get(d),x=d*X;for(let z=0;z<X;z++){if(F.items[z]===void 0)continue;let O=x+z;if(O<=R)continue;a.push({oldIndex:O,item:F.items[z]})}}if(P.items[M]=void 0,P.count--,B--,P.count===0)Q.delete(p);for(let{oldIndex:d}of a){let F=U(d),x=Q.get(F);if(!x)continue;let z=W(d);if(x.items[z]!==void 0){if(x.items[z]=void 0,x.count--,B--,x.count===0)Q.delete(F)}}for(let{oldIndex:d,item:F}of a){let x=d-1,z=U(x),O=N(z),m=W(x);O.items[m]=F,O.count++,B++}return K--,!0},E=(R,p)=>{let P=[];for(let M=R;M<=p&&M<K;M++)P.push(y(M));return P},D=(R,p)=>{for(let P=R;P<=p&&P<K;P++)if(!A(P))return!1;return!0},T=()=>{let R=[],p=null,P=Array.from(Q.keys()).sort((M,L)=>M-L);for(let M of P){let L=Q.get(M);if(!L)continue;let Z=M*X;for(let C=0;C<X;C++){let a=Z+C;if(a>=K)break;if(L.items[C]!==void 0)if(p===null)p={start:a,end:a};else if(a===p.end+1)p.end=a;else R.push(p),p={start:a,end:a};else if(p!==null)R.push(p),p=null}}if(p!==null)R.push(p);return R},$=(R,p)=>{let P=[],M=null;for(let L=R;L<=p&&L<K;L++)if(!A(L))if(M===null)M={start:L,end:L};else M.end=L;else if(M!==null)P.push(M),M=null;if(M!==null)P.push(M);return P},V=(R)=>{return Q.has(R)},u=(R)=>{let p=Q.get(R);if(p)p.lastAccess=Date.now()},c=(R,p)=>{if(R>p||Q.size===0)return;let P=Date.now(),M=U(Math.max(0,R)),L=U(Math.min(K-1,p));for(let Z=M;Z<=L;Z++){let C=Q.get(Z);if(C)C.lastAccess=P}},r=(R,p)=>{if(B<=q)return 0;let P=Math.max(0,R-j),M=Math.min(K-1,p+j),L=U(P),Z=U(M),C=0,a=[];for(let[d,F]of Q)if(d<L||d>Z)C+=F.count,a.push(d),B-=F.count,Q.delete(d);if(C>0&&Y)Y(C,a);return C},S=()=>{if(B<=q)return 0;let R=Array.from(Q.entries()).sort(([,M],[,L])=>M.lastAccess-L.lastAccess),p=0,P=[];for(let[M,L]of R){if(B<=q)break;p+=L.count,B-=L.count,P.push(M),Q.delete(M)}if(p>0&&Y)Y(p,P);return p},H=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},g=()=>B,t=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:w,setTotal:k,get:y,has:A,set:v,setRange:_,delete:G,getRange:E,isRangeLoaded:D,getLoadedRanges:T,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:V,touchChunk:u,touchChunksForRange:c,evictDistant:r,evictToLimit:S,getStats:H,getCachedCount:g,clear:t,reset:()=>{t(),K=0}}},Q1=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],Q=q[q.length-1];if(Y.start<=Q.end+1)Q.end=Math.max(Q.end,Y.end);else q.push({...Y})}return q},jJ=(J,X,q)=>{let j=Math.floor(J.start/q)*q,Y=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:Y};if(X.length===0)return[Q];let K=[],B=Q1(X),N=Q.start;for(let U of B){if(U.end<N)continue;if(U.start>Q.end)break;if(U.start>N)K.push({start:N,end:Math.min(U.start-1,Q.end)});if(N=U.end+1,N>Q.end)break}if(N<=Q.end)K.push({start:N,end:Q.end});return K};var qJ=(J={})=>{let{maskCharacter:X=a2,maxSampleSize:q=s2}=J,j=[],Y=!1,Q=0,K=(w)=>{if(Y||w.length===0)return;let k=Math.min(w.length,q);for(let y=0;y<k;y++){let A=w[y];if(!A||typeof A!=="object")continue;let v={};for(let[_,G]of Object.entries(A)){if(_.startsWith("_")||_==="id")continue;v[_]=String(G??"").length}if(Object.keys(v).length>0)j.push(v)}Y=!0},B=()=>Y,N=(w)=>{let k={id:`${o2}${Q++}`,[j2]:!0,_index:w};if(j.length===0)return k.label=X.repeat(12),k;let y=j[w%j.length];for(let[A,v]of Object.entries(y))k[A]=X.repeat(Math.max(1,v));return k};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(w,k)=>{let y=[];for(let A=w;A<=k;A++)y.push(N(A));return y},clear:()=>{j=[],Y=!1,Q=0}}},r0=(J)=>{if(!J||typeof J!=="object")return!1;return J[j2]===!0};var j1=50,XJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=j1,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=QJ({...Y,onEvict:(f,n)=>{U?.(f),$()}}),w=null,k=()=>{if(!w)w=qJ(Q);return w},y=new Map,A=!1,v,_=!0,G,E=[],D=0,T=new Map,$=()=>{B?.(h())},V=()=>{y.clear();let f=W.getLoadedRanges();for(let n of f)for(let i=n.start;i<=n.end;i++){let q0=W.get(i);if(q0&&!r0(q0))y.set(q0.id,i)}},u=(f,n)=>{if(!r0(n))y.set(n.id,f)},c=(f)=>{y.delete(f)},r=(f,n)=>{return`${f}-${n}`},S=()=>W.getTotal(),H=()=>W.getCachedCount(),g=()=>A,t=()=>_,h=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:E,error:v,hasMore:_,cursor:G}),R=()=>W,p=()=>k(),P=(f)=>{let n=W.get(f);if(n!==void 0)return n;if(f>=0&&f<W.getTotal())return k().generate(f);return},M=(f)=>{let n=y.get(f);if(n===void 0)return;return W.get(n)},L=(f)=>{return y.get(f)??-1},Z=(f)=>{let n=W.get(f);return n!==void 0&&!r0(n)},C=(f,n)=>{let i=[],q0=W.getTotal(),X0=0,Y0=0;W.touchChunksForRange(f,Math.min(n,q0-1));for(let e=f;e<=n&&e<q0;e++){let Z0=W.get(e);if(Z0!==void 0)i.push(Z0),X0++;else i.push(k().generate(e)),Y0++}return i},a=(f)=>{W.setTotal(f),_=W.getCachedCount()<f,$()},d=(f,n=0,i)=>{if(X&&f.length>0){let q0=k();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(f)}for(let q0=0;q0<f.length;q0++){let X0=f[q0];if(X0!==void 0){let Y0=n+q0;W.set(Y0,X0),u(Y0,X0)}}if(i!==void 0)W.setTotal(i);else if(n+f.length>W.getTotal())W.setTotal(n+f.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)_=!1;$(),N?.(f,n,W.getTotal())},F=(f,n)=>{let i=y.get(f);if(i===void 0)return!1;let q0=W.get(i);if(!q0)return!1;let X0={...q0,...n};if(W.set(i,X0),n.id!==void 0&&n.id!==f)c(f),u(i,X0);return $(),!0},x=(f)=>{let n=y.get(f);if(n===void 0)return!1;if(!W.delete(n))return!1;return V(),T.clear(),$(),!0},z=async(f,n)=>{if(!X)return;let i=r(f,n);if(T.has(i))return;let q0=W.getLoadedRanges(),X0=jJ({start:f,end:n},q0,W.chunkSize);if(X0.length===0)return;let Y0=W.chunkSize,e=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),M0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=M0;U0++){let V0=U0*Y0,N0=V0+Y0-1,F0=r(V0,N0);if(!e.some((T0)=>T0.start===V0)&&!T.has(F0))e.push({start:V0,end:N0})}}let Z0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),M0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=M0;U0++){let V0=U0*Y0,N0=V0+Y0-1,F0=r(V0,N0);if(T.has(F0)){let T0=T.get(F0);if(!Z0.includes(T0))Z0.push(T0)}}}for(let K0 of e){let A0=r(K0.start,K0.end),M0=(async()=>{E.push(K0),A=!0,v=void 0,$();try{let U0=K0.end-K0.start+1,V0={offset:K0.start,limit:U0,cursor:void 0},N0=await X.read(V0);if(d(N0.items,K0.start,N0.total),N0.cursor)G=N0.cursor;let F0=K0.start+N0.items.length;if(F0>=D){if(D=F0,N0.hasMore!==void 0)_=N0.hasMore;else if(N0.total!==void 0)_=F0<N0.total}}catch(U0){v=U0 instanceof Error?U0:Error(String(U0))}finally{T.delete(A0),E=E.filter((U0)=>U0.start!==K0.start||U0.end!==K0.end),A=T.size>0,$()}})();T.set(A0,M0),Z0.push(M0)}await Promise.all(Z0)},O=async(f,n)=>{if(W.isRangeLoaded(f,n))return;await z(f,n)},m=async()=>{if(!X)return;await z(0,K-1)},I=async()=>{if(!X||A||!_)return!1;let f=W.getCachedCount(),n=W.getTotal(),i=f,q0=Math.min(i+K-1,n>0?n-1:i+K-1);if(i>=n&&n>0)return _=!1,!1;return await z(i,q0),W.getCachedCount()>f},s=async()=>{if(W.clear(),W.setTotal(0),y.clear(),w)w.clear();T.clear(),E=[],A=!1,G=void 0,_=!0,D=0,v=void 0,$()},b=(f,n)=>{if(W.evictDistant(f,n)>0)V()},o=()=>{W.clear(),y.clear(),G=void 0,v=void 0,E=[],A=!1,$()},j0=()=>{if(W.reset(),y.clear(),w)w.clear();G=void 0,_=!0,D=0,v=void 0,E=[],A=!1,$()};if(q&&q.length>0)d(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:h,getTotal:S,getCached:H,getIsLoading:g,getHasMore:t,getStorage:R,getPlaceholders:p,getItem:P,getItemById:M,getIndexById:L,isItemLoaded:Z,getItemsInRange:C,setTotal:a,setItems:d,updateItem:F,removeItem:x,loadRange:z,ensureRange:O,loadInitial:m,loadMore:I,reload:s,evictDistant:b,clear:o,reset:j0}};var YJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??c2,B=q?.preloadThreshold??l2,N=q?.preloadAhead??d2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,w=U.config.reverse,k=U.methods.get("_getGridLayout"),y=(S)=>{if(k){let H=k();if(H){let g=U.dataManager.getTotal();return H.getItemRange(S.start,S.end,g)}}return S},A=XJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let S=U.getVirtualTotal();U.sizeCache.rebuild(S),U.updateCompressionMode();let H=U.getCachedCompression();U.state.viewportState.totalSize=H.virtualSize,U.state.viewportState.actualSize=H.actualSize,U.state.viewportState.isCompressed=H.isCompressed,U.state.viewportState.compressionRatio=H.ratio,U.updateContentSize(H.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(S,H,g)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:S,total:g,offset:H})}});U.replaceDataManager(A);let v=null,_=null,G=0,E=!1,D=null,T=120,$=(S=!1)=>{if(E=!1,_=null,S)v=null;if(D!==null)clearTimeout(D),D=null},V=()=>{if(!_)return;_=null;let{renderRange:S}=U.state.viewportState;if(S.end<S.start)return;v=null;let H=y(S);U.dataManager.ensureRange(H.start,H.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})};U.afterScroll.push((S,H)=>{if(U.state.isDestroyed)return;let g=U.scrollController.getVelocity(),h=U.scrollController.isTracking()&&g<=K;if(G>K&&g<=K)E=!0;else if(E&&g>K)$();if(E&&g<0.5)$(!0);if(G=g,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(E||_))$(!0),h=!0;let p=E&&g>0.5;if(h&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(w){if(S<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((L)=>{W.emit("error",{error:L,context:"loadMore"})})}else if(U.state.viewportState.totalSize-S-U.state.viewportState.containerSize<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((Z)=>{W.emit("error",{error:Z,context:"loadMore"})})}let{renderRange:P}=U.state.viewportState;if(!v||P.start!==v.start||P.end!==v.end){if(v={start:P.start,end:P.end},h&&!p){if(_=null,D!==null)clearTimeout(D),D=null;let L=y(P),Z=L.start,C=L.end,a=k?U.dataManager.getTotal():U.getVirtualTotal();if(g>B)if(H==="down")C=Math.min(L.end+N,a-1);else Z=Math.max(L.start-N,0);U.dataManager.ensureRange(Z,C).catch((d)=>{W.emit("error",{error:d,context:"ensureRange"})})}else if(_={start:P.start,end:P.end},p){if(D!==null)clearTimeout(D);D=setTimeout(()=>{D=null,V(),$()},T)}}});let u=200,c=null;U.afterScroll.push((S,H)=>{if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,V(),$()},u)}),U.destroyHandlers.push(()=>{if(c!==null)clearTimeout(c),c=null;$()});let r=()=>{if(U.state.isDestroyed)return;v=null;let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);U.dataManager.ensureRange(H.start,H.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})}V()};if(window.addEventListener("online",r),U.destroyHandlers.push(()=>{window.removeEventListener("online",r)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{v=null,_=null,U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);W.emit("load:start",{offset:H.start,limit:H.end-H.start+1}),await U.dataManager.ensureRange(H.start,H.end)}}),U.methods.set("reload",async()=>{v=null,_=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);await U.dataManager.ensureRange(H.start,H.end)}}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((S)=>{W.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var UJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:q,state:j,config:Y,emitter:Q}=X;if(q.root.style.overflow="visible",q.root.style.height="auto",Y.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.disableWheelHandler(),X.setScrollTarget(window),X.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(Y.horizontal){let w=W.left+window.scrollX;window.scrollTo(w+U,window.scrollY)}else{let w=W.top+window.scrollY;window.scrollTo(window.scrollX,w+U)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,N=()=>{let{innerWidth:U,innerHeight:W}=window,w=Y.horizontal?U:W,k=Y.horizontal?B:K;if(Math.abs(w-k)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let y=0;y<X.resizeHandlers.length;y++)X.resizeHandlers[y](U,W);X.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),J=()=>{window.removeEventListener("resize",N)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)q=Y;else j=Y-1}return q},KJ=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].firstDataIndex<=X)q=Y;else j=Y-1}return q},BJ=(J,X)=>{if(J===0)return[];let q=[],j=X(0),Y=0,Q=0;for(let K=1;K<J;K++){let B=X(K);if(B!==j){let N=K-Y;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:N}),Q=Q+1+N,j=B,Y=K}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:J-Y}),q},Y2=(J,X)=>{if(J.length===0||X.length===0)return[];let q=J.length+X.length,j=Array(q),Y=0;for(let Q of X){j[Y]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},Y++;for(let K=0;K<Q.count;K++)j[Y]=J[Q.firstDataIndex+K],Y++}return j},U2=(J,X)=>{let q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return q(Y.dataIndex)}},ZJ=(J,X)=>{let q=BJ(J,X.getGroupForIndex),j=J+q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(k)=>{if(q.length===0)return{type:"item",dataIndex:k,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=X2(q,k),A=q[y];if(k===A.headerLayoutIndex)return{type:"header",group:A};let v=k-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+v,group:A}},layoutToDataIndex:(k)=>{if(q.length===0)return k;let y=X2(q,k),A=q[y];if(k===A.headerLayoutIndex)return-1;let v=k-A.headerLayoutIndex-1;return A.firstDataIndex+v},dataToLayoutIndex:(k)=>{if(q.length===0)return k;let y=KJ(q,k),A=q[y],v=k-A.firstDataIndex;return A.headerLayoutIndex+1+v},getGroupAtLayoutIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=X2(q,k);return q[y]},getGroupAtDataIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=KJ(q,k);return q[y]},getHeaderHeight:typeof Y==="number"?(k)=>Y:(k)=>{let y=q[k];if(!y)return 0;return Y(y.key,k)},rebuild:(k)=>{q=BJ(k,X.getGroupForIndex),j=k+q.length}}};var NJ=(J,X,q,j,Y,Q=!1,K=0)=>{let B=document.createElement("div");if(B.className=`${Y}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",Q)B.style.top="0",B.style.bottom="0",B.style.left=K?`${K}px`:"0";else B.style.top=K?`${K}px`:"0",B.style.left="0",B.style.right="0";J.insertBefore(B,J.firstChild);let N=-1,U=!1,W=0,w=(G)=>{if(G===N)return;N=G;let E=X.groups;if(G<0||G>=E.length){B.textContent="";return}let D=E[G],T=j.headerTemplate(D.key,D.groupIndex),$=X.getHeaderHeight(G);if(Q)B.style.width=`${$}px`;else B.style.height=`${$}px`;if(typeof T==="string")B.innerHTML=T;else B.replaceChildren(T)},k=(G)=>{let E=X.groups;if(E.length===0){A();return}let D=q.getOffset(E[0].headerLayoutIndex);if(G<D){A();return}let T=0,$=E.length-1;while(T<$){let S=T+$+1>>>1;if(q.getOffset(E[S].headerLayoutIndex)<=G)T=S;else $=S-1}let V=T;if(!U)y();w(V);let u=X.getHeaderHeight(V),c=0,r=V+1;if(r<E.length){let H=q.getOffset(E[r].headerLayoutIndex)-G;if(H<u)c=H-u}if(c!==W)if(W=c,c===0)B.style.transform="";else{let S=Math.round(c);B.style.transform=Q?`translateX(${S}px)`:`translateY(${S}px)`}},y=()=>{if(U)return;U=!0,B.style.display=""},A=()=>{if(!U)return;U=!1,B.style.display="none",N=-1,W=0,B.style.transform=""},v=()=>{let G=N;if(N=-1,G>=0)w(G)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:k,refresh:v,show:y,hide:A,destroy:_}};var _J=(J,X,q,j,Y,Q)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U-q),w;switch(Q){case"center":w=B-q/2+N/2;break;case"end":w=B-q+N;break;case"start":default:w=B;break}return Math.max(0,Math.min(w,W))};var $0=(J,X,q,j,Y="start",Q,K=_J)=>{return K(J,X,q,j,Q,Y)};var VJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(Q){let{dom:K,config:B,rawConfig:N}=Q,{classPrefix:U}=B,w=N.item.height;j=N.items?[...N.items]:[];let k=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=ZJ(k,y),Y=Y2(j,X.groups);let A=U2(X,w);Q.setSizeConfig(A),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let v=N.item.template,{headerTemplate:_}=J,G=(h,R,p)=>{if(v0(h))return _(h.groupKey,h.groupIndex);return v(h,R,p)},E=Q.methods.get("_getGridLayout"),D=Q.methods.get("_replaceGridRenderer"),T=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),u=Q.methods.get("_getTableHeaderHeight");if(E&&D){if(T)T((P)=>{let M=Y[P];return!!(M&&v0(M))});let{createGridRenderer:h}=(B2(),dJ(WJ)),R=E(),p=h(K.items,G,Q.sizeCache,R,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);D(p)}else if($&&V)V((h)=>v0(h),J.headerTemplate);else Q.replaceTemplate(G);let c=u?u():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=NJ(K.root,X,Q.sizeCache,{...y,sticky:y.sticky??!1},U,B.horizontal,c);let h=q;Q.afterScroll.push((R,p)=>{h.update(R)}),q.update(Q.scrollController.getScrollTop())}let r=N.item?.striped,S=()=>{if(r!=="data"&&r!=="even"&&r!=="odd")return;let h=new Int32Array(Y.length),R=r==="odd"?1:0,p=0;for(let P=0;P<Y.length;P++)if(v0(Y[P])){if(h[P]=-1,r==="even"||r==="odd")p=0}else h[P]=p+++R;Q.setStripeIndexFn((P)=>{if(P<0||P>=h.length)return P;return h[P]})};S();let H=()=>{if(!X)return;X.rebuild(j.length),Y=Y2(j,X.groups);let h=U2(X,w);if(Q.setSizeConfig(h),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),S(),q)q.refresh()};Q.methods.set("setItems",(h)=>{j=h.slice(),H()}),Q.methods.set("appendItems",(h)=>{j.push(...h),H()}),Q.methods.set("prependItems",(h)=>{j.unshift(...h),H()}),Q.methods.set("removeItem",(h)=>{j=j.filter((R)=>R.id!==h),H()});let{animateScroll:g,cancelScroll:t}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(h,R)=>{let p=X.dataToLayoutIndex(h),{align:P,behavior:M,duration:L}=y0(R),Z=Q.dataManager.getTotal(),C=Q.adjustScrollPosition($0(p,Q.sizeCache,Q.state.viewportState.containerSize,Z,P,Q.getCachedCompression()));if(M==="smooth")g(Q.scrollController.getScrollTop(),C,L);else t(),Q.scrollController.scrollTo(C)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(t(),q)q.destroy(),q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var DJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},Q=(A)=>{if(A<=0)return 0;if(!j)return Math.ceil(A/X);let v=0,_=0,G=0;for(let E=0;E<A;E++)if(j(E)){if(G++,_>0)v++,_=0;v++,_=0}else if(_++,_>=X)v++,_=0;if(_>0)v++;return v},K=(A)=>{return Y.row=B(A),Y.col=N(A),Y},B=(A)=>{if(!j)return Math.floor(A/X);let v=0,_=0;for(let G=0;G<=A;G++)if(j(G)){if(_>0)v++,_=0;if(G===A)return v;v++,_=0}else{if(G===A)return v;if(_++,_>=X)v++,_=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${v}`),v},N=(A)=>{if(!j)return A%X;if(j(A))return 0;let v=0;for(let _=0;_<=A;_++)if(j(_))v=0;else{if(_===A)return v;if(v++,v>=X)v=0}return v},U=(A,v,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,A*X),V=Math.min(_-1,(v+1)*X-1);return{start:$,end:V}}let G=-1,E=-1,D=0,T=0;for(let $=0;$<_;$++){if(j($)){if(T>0)D++,T=0;if(D>=A&&D<=v){if(G===-1)G=$;E=$}D++,T=0}else{if(D>=A&&D<=v){if(G===-1)G=$;E=$}if(T++,T>=X)D++,T=0}if(D>v&&T===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:E}},W=(A,v,_)=>{if(v<0||v>=X)return-1;let G=A*X+v;if(G<0||G>=_)return-1;return G},w=(A)=>{let v=(X-1)*q;return Math.max(0,(A-v)/X)};return{get columns(){return X},get gap(){return q},update:(A)=>{if(A.columns!==void 0)X=Math.max(1,Math.floor(A.columns));if(A.gap!==void 0)q=A.gap;if(A.isHeaderFn!==void 0)j=A.isHeaderFn},getTotalRows:Q,getPosition:K,getRow:B,getCol:N,getItemRange:U,getItemIndex:W,getColumnWidth:w,getColumnOffset:(A,v)=>{let _=w(v);return A*(_+q)}}};B2();var Y1=new Set,MJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:Q,config:K,rawConfig:B}=j,{classPrefix:N}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,W=C0(b0(B.padding),U),w=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},k=B.items?.some((C)=>C.__groupHeader===!0),y={columns:J.columns,gap:J.gap??0};if(k)y.isHeaderFn=(C)=>{let a=j.dataManager.getItem(C);return!!(a&&a.__groupHeader===!0)};X=DJ(y);let A=X.gap;j.setVirtualTotalFn(()=>{let C=j.dataManager.getTotal();return X.getTotalRows(C)});let v=B.item,_=K.horizontal?v.width:v.height,G={containerWidth:w(),columns:X.columns,gap:X.gap},E={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof _==="function")j.setSizeConfig((C)=>{let a=G.containerWidth-2,d=(G.columns-1)*G.gap;return E.containerWidth=G.containerWidth,E.columns=G.columns,E.gap=G.gap,E.columnWidth=(a-d)/G.columns,E.row=X.getRow(C),E.column=X.getCol(C),E.totalRows=X.getTotalRows(j.dataManager.getTotal()),E.totalColumns=G.columns,_(C,E)+G.gap});else if(A>0)j.setSizeConfig(_+A);if(j.rebuildSizeCache(),A>0){let C=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=C();return a>0?a-G.gap:0}}Y.root.classList.add(`${N}--grid`);let D=w(),T=B.item.template,$=()=>{q=K2(Y.items,T,j.sizeCache,X,N,D,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>y),j.methods.set("_replaceGridRenderer",(C)=>{q=C}),j.methods.set("_updateGridLayoutForGroups",(C)=>{X.update({isHeaderFn:C});let a=j.dataManager.getTotal(),d=0;for(let F=0;F<a;F++)if(X.getCol(F)===0){let x=j.sizeCache.getSize(F);d+=x}j.sizeCache.getTotalSize=()=>d,j.updateContentSize(d),$()}),j.methods.set("updateGrid",(C)=>{if(C.columns!==void 0){if(!Number.isInteger(C.columns)||C.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");y.columns=C.columns}if(C.gap!==void 0){if(C.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");y.gap=C.gap}if(X)X.update(y);let a=w();if(G.containerWidth=a,G.columns=y.columns,G.gap=y.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let d=0;d<j.contentSizeHandlers.length;d++)j.contentSizeHandlers[d]();if(q)q.clear();j.forceRender()});let V=null,u=null,c=!1,r=()=>{if(c)return;c=!0,V=j.methods.get("_getSelectedIds")??null,u=j.methods.get("_getFocusedIndex")??null},S=-1,H=-1,g=!0,t=K.overscan,h={start:0,end:0},R={start:0,end:0},p=()=>{if(j.state.isDestroyed)return;let C=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!g&&C===S&&a===H)return;S=C,H=a,g=!1;let d=j.getVirtualTotal();if(d===0||a===0)h.start=0,h.end=0;else h.start=Math.max(0,j.sizeCache.indexAtOffset(C)),h.end=Math.min(d-1,Math.max(0,j.sizeCache.indexAtOffset(C+a-1)));R.start=Math.max(0,h.start-t),R.end=Math.min(d-1,h.end+t);let F=j.state.viewportState;F.scrollPosition=C,F.visibleRange.start=h.start,F.visibleRange.end=h.end,F.renderRange.start=R.start,F.renderRange.end=R.end;let x=j.state.lastRenderRange,z=F.isCompressed,O=j.dataManager.getTotal(),m=X.getItemRange(R.start,R.end,O),I=j.dataManager.getItemsInRange(m.start,m.end),s=z?j.getCompressionContext():void 0;r();let b=V?V():Y1,o=u?u():-1;if(q.render(I,m,b,o,s),x.start!==R.start||x.end!==R.end)x.start=R.start,x.end=R.end,Q.emit("range:change",{range:{start:R.start,end:R.end}})},P=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,g=!0,p()};j.setRenderFns(p,P);let M=typeof _==="function";j.resizeHandlers.push((C,a)=>{let d=(U?a:C)-W;if(G.containerWidth=d,q)q.updateContainerWidth(d);if(M){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let F=0;F<j.contentSizeHandlers.length;F++)j.contentSizeHandlers[F]();if(q)q.clear();j.forceRender()}});let{animateScroll:L,cancelScroll:Z}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(C,a)=>{let d=Math.floor(C/J.columns),{align:F,behavior:x,duration:z}=y0(a),O=j.dataManager.getState(),m=X.getTotalRows(O.total),I=Math.max(0,Math.min(d,m-1)),s=j.adjustScrollPosition($0(I,j.sizeCache,j.state.viewportState.containerSize,m,F,j.getCachedCompression()));if(x==="smooth")L(j.scrollController.getScrollTop(),s,z);else Z(),j.scrollController.scrollTo(s)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(Z(),q)q.destroy(),q=null;Y.root.classList.remove(`${N}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var GJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,Y=0,Q=[],K=()=>{let _=(X-1)*q;Y=Math.max(0,(j-_)/X),Q=Array(X);let G=Y+q;for(let E=0;E<X;E++)Q[E]=E*G};K();let B=[],N=0,U=[],W=(_)=>{let G=0,E=_[0];for(let D=1;D<_.length;D++){let T=_[D];if(T<E)E=T,G=D}return G},w=(_,G)=>{if(_<=0)return N=0,B=[],[];let E=Array(X).fill(0),D=Array(X);for(let V=0;V<X;V++)D[V]=[];let T=Array(_);for(let V=0;V<_;V++){let u=W(E),c=G(V),r=E[u];T[V]={index:V,x:Q[u],y:r,lane:u,size:c,crossSize:Y},D[u].push(V),E[u]=r+c+q}B=D;let $=0;for(let V=0;V<X;V++){let u=E[V],c=u>0?u-q:0;if(c>$)$=c}return N=$,T},k=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let G=Array(X).fill(0);for(let D of _){let T=D.y+D.size,$=G[D.lane];if(T>$)G[D.lane]=T}let E=0;for(let D=0;D<X;D++)if(G[D]>E)E=G[D];return E},y=(_,G,E)=>{if(_.length===0||E<=G)return U.length=0,U;if(B.length===0||B.length!==X)return A(_,G,E);U.length=0;for(let D=0;D<X;D++){let T=B[D],$=T.length;if($===0)continue;let V=0,u=$;while(V<u){let c=V+u>>>1,r=_[T[c]];if(r.y+r.size<=G)V=c+1;else u=c}for(let c=V;c<$;c++){let r=_[T[c]];if(r.y>=E)break;U.push(r)}}return U},A=(_,G,E)=>{let D=[];for(let T of _)if(T.y+T.size>G&&T.y<E)D.push(T);return D};return{get columns(){return X},get gap(){return q},get containerSize(){return j},update:(_)=>{let G=!1;if(_.columns!==void 0){let E=Math.max(1,Math.floor(_.columns));if(E!==X)X=E,G=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,G=!0;if(_.containerSize!==void 0&&_.containerSize!==j)j=_.containerSize,G=!0;if(G)K()},calculateLayout:w,getTotalSize:k,getVisibleItems:y}};var U1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),X.push(Q)},clear:()=>{X.length=0}}},K1=1,OJ=(J,X,q,j=!1,Y,Q)=>{let K=U1(),B=new Map,N=new Set,U=0,W="",w=-1,k={selected:!1,focused:!1},y=(S,H)=>{return k.selected=S,k.focused=H,k},A=`${q}-item ${q}-masonry-item`,v=`${q}-item--selected`,_=`${q}-item--focused`,G=(S,H)=>{if(typeof H==="string")S.innerHTML=H;else S.replaceChildren(H)},E=(S,H,g)=>{S.classList.toggle(v,H),S.classList.toggle(_,g)},D=(S,H)=>{if(j)S.style.transform=`translate(${Math.round(H.y)}px, ${Math.round(H.x)}px)`;else S.style.transform=`translate(${Math.round(H.x)}px, ${Math.round(H.y)}px)`},T=(S,H)=>{if(j)S.style.width=`${H.size}px`,S.style.height=`${H.crossSize}px`;else S.style.width=`${H.crossSize}px`,S.style.height=`${H.size}px`},$=(S,H,g,t,h)=>{let R=K.acquire(),p=y(t,h);if(R.className=A,R.dataset.index=String(S),R.dataset.id=String(H.id),R.dataset.lane=String(g.lane),R.ariaSelected=String(t),Q)R.id=`${Q}-item-${S}`;if(Y){let M=Y();if(M!==w)w=M,W=String(M);R.setAttribute("aria-setsize",W),R.setAttribute("aria-posinset",String(S+1))}T(R,g);let P=X(H,S,p);return G(R,P),E(R,t,h),D(R,g),{element:R,lastItemId:H.id,lastSelected:t,lastFocused:h,lastY:g.y,lastX:g.x,lastSize:g.size,lastCrossSize:g.crossSize,lastSeenFrame:U}},V=(S,H,g,t)=>{U++,N.clear();for(let R=0;R<H.length;R++)N.add(H[R].index);for(let[R,p]of B)if(N.has(R))p.lastSeenFrame=U;else if(U-p.lastSeenFrame>K1)K.release(p.element),B.delete(R);let h=null;for(let R=0;R<H.length;R++){let p=H[R],P=p.index,M=S(P);if(!M)continue;let L=g.has(M.id),Z=P===t,C=B.get(P);if(C){let a=C.lastItemId!==M.id,d=C.lastSelected!==L,F=C.lastFocused!==Z,x=C.lastY!==p.y||C.lastX!==p.x,z=C.lastSize!==p.size||C.lastCrossSize!==p.crossSize;if(a||d||F){let O=y(L,Z),m=X(M,P,O);G(C.element,m),E(C.element,L,Z),C.element.dataset.id=String(M.id),C.element.ariaSelected=String(L),C.lastItemId=M.id,C.lastSelected=L,C.lastFocused=Z}if(z)T(C.element,p),C.lastSize=p.size,C.lastCrossSize=p.crossSize;if(x)D(C.element,p),C.lastY=p.y,C.lastX=p.x}else{let a=$(P,M,p,L,Z);if(!h)h=document.createDocumentFragment();h.appendChild(a.element),B.set(P,a)}}if(h)J.appendChild(h)},u=()=>{for(let{element:S}of B.values())K.release(S);B.clear(),J.innerHTML=""};return{render:V,getElement:(S)=>B.get(S)?.element,sortDOM:()=>{S0(J,B.keys(),(S)=>B.get(S)?.element)},clear:u,destroy:()=>{u(),K.clear()}}};var B1=new Set,Z1=100,EJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let X=null,q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:Q,emitter:K,config:B,rawConfig:N}=Y,U=B.classPrefix,W=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let w=b0(N.padding),k=C0(w,W),y=c0(w,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-k},v={columns:J.columns,gap:J.gap??0,containerSize:A()};X=GJ(v);let _=N.item,G=W&&N.item.width?N.item.width:_.height,E={containerWidth:0,columns:0,gap:0,columnWidth:0},D=typeof G==="function"?(d)=>G(d,E):()=>G,T=()=>{let d=Y.dataManager.getTotal(),F=X;E.containerWidth=F.containerSize,E.columns=F.columns,E.gap=F.gap;let x=(F.columns-1)*F.gap;E.columnWidth=Math.max(0,(E.containerWidth-x)/F.columns),j=F.calculateLayout(d,D);let z=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>z,Y.updateContentSize(z)},$=N.item.template;q=OJ(Q.items,$,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,u=null,c=!1,r=()=>{if(c)return;c=!0,V=Y.methods.get("_getSelectedIds")??null,u=Y.methods.get("_getFocusedIndex")??null},S=(d)=>Y.dataManager.getItem(d),H=-1,g=-1,t=!0,h=B.overscan*Z1,R=()=>{if(Y.state.isDestroyed)return;r();let d=Y.scrollController.getScrollTop(),F=Y.state.viewportState.containerSize;if(!t&&d===H&&F===g)return;H=d,g=F,t=!1;let x=Math.max(0,d-h),z=d+F+h,O=X.getVisibleItems(j,x,z),m=V?V():B1,I=u?u():-1;if(q&&O.length>0)q.render(S,O,m,I);let s=Y.state.viewportState;s.scrollPosition=d;let b=O.length,o=b>0?O[0].index:0,j0=b>0?O[b-1].index:0;s.visibleRange.start=o,s.visibleRange.end=j0,s.renderRange.start=o,s.renderRange.end=j0;let f=Y.state.lastRenderRange;if(f.start!==o||f.end!==j0)f.start=o,f.end=j0,K.emit("range:change",{range:{start:o,end:j0}})},p=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,t=!0,R()};Y.setRenderFns(R,p);let P=(d,F)=>{let x=(W?F:d)-k;if(X&&X.containerSize!==x){if(X.update({containerSize:x}),T(),q)q.clear();p()}};Y.resizeHandlers.push(P);let M=()=>{T(),p()},L=Y.dataManager,Z=(d)=>{if(typeof L[d]!=="function")return;let F=L[d].bind(L);L[d]=(...x)=>{F(...x),M()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:C,cancelScroll:a}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(d,F)=>{let x=j[d];if(!x)return;let{align:z,behavior:O,duration:m}=y0(F),I=x.y,s=Y.state.viewportState.containerSize,b=I;if(z==="center")b=I-s/2+x.size/2;else if(z==="end"){b=I-s+x.size;let o=X.getTotalSize(j);if(d===j.length-1)b=Math.max(0,o+y-s)}if(b=Math.max(0,b),b=Y.adjustScrollPosition(b),O==="smooth")C(Y.scrollController.getScrollTop(),b,m);else a(),Y.scrollController.scrollTo(b)}),T(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),Z2=(J,X,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},N2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},a0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return N2(J,[X]);else return Z2(J,[X],q)},FJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},LJ=(J)=>({...J,selected:new Set}),_2=(J,X)=>{return J.focusedIndex=X,J},TJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?X-1:0;return J.focusedIndex=j,J},kJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=q?0:X-1;return J.focusedIndex=j,J},HJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},bJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var W2=(J)=>{return Array.from(J.selected)},V2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var yJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=AJ(q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:K,emitter:B,config:N}=Q,{classPrefix:U,ariaIdPrefix:W}=N;if(X==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let w=new Map,k=()=>{w.clear();let D=Q.dataManager.getTotal(),T=Q.dataManager.getCached();if(T===0)return;if(T>=D){for(let V=0;V<D;V++){let u=Q.dataManager.getItem(V);if(u)w.set(u.id,V)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let V=$.getLoadedRanges();for(let u of V)for(let c=u.start;c<=u.end;c++){let r=Q.dataManager.getItem(c);if(r&&!r._isPlaceholder)w.set(r.id,c)}}};B.on("data:change",({type:D,id:T})=>{if(D==="remove")j.selected.delete(T),k()}),B.on("load:end",({items:D,offset:T})=>{if(!D||D.length===0)return;if(T!==void 0)for(let $=0;$<D.length;$++){let V=D[$];if(V&&V.id!==void 0)w.set(V.id,T+$)}else k()}),k(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=Q.getRenderFns(),A=()=>{y();let D=(T)=>{let $=w.get(T);if($===void 0)return;return Q.dataManager.getItem($)};B.emit("selection:change",{selected:W2(j),items:V2(j,D)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${U}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(K.root.getAttribute("role")==="grid"?K.root.parentElement??K.root:K.root).appendChild(Y);let _=Y;B.on("selection:change",({selected:D})=>{let T=D.length;if(T===0)_.textContent="";else if(T===1)_.textContent="1 item selected";else _.textContent=`${T} items selected`});let G=()=>{if(Q.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let D=Q.dataManager.getTotal();if(D===0)return;let T=j.focusedIndex>=0?Math.min(j.focusedIndex,D-1):0;j=_2(j,T),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${W}-item-${T}`),Q.scrollController.scrollTo(Q.adjustScrollPosition($0(T,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(T);if($)Q.renderer.updateItemClasses(T,j.selected.has($.id),!0)};K.root.addEventListener("focusin",G);let E=(D)=>{if(Q.state.isDestroyed)return;let T=D.relatedTarget;if(T&&K.root.contains(T))return;let $=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),$>=0){let V=Q.dataManager.getItem($);if(V)Q.renderer.updateItemClasses($,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",E),Q.clickHandlers.push((D)=>{if(Q.state.isDestroyed)return;let $=D.target.closest("[data-index]");if(!$)return;let V=parseInt($.dataset.index??"-1",10);if(V<0)return;let u=Q.dataManager.getItem(V);if(!u)return;B.emit("item:click",{item:u,index:V,event:D}),j=_2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=a0(j,u.id,X),A()}),Q.keydownHandlers.push((D)=>{if(Q.state.isDestroyed)return;let T=Q.dataManager.getTotal(),$=j.focusedIndex,V=!1,u=!1,c=j;switch(D.key){case"ArrowUp":c=TJ(j,T,N.wrap),c.focusVisible=!0,V=!0,u=!0;break;case"ArrowDown":c=kJ(j,T,N.wrap),c.focusVisible=!0,V=!0,u=!0;break;case"Home":c=HJ(j,T),c.focusVisible=!0,V=!0,u=!0;break;case"End":c=bJ(j,T),c.focusVisible=!0,V=!0,u=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let r=Q.dataManager.getItem(j.focusedIndex);if(r)c=a0(j,r.id,X),c.focusVisible=!0;V=!0}break}if(V){D.preventDefault(),j=c;let r=j.focusedIndex;if(r>=0){let S=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition($0(r,Q.sizeCache,Q.state.viewportState.containerSize,S.total,"center",Q.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${W}-item-${r}`)}else K.root.removeAttribute("aria-activedescendant");if(u){let{selected:S}=j;if($>=0&&$!==r){let H=Q.dataManager.getItem($);if(H)Q.renderer.updateItemClasses($,S.has(H.id),!1)}if(r>=0){let H=Q.dataManager.getItem(r);if(H)Q.renderer.updateItemClasses(r,S.has(H.id),!0)}}else A()}}),Q.methods.set("select",(...D)=>{j=Z2(j,D,X),A()}),Q.methods.set("deselect",(...D)=>{j=N2(j,D),A()}),Q.methods.set("toggleSelect",(D)=>{j=a0(j,D,X),A()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let D=Q.getAllLoadedItems();j=FJ(j,D,X),k(),A()}),Q.methods.set("clearSelection",()=>{j=LJ(j),A()}),Q.methods.set("getSelected",()=>{return W2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(T)=>{let $=w.get(T);return $===void 0?void 0:Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(_&&_.parentNode)_.remove();K.root.removeEventListener("focusin",G),K.root.removeEventListener("focusout",E)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var $J=(J)=>{let X=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let Y=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),K=q.getVirtualTotal(),B=q.methods.get("getSelected"),N=B&&B().length>0?B():void 0;if(K===0){let k={index:0,offsetInItem:0,total:0};if(N)k.selectedIds=N;return k}let U,W;if(Q.isCompressed){let y=Y/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor(y),K-1)),W=(y-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let w={index:U,offsetInItem:W,total:K};if(N)w.selectedIds=N;return w});let j=(Y)=>{let{index:Q,offsetInItem:K,selectedIds:B}=Y,N=q.getVirtualTotal();if(N===0)return;if(!Number.isFinite(Q)||!Number.isFinite(K))return;if(q.sizeCache.getTotal()!==N){q.sizeCache.rebuild(N),q.updateCompressionMode();let _=q.getCachedCompression();q.updateContentSize(_.virtualSize)}let W=q.getCachedCompression(),w=Math.max(0,Math.min(Q,N-1)),k;if(W.isCompressed){let _=q.sizeCache.getSize(w),G=_>0?K/_:0;k=(w+G)/N*W.virtualSize}else k=q.sizeCache.getOffset(w)+K;let y=q.state.viewportState.containerSize,A=Math.max(0,W.virtualSize-y);if(k=Math.max(0,Math.min(k,A)),q.scrollController.scrollTo(k),B&&B.length>0){let _=q.methods.get("select");if(_)_(...B)}let v=q.methods.get("loadVisibleRange");if(v)requestAnimationFrame(()=>{v()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var PJ=(J,X=50,q=1/0,j=!0)=>{let Y=J,Q=[],K=0,B=()=>{Q=Y.map((_,G)=>({def:_,index:G,width:0,minWidth:N1(_.minWidth??X,1),maxWidth:_.maxWidth??q,resizable:_.resizable??j,offset:0}))},N=(_)=>{if(Q.length===0){K=0;return}let G=0,E=0;for(let D=0;D<Q.length;D++){let T=Q[D],$=T.def;if($.width!==void 0)T.width=D2($.width,T.minWidth,T.maxWidth),G+=T.width;else E++}if(E>0){let T=Math.max(0,_-G)/E;for(let $=0;$<Q.length;$++){let V=Q[$];if(V.def.width===void 0)V.width=D2(T,V.minWidth,V.maxWidth)}}U()},U=()=>{let _=0;for(let G=0;G<Q.length;G++){let E=Q[G];E.offset=_,_+=E.width}K=_},W=(_,G)=>{if(_<0||_>=Q.length)return 0;let E=Q[_];if(!E.resizable)return E.width;let D=D2(G,E.minWidth,E.maxWidth);return E.width=D,U(),D},w=(_)=>{return Q[_]},k=(_)=>{if(Q.length===0)return;if(_<0)return Q[0];if(_>=K)return Q[Q.length-1];let G=0,E=Q.length-1;while(G<E){let D=G+E>>>1,T=Q[D];if(_<T.offset)E=D-1;else if(_>=T.offset+T.width)G=D+1;else return T}return Q[G]},y=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},A=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},v=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:v,resizeColumn:W,getColumn:w,getColumnAtX:k,getColumnOffset:y,getColumnWidth:A}},D2=(J,X,q)=>Math.min(q,Math.max(X,J)),N1=(J,X)=>Math.max(X,J);var wJ=(J,X,q,j,Y,Q,K)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let N=document.createElement("div");N.className=`${j}-table-header`,N.setAttribute("role","row"),N.setAttribute("aria-rowindex","1"),N.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),N.appendChild(U),B.appendChild(N),J.insertBefore(B,J.firstChild),X.style.position="absolute",X.style.top=`${q}px`,X.style.left="0",X.style.right="0",X.style.bottom="0",X.style.height="auto";let W=[],w=[],k=[],y=!0,A=null,v="asc",_=null,G=!1,E=-1,D=0,T=0,$=(P,M)=>{let L=document.createElement("div");L.className=`${j}-table-header-cell`,L.setAttribute("role","columnheader"),L.setAttribute("aria-colindex",String(M+1)),L.dataset.columnKey=P.def.key;let Z=P.def.align;if(Z==="center")L.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")L.classList.add(`${j}-table-header-cell--right`);let C=document.createElement("div");C.className=`${j}-table-header-content`;let a=P.def.header?P.def.header(P.def):P.def.label;if(typeof a==="string")C.textContent=a;else C.appendChild(a);if(L.appendChild(C),P.def.sortable){let d=document.createElement("span");d.className=`${j}-table-header-sort`,d.setAttribute("aria-hidden","true"),L.appendChild(d),k.push(d),L.classList.add(`${j}-table-header-cell--sortable`)}else k.push(null);if(P.resizable){let d=document.createElement("div");d.className=`${j}-table-header-resize`,d.dataset.resizeIndex=String(M),L.appendChild(d),w.push(d)}return L},V=(P)=>{_=P,U.textContent="",W=[],w=[],k=[];let M=P.columns;for(let L=0;L<M.length;L++){let Z=M[L],C=$(Z,L);W.push(C),U.appendChild(C)}if(u(P),A)c(A,v)},u=(P)=>{_=P;let M=P.columns;U.style.width=`${P.totalWidth}px`;for(let L=0;L<W.length&&L<M.length;L++){let Z=W[L],C=M[L];Z.style.width=`${C.width}px`}},c=(P,M)=>{if(A=P,v=M,!_)return;let L=_.columns;for(let Z=0;Z<k.length&&Z<L.length;Z++){let C=k[Z];if(!C)continue;if(L[Z].def.key===P&&P!==null)C.textContent=M==="asc"?"▲":"▼",C.style.opacity="0.7",W[Z].setAttribute("aria-sort",M==="asc"?"ascending":"descending");else C.textContent="",C.style.opacity="0",W[Z].removeAttribute("aria-sort")}},r=(P)=>{U.style.transform=`translateX(${-P}px)`},S=(P)=>{let M=P.target;if(!M.dataset.resizeIndex)return;if(P.preventDefault(),P.stopPropagation(),E=parseInt(M.dataset.resizeIndex,10),!_)return;let L=_.getColumn(E);if(!L||!L.resizable)return;G=!0,D=P.clientX,T=L.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",M.classList.add(`${j}-table-header-resize--active`),M.setPointerCapture(P.pointerId),M.addEventListener("pointermove",H),M.addEventListener("pointerup",g),M.addEventListener("pointercancel",g)},H=(P)=>{if(!G||!_)return;let M=P.clientX-D;if(Math.abs(M)<1)return;let L=Math.max(0,T+M);Y(E,L)},g=(P)=>{if(!G)return;let M=P.target;M.removeEventListener("pointermove",H),M.removeEventListener("pointerup",g),M.removeEventListener("pointercancel",g);try{M.releasePointerCapture(P.pointerId)}catch{}M.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,E=-1},t=(P)=>{let M=P.target;if(M.dataset.resizeIndex!==void 0)return;if(G)return;let L=M;while(L&&!L.dataset.columnKey)if(L=L.parentElement,L===N||L===null)return;if(!L||!L.dataset.columnKey)return;let Z=L.dataset.columnKey;if(!_)return;let C=_.columns,a=-1;for(let F=0;F<C.length;F++)if(C[F].def.key===Z){a=F;break}if(a===-1)return;let d=C[a];if(K)K({key:Z,index:a,event:P});if(d.def.sortable&&Q){let F;if(A===Z)if(v==="asc")F="desc";else F=null;else F="asc";Q({key:Z,index:a,direction:F})}};return N.addEventListener("pointerdown",S),N.addEventListener("click",t),{element:N,update:u,updateSort:c,rebuild:V,show:()=>{if(y)return;y=!0,N.style.display=""},hide:()=>{if(!y)return;y=!1,N.style.display="none"},destroy:()=>{N.removeEventListener("pointerdown",S),N.removeEventListener("click",t),X.style.position="",X.style.top="",X.style.left="",X.style.right="",X.style.bottom="",B.remove(),W=[],w=[],k=[],_=null,y=!1},syncScroll:r}};var _1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(X.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",X.push(Q)},clear:()=>{X.length=0}}},RJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=_1(),W=new Map,w=-1,k=q,y=null,A=null,v=null,_=(z,O)=>{A=z,v=O},G=(z,O)=>{if(O)z.setAttribute("aria-selected","true");else z.removeAttribute("aria-selected")},E=`${Y}-item ${Y}-table-row`,D=`${Y}-item--selected`,T=`${Y}-item--focused`,$=`${Y}-table-cell`,V=`${Y}-table-cell--center`,u=`${Y}-table-cell--right`,c=`${Y}-item--odd`,r=`${Y}-item--placeholder`,S=`${Y}-item--replaced`,H=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,g=`${Y}-table-group-header-content`,t=(z,O,m,I,s=!1)=>{if(m.def.cell){let b=m.def.cell(O,m.def,I);if(typeof b==="string")z.innerHTML=b;else z.replaceChildren(b)}else{let b=O[m.def.key],o=b!=null?String(b):"";if(s&&o)z.innerHTML=`<span>${o}</span>`;else z.textContent=o}},h=(z,O,m,I,s=!1)=>{let b=E;if(B){if(y){let o=y(O);if(o>=0&&(o&1)===1)b+=` ${c}`}else if((O&1)===1)b+=` ${c}`}if(s)b+=` ${r}`;if(m)b+=` ${D}`;if(I)b+=` ${T}`;z.className=b},R=(z,O)=>{let m=O.def.align;if(m==="center")z.classList.add(V),z.classList.remove(u);else if(m==="right")z.classList.add(u),z.classList.remove(V);else z.classList.remove(V,u)},p=(z,O)=>{let I=k.columns.length;if(O.length===I)return O;let s=[];for(let b=0;b<I;b++){let o;if(b<O.length)o=O[b];else o=document.createElement("div"),o.className=$,z.appendChild(o);s.push(o)}for(let b=I;b<O.length;b++)O[b].remove();return s},P=(z,O,m)=>{let I=U.acquire(),s=z;I.style.width=`${k.totalWidth}px`;let b=m.getSize(O);I.style.height=`${b}px`,I.className=H,I.setAttribute("role","presentation"),I.setAttribute("data-id",String(z.id)),I.setAttribute("data-index",String(O)),I.removeAttribute("aria-selected"),I.removeAttribute("aria-rowindex"),I.replaceChildren();let o=document.createElement("div");if(o.className=g,v){let f=v(s.groupKey,s.groupIndex);if(typeof f==="string")o.innerHTML=f;else o.appendChild(f)}I.appendChild(o);let j0=m.getOffset(O);return I.style.transform=`translateY(${j0}px)`,{element:I,cells:[],index:O,isGroupHeader:!0,lastItemId:z.id,lastSelected:!1,lastFocused:!1,lastOffset:j0,lastHeight:b}},M=(z,O,m,I,s)=>{let b=U.acquire();b.style.width=`${k.totalWidth}px`;let o=s.getSize(O);b.style.height=`${o}px`;let j0=String(z.id).startsWith("__placeholder_");h(b,O,m,I,j0),b.setAttribute("role","row"),b.setAttribute("data-id",String(z.id)),b.setAttribute("data-index",String(O)),b.id=`${Q}-${O}`,b.setAttribute("aria-rowindex",String(O+2));let f=K();if(f!==w)w=f;G(b,m);let n=p(b,[]),i=k.columns;for(let X0=0;X0<n.length&&X0<i.length;X0++){let Y0=n[X0],e=i[X0];Y0.style.left=`${e.offset}px`,Y0.style.width=`${e.width}px`,Y0.setAttribute("role","gridcell"),Y0.setAttribute("aria-colindex",String(X0+1)),R(Y0,e),t(Y0,z,e,O,j0)}let q0=s.getOffset(O);return b.style.transform=`translateY(${q0}px)`,{element:b,cells:n,index:O,isGroupHeader:!1,lastItemId:z.id,lastSelected:m,lastFocused:I,lastOffset:q0,lastHeight:o}},L=(z,O,m,I)=>{for(let[f,n]of W)if(f<O.start||f>O.end)U.release(n.element),W.delete(f);let s=!1,b=K();if(b!==w)w=b,s=!0;let o=null,j0=X();y=typeof B==="string"&&N?N():null;for(let f=O.start;f<=O.end;f++){let n=f-O.start,i=z[n];if(!i)continue;let q0=m.has(i.id),X0=f===I,Y0=A?A(i):!1,e=W.get(f);if(e){if(e.isGroupHeader!==Y0){U.release(e.element),W.delete(f);let Z0=Y0?P(i,f,j0):M(i,f,q0,X0,j0);if(W.set(f,Z0),!o)o=document.createDocumentFragment();o.appendChild(Z0.element);continue}if(Y0){if(e.lastItemId!==i.id){let M0=i,U0=e.element.firstElementChild;if(U0&&v){let V0=v(M0.groupKey,M0.groupIndex);if(typeof V0==="string")U0.innerHTML=V0;else U0.replaceChildren(V0)}e.element.setAttribute("data-id",String(i.id)),e.lastItemId=i.id}let K0=j0.getOffset(f);if(e.lastOffset!==K0)e.lastOffset=K0,e.element.style.transform=`translateY(${K0}px)`;let A0=j0.getSize(f);if(e.lastHeight!==A0)e.lastHeight=A0,e.element.style.height=`${A0}px`}else{let Z0=e.lastItemId!==i.id,K0=e.lastSelected!==q0,A0=e.lastFocused!==X0;if(Z0){let V0=e.lastItemId!=null&&String(e.lastItemId).startsWith("__placeholder_"),N0=String(i.id).startsWith("__placeholder_"),F0=k.columns;for(let T0=0;T0<e.cells.length&&T0<F0.length;T0++)t(e.cells[T0],i,F0[T0],f,N0);if(h(e.element,f,q0,X0,N0),e.element.setAttribute("data-id",String(i.id)),G(e.element,q0),V0&&!N0)e.element.classList.add(S),setTimeout(()=>{e.element.classList.remove(S)},300);e.lastItemId=i.id,e.lastSelected=q0,e.lastFocused=X0}else if(K0||A0){let V0=String(i.id).startsWith("__placeholder_");h(e.element,f,q0,X0,V0),G(e.element,q0),e.lastSelected=q0,e.lastFocused=X0}let M0=j0.getOffset(f);if(e.lastOffset!==M0)e.lastOffset=M0,e.element.style.transform=`translateY(${M0}px)`;let U0=j0.getSize(f);if(e.lastHeight!==U0)e.lastHeight=U0,e.element.style.height=`${U0}px`;if(s)e.element.setAttribute("aria-rowindex",String(f+2))}}else{let Z0=Y0?P(i,f,j0):M(i,f,q0,X0,j0);if(W.set(f,Z0),!o)o=document.createDocumentFragment();o.appendChild(Z0.element)}}if(o)J.appendChild(o)},Z=(z,O,m,I)=>{let s=W.get(z);if(!s)return;if(s.isGroupHeader)return;let b=s.lastItemId!==O.id,o=s.lastSelected!==m,j0=s.lastFocused!==I;if(b||o||j0){if(b){let f=k.columns;for(let n=0;n<s.cells.length&&n<f.length;n++)t(s.cells[n],O,f[n],z);s.element.setAttribute("data-id",String(O.id)),s.lastItemId=O.id}h(s.element,z,m,I),G(s.element,m),s.lastSelected=m,s.lastFocused=I}},C=(z,O,m)=>{let I=W.get(z);if(!I)return;if(I.isGroupHeader)return;let s=I.lastSelected!==O,b=I.lastFocused!==m;if(s||b)h(I.element,z,O,m),G(I.element,O),I.lastSelected=O,I.lastFocused=m},a=(z)=>{k=z;let O=z.columns;for(let[,m]of W)if(m.element.style.width=`${z.totalWidth}px`,m.cells.length>0)for(let I=0;I<m.cells.length&&I<O.length;I++){let s=m.cells[I],b=O[I];s.style.left=`${b.offset}px`,s.style.width=`${b.width}px`}},d=(z)=>{return W.get(z)?.element},F=()=>{for(let[,z]of W)U.release(z.element);W.clear(),w=-1};return{render:L,updateItem:Z,updateItemClasses:C,getElement:d,updateColumnLayout:a,setGroupHeaderFn:_,clear:F,destroy:()=>{F(),U.clear()}}};var W1=new Set,vJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let X=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:Q,emitter:K,config:B}=Y,{classPrefix:N}=B;if(B.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,w=J.maxColumnWidth??1/0,k=J.columnBorders??!1,y=J.rowBorders??!0,A=J.rowHeight,v=C0(b0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof A==="number"?A:40),G=J.sort?.key??null,E=J.sort?.direction??"asc";if(X=PJ(J.columns,W,w,U),typeof A==="function")Y.setSizeConfig(A);else if(typeof A==="number")Y.setSizeConfig(A);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),y)Q.root.classList.add(`${N}--table-row-borders`);if(k)Q.root.classList.add(`${N}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let D=-1,T=Q.items.getAttribute("aria-label");if(T)Q.root.setAttribute("aria-label",T),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth()-v;X.resolve($);let V=(O,m)=>{if(!X)return;let I=X.getColumn(O);if(!I)return;let s=I.width,b=X.resizeColumn(O,m);if(q)q.update(X);if(j)j.updateColumnLayout(X);r(),K.emit("column:resize",{key:I.def.key,index:O,previousWidth:s,width:b})},u=(O)=>{if(O.direction===null)G=null,E="asc";else G=O.key,E=O.direction;if(q)q.updateSort(G,E);K.emit("column:sort",O)},c=(O)=>{K.emit("column:click",O)};if(q=wJ(Q.root,Q.viewport,_,N,V,u,c),q.rebuild(X),G)q.updateSort(G,E);let r=()=>{if(!X)return;let O=X.totalWidth;Q.content.style.minWidth=`${O}px`,Q.items.style.minWidth=`${O}px`};r(),j=RJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let S=null,H=null,g=!1,t=()=>{if(g)return;g=!0,S=Y.methods.get("_getSelectedIds")??null,H=Y.methods.get("_getFocusedIndex")??null},h=-1,R=-1,p=-1,P=!0,M=B.overscan,L={start:0,end:0},Z={start:0,end:0},C=()=>{if(Y.state.isDestroyed)return;let O=Y.scrollController.getScrollTop(),m=Y.state.viewportState.containerSize,I=Y.getVirtualTotal();if(!P&&O===h&&m===R&&I===p)return;h=O,R=m,p=I,P=!1;let s=I+1;if(s!==D)D=s,Q.root.setAttribute("aria-rowcount",String(s));if(I===0||m===0)L.start=0,L.end=0;else L.start=Math.max(0,Y.sizeCache.indexAtOffset(O)),L.end=Math.min(I-1,Math.max(0,Y.sizeCache.indexAtOffset(O+m-1)));Z.start=Math.max(0,L.start-M),Z.end=Math.min(I-1,L.end+M);let b=Y.state.viewportState;b.scrollPosition=O,b.visibleRange.start=L.start,b.visibleRange.end=L.end,b.renderRange.start=Z.start,b.renderRange.end=Z.end;let o=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);t();let f=S?S():W1,n=H?H():-1;if(j.render(j0,Z,f,n),o.start!==Z.start||o.end!==Z.end)o.start=Z.start,o.end=Z.end,K.emit("range:change",{range:{start:Z.start,end:Z.end}})},a=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,P=!0,C()};Y.setRenderFns(C,a);let d=q,F=-1,x=()=>{let O=Q.viewport.scrollLeft;if(O!==F){if(F=O,d.syncScroll)d.syncScroll(O)}};Y.afterScroll.push(()=>{x()});let z=()=>{x()};Q.viewport.addEventListener("scroll",z,{passive:!0}),Y.resizeHandlers.push((O,m)=>{if(!X)return;if(X.resolve(O-v),q)q.update(X);if(j)j.updateColumnLayout(X);r()}),Y.methods.set("updateColumns",(O)=>{if(!X||!q)return;if(X.updateColumns(O),X.resolve(Y.getContainerWidth()-v),q.rebuild(X),G)q.updateSort(G,E);if(r(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(O,m)=>{if(!X)return;let I;if(typeof O==="string"){let s=X.columns;I=-1;for(let b=0;b<s.length;b++)if(s[b].def.key===O){I=b;break}if(I===-1)return}else I=O;V(I,m)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let O={},m=X.columns;for(let I=0;I<m.length;I++)O[m[I].def.key]=m[I].width;return O}),Y.methods.set("setSort",(O,m)=>{if(G=O,E=m??"asc",q)q.updateSort(G,E)}),Y.methods.set("getSort",()=>{return{key:G,direction:E}}),Y.methods.set("_getTableLayout",()=>X),Y.methods.set("_replaceTableRenderer",(O)=>{j=O}),Y.methods.set("_updateTableForGroups",(O,m)=>{if(j)j.setGroupHeaderFn(O,m)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{r()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",z),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${N}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let O=Q.root.getAttribute("aria-label");if(O)Q.items.setAttribute("aria-label",O),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};export{vJ as withTable,$J as withSnapshots,yJ as withSelection,e2 as withScrollbar,JJ as withScale,UJ as withPage,EJ as withMasonry,VJ as withGroups,MJ as withGrid,YJ as withAsync,n2 as vlist};
package/dist/internals.js CHANGED
@@ -1 +1 @@
1
- var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var W2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,W=$-1;while(U<W){let G=U+W+1>>>1;if(j[G]<=K)U=G;else W=G-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},V2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var B2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var G2=(J,Q)=>{let $=Q.getTotalSize(),j=$>B2,q=j?B2:$,Y=$>0?q/$:1;return{isCompressed:j,actualSize:$,virtualSize:q,ratio:Y}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed){let Z=$.indexAtOffset(J),V=$.indexAtOffset(J+Q);if(V<j-1)V++;return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,V)),Y}let{virtualSize:K}=q,W=J/K*j,G=Math.floor(W),B=P2($,Math.max(0,G),Q,j),H=Math.ceil(W)+B,k=K-Q-J;if(k<=Q&&k>=-1){let Z=E2($,Q,j),V=Math.max(0,j-Z),X=Math.max(0,Math.min(1,1-k/Q));G=Math.floor(G+(V-G)*X),H=k<=1?j-1:Math.min(j-1,G+B)}return Y.start=Math.max(0,G),Y.end=Math.min(j-1,Math.max(0,H)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);let{virtualSize:U}=Y,W=U-q,G=W-Q;if(G<=q&&G>=-1){if(Q>=W-1){let y=$.getTotalSize()-$.getOffset(J);return q-y}let k=E2($,q,j),Z=Math.max(0,j-k),X=Q/U*j,D=Math.max(0,Math.min(1,1-G/q)),F=$.getOffset(J)-$.getOffset(Z),v=$.getOffset(J)-k2($,X,j);return v+(F-v)*D}let B=Q/U,H=$.getTotalSize(),E=B*H;return $.getOffset(J)-E},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let W=q.virtualSize-$;return Math.max(0,Math.min(K,W))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>B2;return Q.getTotalSize()>B2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(B2/J)},ZJ=(J,Q)=>{let $=G2(J,Q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,DJ=(J,Q,$,j,q,Y,K,U,W=!1)=>{let G=SJ(),B=new Map,H=Y,E=!1,k=null,Z=0,V=0,X="",D=-1,F=(N)=>{if(k&&Z===N)return k;return k=G2(N,$),Z=N,k},v={selected:!1,focused:!1},y=(N,M)=>{return v.selected=N,v.focused=M,v},p=`${q}-item ${q}-grid-item`,h=`${q}-item--selected`,l=`${q}-item--focused`,a=(N,M)=>{if(typeof M==="string")N.innerHTML=M;else N.replaceChildren(M)},i=(N,M,w)=>{N.classList.toggle(h,M),N.classList.toggle(l,w)},u=(N,M)=>{let w=j.getRow(N);if(M){let _=M.totalItems,O=F(_);if(O.isCompressed)return L2(w,M.scrollPosition,$,_,M.containerSize,O,M.rangeStart)}return $.getOffset(w)},d=(N,M)=>{let w=E&&j.getCol(N)===0,_=w?0:j.getCol(N),O=w?0:j.getColumnOffset(_,H),L;if(E){let c=j.getRow(N),C=0,x=new Set;for(let e=0;e<N;e++){let T=j.getRow(e);if(T<c&&!x.has(T)){let S=$.getSize(e);C+=S,x.add(T)}}L=C}else L=u(N,M);if(W)return`translate(${Math.round(L)}px, ${Math.round(O)}px)`;return`translate(${Math.round(O)}px, ${Math.round(L)}px)`},m=(N,M)=>{N.style.transform=M},t=(N,M)=>{let w=N.dataset.id?.startsWith("__group_header"),_=w?H:j.getColumnWidth(H),O;if(E||w)O=$.getSize(M)-j.gap;else{let L=j.getRow(M);O=$.getSize(L)-j.gap}if(W)N.style.width=`${O}px`,N.style.height=`${_}px`;else N.style.width=`${_}px`,N.style.height=`${O}px`},n=(N,M,w,_,O)=>{let L=G.acquire(),c=y(w,_);if(L.className=p,L.dataset.index=String(N),L.dataset.id=String(M.id),L.dataset.row=String(j.getRow(N)),L.dataset.col=String(j.getCol(N)),L.ariaSelected=String(w),U)L.id=`${U}-item-${N}`;if(K){let x=K();if(x!==D)D=x,X=String(x);L.setAttribute("aria-setsize",X),L.setAttribute("aria-posinset",String(N+1))}t(L,N);let C=Q(M,N,c);return a(L,C),i(L,w,_),m(L,O),{element:L,lastItemId:M.id,lastSelected:w,lastFocused:_,lastTransform:O,lastSeenFrame:V}},R=(N,M,w,_,O)=>{if(V++,M.start===0&&N.length>0)E=W2(N[0]);for(let[C,x]of B)if(C>=M.start&&C<=M.end)x.lastSeenFrame=V;else if(V-x.lastSeenFrame>fJ)G.release(x.element),B.delete(C);let L=!1;if(K){let C=K();if(C!==D)D=C,X=String(C),L=!0}let c=null;for(let C=M.start;C<=M.end;C++){let x=C-M.start,e=N[x];if(!e){console.warn(`⚠️ RENDER: Missing item at index ${C} (range: ${M.start}-${M.end}, items.length: ${N.length})`);continue}let T=w.has(e.id),S=C===_,I=B.get(C);if(I){let o=I.lastItemId!==e.id,g=I.lastSelected!==T,Q2=I.lastFocused!==S;if(o||g||Q2){if(o){let q2=y(T,S),$2=Q(e,C,q2);a(I.element,$2),I.element.dataset.id=String(e.id),I.element.dataset.row=String(j.getRow(C)),I.element.dataset.col=String(j.getCol(C)),t(I.element,C)}i(I.element,T,S),I.element.ariaSelected=String(T),I.lastItemId=e.id,I.lastSelected=T,I.lastFocused=S}let Y2=d(C,O);if(I.lastTransform!==Y2)m(I.element,Y2),I.lastTransform=Y2;if(L)I.element.setAttribute("aria-setsize",X)}else{let o=d(C,O),g=n(C,e,T,S,o);if(!c)c=document.createDocumentFragment();c.appendChild(g.element),B.set(C,g)}}if(c)J.appendChild(c)},z=(N)=>{for(let[M,w]of B){let _=d(M,N);if(w.lastTransform!==_)m(w.element,_),w.lastTransform=_}},A=(N,M,w,_)=>{let O=B.get(N);if(!O)return;let L=O.lastItemId!==M.id,c=O.lastSelected!==w,C=O.lastFocused!==_;if(L||c||C){let x=y(w,_),e=Q(M,N,x);a(O.element,e),i(O.element,w,_),O.element.dataset.id=String(M.id),O.element.ariaSelected=String(w),t(O.element,N),O.lastItemId=M.id,O.lastSelected=w,O.lastFocused=_}},b=(N,M,w)=>{let _=B.get(N);if(!_)return;let O=_.lastSelected!==M,L=_.lastFocused!==w;if(O||L)i(_.element,M,w),_.lastSelected=M,_.lastFocused=w},P=(N)=>{return B.get(N)?.element},r=(N)=>{if(Math.abs(N-H)<1)return;H=N;for(let[M,w]of B){t(w.element,M);let _=d(M);m(w.element,_),w.lastTransform=_}},f=()=>{A2(J,B.keys(),(N)=>B.get(N)?.element)},s=()=>{for(let[,N]of B)G.release(N.element);B.clear()};return{render:R,updatePositions:z,updateItem:A,updateItemClasses:b,getElement:P,sortDOM:f,updateContainerWidth:r,clear:s,destroy:()=>{s(),G.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let W=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:W}),Y=Y+1+W,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(E)=>{if($.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let k=y2($,E),Z=$[k];if(E===Z.headerLayoutIndex)return{type:"header",group:Z};let V=E-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+V,group:Z}},layoutToDataIndex:(E)=>{if($.length===0)return E;let k=y2($,E),Z=$[k];if(E===Z.headerLayoutIndex)return-1;let V=E-Z.headerLayoutIndex-1;return Z.firstDataIndex+V},dataToLayoutIndex:(E)=>{if($.length===0)return E;let k=p2($,E),Z=$[k],V=E-Z.firstDataIndex;return Z.headerLayoutIndex+1+V},getGroupAtLayoutIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=y2($,E);return $[k]},getGroupAtDataIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=p2($,E);return $[k]},getHeaderHeight:typeof q==="number"?(E)=>q:(E)=>{let k=$[E];if(!k)return 0;return q(k.key,E)},rebuild:(E)=>{$=x2(E,Q.getGroupForIndex),j=E+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let W=-1,G=!1,B=0,H=(D)=>{if(D===W)return;W=D;let F=Q.groups;if(D<0||D>=F.length){U.textContent="";return}let v=F[D],y=j.headerTemplate(v.key,v.groupIndex),p=Q.getHeaderHeight(D);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof y==="string")U.innerHTML=y;else U.replaceChildren(y)},E=(D)=>{let F=Q.groups;if(F.length===0){Z();return}let v=$.getOffset(F[0].headerLayoutIndex);if(D<v){Z();return}let y=0,p=F.length-1;while(y<p){let u=y+p+1>>>1;if($.getOffset(F[u].headerLayoutIndex)<=D)y=u;else p=u-1}let h=y;if(!G)k();H(h);let l=Q.getHeaderHeight(h),a=0,i=h+1;if(i<F.length){let d=$.getOffset(F[i].headerLayoutIndex)-D;if(d<l)a=d-l}if(a!==B)if(B=a,a===0)U.style.transform="";else{let u=Math.round(a);U.style.transform=Y?`translateX(${u}px)`:`translateY(${u}px)`}},k=()=>{if(G)return;G=!0,U.style.display=""},Z=()=>{if(!G)return;G=!1,U.style.display="none",W=-1,B=0,U.style.transform=""},V=()=>{let D=W;if(W=-1,D>=0)H(D)},X=()=>{U.remove(),W=-1,G=!1};return U.style.display="none",{update:E,refresh:V,show:k,hide:Z,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=V2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=V2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),W=Q.getSize(K),G=Q.getTotalSize(),B=Math.max(0,G-$),H;switch(Y){case"center":H=U-$/2+W/2;break;case"end":H=U-$+W;break;case"start":default:H=U;break}return Math.max(0,Math.min(H,B))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var _J=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(Z)=>{if(Z<=0)return 0;if(!j)return Math.ceil(Z/Q);let V=0,X=0,D=0;for(let F=0;F<Z;F++)if(j(F)){if(D++,X>0)V++,X=0;V++,X=0}else if(X++,X>=Q)V++,X=0;if(X>0)V++;return V},K=(Z)=>{return q.row=U(Z),q.col=W(Z),q},U=(Z)=>{if(!j)return Math.floor(Z/Q);let V=0,X=0;for(let D=0;D<=Z;D++)if(j(D)){if(X>0)V++,X=0;if(D===Z)return V;V++,X=0}else{if(D===Z)return V;if(X++,X>=Q)V++,X=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${V}`),V},W=(Z)=>{if(!j)return Z%Q;if(j(Z))return 0;let V=0;for(let X=0;X<=Z;X++)if(j(X))V=0;else{if(X===Z)return V;if(V++,V>=Q)V=0}return V},G=(Z,V,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,Z*Q),h=Math.min(X-1,(V+1)*Q-1);return{start:p,end:h}}let D=-1,F=-1,v=0,y=0;for(let p=0;p<X;p++){if(j(p)){if(y>0)v++,y=0;if(v>=Z&&v<=V){if(D===-1)D=p;F=p}v++,y=0}else{if(v>=Z&&v<=V){if(D===-1)D=p;F=p}if(y++,y>=Q)v++,y=0}if(v>V&&y===0)break}if(D===-1)return{start:0,end:-1};return{start:D,end:F}},B=(Z,V,X)=>{if(V<0||V>=Q)return-1;let D=Z*Q+V;if(D<0||D>=X)return-1;return D},H=(Z)=>{let V=(Q-1)*$;return Math.max(0,(Z-V)/Q)};return{get columns(){return Q},get gap(){return $},update:(Z)=>{if(Z.columns!==void 0)Q=Math.max(1,Math.floor(Z.columns));if(Z.gap!==void 0)$=Z.gap;if(Z.isHeaderFn!==void 0)j=Z.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:W,getItemRange:G,getItemIndex:B,getColumnWidth:H,getColumnOffset:(Z,V)=>{let X=H(V);return Z*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,D)=>({def:X,index:D,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},W=(X)=>{if(Y.length===0){K=0;return}let D=0,F=0;for(let v=0;v<Y.length;v++){let y=Y[v],p=y.def;if(p.width!==void 0)y.width=v2(p.width,y.minWidth,y.maxWidth),D+=y.width;else F++}if(F>0){let y=Math.max(0,X-D)/F;for(let p=0;p<Y.length;p++){let h=Y[p];if(h.def.width===void 0)h.width=v2(y,h.minWidth,h.maxWidth)}}G()},G=()=>{let X=0;for(let D=0;D<Y.length;D++){let F=Y[D];F.offset=X,X+=F.width}K=X},B=(X,D)=>{if(X<0||X>=Y.length)return 0;let F=Y[X];if(!F.resizable)return F.width;let v=v2(D,F.minWidth,F.maxWidth);return F.width=v,G(),v},H=(X)=>{return Y[X]},E=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let D=0,F=Y.length-1;while(D<F){let v=D+F>>>1,y=Y[v];if(X<y.offset)F=v-1;else if(X>=y.offset+y.width)D=v+1;else return y}return Y[D]},k=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},Z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},V=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:W,updateColumns:V,resizeColumn:B,getColumn:H,getColumnAtX:E,getColumnOffset:k,getColumnWidth:Z}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let W=document.createElement("div");W.className=`${j}-table-header`,W.setAttribute("role","row"),W.setAttribute("aria-rowindex","1"),W.style.height=`${$}px`;let G=document.createElement("div");G.className=`${j}-table-header-scroll`,G.setAttribute("role","presentation"),W.appendChild(G),U.appendChild(W),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let B=[],H=[],E=[],k=!0,Z=null,V="asc",X=null,D=!1,F=-1,v=0,y=0,p=(A,b)=>{let P=document.createElement("div");P.className=`${j}-table-header-cell`,P.setAttribute("role","columnheader"),P.setAttribute("aria-colindex",String(b+1)),P.dataset.columnKey=A.def.key;let r=A.def.align;if(r==="center")P.classList.add(`${j}-table-header-cell--center`);else if(r==="right")P.classList.add(`${j}-table-header-cell--right`);let f=document.createElement("div");f.className=`${j}-table-header-content`;let s=A.def.header?A.def.header(A.def):A.def.label;if(typeof s==="string")f.textContent=s;else f.appendChild(s);if(P.appendChild(f),A.def.sortable){let J2=document.createElement("span");J2.className=`${j}-table-header-sort`,J2.setAttribute("aria-hidden","true"),P.appendChild(J2),E.push(J2),P.classList.add(`${j}-table-header-cell--sortable`)}else E.push(null);if(A.resizable){let J2=document.createElement("div");J2.className=`${j}-table-header-resize`,J2.dataset.resizeIndex=String(b),P.appendChild(J2),H.push(J2)}return P},h=(A)=>{X=A,G.textContent="",B=[],H=[],E=[];let b=A.columns;for(let P=0;P<b.length;P++){let r=b[P],f=p(r,P);B.push(f),G.appendChild(f)}if(l(A),Z)a(Z,V)},l=(A)=>{X=A;let b=A.columns;G.style.width=`${A.totalWidth}px`;for(let P=0;P<B.length&&P<b.length;P++){let r=B[P],f=b[P];r.style.width=`${f.width}px`}},a=(A,b)=>{if(Z=A,V=b,!X)return;let P=X.columns;for(let r=0;r<E.length&&r<P.length;r++){let f=E[r];if(!f)continue;if(P[r].def.key===A&&A!==null)f.textContent=b==="asc"?"▲":"▼",f.style.opacity="0.7",B[r].setAttribute("aria-sort",b==="asc"?"ascending":"descending");else f.textContent="",f.style.opacity="0",B[r].removeAttribute("aria-sort")}},i=(A)=>{G.style.transform=`translateX(${-A}px)`},u=(A)=>{let b=A.target;if(!b.dataset.resizeIndex)return;if(A.preventDefault(),A.stopPropagation(),F=parseInt(b.dataset.resizeIndex,10),!X)return;let P=X.getColumn(F);if(!P||!P.resizable)return;D=!0,v=A.clientX,y=P.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",b.classList.add(`${j}-table-header-resize--active`),b.setPointerCapture(A.pointerId),b.addEventListener("pointermove",d),b.addEventListener("pointerup",m),b.addEventListener("pointercancel",m)},d=(A)=>{if(!D||!X)return;let b=A.clientX-v;if(Math.abs(b)<1)return;let P=Math.max(0,y+b);q(F,P)},m=(A)=>{if(!D)return;let b=A.target;b.removeEventListener("pointermove",d),b.removeEventListener("pointerup",m),b.removeEventListener("pointercancel",m);try{b.releasePointerCapture(A.pointerId)}catch{}b.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",D=!1,F=-1},t=(A)=>{let b=A.target;if(b.dataset.resizeIndex!==void 0)return;if(D)return;let P=b;while(P&&!P.dataset.columnKey)if(P=P.parentElement,P===W||P===null)return;if(!P||!P.dataset.columnKey)return;let r=P.dataset.columnKey;if(!X)return;let f=X.columns,s=-1;for(let N=0;N<f.length;N++)if(f[N].def.key===r){s=N;break}if(s===-1)return;let J2=f[s];if(K)K({key:r,index:s,event:A});if(J2.def.sortable&&Y){let N;if(Z===r)if(V==="asc")N="desc";else N=null;else N="asc";Y({key:r,index:s,direction:N})}};return W.addEventListener("pointerdown",u),W.addEventListener("click",t),{element:W,update:l,updateSort:a,rebuild:h,show:()=>{if(k)return;k=!0,W.style.display=""},hide:()=>{if(!k)return;k=!1,W.style.display="none"},destroy:()=>{W.removeEventListener("pointerdown",u),W.removeEventListener("click",t),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),B=[],H=[],E=[],X=null,k=!1},syncScroll:i}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},OJ=(J,Q,$,j,q,Y,K,U,W)=>{let G=pJ(),B=new Map,H=-1,E=$,k=null,Z=null,V=null,X=(N,M)=>{Z=N,V=M},D=(N,M)=>{if(M)N.setAttribute("aria-selected","true");else N.removeAttribute("aria-selected")},F=`${q}-item ${q}-table-row`,v=`${q}-item--selected`,y=`${q}-item--focused`,p=`${q}-table-cell`,h=`${q}-table-cell--center`,l=`${q}-table-cell--right`,a=`${q}-item--odd`,i=`${q}-item ${q}-table-row ${q}-table-group-header`,u=`${q}-table-group-header-content`,d=(N,M,w,_)=>{if(w.def.cell){let O=w.def.cell(M,w.def,_);if(typeof O==="string")N.innerHTML=O;else N.replaceChildren(O)}else{let O=M[w.def.key];N.textContent=O!=null?String(O):""}},m=(N,M,w,_)=>{let O=F;if(U){if(k){let L=k(M);if(L>=0&&(L&1)===1)O+=` ${a}`}else if((M&1)===1)O+=` ${a}`}if(w)O+=` ${v}`;if(_)O+=` ${y}`;N.className=O},t=(N,M)=>{let w=M.def.align;if(w==="center")N.classList.add(h),N.classList.remove(l);else if(w==="right")N.classList.add(l),N.classList.remove(h);else N.classList.remove(h,l)},n=(N,M)=>{let _=E.columns.length;if(M.length===_)return M;let O=[];for(let L=0;L<_;L++){let c;if(L<M.length)c=M[L];else c=document.createElement("div"),c.className=p,N.appendChild(c);O.push(c)}for(let L=_;L<M.length;L++)M[L].remove();return O},R=(N,M,w)=>{let _=G.acquire(),O=N;_.style.width=`${E.totalWidth}px`;let L=w.getSize(M);_.style.height=`${L}px`,_.className=i,_.setAttribute("role","presentation"),_.setAttribute("data-id",String(N.id)),_.setAttribute("data-index",String(M)),_.removeAttribute("aria-selected"),_.removeAttribute("aria-rowindex"),_.replaceChildren();let c=document.createElement("div");if(c.className=u,V){let x=V(O.groupKey,O.groupIndex);if(typeof x==="string")c.innerHTML=x;else c.appendChild(x)}_.appendChild(c);let C=w.getOffset(M);return _.style.transform=`translateY(${C}px)`,{element:_,cells:[],index:M,isGroupHeader:!0,lastItemId:N.id,lastSelected:!1,lastFocused:!1,lastOffset:C,lastHeight:L}},z=(N,M,w,_,O)=>{let L=G.acquire();L.style.width=`${E.totalWidth}px`;let c=O.getSize(M);L.style.height=`${c}px`,m(L,M,w,_),L.setAttribute("role","row"),L.setAttribute("data-id",String(N.id)),L.setAttribute("data-index",String(M)),L.id=`${Y}-${M}`,L.setAttribute("aria-rowindex",String(M+2));let C=K();if(C!==H)H=C;D(L,w);let x=n(L,[]),e=E.columns;for(let S=0;S<x.length&&S<e.length;S++){let I=x[S],o=e[S];I.style.left=`${o.offset}px`,I.style.width=`${o.width}px`,I.setAttribute("role","gridcell"),I.setAttribute("aria-colindex",String(S+1)),t(I,o),d(I,N,o,M)}let T=O.getOffset(M);return L.style.transform=`translateY(${T}px)`,{element:L,cells:x,index:M,isGroupHeader:!1,lastItemId:N.id,lastSelected:w,lastFocused:_,lastOffset:T,lastHeight:c}},A=(N,M,w,_)=>{for(let[x,e]of B)if(x<M.start||x>M.end)G.release(e.element),B.delete(x);let O=!1,L=K();if(L!==H)H=L,O=!0;let c=null,C=Q();k=typeof U==="string"&&W?W():null;for(let x=M.start;x<=M.end;x++){let e=x-M.start,T=N[e];if(!T)continue;let S=w.has(T.id),I=x===_,o=Z?Z(T):!1,g=B.get(x);if(g){if(g.isGroupHeader!==o){G.release(g.element),B.delete(x);let Q2=o?R(T,x,C):z(T,x,S,I,C);if(B.set(x,Q2),!c)c=document.createDocumentFragment();c.appendChild(Q2.element);continue}if(o){if(g.lastItemId!==T.id){let $2=T,X2=g.element.firstElementChild;if(X2&&V){let U2=V($2.groupKey,$2.groupIndex);if(typeof U2==="string")X2.innerHTML=U2;else X2.replaceChildren(U2)}g.element.setAttribute("data-id",String(T.id)),g.lastItemId=T.id}let Y2=C.getOffset(x);if(g.lastOffset!==Y2)g.lastOffset=Y2,g.element.style.transform=`translateY(${Y2}px)`;let q2=C.getSize(x);if(g.lastHeight!==q2)g.lastHeight=q2,g.element.style.height=`${q2}px`}else{let Q2=g.lastItemId!==T.id,Y2=g.lastSelected!==S,q2=g.lastFocused!==I;if(Q2){let U2=E.columns;for(let j2=0;j2<g.cells.length&&j2<U2.length;j2++)d(g.cells[j2],T,U2[j2],x);m(g.element,x,S,I),g.element.setAttribute("data-id",String(T.id)),D(g.element,S),g.lastItemId=T.id,g.lastSelected=S,g.lastFocused=I}else if(Y2||q2)m(g.element,x,S,I),D(g.element,S),g.lastSelected=S,g.lastFocused=I;let $2=C.getOffset(x);if(g.lastOffset!==$2)g.lastOffset=$2,g.element.style.transform=`translateY(${$2}px)`;let X2=C.getSize(x);if(g.lastHeight!==X2)g.lastHeight=X2,g.element.style.height=`${X2}px`;if(O)g.element.setAttribute("aria-rowindex",String(x+2))}}else{let Q2=o?R(T,x,C):z(T,x,S,I,C);if(B.set(x,Q2),!c)c=document.createDocumentFragment();c.appendChild(Q2.element)}}if(c)J.appendChild(c)},b=(N,M,w,_)=>{let O=B.get(N);if(!O)return;if(O.isGroupHeader)return;let L=O.lastItemId!==M.id,c=O.lastSelected!==w,C=O.lastFocused!==_;if(L||c||C){if(L){let x=E.columns;for(let e=0;e<O.cells.length&&e<x.length;e++)d(O.cells[e],M,x[e],N);O.element.setAttribute("data-id",String(M.id)),O.lastItemId=M.id}m(O.element,N,w,_),D(O.element,w),O.lastSelected=w,O.lastFocused=_}},P=(N,M,w)=>{let _=B.get(N);if(!_)return;if(_.isGroupHeader)return;let O=_.lastSelected!==M,L=_.lastFocused!==w;if(O||L)m(_.element,N,M,w),D(_.element,M),_.lastSelected=M,_.lastFocused=w},r=(N)=>{E=N;let M=N.columns;for(let[,w]of B)if(w.element.style.width=`${N.totalWidth}px`,w.cells.length>0)for(let _=0;_<w.cells.length&&_<M.length;_++){let O=w.cells[_],L=M[_];O.style.left=`${L.offset}px`,O.style.width=`${L.width}px`}},f=(N)=>{return B.get(N)?.element},s=()=>{for(let[,N]of B)G.release(N.element);B.clear(),H=-1};return{render:A,updateItem:b,updateItemClasses:P,getElement:f,updateColumnLayout:r,setGroupHeaderFn:X,clear:s,destroy:()=>{s(),G.clear()}}};var WJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let D=q+$;for(let F=0;F<Q;F++)Y[F]=F*D};K();let U=[],W=0,G=[],B=(X)=>{let D=0,F=X[0];for(let v=1;v<X.length;v++){let y=X[v];if(y<F)F=y,D=v}return D},H=(X,D)=>{if(X<=0)return W=0,U=[],[];let F=Array(Q).fill(0),v=Array(Q);for(let h=0;h<Q;h++)v[h]=[];let y=Array(X);for(let h=0;h<X;h++){let l=B(F),a=D(h),i=F[l];y[h]={index:h,x:Y[l],y:i,lane:l,size:a,crossSize:q},v[l].push(h),F[l]=i+a+$}U=v;let p=0;for(let h=0;h<Q;h++){let l=F[h],a=l>0?l-$:0;if(a>p)p=a}return W=p,y},E=(X)=>{if(X.length===0)return W>0?W:0;if(W>0)return W;let D=Array(Q).fill(0);for(let v of X){let y=v.y+v.size,p=D[v.lane];if(y>p)D[v.lane]=y}let F=0;for(let v=0;v<Q;v++)if(D[v]>F)F=D[v];return F},k=(X,D,F)=>{if(X.length===0||F<=D)return G.length=0,G;if(U.length===0||U.length!==Q)return Z(X,D,F);G.length=0;for(let v=0;v<Q;v++){let y=U[v],p=y.length;if(p===0)continue;let h=0,l=p;while(h<l){let a=h+l>>>1,i=X[y[a]];if(i.y+i.size<=D)h=a+1;else l=a}for(let a=h;a<p;a++){let i=X[y[a]];if(i.y>=F)break;G.push(i)}}return G},Z=(X,D,F)=>{let v=[];for(let y of X)if(y.y+y.size>D&&y.y<F)v.push(y);return v};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let D=!1;if(X.columns!==void 0){let F=Math.max(1,Math.floor(X.columns));if(F!==Q)Q=F,D=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,D=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,D=!0;if(D)K()},calculateLayout:H,getTotalSize:E,getVisibleItems:k}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,W=new Set,G=0,B="",H=-1,E={selected:!1,focused:!1},k=(u,d)=>{return E.selected=u,E.focused=d,E},Z=`${$}-item ${$}-masonry-item`,V=`${$}-item--selected`,X=`${$}-item--focused`,D=(u,d)=>{if(typeof d==="string")u.innerHTML=d;else u.replaceChildren(d)},F=(u,d,m)=>{u.classList.toggle(V,d),u.classList.toggle(X,m)},v=(u,d)=>{if(j)u.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else u.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},y=(u,d)=>{if(j)u.style.width=`${d.size}px`,u.style.height=`${d.crossSize}px`;else u.style.width=`${d.crossSize}px`,u.style.height=`${d.size}px`},p=(u,d,m,t,n)=>{let R=K.acquire(),z=k(t,n);if(R.className=Z,R.dataset.index=String(u),R.dataset.id=String(d.id),R.dataset.lane=String(m.lane),R.ariaSelected=String(t),Y)R.id=`${Y}-item-${u}`;if(q){let b=q();if(b!==H)H=b,B=String(b);R.setAttribute("aria-setsize",B),R.setAttribute("aria-posinset",String(u+1))}y(R,m);let A=Q(d,u,z);return D(R,A),F(R,t,n),v(R,m),{element:R,lastItemId:d.id,lastSelected:t,lastFocused:n,lastY:m.y,lastX:m.x,lastSize:m.size,lastCrossSize:m.crossSize,lastSeenFrame:G}},h=(u,d,m,t)=>{G++,W.clear();for(let R=0;R<d.length;R++)W.add(d[R].index);for(let[R,z]of U)if(W.has(R))z.lastSeenFrame=G;else if(G-z.lastSeenFrame>hJ)K.release(z.element),U.delete(R);let n=null;for(let R=0;R<d.length;R++){let z=d[R],A=z.index,b=u(A);if(!b)continue;let P=m.has(b.id),r=A===t,f=U.get(A);if(f){let s=f.lastItemId!==b.id,J2=f.lastSelected!==P,N=f.lastFocused!==r,M=f.lastY!==z.y||f.lastX!==z.x,w=f.lastSize!==z.size||f.lastCrossSize!==z.crossSize;if(s||J2||N){let _=k(P,r),O=Q(b,A,_);D(f.element,O),F(f.element,P,r),f.element.dataset.id=String(b.id),f.element.ariaSelected=String(P),f.lastItemId=b.id,f.lastSelected=P,f.lastFocused=r}if(w)y(f.element,z),f.lastSize=z.size,f.lastCrossSize=z.crossSize;if(M)v(f.element,z),f.lastY=z.y,f.lastX=z.x}else{let s=p(A,b,z,P,r);if(!n)n=document.createDocumentFragment();n.appendChild(s.element),U.set(A,s)}}if(n)J.appendChild(n)},l=()=>{for(let{element:u}of U.values())K.release(u);U.clear(),J.innerHTML=""};return{render:h,getElement:(u)=>U.get(u)?.element,sortDOM:()=>{A2(J,U.keys(),(u)=>U.get(u)?.element)},clear:l,destroy:()=>{l(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,W)=>{if(!J[U])J[U]=new Set;return J[U].add(W),()=>$(U,W)},$=(U,W)=>{J[U]?.delete(W)};return{on:Q,off:$,emit:(U,W)=>{J[U]?.forEach((G)=>{try{G(W)}catch(B){console.error(`[vlist] Error in event handler for "${String(U)}":`,B)}})},once:(U,W)=>{let G=(B)=>{$(U,G),W(B)};return Q(U,G)},clear:(U)=>{if(U)delete J[U];else for(let W in J)delete J[W]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,W=(R)=>{let z=Y.get(R);if(!z)z={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(R,z);else z.lastAccess=Date.now();return z},G=(R)=>{return Math.floor(R/Q)},B=(R)=>{return R%Q},H=()=>K,E=(R)=>{K=R},k=(R)=>{if(R<0||R>=K)return;let z=G(R),A=Y.get(z);if(!A)return;return A.items[B(R)]},Z=(R)=>{if(R<0||R>=K)return!1;let z=G(R),A=Y.get(z);if(!A)return!1;return A.items[B(R)]!==void 0},V=(R,z)=>{let A=G(R),b=W(A),P=B(R),r=b.items[P]===void 0;if(b.items[P]=z,r)b.count++,U++;if(R>=K)K=R+1},X=(R,z)=>{for(let A=0;A<z.length;A++){let b=z[A];if(b!==void 0)V(R+A,b)}},D=(R)=>{if(R<0||R>=K)return!1;let z=G(R),A=Y.get(z);if(!A)return!1;let b=B(R);if(A.items[b]===void 0)return!1;if(A.items[b]=void 0,A.count--,U--,A.count===0)Y.delete(z);return!0},F=(R,z)=>{let A=[];for(let b=R;b<=z&&b<K;b++)A.push(k(b));return A},v=(R,z)=>{for(let A=R;A<=z&&A<K;A++)if(!Z(A))return!1;return!0},y=()=>{let R=[],z=null,A=Array.from(Y.keys()).sort((b,P)=>b-P);for(let b of A){let P=Y.get(b);if(!P)continue;let r=b*Q;for(let f=0;f<Q;f++){let s=r+f;if(s>=K)break;if(P.items[f]!==void 0)if(z===null)z={start:s,end:s};else if(s===z.end+1)z.end=s;else R.push(z),z={start:s,end:s};else if(z!==null)R.push(z),z=null}}if(z!==null)R.push(z);return R},p=(R,z)=>{let A=[],b=null;for(let P=R;P<=z&&P<K;P++)if(!Z(P))if(b===null)b={start:P,end:P};else b.end=P;else if(b!==null)A.push(b),b=null;if(b!==null)A.push(b);return A},h=(R)=>{return Y.has(R)},l=(R)=>{let z=Y.get(R);if(z)z.lastAccess=Date.now()},a=(R,z)=>{if(R>z||Y.size===0)return;let A=Date.now(),b=G(Math.max(0,R)),P=G(Math.min(K-1,z));for(let r=b;r<=P;r++){let f=Y.get(r);if(f)f.lastAccess=A}},i=(R,z)=>{if(U<=$)return 0;let A=Math.max(0,R-j),b=Math.min(K-1,z+j),P=G(A),r=G(b),f=0,s=[];for(let[J2,N]of Y)if(J2<P||J2>r)f+=N.count,s.push(J2),U-=N.count,Y.delete(J2);if(f>0&&q)q(f,s);return f},u=()=>{if(U<=$)return 0;let R=Array.from(Y.entries()).sort(([,b],[,P])=>b.lastAccess-P.lastAccess),z=0,A=[];for(let[b,P]of R){if(U<=$)break;z+=P.count,U-=P.count,A.push(b),Y.delete(b)}if(z>0&&q)q(z,A);return z},d=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},m=()=>U,t=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:H,setTotal:E,get:k,has:Z,set:V,setRange:X,delete:D,getRange:F,isRangeLoaded:v,getLoadedRanges:y,findUnloadedRanges:p,getChunkIndex:G,isChunkLoaded:h,touchChunk:l,touchChunksForRange:a,evictDistant:i,evictToLimit:u,getStats:d,getCachedCount:m,clear:t,reset:()=>{t(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},M2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),W=Y.start;for(let G of U){if(G.end<W)continue;if(G.start>Y.end)break;if(G.start>W)K.push({start:W,end:Math.min(G.start-1,Y.end)});if(W=G.end+1,W>Y.end)break}if(W<=Y.end)K.push({start:W,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(H)=>{if(q||H.length===0)return;let E=Math.min(H.length,$);for(let k=0;k<E;k++){let Z=H[k];if(!Z||typeof Z!=="object")continue;let V={};for(let[X,D]of Object.entries(Z)){if(X.startsWith("_")||X==="id")continue;V[X]=String(D??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},U=()=>q,W=(H)=>{let E={id:`${l2}${Y++}`,[z2]:!0,_index:H};if(j.length===0)return E.label=Q.repeat(12),E;let k=j[H%j.length];for(let[Z,V]of Object.entries(k))E[Z]=Q.repeat(Math.max(1,V));return E};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:W,generateRange:(H,E)=>{let k=[];for(let Z=H;Z<=E;Z++)k.push(W(Z));return k},clear:()=>{j=[],q=!1,Y=0}}},_2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!_2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:W,onItemsEvicted:G}=J,B=F2({...q,onEvict:(T,S)=>{G?.(T),p()}}),H=null,E=()=>{if(!H)H=H2(Y);return H},k=new Map,Z=!1,V,X=!0,D,F=[],v=0,y=new Map,p=()=>{U?.(n())},h=()=>{k.clear();let T=B.getLoadedRanges();for(let S of T)for(let I=S.start;I<=S.end;I++){let o=B.get(I);if(o&&!_2(o))k.set(o.id,I)}},l=(T,S)=>{if(!_2(S))k.set(S.id,T)},a=(T)=>{k.delete(T)},i=(T,S)=>{return`${T}-${S}`},u=()=>B.getTotal(),d=()=>B.getCachedCount(),m=()=>Z,t=()=>X,n=()=>({total:B.getTotal(),cached:B.getCachedCount(),isLoading:Z,pendingRanges:F,error:V,hasMore:X,cursor:D}),R=()=>B,z=()=>E(),A=(T)=>{let S=B.get(T);if(S!==void 0)return S;if(T>=0&&T<B.getTotal())return E().generate(T);return},b=(T)=>{let S=k.get(T);if(S===void 0)return;return B.get(S)},P=(T)=>{return k.get(T)??-1},r=(T)=>{let S=B.get(T);return S!==void 0&&!_2(S)},f=(T,S)=>{let I=[],o=B.getTotal(),g=0,Q2=0;B.touchChunksForRange(T,Math.min(S,o-1));for(let Y2=T;Y2<=S&&Y2<o;Y2++){let q2=B.get(Y2);if(q2!==void 0)I.push(q2),g++;else I.push(E().generate(Y2)),Q2++}return I},s=(T)=>{B.setTotal(T),X=B.getCachedCount()<T,p()},J2=(T,S=0,I)=>{if(Q&&T.length>0){let o=E();if(!o.hasAnalyzedStructure())o.analyzeStructure(T)}for(let o=0;o<T.length;o++){let g=T[o];if(g!==void 0){let Q2=S+o;B.set(Q2,g),l(Q2,g)}}if(I!==void 0)B.setTotal(I);else if(S+T.length>B.getTotal())B.setTotal(S+T.length);if(B.getCachedCount()>=B.getTotal()&&B.getTotal()>0)X=!1;p(),W?.(T,S,B.getTotal())},N=(T,S)=>{let I=k.get(T);if(I===void 0)return!1;let o=B.get(I);if(!o)return!1;let g={...o,...S};if(B.set(I,g),S.id!==void 0&&S.id!==T)a(T),l(I,g);return p(),!0},M=(T)=>{let S=k.get(T);if(S===void 0)return!1;B.delete(S),a(T);let I=B.getTotal();if(I>0)B.setTotal(I-1);return p(),!0},w=async(T,S)=>{if(!Q)return;let I=i(T,S);if(y.has(I))return;let o=B.getLoadedRanges(),g=M2({start:T,end:S},o,B.chunkSize);if(g.length===0)return;let Q2=B.chunkSize,Y2=[];for(let $2 of g){let X2=Math.floor($2.start/Q2),U2=Math.floor($2.end/Q2);for(let j2=X2;j2<=U2;j2++){let N2=j2*Q2,K2=N2+Q2-1,Z2=i(N2,K2);if(!Y2.some((O2)=>O2.start===N2)&&!y.has(Z2))Y2.push({start:N2,end:K2})}}let q2=[];for(let $2 of g){let X2=Math.floor($2.start/Q2),U2=Math.floor($2.end/Q2);for(let j2=X2;j2<=U2;j2++){let N2=j2*Q2,K2=N2+Q2-1,Z2=i(N2,K2);if(y.has(Z2)){let O2=y.get(Z2);if(!q2.includes(O2))q2.push(O2)}}}for(let $2 of Y2){let X2=i($2.start,$2.end),U2=(async()=>{F.push($2),Z=!0,V=void 0,p();try{let j2=$2.end-$2.start+1,N2={offset:$2.start,limit:j2,cursor:void 0},K2=await Q.read(N2);if(J2(K2.items,$2.start,K2.total),K2.cursor)D=K2.cursor;let Z2=$2.start+K2.items.length;if(Z2>=v){if(v=Z2,K2.hasMore!==void 0)X=K2.hasMore;else if(K2.total!==void 0)X=Z2<K2.total}}catch(j2){V=j2 instanceof Error?j2:Error(String(j2))}finally{y.delete(X2),F=F.filter((j2)=>j2.start!==$2.start||j2.end!==$2.end),Z=y.size>0,p()}})();y.set(X2,U2),q2.push(U2)}await Promise.all(q2)},_=async(T,S)=>{if(B.isRangeLoaded(T,S))return;await w(T,S)},O=async()=>{if(!Q)return;await w(0,K-1)},L=async()=>{if(!Q||Z||!X)return!1;let T=B.getCachedCount(),S=B.getTotal(),I=T,o=Math.min(I+K-1,S>0?S-1:I+K-1);if(I>=S&&S>0)return X=!1,!1;return await w(I,o),B.getCachedCount()>T},c=async()=>{if(B.clear(),B.setTotal(0),k.clear(),H)H.clear();y.clear(),F=[],Z=!1,D=void 0,X=!0,v=0,V=void 0,p()},C=(T,S)=>{if(B.evictDistant(T,S)>0)h()},x=()=>{B.clear(),k.clear(),D=void 0,V=void 0,F=[],Z=!1,p()},e=()=>{if(B.reset(),k.clear(),H)H.clear();D=void 0,X=!0,v=0,V=void 0,F=[],Z=!1,p()};if($&&$.length>0)J2($,0,j??$.length);else if(j!==void 0)B.setTotal(j),p();return{getState:n,getTotal:u,getCached:d,getIsLoading:m,getHasMore:t,getStorage:R,getPlaceholders:z,getItem:A,getItemById:b,getIndexById:P,isItemLoaded:r,getItemsInRange:f,setTotal:s,setItems:J2,updateItem:N,removeItem:M,loadRange:w,ensureRange:_,loadInitial:O,loadMore:L,reload:c,evictDistant:C,clear:x,reset:e}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:W=!0,hoverZoneWidth:G=16,showOnViewportEnter:B=!0}=$,H=0,E=0,k=0,Z=0,V=!1,X=!1,D=0,F=0,v=0,y=null,p=!1,h=null,l=null,a=q?"width":"height",i=q?"translateX":"translateY",u=q?(C)=>C.clientX:(C)=>C.clientY,d=q?"left":"top",m=document.createElement("div"),t=document.createElement("div"),n=W?document.createElement("div"):null,R=()=>{if(m.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,q)m.classList.add(`${j}-scrollbar--horizontal`);if(m.appendChild(t),J.appendChild(m),n){if(n.className=`${j}-scrollbar-hover`,q)n.classList.add(`${j}-scrollbar-hover--horizontal`),n.style.height=`${G}px`;else n.style.width=`${G}px`;J.appendChild(n)}},z=()=>{if(y)clearTimeout(y),y=null},A=()=>{if(!Y)return;z(),y=setTimeout(P,K)},b=()=>{if(H<=E)return;if(z(),!p)m.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!V&&!X)A()},P=()=>{if(V||X)return;m.classList.remove(`${j}-scrollbar--visible`),p=!1},r=(C,x)=>{H=C,E=x;let e=H>E;if(m.style.display=e?"":"none",!e){P();return}let T=E/H;k=Math.max(U,T*E),t.style[a]=`${k}px`,Z=E-k,f(v)},f=(C)=>{if(v=C,H<=E||Z<=0)return;let x=H-E,T=Math.min(1,Math.max(0,C/x))*Z;t.style.transform=`${i}(${T}px)`},s=(C)=>{if(C.target===t)return;let x=m.getBoundingClientRect(),S=u(C)-x[d]-k/2,o=Math.max(0,Math.min(S,Z))/Z,g=H-E,Q2=o*g;Q(Q2),b()},J2=(C)=>{C.preventDefault(),C.stopPropagation(),V=!0,D=u(C),F=v,z(),m.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",N),document.addEventListener("mouseup",M)},N=(C)=>{if(!V)return;let x=u(C)-D,e=Z>0?x/Z:0,T=H-E,S=e*T,I=Math.max(0,Math.min(F+S,T)),g=I/T*Z;if(t.style.transform=`${i}(${g}px)`,l=I,h===null)h=requestAnimationFrame(()=>{if(l!==null)Q(l);h=null})},M=()=>{if(V=!1,h!==null)cancelAnimationFrame(h),h=null;if(l!==null)Q(l),l=null;if(m.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)A();document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",M)},w=()=>{if(B)b()},_=()=>{if(!V){if(X=!1,Y)A()}},O=()=>{X=!0,z(),b()},L=()=>{if(X=!1,!V&&Y)A()},c=()=>{if(z(),h!==null)cancelAnimationFrame(h),h=null;if(m.removeEventListener("click",s),m.removeEventListener("mouseenter",O),m.removeEventListener("mouseleave",L),t.removeEventListener("mousedown",J2),J.removeEventListener("mouseenter",w),J.removeEventListener("mouseleave",_),document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",M),n){if(n.removeEventListener("mouseenter",O),n.removeEventListener("mouseleave",L),n.parentNode)n.parentNode.removeChild(n)}if(m.parentNode)m.parentNode.removeChild(m)};if(R(),m.addEventListener("click",s),m.addEventListener("mouseenter",O),m.addEventListener("mouseleave",L),t.addEventListener("mousedown",J2),J.addEventListener("mouseenter",w),J.addEventListener("mouseleave",_),n)n.addEventListener("mouseenter",O),n.addEventListener("mouseleave",L);return{show:b,hide:P,updateBounds:r,updatePosition:f,isVisible:()=>p,destroy:c}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,W=$-K.time;J.velocity=W>0?U/W:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:W,horizontal:G=!1}=Q,B=!!W,H=0,E=0,k=B?G?window.innerWidth:window.innerHeight:G?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,V=Q.compression,X=zJ(),D=!1,F=null,y=R2(()=>{let _=G?J.scrollLeft:J.scrollTop,O=_>=H?"down":"up";if(X=T2(X,_),H=_,K)K({scrollTop:H,direction:O,velocity:X.velocity});u()}),h=R2(()=>{let _=J.getBoundingClientRect(),O=G?Math.max(0,-_.left):Math.max(0,-_.top),L=O>=H?"down":"up";if(X=T2(X,O),H=O,!D)D=!0;if(K)K({scrollTop:H,direction:L,velocity:X.velocity});u()}),l=(_)=>{_.preventDefault()},a=(_)=>{if(_.deltaX)return;_.preventDefault(),J.scrollLeft+=_.deltaY},i=(_)=>{if(!Z)return;_.preventDefault();let O=(G?_.deltaX||_.deltaY:_.deltaY)*j,L=H+O;if(q)L=H+O*0.3;if(L=Math.max(0,Math.min(L,E)),L!==H){let C=L>=H?"down":"up";if(X=T2(X,L),H=L,!D)D=!0;if(K)K({scrollTop:H,direction:C,velocity:X.velocity});u()}},u=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(D=!1,X=zJ(H),U)U()},Y)},d=(_)=>{if(Z)return;if(Z=!0,V=_,E=_.virtualSize-k,B)return;if(y.cancel(),J.removeEventListener("scroll",y),!$)J.removeEventListener("wheel",l);else if(G)J.removeEventListener("wheel",a);if(G)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",i,{passive:!1});let O=G?J.scrollLeft:J.scrollTop;if(O>0){let L=G?V?.actualSize??J.scrollWidth:V?.actualSize??J.scrollHeight;H=O/L*E}if(G)J.scrollLeft=0;else J.scrollTop=0},m=()=>{if(!Z)return;if(Z=!1,B){V=void 0;return}if(J.removeEventListener("wheel",i),G)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",y,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(G)J.addEventListener("wheel",a,{passive:!1});if(V&&H>0){let O=H/E*(V.actualSize-k);if(G)J.scrollLeft=O;else J.scrollTop=O}V=void 0},t=()=>{if(B||Z)return H;return G?J.scrollLeft:J.scrollTop},n=(_,O=!1)=>{let L=Math.max(0,Math.min(_,E||1/0));if(B){let c=J.getBoundingClientRect();if(G){let C=c.left+window.scrollX;window.scrollTo({left:C+L,behavior:O?"smooth":"auto"})}else{let C=c.top+window.scrollY;window.scrollTo({top:C+L,behavior:O?"smooth":"auto"})}}else if(Z){if(L===H)return;let C=L>=H?"down":"up";if(X=T2(X,L),H=L,!D)D=!0;if(K)K({scrollTop:H,direction:C,velocity:X.velocity});u()}else if(G)J.scrollTo({left:L,behavior:O?"smooth":"auto"});else J.scrollTo({top:L,behavior:O?"smooth":"auto"})},R=(_)=>{n(t()+_)},z=()=>{return t()<=0},A=(_=0)=>{let O=t(),L=B||Z?E:G?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return O>=L-_},b=()=>{let _=t(),O=B||Z?E:G?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(O<=0)return 0;return Math.min(1,Math.max(0,_/O))},P=(_)=>{if(_.compression)V=_.compression,E=V.virtualSize-k},r=()=>Z,f=()=>Math.abs(X.velocity),s=()=>mJ(X),J2=()=>D,N=()=>B,M=(_)=>{if(k=_,V)E=V.virtualSize-k},w=()=>{if(F)clearTimeout(F);if(B)h.cancel(),window.removeEventListener("scroll",h);else y.cancel(),J.removeEventListener("scroll",y),J.removeEventListener("wheel",i),J.removeEventListener("wheel",l),J.removeEventListener("wheel",a)};if(B){if(Z&&V)E=V.virtualSize-k;window.addEventListener("scroll",h,{passive:!0})}else if(Z&&V){if(E=V.virtualSize-k,G)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",i,{passive:!1})}else{if(G)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",y,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(G)J.addEventListener("wheel",a,{passive:!1})}return{getScrollTop:t,scrollTo:n,scrollBy:R,isAtTop:z,isAtBottom:A,getScrollPercentage:b,getVelocity:f,isTracking:s,isScrolling:J2,updateConfig:P,enableCompression:d,disableCompression:m,isCompressed:r,isWindowMode:N,updateContainerHeight:M,destroy:w}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(W){if(Q=W,W>cJ&&W<dJ)$+=W,j++}function K(){let W=J.getTotal();if(W===0)return 0;let G=J.getItemSize();if(G<=0)return 0;let B=J.getContainerSize();if(B<=0)return 0;let H=J.getScrollPosition(),E=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(W/E)*G,X=Math.min(Z,B2)-B,D=Z-B,F=X>0?D/X:1,v=H*F,y=Math.ceil((v+B)/G);return Math.min(y*E,W)}function U(){let W=J.getTotal(),G=K();return{progress:W>0?Math.min(100,Math.max(0,G/W*100)):0,velocity:Q,velocityAvg:q(),itemCount:G,total:W}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,_2 as isPlaceholderItem,$J as isInRange,W2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,G2 as getScaleState,ZJ as getScaleInfo,G2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,OJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,V2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,WJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,DJ as createGridRenderer,_J as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,M2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,B2 as MAX_VIRTUAL_SIZE};
1
+ var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var O2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,G=$-1;while(U<G){let _=U+G+1>>>1;if(j[_]<=K)U=_;else G=_-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},M2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var _2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var V2=(J,Q)=>{let $=Q.getTotalSize(),j=$>_2,q=j?_2:$,Y=$>0?q/$:1;return{isCompressed:j,actualSize:$,virtualSize:q,ratio:Y}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed){let Z=$.indexAtOffset(J),V=$.indexAtOffset(J+Q);if(V<j-1)V++;return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,V)),Y}let{virtualSize:K}=q,G=J/K*j,_=Math.floor(G),N=P2($,Math.max(0,_),Q,j),R=Math.ceil(G)+N,z=K-Q-J;if(z<=Q&&z>=-1){let Z=E2($,Q,j),V=Math.max(0,j-Z),X=Math.max(0,Math.min(1,1-z/Q));_=Math.floor(_+(V-_)*X),R=z<=1?j-1:Math.min(j-1,_+N)}return Y.start=Math.max(0,_),Y.end=Math.min(j-1,Math.max(0,R)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);let{virtualSize:U}=Y,G=U-q,_=G-Q;if(_<=q&&_>=-1){if(Q>=G-1){let P=$.getTotalSize()-$.getOffset(J);return q-P}let z=E2($,q,j),Z=Math.max(0,j-z),X=Q/U*j,D=Math.max(0,Math.min(1,1-_/q)),b=$.getOffset(J)-$.getOffset(Z),v=$.getOffset(J)-k2($,X,j);return v+(b-v)*D}let N=Q/U,R=$.getTotalSize(),L=N*R;return $.getOffset(J)-L},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let G=q.virtualSize-$;return Math.max(0,Math.min(K,G))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>_2;return Q.getTotalSize()>_2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(_2/J)},ZJ=(J,Q)=>{let $=V2(J,Q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,DJ=(J,Q,$,j,q,Y,K,U,G=!1)=>{let _=SJ(),N=new Map,R=Y,L=!1,z=null,Z=0,V=0,X="",D=-1,b=(T)=>{if(z&&Z===T)return z;return z=V2(T,$),Z=T,z},v={selected:!1,focused:!1},P=(T,S)=>{return v.selected=T,v.focused=S,v},p=`${q}-item ${q}-grid-item`,x=`${q}-item--selected`,l=`${q}-item--focused`,n=(T,S)=>{if(typeof S==="string")T.innerHTML=S;else T.replaceChildren(S)},J2=(T,S,O)=>{T.classList.toggle(x,S),T.classList.toggle(l,O)},g=(T,S)=>{let O=j.getRow(T);if(S){let B=S.totalItems,A=b(B);if(A.isCompressed)return L2(O,S.scrollPosition,$,B,S.containerSize,A,S.rangeStart)}return $.getOffset(O)},c=(T,S)=>{let O=L&&j.getCol(T)===0,B=O?0:j.getCol(T),A=O?0:j.getColumnOffset(B,R),E;if(L){let u=j.getRow(T),M=0,m=new Set;for(let t=0;t<T;t++){let W=j.getRow(t);if(W<u&&!m.has(W)){let C=$.getSize(t);M+=C,m.add(W)}}E=M}else E=g(T,S);if(G)return`translate(${Math.round(E)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(E)}px)`},d=(T,S)=>{T.style.transform=S},e=(T,S)=>{let O=T.dataset.id?.startsWith("__group_header"),B=O?R:j.getColumnWidth(R),A;if(L||O)A=$.getSize(S)-j.gap;else{let E=j.getRow(S);A=$.getSize(E)-j.gap}if(G)T.style.width=`${A}px`,T.style.height=`${B}px`;else T.style.width=`${B}px`,T.style.height=`${A}px`},i=(T,S,O,B,A)=>{let E=_.acquire(),u=P(O,B);if(E.className=p,E.dataset.index=String(T),E.dataset.id=String(S.id),E.dataset.row=String(j.getRow(T)),E.dataset.col=String(j.getCol(T)),E.ariaSelected=String(O),U)E.id=`${U}-item-${T}`;if(K){let m=K();if(m!==D)D=m,X=String(m);E.setAttribute("aria-setsize",X),E.setAttribute("aria-posinset",String(T+1))}e(E,T);let M=Q(S,T,u);return n(E,M),J2(E,O,B),d(E,A),{element:E,lastItemId:S.id,lastSelected:O,lastFocused:B,lastTransform:A,lastSeenFrame:V}},y=(T,S,O,B,A)=>{if(V++,S.start===0&&T.length>0)L=O2(T[0]);for(let[M,m]of N)if(M>=S.start&&M<=S.end)m.lastSeenFrame=V;else if(V-m.lastSeenFrame>fJ)_.release(m.element),N.delete(M);let E=!1;if(K){let M=K();if(M!==D)D=M,X=String(M),E=!0}let u=null;for(let M=S.start;M<=S.end;M++){let m=M-S.start,t=T[m];if(!t){console.warn(`⚠️ RENDER: Missing item at index ${M} (range: ${S.start}-${S.end}, items.length: ${T.length})`);continue}let W=O.has(t.id),C=M===B,f=N.get(M);if(f){let o=f.lastItemId!==t.id,Q2=f.lastSelected!==W,$2=f.lastFocused!==C;if(o||Q2||$2){if(o){let q2=P(W,C),j2=Q(t,M,q2);n(f.element,j2),f.element.dataset.id=String(t.id),f.element.dataset.row=String(j.getRow(M)),f.element.dataset.col=String(j.getCol(M)),e(f.element,M)}J2(f.element,W,C),f.element.ariaSelected=String(W),f.lastItemId=t.id,f.lastSelected=W,f.lastFocused=C}let h=c(M,A);if(f.lastTransform!==h)d(f.element,h),f.lastTransform=h;if(E)f.element.setAttribute("aria-setsize",X)}else{let o=c(M,A),Q2=i(M,t,W,C,o);if(!u)u=document.createDocumentFragment();u.appendChild(Q2.element),N.set(M,Q2)}}if(u)J.appendChild(u)},w=(T)=>{for(let[S,O]of N){let B=c(S,T);if(O.lastTransform!==B)d(O.element,B),O.lastTransform=B}},F=(T,S,O,B)=>{let A=N.get(T);if(!A)return;let E=A.lastItemId!==S.id,u=A.lastSelected!==O,M=A.lastFocused!==B;if(E||u||M){let m=P(O,B),t=Q(S,T,m);n(A.element,t),J2(A.element,O,B),A.element.dataset.id=String(S.id),A.element.ariaSelected=String(O),e(A.element,T),A.lastItemId=S.id,A.lastSelected=O,A.lastFocused=B}},H=(T,S,O)=>{let B=N.get(T);if(!B)return;let A=B.lastSelected!==S,E=B.lastFocused!==O;if(A||E)J2(B.element,S,O),B.lastSelected=S,B.lastFocused=O},k=(T)=>{return N.get(T)?.element},r=(T)=>{if(Math.abs(T-R)<1)return;R=T;for(let[S,O]of N){e(O.element,S);let B=c(S);d(O.element,B),O.lastTransform=B}},I=()=>{A2(J,N.keys(),(T)=>N.get(T)?.element)},a=()=>{for(let[,T]of N)_.release(T.element);N.clear()};return{render:y,updatePositions:w,updateItem:F,updateItemClasses:H,getElement:k,sortDOM:I,updateContainerWidth:r,clear:a,destroy:()=>{a(),_.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let G=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:G}),Y=Y+1+G,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(L)=>{if($.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return{type:"header",group:Z};let V=L-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+V,group:Z}},layoutToDataIndex:(L)=>{if($.length===0)return L;let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return-1;let V=L-Z.headerLayoutIndex-1;return Z.firstDataIndex+V},dataToLayoutIndex:(L)=>{if($.length===0)return L;let z=p2($,L),Z=$[z],V=L-Z.firstDataIndex;return Z.headerLayoutIndex+1+V},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=y2($,L);return $[z]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=p2($,L);return $[z]},getHeaderHeight:typeof q==="number"?(L)=>q:(L)=>{let z=$[L];if(!z)return 0;return q(z.key,L)},rebuild:(L)=>{$=x2(L,Q.getGroupForIndex),j=L+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let G=-1,_=!1,N=0,R=(D)=>{if(D===G)return;G=D;let b=Q.groups;if(D<0||D>=b.length){U.textContent="";return}let v=b[D],P=j.headerTemplate(v.key,v.groupIndex),p=Q.getHeaderHeight(D);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof P==="string")U.innerHTML=P;else U.replaceChildren(P)},L=(D)=>{let b=Q.groups;if(b.length===0){Z();return}let v=$.getOffset(b[0].headerLayoutIndex);if(D<v){Z();return}let P=0,p=b.length-1;while(P<p){let g=P+p+1>>>1;if($.getOffset(b[g].headerLayoutIndex)<=D)P=g;else p=g-1}let x=P;if(!_)z();R(x);let l=Q.getHeaderHeight(x),n=0,J2=x+1;if(J2<b.length){let c=$.getOffset(b[J2].headerLayoutIndex)-D;if(c<l)n=c-l}if(n!==N)if(N=n,n===0)U.style.transform="";else{let g=Math.round(n);U.style.transform=Y?`translateX(${g}px)`:`translateY(${g}px)`}},z=()=>{if(_)return;_=!0,U.style.display=""},Z=()=>{if(!_)return;_=!1,U.style.display="none",G=-1,N=0,U.style.transform=""},V=()=>{let D=G;if(G=-1,D>=0)R(D)},X=()=>{U.remove(),G=-1,_=!1};return U.style.display="none",{update:L,refresh:V,show:z,hide:Z,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=M2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=M2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),G=Q.getSize(K),_=Q.getTotalSize(),N=Math.max(0,_-$),R;switch(Y){case"center":R=U-$/2+G/2;break;case"end":R=U-$+G;break;case"start":default:R=U;break}return Math.max(0,Math.min(R,N))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var _J=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(Z)=>{if(Z<=0)return 0;if(!j)return Math.ceil(Z/Q);let V=0,X=0,D=0;for(let b=0;b<Z;b++)if(j(b)){if(D++,X>0)V++,X=0;V++,X=0}else if(X++,X>=Q)V++,X=0;if(X>0)V++;return V},K=(Z)=>{return q.row=U(Z),q.col=G(Z),q},U=(Z)=>{if(!j)return Math.floor(Z/Q);let V=0,X=0;for(let D=0;D<=Z;D++)if(j(D)){if(X>0)V++,X=0;if(D===Z)return V;V++,X=0}else{if(D===Z)return V;if(X++,X>=Q)V++,X=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${V}`),V},G=(Z)=>{if(!j)return Z%Q;if(j(Z))return 0;let V=0;for(let X=0;X<=Z;X++)if(j(X))V=0;else{if(X===Z)return V;if(V++,V>=Q)V=0}return V},_=(Z,V,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,Z*Q),x=Math.min(X-1,(V+1)*Q-1);return{start:p,end:x}}let D=-1,b=-1,v=0,P=0;for(let p=0;p<X;p++){if(j(p)){if(P>0)v++,P=0;if(v>=Z&&v<=V){if(D===-1)D=p;b=p}v++,P=0}else{if(v>=Z&&v<=V){if(D===-1)D=p;b=p}if(P++,P>=Q)v++,P=0}if(v>V&&P===0)break}if(D===-1)return{start:0,end:-1};return{start:D,end:b}},N=(Z,V,X)=>{if(V<0||V>=Q)return-1;let D=Z*Q+V;if(D<0||D>=X)return-1;return D},R=(Z)=>{let V=(Q-1)*$;return Math.max(0,(Z-V)/Q)};return{get columns(){return Q},get gap(){return $},update:(Z)=>{if(Z.columns!==void 0)Q=Math.max(1,Math.floor(Z.columns));if(Z.gap!==void 0)$=Z.gap;if(Z.isHeaderFn!==void 0)j=Z.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:G,getItemRange:_,getItemIndex:N,getColumnWidth:R,getColumnOffset:(Z,V)=>{let X=R(V);return Z*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,D)=>({def:X,index:D,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},G=(X)=>{if(Y.length===0){K=0;return}let D=0,b=0;for(let v=0;v<Y.length;v++){let P=Y[v],p=P.def;if(p.width!==void 0)P.width=v2(p.width,P.minWidth,P.maxWidth),D+=P.width;else b++}if(b>0){let P=Math.max(0,X-D)/b;for(let p=0;p<Y.length;p++){let x=Y[p];if(x.def.width===void 0)x.width=v2(P,x.minWidth,x.maxWidth)}}_()},_=()=>{let X=0;for(let D=0;D<Y.length;D++){let b=Y[D];b.offset=X,X+=b.width}K=X},N=(X,D)=>{if(X<0||X>=Y.length)return 0;let b=Y[X];if(!b.resizable)return b.width;let v=v2(D,b.minWidth,b.maxWidth);return b.width=v,_(),v},R=(X)=>{return Y[X]},L=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let D=0,b=Y.length-1;while(D<b){let v=D+b>>>1,P=Y[v];if(X<P.offset)b=v-1;else if(X>=P.offset+P.width)D=v+1;else return P}return Y[D]},z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},Z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},V=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:G,updateColumns:V,resizeColumn:N,getColumn:R,getColumnAtX:L,getColumnOffset:z,getColumnWidth:Z}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let G=document.createElement("div");G.className=`${j}-table-header`,G.setAttribute("role","row"),G.setAttribute("aria-rowindex","1"),G.style.height=`${$}px`;let _=document.createElement("div");_.className=`${j}-table-header-scroll`,_.setAttribute("role","presentation"),G.appendChild(_),U.appendChild(G),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let N=[],R=[],L=[],z=!0,Z=null,V="asc",X=null,D=!1,b=-1,v=0,P=0,p=(F,H)=>{let k=document.createElement("div");k.className=`${j}-table-header-cell`,k.setAttribute("role","columnheader"),k.setAttribute("aria-colindex",String(H+1)),k.dataset.columnKey=F.def.key;let r=F.def.align;if(r==="center")k.classList.add(`${j}-table-header-cell--center`);else if(r==="right")k.classList.add(`${j}-table-header-cell--right`);let I=document.createElement("div");I.className=`${j}-table-header-content`;let a=F.def.header?F.def.header(F.def):F.def.label;if(typeof a==="string")I.textContent=a;else I.appendChild(a);if(k.appendChild(I),F.def.sortable){let s=document.createElement("span");s.className=`${j}-table-header-sort`,s.setAttribute("aria-hidden","true"),k.appendChild(s),L.push(s),k.classList.add(`${j}-table-header-cell--sortable`)}else L.push(null);if(F.resizable){let s=document.createElement("div");s.className=`${j}-table-header-resize`,s.dataset.resizeIndex=String(H),k.appendChild(s),R.push(s)}return k},x=(F)=>{X=F,_.textContent="",N=[],R=[],L=[];let H=F.columns;for(let k=0;k<H.length;k++){let r=H[k],I=p(r,k);N.push(I),_.appendChild(I)}if(l(F),Z)n(Z,V)},l=(F)=>{X=F;let H=F.columns;_.style.width=`${F.totalWidth}px`;for(let k=0;k<N.length&&k<H.length;k++){let r=N[k],I=H[k];r.style.width=`${I.width}px`}},n=(F,H)=>{if(Z=F,V=H,!X)return;let k=X.columns;for(let r=0;r<L.length&&r<k.length;r++){let I=L[r];if(!I)continue;if(k[r].def.key===F&&F!==null)I.textContent=H==="asc"?"▲":"▼",I.style.opacity="0.7",N[r].setAttribute("aria-sort",H==="asc"?"ascending":"descending");else I.textContent="",I.style.opacity="0",N[r].removeAttribute("aria-sort")}},J2=(F)=>{_.style.transform=`translateX(${-F}px)`},g=(F)=>{let H=F.target;if(!H.dataset.resizeIndex)return;if(F.preventDefault(),F.stopPropagation(),b=parseInt(H.dataset.resizeIndex,10),!X)return;let k=X.getColumn(b);if(!k||!k.resizable)return;D=!0,v=F.clientX,P=k.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",H.classList.add(`${j}-table-header-resize--active`),H.setPointerCapture(F.pointerId),H.addEventListener("pointermove",c),H.addEventListener("pointerup",d),H.addEventListener("pointercancel",d)},c=(F)=>{if(!D||!X)return;let H=F.clientX-v;if(Math.abs(H)<1)return;let k=Math.max(0,P+H);q(b,k)},d=(F)=>{if(!D)return;let H=F.target;H.removeEventListener("pointermove",c),H.removeEventListener("pointerup",d),H.removeEventListener("pointercancel",d);try{H.releasePointerCapture(F.pointerId)}catch{}H.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",D=!1,b=-1},e=(F)=>{let H=F.target;if(H.dataset.resizeIndex!==void 0)return;if(D)return;let k=H;while(k&&!k.dataset.columnKey)if(k=k.parentElement,k===G||k===null)return;if(!k||!k.dataset.columnKey)return;let r=k.dataset.columnKey;if(!X)return;let I=X.columns,a=-1;for(let T=0;T<I.length;T++)if(I[T].def.key===r){a=T;break}if(a===-1)return;let s=I[a];if(K)K({key:r,index:a,event:F});if(s.def.sortable&&Y){let T;if(Z===r)if(V==="asc")T="desc";else T=null;else T="asc";Y({key:r,index:a,direction:T})}};return G.addEventListener("pointerdown",g),G.addEventListener("click",e),{element:G,update:l,updateSort:n,rebuild:x,show:()=>{if(z)return;z=!0,G.style.display=""},hide:()=>{if(!z)return;z=!1,G.style.display="none"},destroy:()=>{G.removeEventListener("pointerdown",g),G.removeEventListener("click",e),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),N=[],R=[],L=[],X=null,z=!1},syncScroll:J2}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},WJ=(J,Q,$,j,q,Y,K,U,G)=>{let _=pJ(),N=new Map,R=-1,L=$,z=null,Z=null,V=null,X=(O,B)=>{Z=O,V=B},D=(O,B)=>{if(B)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},b=`${q}-item ${q}-table-row`,v=`${q}-item--selected`,P=`${q}-item--focused`,p=`${q}-table-cell`,x=`${q}-table-cell--center`,l=`${q}-table-cell--right`,n=`${q}-item--odd`,J2=`${q}-item--placeholder`,g=`${q}-item--replaced`,c=`${q}-item ${q}-table-row ${q}-table-group-header`,d=`${q}-table-group-header-content`,e=(O,B,A,E,u=!1)=>{if(A.def.cell){let M=A.def.cell(B,A.def,E);if(typeof M==="string")O.innerHTML=M;else O.replaceChildren(M)}else{let M=B[A.def.key],m=M!=null?String(M):"";if(u&&m)O.innerHTML=`<span>${m}</span>`;else O.textContent=m}},i=(O,B,A,E,u=!1)=>{let M=b;if(U){if(z){let m=z(B);if(m>=0&&(m&1)===1)M+=` ${n}`}else if((B&1)===1)M+=` ${n}`}if(u)M+=` ${J2}`;if(A)M+=` ${v}`;if(E)M+=` ${P}`;O.className=M},y=(O,B)=>{let A=B.def.align;if(A==="center")O.classList.add(x),O.classList.remove(l);else if(A==="right")O.classList.add(l),O.classList.remove(x);else O.classList.remove(x,l)},w=(O,B)=>{let E=L.columns.length;if(B.length===E)return B;let u=[];for(let M=0;M<E;M++){let m;if(M<B.length)m=B[M];else m=document.createElement("div"),m.className=p,O.appendChild(m);u.push(m)}for(let M=E;M<B.length;M++)B[M].remove();return u},F=(O,B,A)=>{let E=_.acquire(),u=O;E.style.width=`${L.totalWidth}px`;let M=A.getSize(B);E.style.height=`${M}px`,E.className=c,E.setAttribute("role","presentation"),E.setAttribute("data-id",String(O.id)),E.setAttribute("data-index",String(B)),E.removeAttribute("aria-selected"),E.removeAttribute("aria-rowindex"),E.replaceChildren();let m=document.createElement("div");if(m.className=d,V){let W=V(u.groupKey,u.groupIndex);if(typeof W==="string")m.innerHTML=W;else m.appendChild(W)}E.appendChild(m);let t=A.getOffset(B);return E.style.transform=`translateY(${t}px)`,{element:E,cells:[],index:B,isGroupHeader:!0,lastItemId:O.id,lastSelected:!1,lastFocused:!1,lastOffset:t,lastHeight:M}},H=(O,B,A,E,u)=>{let M=_.acquire();M.style.width=`${L.totalWidth}px`;let m=u.getSize(B);M.style.height=`${m}px`;let t=String(O.id).startsWith("__placeholder_");i(M,B,A,E,t),M.setAttribute("role","row"),M.setAttribute("data-id",String(O.id)),M.setAttribute("data-index",String(B)),M.id=`${Y}-${B}`,M.setAttribute("aria-rowindex",String(B+2));let W=K();if(W!==R)R=W;D(M,A);let C=w(M,[]),f=L.columns;for(let Q2=0;Q2<C.length&&Q2<f.length;Q2++){let $2=C[Q2],h=f[Q2];$2.style.left=`${h.offset}px`,$2.style.width=`${h.width}px`,$2.setAttribute("role","gridcell"),$2.setAttribute("aria-colindex",String(Q2+1)),y($2,h),e($2,O,h,B,t)}let o=u.getOffset(B);return M.style.transform=`translateY(${o}px)`,{element:M,cells:C,index:B,isGroupHeader:!1,lastItemId:O.id,lastSelected:A,lastFocused:E,lastOffset:o,lastHeight:m}},k=(O,B,A,E)=>{for(let[W,C]of N)if(W<B.start||W>B.end)_.release(C.element),N.delete(W);let u=!1,M=K();if(M!==R)R=M,u=!0;let m=null,t=Q();z=typeof U==="string"&&G?G():null;for(let W=B.start;W<=B.end;W++){let C=W-B.start,f=O[C];if(!f)continue;let o=A.has(f.id),Q2=W===E,$2=Z?Z(f):!1,h=N.get(W);if(h){if(h.isGroupHeader!==$2){_.release(h.element),N.delete(W);let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element);continue}if($2){if(h.lastItemId!==f.id){let U2=f,Y2=h.element.firstElementChild;if(Y2&&V){let K2=V(U2.groupKey,U2.groupIndex);if(typeof K2==="string")Y2.innerHTML=K2;else Y2.replaceChildren(K2)}h.element.setAttribute("data-id",String(f.id)),h.lastItemId=f.id}let j2=t.getOffset(W);if(h.lastOffset!==j2)h.lastOffset=j2,h.element.style.transform=`translateY(${j2}px)`;let B2=t.getSize(W);if(h.lastHeight!==B2)h.lastHeight=B2,h.element.style.height=`${B2}px`}else{let q2=h.lastItemId!==f.id,j2=h.lastSelected!==o,B2=h.lastFocused!==Q2;if(q2){let K2=h.lastItemId!=null&&String(h.lastItemId).startsWith("__placeholder_"),X2=String(f.id).startsWith("__placeholder_"),N2=L.columns;for(let Z2=0;Z2<h.cells.length&&Z2<N2.length;Z2++)e(h.cells[Z2],f,N2[Z2],W,X2);if(i(h.element,W,o,Q2,X2),h.element.setAttribute("data-id",String(f.id)),D(h.element,o),K2&&!X2)h.element.classList.add(g),setTimeout(()=>{h.element.classList.remove(g)},300);h.lastItemId=f.id,h.lastSelected=o,h.lastFocused=Q2}else if(j2||B2){let K2=String(f.id).startsWith("__placeholder_");i(h.element,W,o,Q2,K2),D(h.element,o),h.lastSelected=o,h.lastFocused=Q2}let U2=t.getOffset(W);if(h.lastOffset!==U2)h.lastOffset=U2,h.element.style.transform=`translateY(${U2}px)`;let Y2=t.getSize(W);if(h.lastHeight!==Y2)h.lastHeight=Y2,h.element.style.height=`${Y2}px`;if(u)h.element.setAttribute("aria-rowindex",String(W+2))}}else{let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element)}}if(m)J.appendChild(m)},r=(O,B,A,E)=>{let u=N.get(O);if(!u)return;if(u.isGroupHeader)return;let M=u.lastItemId!==B.id,m=u.lastSelected!==A,t=u.lastFocused!==E;if(M||m||t){if(M){let W=L.columns;for(let C=0;C<u.cells.length&&C<W.length;C++)e(u.cells[C],B,W[C],O);u.element.setAttribute("data-id",String(B.id)),u.lastItemId=B.id}i(u.element,O,A,E),D(u.element,A),u.lastSelected=A,u.lastFocused=E}},I=(O,B,A)=>{let E=N.get(O);if(!E)return;if(E.isGroupHeader)return;let u=E.lastSelected!==B,M=E.lastFocused!==A;if(u||M)i(E.element,O,B,A),D(E.element,B),E.lastSelected=B,E.lastFocused=A},a=(O)=>{L=O;let B=O.columns;for(let[,A]of N)if(A.element.style.width=`${O.totalWidth}px`,A.cells.length>0)for(let E=0;E<A.cells.length&&E<B.length;E++){let u=A.cells[E],M=B[E];u.style.left=`${M.offset}px`,u.style.width=`${M.width}px`}},s=(O)=>{return N.get(O)?.element},T=()=>{for(let[,O]of N)_.release(O.element);N.clear(),R=-1};return{render:k,updateItem:r,updateItemClasses:I,getElement:s,updateColumnLayout:a,setGroupHeaderFn:X,clear:T,destroy:()=>{T(),_.clear()}}};var OJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let D=q+$;for(let b=0;b<Q;b++)Y[b]=b*D};K();let U=[],G=0,_=[],N=(X)=>{let D=0,b=X[0];for(let v=1;v<X.length;v++){let P=X[v];if(P<b)b=P,D=v}return D},R=(X,D)=>{if(X<=0)return G=0,U=[],[];let b=Array(Q).fill(0),v=Array(Q);for(let x=0;x<Q;x++)v[x]=[];let P=Array(X);for(let x=0;x<X;x++){let l=N(b),n=D(x),J2=b[l];P[x]={index:x,x:Y[l],y:J2,lane:l,size:n,crossSize:q},v[l].push(x),b[l]=J2+n+$}U=v;let p=0;for(let x=0;x<Q;x++){let l=b[x],n=l>0?l-$:0;if(n>p)p=n}return G=p,P},L=(X)=>{if(X.length===0)return G>0?G:0;if(G>0)return G;let D=Array(Q).fill(0);for(let v of X){let P=v.y+v.size,p=D[v.lane];if(P>p)D[v.lane]=P}let b=0;for(let v=0;v<Q;v++)if(D[v]>b)b=D[v];return b},z=(X,D,b)=>{if(X.length===0||b<=D)return _.length=0,_;if(U.length===0||U.length!==Q)return Z(X,D,b);_.length=0;for(let v=0;v<Q;v++){let P=U[v],p=P.length;if(p===0)continue;let x=0,l=p;while(x<l){let n=x+l>>>1,J2=X[P[n]];if(J2.y+J2.size<=D)x=n+1;else l=n}for(let n=x;n<p;n++){let J2=X[P[n]];if(J2.y>=b)break;_.push(J2)}}return _},Z=(X,D,b)=>{let v=[];for(let P of X)if(P.y+P.size>D&&P.y<b)v.push(P);return v};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let D=!1;if(X.columns!==void 0){let b=Math.max(1,Math.floor(X.columns));if(b!==Q)Q=b,D=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,D=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,D=!0;if(D)K()},calculateLayout:R,getTotalSize:L,getVisibleItems:z}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,G=new Set,_=0,N="",R=-1,L={selected:!1,focused:!1},z=(g,c)=>{return L.selected=g,L.focused=c,L},Z=`${$}-item ${$}-masonry-item`,V=`${$}-item--selected`,X=`${$}-item--focused`,D=(g,c)=>{if(typeof c==="string")g.innerHTML=c;else g.replaceChildren(c)},b=(g,c,d)=>{g.classList.toggle(V,c),g.classList.toggle(X,d)},v=(g,c)=>{if(j)g.style.transform=`translate(${Math.round(c.y)}px, ${Math.round(c.x)}px)`;else g.style.transform=`translate(${Math.round(c.x)}px, ${Math.round(c.y)}px)`},P=(g,c)=>{if(j)g.style.width=`${c.size}px`,g.style.height=`${c.crossSize}px`;else g.style.width=`${c.crossSize}px`,g.style.height=`${c.size}px`},p=(g,c,d,e,i)=>{let y=K.acquire(),w=z(e,i);if(y.className=Z,y.dataset.index=String(g),y.dataset.id=String(c.id),y.dataset.lane=String(d.lane),y.ariaSelected=String(e),Y)y.id=`${Y}-item-${g}`;if(q){let H=q();if(H!==R)R=H,N=String(H);y.setAttribute("aria-setsize",N),y.setAttribute("aria-posinset",String(g+1))}P(y,d);let F=Q(c,g,w);return D(y,F),b(y,e,i),v(y,d),{element:y,lastItemId:c.id,lastSelected:e,lastFocused:i,lastY:d.y,lastX:d.x,lastSize:d.size,lastCrossSize:d.crossSize,lastSeenFrame:_}},x=(g,c,d,e)=>{_++,G.clear();for(let y=0;y<c.length;y++)G.add(c[y].index);for(let[y,w]of U)if(G.has(y))w.lastSeenFrame=_;else if(_-w.lastSeenFrame>hJ)K.release(w.element),U.delete(y);let i=null;for(let y=0;y<c.length;y++){let w=c[y],F=w.index,H=g(F);if(!H)continue;let k=d.has(H.id),r=F===e,I=U.get(F);if(I){let a=I.lastItemId!==H.id,s=I.lastSelected!==k,T=I.lastFocused!==r,S=I.lastY!==w.y||I.lastX!==w.x,O=I.lastSize!==w.size||I.lastCrossSize!==w.crossSize;if(a||s||T){let B=z(k,r),A=Q(H,F,B);D(I.element,A),b(I.element,k,r),I.element.dataset.id=String(H.id),I.element.ariaSelected=String(k),I.lastItemId=H.id,I.lastSelected=k,I.lastFocused=r}if(O)P(I.element,w),I.lastSize=w.size,I.lastCrossSize=w.crossSize;if(S)v(I.element,w),I.lastY=w.y,I.lastX=w.x}else{let a=p(F,H,w,k,r);if(!i)i=document.createDocumentFragment();i.appendChild(a.element),U.set(F,a)}}if(i)J.appendChild(i)},l=()=>{for(let{element:g}of U.values())K.release(g);U.clear(),J.innerHTML=""};return{render:x,getElement:(g)=>U.get(g)?.element,sortDOM:()=>{A2(J,U.keys(),(g)=>U.get(g)?.element)},clear:l,destroy:()=>{l(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,G)=>{if(!J[U])J[U]=new Set;return J[U].add(G),()=>$(U,G)},$=(U,G)=>{J[U]?.delete(G)};return{on:Q,off:$,emit:(U,G)=>{J[U]?.forEach((_)=>{try{_(G)}catch(N){console.error(`[vlist] Error in event handler for "${String(U)}":`,N)}})},once:(U,G)=>{let _=(N)=>{$(U,_),G(N)};return Q(U,_)},clear:(U)=>{if(U)delete J[U];else for(let G in J)delete J[G]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,G=(y)=>{let w=Y.get(y);if(!w)w={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(y,w);else w.lastAccess=Date.now();return w},_=(y)=>{return Math.floor(y/Q)},N=(y)=>{return y%Q},R=()=>K,L=(y)=>{K=y},z=(y)=>{if(y<0||y>=K)return;let w=_(y),F=Y.get(w);if(!F)return;return F.items[N(y)]},Z=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w);if(!F)return!1;return F.items[N(y)]!==void 0},V=(y,w)=>{let F=_(y),H=G(F),k=N(y),r=H.items[k]===void 0;if(H.items[k]=w,r)H.count++,U++;if(y>=K)K=y+1},X=(y,w)=>{for(let F=0;F<w.length;F++){let H=w[F];if(H!==void 0)V(y+F,H)}},D=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w),H=N(y);if(!(F!==void 0&&F.items[H]!==void 0))return!1;let r=w,I=Array.from(Y.keys()).filter((s)=>s>=r).sort((s,T)=>s-T),a=[];for(let s of I){let T=Y.get(s),S=s*Q;for(let O=0;O<Q;O++){if(T.items[O]===void 0)continue;let B=S+O;if(B<=y)continue;a.push({oldIndex:B,item:T.items[O]})}}if(F.items[H]=void 0,F.count--,U--,F.count===0)Y.delete(w);for(let{oldIndex:s}of a){let T=_(s),S=Y.get(T);if(!S)continue;let O=N(s);if(S.items[O]!==void 0){if(S.items[O]=void 0,S.count--,U--,S.count===0)Y.delete(T)}}for(let{oldIndex:s,item:T}of a){let S=s-1,O=_(S),B=G(O),A=N(S);B.items[A]=T,B.count++,U++}return K--,!0},b=(y,w)=>{let F=[];for(let H=y;H<=w&&H<K;H++)F.push(z(H));return F},v=(y,w)=>{for(let F=y;F<=w&&F<K;F++)if(!Z(F))return!1;return!0},P=()=>{let y=[],w=null,F=Array.from(Y.keys()).sort((H,k)=>H-k);for(let H of F){let k=Y.get(H);if(!k)continue;let r=H*Q;for(let I=0;I<Q;I++){let a=r+I;if(a>=K)break;if(k.items[I]!==void 0)if(w===null)w={start:a,end:a};else if(a===w.end+1)w.end=a;else y.push(w),w={start:a,end:a};else if(w!==null)y.push(w),w=null}}if(w!==null)y.push(w);return y},p=(y,w)=>{let F=[],H=null;for(let k=y;k<=w&&k<K;k++)if(!Z(k))if(H===null)H={start:k,end:k};else H.end=k;else if(H!==null)F.push(H),H=null;if(H!==null)F.push(H);return F},x=(y)=>{return Y.has(y)},l=(y)=>{let w=Y.get(y);if(w)w.lastAccess=Date.now()},n=(y,w)=>{if(y>w||Y.size===0)return;let F=Date.now(),H=_(Math.max(0,y)),k=_(Math.min(K-1,w));for(let r=H;r<=k;r++){let I=Y.get(r);if(I)I.lastAccess=F}},J2=(y,w)=>{if(U<=$)return 0;let F=Math.max(0,y-j),H=Math.min(K-1,w+j),k=_(F),r=_(H),I=0,a=[];for(let[s,T]of Y)if(s<k||s>r)I+=T.count,a.push(s),U-=T.count,Y.delete(s);if(I>0&&q)q(I,a);return I},g=()=>{if(U<=$)return 0;let y=Array.from(Y.entries()).sort(([,H],[,k])=>H.lastAccess-k.lastAccess),w=0,F=[];for(let[H,k]of y){if(U<=$)break;w+=k.count,U-=k.count,F.push(H),Y.delete(H)}if(w>0&&q)q(w,F);return w},c=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},d=()=>U,e=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:R,setTotal:L,get:z,has:Z,set:V,setRange:X,delete:D,getRange:b,isRangeLoaded:v,getLoadedRanges:P,findUnloadedRanges:p,getChunkIndex:_,isChunkLoaded:x,touchChunk:l,touchChunksForRange:n,evictDistant:J2,evictToLimit:g,getStats:c,getCachedCount:d,clear:e,reset:()=>{e(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},W2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),G=Y.start;for(let _ of U){if(_.end<G)continue;if(_.start>Y.end)break;if(_.start>G)K.push({start:G,end:Math.min(_.start-1,Y.end)});if(G=_.end+1,G>Y.end)break}if(G<=Y.end)K.push({start:G,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(R)=>{if(q||R.length===0)return;let L=Math.min(R.length,$);for(let z=0;z<L;z++){let Z=R[z];if(!Z||typeof Z!=="object")continue;let V={};for(let[X,D]of Object.entries(Z)){if(X.startsWith("_")||X==="id")continue;V[X]=String(D??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},U=()=>q,G=(R)=>{let L={id:`${l2}${Y++}`,[z2]:!0,_index:R};if(j.length===0)return L.label=Q.repeat(12),L;let z=j[R%j.length];for(let[Z,V]of Object.entries(z))L[Z]=Q.repeat(Math.max(1,V));return L};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:G,generateRange:(R,L)=>{let z=[];for(let Z=R;Z<=L;Z++)z.push(G(Z));return z},clear:()=>{j=[],q=!1,Y=0}}},D2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!D2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:G,onItemsEvicted:_}=J,N=F2({...q,onEvict:(W,C)=>{_?.(W),p()}}),R=null,L=()=>{if(!R)R=H2(Y);return R},z=new Map,Z=!1,V,X=!0,D,b=[],v=0,P=new Map,p=()=>{U?.(i())},x=()=>{z.clear();let W=N.getLoadedRanges();for(let C of W)for(let f=C.start;f<=C.end;f++){let o=N.get(f);if(o&&!D2(o))z.set(o.id,f)}},l=(W,C)=>{if(!D2(C))z.set(C.id,W)},n=(W)=>{z.delete(W)},J2=(W,C)=>{return`${W}-${C}`},g=()=>N.getTotal(),c=()=>N.getCachedCount(),d=()=>Z,e=()=>X,i=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:Z,pendingRanges:b,error:V,hasMore:X,cursor:D}),y=()=>N,w=()=>L(),F=(W)=>{let C=N.get(W);if(C!==void 0)return C;if(W>=0&&W<N.getTotal())return L().generate(W);return},H=(W)=>{let C=z.get(W);if(C===void 0)return;return N.get(C)},k=(W)=>{return z.get(W)??-1},r=(W)=>{let C=N.get(W);return C!==void 0&&!D2(C)},I=(W,C)=>{let f=[],o=N.getTotal(),Q2=0,$2=0;N.touchChunksForRange(W,Math.min(C,o-1));for(let h=W;h<=C&&h<o;h++){let q2=N.get(h);if(q2!==void 0)f.push(q2),Q2++;else f.push(L().generate(h)),$2++}return f},a=(W)=>{N.setTotal(W),X=N.getCachedCount()<W,p()},s=(W,C=0,f)=>{if(Q&&W.length>0){let o=L();if(!o.hasAnalyzedStructure())o.analyzeStructure(W)}for(let o=0;o<W.length;o++){let Q2=W[o];if(Q2!==void 0){let $2=C+o;N.set($2,Q2),l($2,Q2)}}if(f!==void 0)N.setTotal(f);else if(C+W.length>N.getTotal())N.setTotal(C+W.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)X=!1;p(),G?.(W,C,N.getTotal())},T=(W,C)=>{let f=z.get(W);if(f===void 0)return!1;let o=N.get(f);if(!o)return!1;let Q2={...o,...C};if(N.set(f,Q2),C.id!==void 0&&C.id!==W)n(W),l(f,Q2);return p(),!0},S=(W)=>{let C=z.get(W);if(C===void 0)return!1;if(!N.delete(C))return!1;return x(),P.clear(),p(),!0},O=async(W,C)=>{if(!Q)return;let f=J2(W,C);if(P.has(f))return;let o=N.getLoadedRanges(),Q2=W2({start:W,end:C},o,N.chunkSize);if(Q2.length===0)return;let $2=N.chunkSize,h=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(!h.some((Z2)=>Z2.start===K2)&&!P.has(N2))h.push({start:K2,end:X2})}}let q2=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(P.has(N2)){let Z2=P.get(N2);if(!q2.includes(Z2))q2.push(Z2)}}}for(let j2 of h){let B2=J2(j2.start,j2.end),U2=(async()=>{b.push(j2),Z=!0,V=void 0,p();try{let Y2=j2.end-j2.start+1,K2={offset:j2.start,limit:Y2,cursor:void 0},X2=await Q.read(K2);if(s(X2.items,j2.start,X2.total),X2.cursor)D=X2.cursor;let N2=j2.start+X2.items.length;if(N2>=v){if(v=N2,X2.hasMore!==void 0)X=X2.hasMore;else if(X2.total!==void 0)X=N2<X2.total}}catch(Y2){V=Y2 instanceof Error?Y2:Error(String(Y2))}finally{P.delete(B2),b=b.filter((Y2)=>Y2.start!==j2.start||Y2.end!==j2.end),Z=P.size>0,p()}})();P.set(B2,U2),q2.push(U2)}await Promise.all(q2)},B=async(W,C)=>{if(N.isRangeLoaded(W,C))return;await O(W,C)},A=async()=>{if(!Q)return;await O(0,K-1)},E=async()=>{if(!Q||Z||!X)return!1;let W=N.getCachedCount(),C=N.getTotal(),f=W,o=Math.min(f+K-1,C>0?C-1:f+K-1);if(f>=C&&C>0)return X=!1,!1;return await O(f,o),N.getCachedCount()>W},u=async()=>{if(N.clear(),N.setTotal(0),z.clear(),R)R.clear();P.clear(),b=[],Z=!1,D=void 0,X=!0,v=0,V=void 0,p()},M=(W,C)=>{if(N.evictDistant(W,C)>0)x()},m=()=>{N.clear(),z.clear(),D=void 0,V=void 0,b=[],Z=!1,p()},t=()=>{if(N.reset(),z.clear(),R)R.clear();D=void 0,X=!0,v=0,V=void 0,b=[],Z=!1,p()};if($&&$.length>0)s($,0,j??$.length);else if(j!==void 0)N.setTotal(j),p();return{getState:i,getTotal:g,getCached:c,getIsLoading:d,getHasMore:e,getStorage:y,getPlaceholders:w,getItem:F,getItemById:H,getIndexById:k,isItemLoaded:r,getItemsInRange:I,setTotal:a,setItems:s,updateItem:T,removeItem:S,loadRange:O,ensureRange:B,loadInitial:A,loadMore:E,reload:u,evictDistant:M,clear:m,reset:t}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:G=!0,hoverZoneWidth:_=16,showOnViewportEnter:N=!0}=$,R=0,L=0,z=0,Z=0,V=!1,X=!1,D=0,b=0,v=0,P=null,p=!1,x=null,l=null,n=q?"width":"height",J2=q?"translateX":"translateY",g=q?(M)=>M.clientX:(M)=>M.clientY,c=q?"left":"top",d=document.createElement("div"),e=document.createElement("div"),i=G?document.createElement("div"):null,y=()=>{if(d.className=`${j}-scrollbar`,e.className=`${j}-scrollbar-thumb`,q)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(e),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,q)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;else i.style.width=`${_}px`;J.appendChild(i)}},w=()=>{if(P)clearTimeout(P),P=null},F=()=>{if(!Y)return;w(),P=setTimeout(k,K)},H=()=>{if(R<=L)return;if(w(),!p)d.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!V&&!X)F()},k=()=>{if(V||X)return;d.classList.remove(`${j}-scrollbar--visible`),p=!1},r=(M,m)=>{R=M,L=m;let t=R>L;if(d.style.display=t?"":"none",!t){k();return}let W=L/R;z=Math.max(U,W*L),e.style[n]=`${z}px`,Z=L-z,I(v)},I=(M)=>{if(v=M,R<=L||Z<=0)return;let m=R-L,W=Math.min(1,Math.max(0,M/m))*Z;e.style.transform=`${J2}(${W}px)`},a=(M)=>{if(M.target===e)return;let m=d.getBoundingClientRect(),C=g(M)-m[c]-z/2,o=Math.max(0,Math.min(C,Z))/Z,Q2=R-L,$2=o*Q2;Q($2),H()},s=(M)=>{M.preventDefault(),M.stopPropagation(),V=!0,D=g(M),b=v,w(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",T),document.addEventListener("mouseup",S)},T=(M)=>{if(!V)return;let m=g(M)-D,t=Z>0?m/Z:0,W=R-L,C=t*W,f=Math.max(0,Math.min(b+C,W)),Q2=f/W*Z;if(e.style.transform=`${J2}(${Q2}px)`,l=f,x===null)x=requestAnimationFrame(()=>{if(l!==null)Q(l);x=null})},S=()=>{if(V=!1,x!==null)cancelAnimationFrame(x),x=null;if(l!==null)Q(l),l=null;if(d.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)F();document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S)},O=()=>{if(N)H()},B=()=>{if(!V){if(X=!1,Y)F()}},A=()=>{X=!0,w(),H()},E=()=>{if(X=!1,!V&&Y)F()},u=()=>{if(w(),x!==null)cancelAnimationFrame(x),x=null;if(d.removeEventListener("click",a),d.removeEventListener("mouseenter",A),d.removeEventListener("mouseleave",E),e.removeEventListener("mousedown",s),J.removeEventListener("mouseenter",O),J.removeEventListener("mouseleave",B),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S),i){if(i.removeEventListener("mouseenter",A),i.removeEventListener("mouseleave",E),i.parentNode)i.parentNode.removeChild(i)}if(d.parentNode)d.parentNode.removeChild(d)};if(y(),d.addEventListener("click",a),d.addEventListener("mouseenter",A),d.addEventListener("mouseleave",E),e.addEventListener("mousedown",s),J.addEventListener("mouseenter",O),J.addEventListener("mouseleave",B),i)i.addEventListener("mouseenter",A),i.addEventListener("mouseleave",E);return{show:H,hide:k,updateBounds:r,updatePosition:I,isVisible:()=>p,destroy:u}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,G=$-K.time;J.velocity=G>0?U/G:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:G,horizontal:_=!1}=Q,N=!!G,R=0,L=0,z=N?_?window.innerWidth:window.innerHeight:_?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,V=Q.compression,X=zJ(),D=!1,b=null,P=R2(()=>{let B=_?J.scrollLeft:J.scrollTop,A=B>=R?"down":"up";if(X=T2(X,B),R=B,K)K({scrollTop:R,direction:A,velocity:X.velocity});g()}),x=R2(()=>{let B=J.getBoundingClientRect(),A=_?Math.max(0,-B.left):Math.max(0,-B.top),E=A>=R?"down":"up";if(X=T2(X,A),R=A,!D)D=!0;if(K)K({scrollTop:R,direction:E,velocity:X.velocity});g()}),l=(B)=>{B.preventDefault()},n=(B)=>{if(B.deltaX)return;B.preventDefault(),J.scrollLeft+=B.deltaY},J2=(B)=>{if(!Z)return;B.preventDefault();let A=(_?B.deltaX||B.deltaY:B.deltaY)*j,E=R+A;if(q)E=R+A*0.3;if(E=Math.max(0,Math.min(E,L)),E!==R){let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}},g=()=>{if(b)clearTimeout(b);b=setTimeout(()=>{if(D=!1,X=zJ(R),U)U()},Y)},c=(B)=>{if(Z)return;if(Z=!0,V=B,L=B.virtualSize-z,N)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",l);else if(_)J.removeEventListener("wheel",n);if(_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1});let A=_?J.scrollLeft:J.scrollTop;if(A>0){let E=_?V?.actualSize??J.scrollWidth:V?.actualSize??J.scrollHeight;R=A/E*L}if(_)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!Z)return;if(Z=!1,N){V=void 0;return}if(J.removeEventListener("wheel",J2),_)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1});if(V&&R>0){let A=R/L*(V.actualSize-z);if(_)J.scrollLeft=A;else J.scrollTop=A}V=void 0},e=()=>{if(N||Z)return R;return _?J.scrollLeft:J.scrollTop},i=(B,A=!1)=>{let E=Math.max(0,Math.min(B,L||1/0));if(N){let u=J.getBoundingClientRect();if(_){let M=u.left+window.scrollX;window.scrollTo({left:M+E,behavior:A?"smooth":"auto"})}else{let M=u.top+window.scrollY;window.scrollTo({top:M+E,behavior:A?"smooth":"auto"})}}else if(Z){if(E===R)return;let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}else if(_)J.scrollTo({left:E,behavior:A?"smooth":"auto"});else J.scrollTo({top:E,behavior:A?"smooth":"auto"})},y=(B)=>{i(e()+B)},w=()=>{return e()<=0},F=(B=0)=>{let A=e(),E=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return A>=E-B},H=()=>{let B=e(),A=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(A<=0)return 0;return Math.min(1,Math.max(0,B/A))},k=(B)=>{if(B.compression)V=B.compression,L=V.virtualSize-z},r=()=>Z,I=()=>Math.abs(X.velocity),a=()=>mJ(X),s=()=>D,T=()=>N,S=(B)=>{if(z=B,V)L=V.virtualSize-z},O=()=>{if(b)clearTimeout(b);if(N)x.cancel(),window.removeEventListener("scroll",x);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",J2),J.removeEventListener("wheel",l),J.removeEventListener("wheel",n)};if(N){if(Z&&V)L=V.virtualSize-z;window.addEventListener("scroll",x,{passive:!0})}else if(Z&&V){if(L=V.virtualSize-z,_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1})}else{if(_)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1})}return{getScrollTop:e,scrollTo:i,scrollBy:y,isAtTop:w,isAtBottom:F,getScrollPercentage:H,getVelocity:I,isTracking:a,isScrolling:s,updateConfig:k,enableCompression:c,disableCompression:d,isCompressed:r,isWindowMode:T,updateContainerHeight:S,destroy:O}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(G){if(Q=G,G>cJ&&G<dJ)$+=G,j++}function K(){let G=J.getTotal();if(G===0)return 0;let _=J.getItemSize();if(_<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let R=J.getScrollPosition(),L=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(G/L)*_,X=Math.min(Z,_2)-N,D=Z-N,b=X>0?D/X:1,v=R*b,P=Math.ceil((v+N)/_);return Math.min(P*L,G)}function U(){let G=J.getTotal(),_=K();return{progress:G>0?Math.min(100,Math.max(0,_/G*100)):0,velocity:Q,velocityAvg:q(),itemCount:_,total:G}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,D2 as isPlaceholderItem,$J as isInRange,O2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,V2 as getScaleState,ZJ as getScaleInfo,V2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,WJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,M2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,OJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,DJ as createGridRenderer,_J as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,W2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,_2 as MAX_VIRTUAL_SIZE};
package/dist/types.d.ts CHANGED
@@ -413,6 +413,14 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
413
413
  "scroll:idle": {
414
414
  scrollPosition: number;
415
415
  };
416
+ /** Data changed — fired after item removal or other data mutations */
417
+ "data:change": {
418
+ type: "remove";
419
+ id: string | number;
420
+ } | {
421
+ type: "update";
422
+ id: string | number;
423
+ };
416
424
  /** Destroy — fired just before the instance is torn down */
417
425
  destroy: undefined;
418
426
  }
@@ -1 +1 @@
1
- .vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist-table-row.vlist-item--odd{background-color:var(--vlist-bg-striped,var(--vlist-bg-hover,#f9fafb))}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,#dbeafe)}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}.vlist-table-group-header{display:flex;align-items:center;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;pointer-events:none}.vlist-table-group-header-content{flex:1;min-width:0;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:none;border-top:1px solid var(--vlist-border,#e5e7eb)}.vlist--table.vlist--grouped .vlist-sticky-header{z-index:4}[data-theme-mode="dark"] .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#1f2937)}[data-theme-mode="dark"] .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}[data-theme-mode="dark"] .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}[data-theme-mode="dark"] .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}
1
+ .vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist-table-row.vlist-item--odd{background-color:var(--vlist-bg-striped,var(--vlist-bg-hover,#f9fafb))}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,#dbeafe)}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}.vlist-table-group-header{display:flex;align-items:center;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;pointer-events:none}.vlist-table-group-header-content{flex:1;min-width:0;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:none;border-top:1px solid var(--vlist-border,#e5e7eb)}.vlist--table.vlist--grouped .vlist-sticky-header{z-index:4}[data-theme-mode="dark"] .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#1f2937)}[data-theme-mode="dark"] .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}[data-theme-mode="dark"] .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}.vlist-table-row.vlist-item--placeholder .vlist-table-cell{color:transparent}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*{color:transparent;background-color:var(--vlist-border,#e5e7eb);border-radius:4px;animation:vlist-placeholder-pulse 2s ease-in-out infinite;line-height:1;min-width:1em}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*>*{visibility:hidden}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*[style]{background:var(--vlist-border,#e5e7eb) !important;color:transparent !important}[data-theme-mode="dark"] .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "1.3.5",
3
+ "version": "1.3.6",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",