@floor/vlist 1.3.6 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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.6** — [Changelog](./changelog.txt)
5
+ **v1.3.7** — [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)
@@ -10,13 +10,13 @@ Lightweight, high-performance virtual list with zero dependencies and dimension-
10
10
 
11
11
  - **Zero dependencies** — no external libraries
12
12
  - **Ultra memory efficient** — ~0.1-0.2 MB constant overhead regardless of dataset size
13
- - **~9.4 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
13
+ - **~9.8 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
14
14
  - **Builder API** — composable features with perfect tree-shaking
15
15
  - **Grid, masonry, table, groups, async, selection, scale** — all opt-in
16
16
  - **Horizontal & vertical** — semantically correct orientation support
17
17
  - **Gap & padding** — built-in item spacing and content inset (CSS shorthand convention)
18
18
  - **Reverse, page-scroll, wrap** — every layout mode
19
- - **Accessible** — WAI-ARIA, keyboard navigation, focus-visible, screen-reader DOM ordering
19
+ - **Accessible** — WAI-ARIA, keyboard navigation, focus-visible, screen-reader DOM ordering, ARIA live region
20
20
  - **React, Vue, Svelte** — framework adapters available
21
21
 
22
22
  **14+ interactive examples → [vlist.dev](https://vlist.dev)**
@@ -89,7 +89,7 @@ const list = vlist({
89
89
 
90
90
  | Feature | Size | Description |
91
91
  |---------|------|-------------|
92
- | **Base** | 9.4 KB | Core virtualization, gap & padding |
92
+ | **Base** | 9.8 KB | Core virtualization, gap & padding |
93
93
  | `withGrid()` | +4.0 KB | 2D grid layout with context injection |
94
94
  | `withMasonry()` | +2.7 KB | Pinterest-style masonry layout |
95
95
  | `withGroups()` | +4.3 KB | Grouped lists with sticky/inline headers |
@@ -405,11 +405,11 @@ This makes the codebase clearer and eliminates semantic confusion when working w
405
405
 
406
406
  | Configuration | Gzipped |
407
407
  |---------------|---------|
408
- | Base only | 9.4 KB |
409
- | + Grid | 13.3 KB |
410
- | + Groups | 13.7 KB |
411
- | + Async | 13.4 KB |
412
- | + Table | 14.3 KB |
408
+ | Base only | 9.8 KB |
409
+ | + Grid | 13.7 KB |
410
+ | + Groups | 14.1 KB |
411
+ | + Async | 13.8 KB |
412
+ | + Table | 14.7 KB |
413
413
 
414
414
  ### Memory Efficiency
415
415
 
@@ -7,6 +7,8 @@ export interface DOMStructure {
7
7
  viewport: HTMLElement;
8
8
  content: HTMLElement;
9
9
  items: HTMLElement;
10
+ /** Visually-hidden live region for screen reader range announcements */
11
+ liveRegion: HTMLElement;
10
12
  }
11
13
  export declare const resolveContainer: (container: HTMLElement | string) => HTMLElement;
12
14
  export declare const createDOMStructure: (container: HTMLElement, classPrefix: string, ariaLabel?: string, horizontal?: boolean) => DOMStructure;
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}},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};
1
+ var{defineProperty:t0,getOwnPropertyNames:mJ,getOwnPropertyDescriptor:dJ}=Object,cJ=Object.prototype.hasOwnProperty;var b2=new WeakMap,lJ=(J)=>{var X=b2.get(J),q;if(X)return X;if(X=t0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")mJ(J).map((j)=>!cJ.call(X,j)&&t0(X,j,{get:()=>J[j],enumerable:!(q=dJ(J,j))||q.enumerable}));return b2.set(J,X),X};var rJ=(J,X)=>{for(var q in X)t0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var H2=(J,X)=>()=>(J&&(X=J(J=0)),X);var aJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},sJ=(J,X)=>{let q=X,j=new Float64Array(0),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 aJ(J,X);return sJ(J,X)},d0=(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)},e0=(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)},w2=(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 f0=(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 d2=3,c2="vlist",Q2=200,p0=50,l2=50,r2=5,a2=2,j2=16000000,s2=150,o2="x",n2=20,q2="_isPlaceholder",i2="__placeholder_";var R0=(J,X)=>{let q=X.getTotalSize(),j=q>j2,Y=j?j2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},e2=(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),C=q.indexAtOffset(J+X);if(C<j-1)C++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,C)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=d0(q,Math.max(0,U),X,j),R=Math.ceil(N)+W,$=K-X-J;if($<=X&&$>=-1){let A=e0(q,X,j),C=Math.max(0,j-A),_=Math.max(0,Math.min(1,1-$/X));U=Math.floor(U+(C-U)*_),R=$<=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,R)),Q},r0=(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 $=e0(q,Y,j),A=Math.max(0,j-$),_=X/B*j,G=Math.max(0,Math.min(1,1-U/Y)),E=q.getOffset(J)-q.getOffset(A),M=q.getOffset(J)-w2(q,_,j);return M+(E-M)*G}let W=X/B,R=q.getTotalSize(),k=W*R;return q.getOffset(J)-k},JJ=(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 X2=()=>{};var v0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var DJ={};rJ(DJ,{createGridRenderer:()=>B2});var Y4=(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}}},U4=1,B2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=Y4(),W=new Map,R=Q,k=!1,$=null,A=0,C=0,_="",G=-1,E=(L)=>{if($&&A===L)return $;return $=R0(L,q),A=L,$},M={selected:!1,focused:!1},T=(L,m)=>{return M.selected=L,M.focused=m,M},P=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,g=`${Y}-item--focused`,c=(L,m)=>{if(typeof m==="string")L.innerHTML=m;else L.replaceChildren(m)},r=(L,m,v)=>{L.classList.toggle(V,m),L.classList.toggle(g,v)},S=(L,m)=>{let v=j.getRow(L);if(m){let O=m.totalItems,d=E(O);if(d.isCompressed)return r0(v,m.scrollPosition,q,O,m.containerSize,d,m.rangeStart)}return q.getOffset(v)},b=(L,m)=>{let v=k&&j.getCol(L)===0,O=v?0:j.getCol(L),d=v?0:j.getColumnOffset(O,R),p;if(k){let s=j.getRow(L),y=0,o=new Set;for(let j0=0;j0<L;j0++){let f=j.getRow(j0);if(f<s&&!o.has(f)){let n=q.getSize(j0);y+=n,o.add(f)}}p=y}else p=S(L,m);if(N)return`translate(${Math.round(p)}px, ${Math.round(d)}px)`;return`translate(${Math.round(d)}px, ${Math.round(p)}px)`},x=(L,m)=>{L.style.transform=m},t=(L,m)=>{let v=L.dataset.id?.startsWith("__group_header"),O=v?R:j.getColumnWidth(R),d;if(k||v)d=q.getSize(m)-j.gap;else{let p=j.getRow(m);d=q.getSize(p)-j.gap}if(N)L.style.width=`${d}px`,L.style.height=`${O}px`;else L.style.width=`${O}px`,L.style.height=`${d}px`},I=(L,m,v,O,d)=>{let p=U.acquire(),s=T(v,O);if(p.className=P,p.dataset.index=String(L),p.dataset.id=String(m.id),p.dataset.row=String(j.getRow(L)),p.dataset.col=String(j.getCol(L)),p.ariaSelected=String(v),B)p.id=`${B}-item-${L}`;if(K){let o=K();if(o!==G)G=o,_=String(o);p.setAttribute("aria-setsize",_),p.setAttribute("aria-posinset",String(L+1))}t(p,L);let y=X(m,L,s);return c(p,y),r(p,v,O),x(p,d),{element:p,lastItemId:m.id,lastSelected:v,lastFocused:O,lastTransform:d,lastSeenFrame:C}},z=(L,m,v,O,d)=>{if(C++,m.start===0&&L.length>0)k=v0(L[0]);for(let[y,o]of W)if(y>=m.start&&y<=m.end)o.lastSeenFrame=C;else if(C-o.lastSeenFrame>U4)U.release(o.element),W.delete(y);let p=!1;if(K){let y=K();if(y!==G)G=y,_=String(y),p=!0}let s=null;for(let y=m.start;y<=m.end;y++){let o=y-m.start,j0=L[o];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${y} (range: ${m.start}-${m.end}, items.length: ${L.length})`);continue}let f=v.has(j0.id),n=y===O,i=W.get(y);if(i){let q0=i.lastItemId!==j0.id,X0=i.lastSelected!==f,Y0=i.lastFocused!==n;if(q0||X0||Y0){if(q0){let N0=T(f,n),K0=X(j0,y,N0);c(i.element,K0),i.element.dataset.id=String(j0.id),i.element.dataset.row=String(j.getRow(y)),i.element.dataset.col=String(j.getCol(y)),t(i.element,y)}r(i.element,f,n),i.element.ariaSelected=String(f),i.lastItemId=j0.id,i.lastSelected=f,i.lastFocused=n}let Q0=b(y,d);if(i.lastTransform!==Q0)x(i.element,Q0),i.lastTransform=Q0;if(p)i.element.setAttribute("aria-setsize",_)}else{let q0=b(y,d),X0=I(y,j0,f,n,q0);if(!s)s=document.createDocumentFragment();s.appendChild(X0.element),W.set(y,X0)}}if(s)J.appendChild(s)},h=(L)=>{for(let[m,v]of W){let O=b(m,L);if(v.lastTransform!==O)x(v.element,O),v.lastTransform=O}},w=(L,m,v,O)=>{let d=W.get(L);if(!d)return;let p=d.lastItemId!==m.id,s=d.lastSelected!==v,y=d.lastFocused!==O;if(p||s||y){let o=T(v,O),j0=X(m,L,o);c(d.element,j0),r(d.element,v,O),d.element.dataset.id=String(m.id),d.element.ariaSelected=String(v),t(d.element,L),d.lastItemId=m.id,d.lastSelected=v,d.lastFocused=O}},D=(L,m,v)=>{let O=W.get(L);if(!O)return;let d=O.lastSelected!==m,p=O.lastFocused!==v;if(d||p)r(O.element,m,v),O.lastSelected=m,O.lastFocused=v},F=(L)=>{return W.get(L)?.element},Z=(L)=>{if(Math.abs(L-R)<1)return;R=L;for(let[m,v]of W){t(v.element,m);let O=b(m);x(v.element,O),v.lastTransform=O}},H=()=>{f0(J,W.keys(),(L)=>W.get(L)?.element)},a=()=>{for(let[,L]of W)U.release(L.element);W.clear()};return{render:z,updatePositions:h,updateItem:w,updateItemClasses:D,getElement:F,sortDOM:H,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var Z2=H2(()=>{X2()});var y2=2,$2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},P2=(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 R2=(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 v2=()=>{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 z2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},C2=(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%";let N=document.createElement("div");return N.setAttribute("aria-live","polite"),N.setAttribute("aria-atomic","true"),N.setAttribute("role","status"),N.className=`${X}-live`,N.style.position="absolute",N.style.width="1px",N.style.height="1px",N.style.padding="0",N.style.margin="-1px",N.style.overflow="hidden",N.style.clip="rect(0,0,0,0)",N.style.whiteSpace="nowrap",N.style.border="0",K.appendChild(B),Q.appendChild(K),Y.appendChild(N),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B,liveRegion:N}};var S2=(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 f2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=d0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},I2=(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)},p2=(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),R;switch(Y){case"center":R=B-(q-N)/2;break;case"end":R=Q>0&&B+N>=U?W:B-q+N;break;default:R=B}return Math.max(0,Math.min(R,W))};var c0={top:0,right:0,bottom:0,left:0},H0=(J)=>{if(J==null)return c0;if(typeof J==="number")return J===0?c0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?c0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?c0:{top:X,right:q,bottom:j,left:Y}},l0=(J,X)=>X?J.left+J.right:J.top+J.bottom,S0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var h2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:R,idleHandlers:k,afterScroll:$,clickHandlers:A,keydownHandlers:C,resizeHandlers:_,destroyHandlers:G,methods:E,onScrollFrame:M,resizeObserver:T,renderRange:P}=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 g=U?J.cw:J.ch,c=J.hc.getTotalSize(),r=Math.max(0,c-g),S=Math.max(0,c+J.mp-g);if(V>=r)return S;return Math.min(V,S)},get renderer(){return{render:(V,g,c,r,S)=>{J.ss=c,J.fi=r,J.ffn()},updateItemClasses:(V,g,c)=>{let r=K.get(V);if(!r)return;r.classList.toggle(`${W}-item--selected`,g),r.classList.toggle(`${W}-item--focused`,c),r.ariaSelected=g?"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:$,idleHandlers:k,clickHandlers:A,keydownHandlers:C,resizeHandlers:_,contentSizeHandlers:R,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:g,it:c}=J,r=[];for(let S=V.start;S<=V.end;S++){let b=g?g.getItem(S):c[S];if(b)r.push(b)}return r},getAllLoadedItems(){let V=J.dm;if(V){let g=V.getTotal(),c=[];for(let r=0;r<g;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:P.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,g){J.rfn=V,J.ffn=g},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 g=J.hc.getTotalSize,c=J.gp;J.hc.getTotalSize=()=>{let r=g();return r>0?r-c:0}}},updateContentSize(V){let g=`${V+J.mp}px`;if(U)q.content.style.width=g;else q.content.style.height=g},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,g){J.sgt=V,J.sst=(c)=>{g(c),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,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}}},u2=(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 R=J.it,k=[],$=Math.max(0,U),A=Math.min(W,R.length-1);for(let C=$;C<=A;C++)k.push(R[C]);return k},setTotal:(U)=>{},setItems:(U,W=0,R)=>{let k=J.it;if(W===0&&(R!==void 0||k.length===0))J.it=U;else{let $=W+U.length;if(k.length<$)k.length=$;for(let A=0;A<U.length;A++)k[W+A]=U[A]}if(J.ii)N()},updateItem:(U,W)=>{let R=J.it;if(U<0||U>=R.length)return!1;let k=R[U];if(!k)return!1;R[U]={...k,...W};let $=j.get(U);if($)K($,J.at(R[U],U,Y)),$.dataset.id=String(R[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((R)=>R.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()}}},g2=(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 x2=(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 M=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(M>_){if(J.sst(M),J.ls=M,G)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let R=new WeakMap,k=0,$=!1,A=null,C=()=>{if($){let _=J.sgt();K(),$=!1,W(_,!0)}};return A=new ResizeObserver((_)=>{if(J.id)return;let G=!1,E=j.start;for(let M of _){let T=R.get(M.target);if(T===void 0)continue;let P=q?M.borderBoxSize[0].inlineSize:M.borderBoxSize[0].blockSize;if(!B.isMeasured(T)){let V=P+U,g=B.getSize(T);if(B.setMeasuredSize(T,V),G=!0,T<E&&V!==g)k+=V-g;A.unobserve(M.target);let c=M.target;if(q)c.style.width=`${P}px`;else c.style.height=`${P}px`}}if(!G)return;if(B.rebuild(J.vtf()),J.hc=B,k!==0){let M=J.sgt();J.sst(M+k),J.ls=M+k,k=0}if(Q())$=!0;else{let M=J.sgt();K(),$=!1,W(M)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:A,ei:R,mc:B,fl:C,se:W}};var J2=(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}},I0=(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 R=W-N,k=Math.min(R/B,1),$=Q+(K-Q)*J2(k);if(J.scrollTo($),X(),k<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var m2=(J,X,q,j,Y,Q,K,B,N,U,W,R,k,$,A,C,_,G)=>{let E=(D)=>{{if(!Array.isArray(D)){console.warn("[vlist] setItems() expects an array, got:",typeof D);return}if(D.length>0&&D[0]&&!("id"in D[0]))console.warn('[vlist] Items must have an "id" property. First item:',D[0]);let F=new Set;for(let Z=0;Z<D.length;Z++){let H=D[Z];if(H&&"id"in H){if(F.has(H.id)){console.warn(`[vlist] Duplicate item ID "${H.id}" at index ${Z}. updateItem() and removeItem() will only match the first occurrence.`);break}F.add(H.id)}}}S(),N.dataManager.setItems(D,0,D.length)},M=U?(D)=>{let F=J.sab(2),Z=J.it.length;if(N.dataManager.setItems(D,Z),F&&J.it.length>0){let H=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(H),J.ls=H,J.rfn()}}:(D)=>{let F=J.it.length;N.dataManager.setItems(D,F)},T=U?(D)=>{let F=J.sgt(),Z=J.hc.getTotalSize(),H=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...D,...H],0);let u=J.hc.getTotalSize()-Z;if(u>0)J.sst(F+u),J.ls=F+u}:(D)=>{let F=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...D,...F],0)},P=(D,F)=>{{let Z=J.vtf();if(D<0||D>=Z)console.warn(`[vlist] updateItem() index ${D} is out of range (0–${Z-1}).`)}N.dataManager.updateItem(D,F)},V=!1,g=(D)=>{let F=-1;if(typeof document<"u"){let H=document.activeElement;if(H&&X.items.contains(H)){let a=H.dataset?.index;if(a!==void 0)F=parseInt(a,10)}}let Z=N.dataManager.removeItem(D);if(Z){if(q.emit("data:change",{type:"remove",id:D}),N.forceRender(),!V){let H=N.dataManager;if(typeof H.ensureRange==="function")V=!0,queueMicrotask(()=>{V=!1;let{start:a,end:u}=N.state.viewportState.renderRange;if(u>=a)H.ensureRange(a,u).catch(()=>{})})}}if(!Z)console.warn(`[vlist] removeItem() could not find item with id "${D}".`);if(Z&&F>=0){let H=J.vtf();if(H>0){let a=Math.min(F,H-1),u=j.get(a);if(u&&typeof u.focus==="function")u.focus()}}return Z},c=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},r=null,S=()=>{if(r!==null)cancelAnimationFrame(r),r=null},b=(D,F,Z)=>{if(S(),Math.abs(F-D)<1){J.sst(F),J.ls=F,J.rfn();return}let H=performance.now(),a=(u)=>{let L=u-H,m=Math.min(L/Z,1),v=D+(F-D)*J2(m);if(J.sst(v),J.ls=v,J.rfn(),m<1)r=requestAnimationFrame(a);else r=null};r=requestAnimationFrame(a)},x=(D,F)=>{{let v=J.vtf();if(v>0&&(D<0||D>=v))console.warn(`[vlist] scrollToIndex(${D}) is out of range (0–${v-1}).`)}let{align:Z,behavior:H,duration:a}=y0(F),u=J.vtf(),L=D;if(W&&u>0)L=(L%u+u)%u;let m=J.gsp(L,J.hc,J.ch,u,Z);if(H==="smooth")b(J.sgt(),m,a);else S(),J.sst(m)},t=()=>J.sgt(),I=(D,F)=>{return q.on(D,F)},z=(D,F)=>{q.off(D,F)},h=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",R),X.items.removeEventListener("dblclick",k),X.root.removeEventListener("keydown",$),J.st.removeEventListener("scroll",A),C.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);G();for(let D=0;D<B.length;D++)B[D]();for(let D of K)if(D.destroy)D.destroy();S();for(let[,D]of j)D.remove(),Y.release(D);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},w={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"):M,prependItems:Q.has("prependItems")?Q.get("prependItems"):T,updateItem:Q.has("updateItem")?Q.get("updateItem"):P,removeItem:Q.has("removeItem")?Q.get("removeItem"):g,reload:Q.has("reload")?Q.get("reload"):c,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):x,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):S,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):t,on:I,off:z,destroy:h};for(let[D,F]of Q){if(D.charCodeAt(0)===95||D==="setItems"||D==="appendItems"||D==="prependItems"||D==="updateItem"||D==="removeItem"||D==="reload"||D==="scrollToIndex"||D==="scrollToItem"||D==="cancelScroll"||D==="getScrollPosition")continue;w[D]=F}return w};var oJ=0,t2=(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,nJ(J,K,X,Y,Q??null)}};return N};function nJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=d2,classPrefix:N=c2,ariaLabel:U,padding:W,reverse:R=!1,scroll:k}=J,$=k,A=$?.wheel??!0,C=$?.wrap??!1,_=R,G=`${N}-${oJ++}`,E=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,M=j??Y,T=j==null&&Y!=null,P=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,g={overscan:B,classPrefix:N,reverse:_,wrap:C,horizontal:q,ariaIdPrefix:G},c=Array.from(X.values()).sort((l,e)=>(l.priority??50)-(e.priority??50)),r=new Set(c.map((l)=>l.name));for(let l of c)if(l.conflicts){for(let e of l.conflicts)if(r.has(e))throw Error(`[vlist/builder] ${l.name} and ${e} cannot be combined`)}if(_){if(r.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=z2(J.container),b=C2(S,N,U,q);if($?.wheel===!1)if(q)b.viewport.style.overflowX="hidden";else b.viewport.style.overflow="hidden";if($?.scrollbar==="none")b.viewport.classList.add(`${N}-viewport--no-scrollbar`);let x=H0(W),t=l0(x,q);if(x.top||x.right||x.bottom||x.left)b.content.style.boxSizing="border-box",b.content.style.padding=`${x.top}px ${x.right}px ${x.bottom}px ${x.left}px`;let I=v2(),z=K||[],h=typeof M==="function"&&(X.has("withGrid")||X.has("withMasonry")),w=E>0?typeof M==="function"?(l)=>M(l)+E:M+E:M,D=T?R2(Y+E,z.length):w0(w,h?0:z.length);if(E>0){let l=D.getTotalSize;D.getTotalSize=()=>{let e=l();return e>0?e-E:0}}let F=S2(),Z={it:z,hc:D,ch:b.viewport.clientHeight,cw:b.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:$2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>b.viewport.scrollLeft:()=>b.viewport.scrollTop,sst:q?(l)=>{b.viewport.scrollLeft=l}:(l)=>{b.viewport.scrollTop=l},sab:(l=2)=>{let e=Z.hc.getTotalSize();return Z.ls+Z.ch>=e-l},sic:!1,rfn:null,ffn:null,gvr:(l,e,J0,Z0,G0)=>{f2(l,e,J0,Z0,G0)},gsp:(l,e,J0,Z0,G0)=>{return p2(l,e,J0,Z0,G0,Z.mp)},pef:null,at:Q.template,vre:!0,st:b.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 H=null,a=!1,u={start:0,end:0},L={start:0,end:0},m={start:-1,end:-1},v={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,d=()=>{f0(b.items,O.keys(),(l)=>O.get(l))},p=()=>{let l=`${Z.hc.getTotalSize()+t}px`;if(q)b.content.style.width=l;else b.content.style.height=l},y=x2(Z,b,q,u,m,()=>a,p,T?D: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=[],Q0=[],N0=[],K0=[],A0=[],D0=[],U0=new Map,V0=null,_0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,V0=U0.get("_getSelectedIds")??null,_0=U0.get("_getFocusedIndex")??null},o0=(l,e,J0)=>{if(!e)console.warn(`[vlist] Template returned falsy value${J0!==void 0?` for item at index ${J0}`:""}. The element will render as blank.`);else if(typeof e==="string"&&e==="")console.warn(`[vlist] Template returned empty string${J0!==void 0?` for item at index ${J0}`:""}. The element will render as blank.`);if(typeof e==="string")l.innerHTML=e;else l.replaceChildren(e)},SJ=(l,e)=>{let J0=Math.round(Z.hc.getOffset(e));if(q)l.style.transform=`translateX(${J0}px)`;else l.style.transform=`translateY(${J0}px)`};Z.pef=SJ;let fJ=(l,e)=>{let J0=F.acquire();J0.className=j0;let Z0=!T||y.mc&&y.mc.isMeasured(l);if(q){if(Z0)J0.style.width=`${Z.hc.getSize(l)-E}px`;else J0.style.width="";if(V!=null)J0.style.height=`${V}px`}else if(Z0)J0.style.height=`${Z.hc.getSize(l)-E}px`;else J0.style.height="";if(J0.dataset.index=String(l),J0.dataset.id=String(e.id),J0.ariaSelected="false",J0.id=`${G}-item-${l}`,Z.la=String(Z.vtf()),J0.setAttribute("aria-setsize",Z.la),J0.setAttribute("aria-posinset",String(l+1)),String(e.id).startsWith("__placeholder_"))J0.classList.add(`${N}-item--placeholder`);if(n)if(i){let M0=Z.sif(l);if(M0<0)J0.classList.remove(q0);else J0.classList.toggle(q0,(M0&1)===1)}else J0.classList.toggle(q0,(l&1)===1);return o0(J0,Z.at(e,l,o),l),Z.pef(J0,l),J0},IJ=()=>{if(Z.id)return;let l=q?Z.cw:Z.ch;if(l<=0)return;T0();let e=V0?V0():Z.ss,J0=_0?_0():Z.fi,Z0=Z.vtf();if(Z.gvr(Z.ls,l,Z.hc,Z0,u),I2(u,B,Z0,L),L.start===m.start&&L.end===m.end){if(Z.sic)for(let[B0,O0]of O)Z.pef(O0,B0);return}let G0=String(Z0),M0=G0!==Z.la;Z.la=G0;for(let[B0,O0]of O)if(B0<L.start||B0>L.end)O0.remove(),F.release(O0),O.delete(B0);let W0=document.createDocumentFragment(),L0=[],k0=[];for(let B0=L.start;B0<=L.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 b0=E0.dataset.id,h0=String(O0.id);if(b0!==h0){let xJ=b0?.startsWith("__placeholder_"),T2=h0.startsWith("__placeholder_");o0(E0,Z.at(O0,B0,o),B0),E0.dataset.id=h0;let k2=!T||y.mc&&y.mc.isMeasured(B0);if(q)E0.style.width=k2?`${Z.hc.getSize(B0)-E}px`:"";else E0.style.height=k2?`${Z.hc.getSize(B0)-E}px`:"";if(T2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(xJ&&!T2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,B0);let m0=e.has(O0.id),gJ=B0===J0;if(E0.classList.toggle(`${N}-item--selected`,m0),E0.classList.toggle(`${N}-item--focused`,gJ),E0.ariaSelected=m0?"true":"false",M0)E0.setAttribute("aria-setsize",Z.la)}else{let b0=fJ(B0,O0);k0.push({index:B0,element:b0});let h0=e.has(O0.id),m0=B0===J0;if(h0)b0.classList.add(`${N}-item--selected`),b0.ariaSelected="true";if(m0)b0.classList.add(`${N}-item--focused`);W0.appendChild(b0),L0.push({index:B0,element:b0})}}if(L0.length>0){b.items.appendChild(W0);for(let{index:B0,element:O0}of L0)O.set(B0,O0)}if(T&&y.ob&&y.mc&&y.ei){for(let{index:B0,element:O0}of k0)if(!y.mc.isMeasured(B0))y.ei.set(O0,B0),y.ob.observe(O0)}m.start=L.start,m.end=L.end,v.lastRenderRange.start=L.start,v.lastRenderRange.end=L.end,v.viewportState.scrollPosition=Z.ls,v.viewportState.visibleRange.start=u.start,v.viewportState.visibleRange.end=u.end,v.viewportState.renderRange.start=L.start,v.viewportState.renderRange.end=L.end,I.emit("range:change",{range:{start:L.start,end:L.end}})},pJ=()=>{m.start=-1,m.end=-1,Z.rfn()};Z.rfn=IJ,Z.ffn=pJ;let hJ=()=>{b.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,I.emit("velocity:change",{velocity:0,reliable:!1}),y.fl(),d();for(let l=0;l<Y0.length;l++)Y0[l]();I.emit("scroll:idle",{scrollPosition:Z.ls})},uJ=()=>{if(H)clearTimeout(H);H=setTimeout(hJ,$?.idleTimeout??s2)},g0=()=>{if(Z.id)return;let l=Z.sgt();if(l===Z.ls&&a)return;let e=l>=Z.ls?"down":"up";if(Z.vt=P2(Z.vt,l),!b.root.classList.contains(`${N}--scrolling`))b.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=l,Z.rfn(),I.emit("scroll",{scrollPosition:l,direction:e}),I.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=y2});for(let J0=0;J0<X0.length;J0++)X0[J0](l,e);uJ()},z0=null;if(Z.st.addEventListener("scroll",g0,{passive:!0}),A&&!q&&!P)z0=(l)=>{if(v.viewportState.isCompressed)return;let e=b.viewport.scrollWidth>b.viewport.clientWidth;if(e&&Math.abs(l.deltaX)>Math.abs(l.deltaY))return;if(l.preventDefault(),e&&l.deltaX!==0)b.viewport.scrollLeft+=l.deltaX;let J0=Z.sgt(),Z0=b.viewport.scrollHeight-b.viewport.clientHeight,G0=Math.max(0,Math.min(J0+l.deltaY,Z0));if(Math.abs(G0-J0)<1)return;Z.sst(G0),g0()},Z.wh=z0,b.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(l)=>{if(l.deltaX)return;l.preventDefault(),b.viewport.scrollLeft+=l.deltaY},Z.wh=z0,b.viewport.addEventListener("wheel",z0,{passive:!1});let G2=(l)=>{let e=l.target.closest("[data-index]");if(!e)return null;let J0=parseInt(e.dataset.index??"-1",10);if(J0<0)return null;let Z0=Z.dm?.getItem(J0)??Z.it[J0];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:J0}},O2=(l)=>{let e=G2(l);if(e)I.emit("item:click",{item:e.item,index:e.index,event:l});for(let J0=0;J0<Q0.length;J0++)Q0[J0](l)},E2=(l)=>{let e=G2(l);if(e)I.emit("item:dblclick",{item:e.item,index:e.index,event:l})},A2=(l)=>{for(let e=0;e<N0.length;e++)N0[e](l)};b.items.addEventListener("click",O2),b.items.addEventListener("dblclick",E2),b.root.addEventListener("keydown",A2);let C0=null,F2=(l)=>{if(C0)clearTimeout(C0);C0=setTimeout(()=>{if(C0=null,Z.id)return;let e=Z.vtf(),{start:J0,end:Z0}=l.range;b.liveRegion.textContent=`Showing items ${J0+1} to ${Math.min(Z0+1,e)} of ${e}`},300)};I.on("range:change",F2),D0.push(()=>{if(C0)clearTimeout(C0);I.off("range:change",F2)});let n0=new ResizeObserver((l)=>{if(Z.id)return;for(let e of l){let J0=e.contentRect.height,Z0=e.contentRect.width,G0=q?Z0:J0,M0=q?Z.cw:Z.ch;if(Z.cw=Z0,Z.ch=J0,Math.abs(G0-M0)>1){if(v.viewportState.containerSize=G0,Z.ii)p(),Z.rfn(),I.emit("resize",{height:J0,width:Z0})}if(Z.ii)for(let W0=0;W0<K0.length;W0++)K0[W0](Z0,J0)}});if(Z.vre)n0.observe(b.viewport);let i0={dom:b,emitter:I,resolvedConfig:g,rawConfig:J,rendered:O,pool:F,itemState:o,sharedState:v,renderRange:L,isHorizontal:q,classPrefix:N,contentSizeHandlers:A0,idleHandlers:Y0,afterScroll:X0,clickHandlers:Q0,keydownHandlers:N0,resizeHandlers:K0,destroyHandlers:D0,methods:U0,onScrollFrame:g0,resizeObserver:n0,applyTemplate:o0,updateContentSize:p},x0=h2(Z,i0);Z.dm=u2(Z,i0,x0),Z.sc=g2(Z,i0);let L2=new Map;for(let l of c)if(l.methods)for(let e of l.methods){let J0=L2.get(e);if(J0)throw Error(`[vlist/builder] Method "${e}" is registered by both "${J0}" and "${l.name}"`);L2.set(e,l.name)}for(let l of c)l.setup(x0);if(!U0.has("_getFocusedIndex")){let l=-1,e=`${N}-item--focused`,J0=(M0,W0)=>{let L0=Z.vtf();if(W0<0||W0>=L0)return;l=W0,b.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(),M0>=0&&M0!==W0)O.get(M0)?.classList.remove(e);O.get(W0)?.classList.add(e)},Z0=()=>{if(Z.id)return;if(!b.root.matches(":focus-visible"))return;let M0=Z.vtf();if(M0===0)return;J0(-1,l>=0?Math.min(l,M0-1):0)};b.root.addEventListener("focusin",Z0);let G0=(M0)=>{if(Z.id)return;let W0=M0.relatedTarget;if(W0&&b.root.contains(W0))return;if(l>=0)O.get(l)?.classList.remove(e);b.root.removeAttribute("aria-activedescendant")};b.root.addEventListener("focusout",G0),N0.push((M0)=>{if(Z.id)return;let W0=Z.vtf();if(W0===0)return;let L0=l,k0=L0;switch(M0.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}M0.preventDefault(),J0(L0,k0)}),D0.push(()=>{b.root.removeEventListener("focusin",Z0),b.root.removeEventListener("focusout",G0)})}if(Z.ii=!0,x0.state.isInitialized=!0,p(),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 m2(Z,b,I,O,F,U0,c,D0,x0,_,C,O2,E2,A2,g0,n0,()=>{if(y.ob)y.ob.disconnect()},()=>{if(H)clearTimeout(H)})}X2();var u0=(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,R=0,k=0,$=0,A=0,C=!1,_=!1,G=0,E=0,M=0,T=null,P=!1,V=null,g=null,c=Y?"width":"height",r=Y?"translateX":"translateY",S=Y?(y)=>y.clientX:(y)=>y.clientY,b=Y?"left":"top",x=document.createElement("div"),t=document.createElement("div"),I=N?document.createElement("div"):null,z=()=>{if(x.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,Y)x.classList.add(`${j}-scrollbar--horizontal`);if(x.appendChild(t),J.appendChild(x),I){if(I.className=`${j}-scrollbar-hover`,Y)I.classList.add(`${j}-scrollbar-hover--horizontal`),I.style.height=`${U}px`;else I.style.width=`${U}px`;J.appendChild(I)}},h=()=>{if(T)clearTimeout(T),T=null},w=()=>{if(!Q)return;h(),T=setTimeout(F,K)},D=()=>{if(R<=k)return;if(h(),!P)x.classList.add(`${j}-scrollbar--visible`),P=!0;if(Q&&!C&&!_)w()},F=()=>{if(C||_)return;x.classList.remove(`${j}-scrollbar--visible`),P=!1},Z=(y,o)=>{R=y,k=o;let j0=R>k;if(x.style.display=j0?"":"none",!j0){F();return}let f=k/R;$=Math.max(B,f*k),t.style[c]=`${$}px`,A=k-$,H(M)},H=(y)=>{if(M=y,R<=k||A<=0)return;let o=R-k,f=Math.min(1,Math.max(0,y/o))*A;t.style.transform=`${r}(${f}px)`},a=(y)=>{if(y.target===t)return;let o=x.getBoundingClientRect(),n=S(y)-o[b]-$/2,q0=Math.max(0,Math.min(n,A))/A,X0=R-k,Y0=q0*X0;X(Y0),D()},u=(y)=>{y.preventDefault(),y.stopPropagation(),C=!0,G=S(y),E=M,h(),x.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",L),document.addEventListener("mouseup",m)},L=(y)=>{if(!C)return;let o=S(y)-G,j0=A>0?o/A:0,f=R-k,n=j0*f,i=Math.max(0,Math.min(E+n,f)),X0=i/f*A;if(t.style.transform=`${r}(${X0}px)`,g=i,V===null)V=requestAnimationFrame(()=>{if(g!==null)X(g);V=null})},m=()=>{if(C=!1,V!==null)cancelAnimationFrame(V),V=null;if(g!==null)X(g),g=null;if(x.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)w();document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",m)},v=()=>{if(W)D()},O=()=>{if(!C){if(_=!1,Q)w()}},d=()=>{_=!0,h(),D()},p=()=>{if(_=!1,!C&&Q)w()},s=()=>{if(h(),V!==null)cancelAnimationFrame(V),V=null;if(x.removeEventListener("click",a),x.removeEventListener("mouseenter",d),x.removeEventListener("mouseleave",p),t.removeEventListener("mousedown",u),J.removeEventListener("mouseenter",v),J.removeEventListener("mouseleave",O),document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",m),I){if(I.removeEventListener("mouseenter",d),I.removeEventListener("mouseleave",p),I.parentNode)I.parentNode.removeChild(I)}if(x.parentNode)x.parentNode.removeChild(x)};if(z(),x.addEventListener("click",a),x.addEventListener("mouseenter",d),x.addEventListener("mouseleave",p),t.addEventListener("mousedown",u),J.addEventListener("mouseenter",v),J.addEventListener("mouseleave",O),I)I.addEventListener("mouseenter",d),I.addEventListener("mouseleave",p);return{show:D,hide:F,updateBounds:Z,updatePosition:H,isVisible:()=>P,destroy:s}};var QJ=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=u0(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 R=q.getCachedCompression();N.updateBounds(R.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 iJ=0.65,tJ=0.5,eJ=0.95,J4=0.1,Q4=5,j4=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:R}=U,{classPrefix:k,horizontal:$}=R,A=()=>{let E=U.getVirtualTotal(),M=R0(E,U.sizeCache);if(M.isCompressed&&!q){q=!0,U.scrollController.enableCompression(M),U.updateContentSize(M.virtualSize),U.setScrollFns(()=>X,(x)=>{if(X=x,j=x,Y!==null)cancelAnimationFrame(Y),Y=null});let T=()=>{let x=j-X;if(Math.abs(x)<tJ)X=j,Y=null;else{X+=x*iJ;let I=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,I)),Y=requestAnimationFrame(T)}U.scrollController.scrollTo(X)},P=W.viewport,V=(x)=>{x.preventDefault();let I=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+x.deltaY,I)),Y===null)Y=requestAnimationFrame(T)};P.addEventListener("wheel",V,{passive:!1});let g=()=>{if(B!==null)cancelAnimationFrame(B),B=null},c=(x)=>{if(g(),Y!==null)cancelAnimationFrame(Y),Y=null;let t=x.touches[0];if(!t)return;let I=$?t.clientX:t.clientY;Q=I,K=X,N=[{time:performance.now(),y:I}]},r=(x)=>{x.preventDefault();let t=x.touches[0];if(!t)return;let I=$?t.clientX:t.clientY,z=performance.now();if(N.push({time:z,y:I}),N.length>Q4)N.shift();let h=Q-I,D=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,F=Math.max(0,Math.min(K+h,D));X=F,j=F,U.scrollController.scrollTo(F)},S=(x)=>{let t=performance.now(),I=N.filter((D)=>t-D.time<j4),z=0;if(I.length>=2){let D=I[0],F=I[I.length-1],Z=F.time-D.time;if(Z>0)z=(D.y-F.y)/Z}if(N=[],Math.abs(z)<J4)return;let h=z*16,w=()=>{if(h*=eJ,Math.abs(h)<0.5){B=null;return}let F=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+h;if(Z=Math.max(0,Math.min(Z,F)),Z<=0&&h<0||Z>=F&&h>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(w)};B=requestAnimationFrame(w)};if(P.addEventListener("touchstart",c,{passive:!0}),P.addEventListener("touchmove",r,{passive:!1}),P.addEventListener("touchend",S,{passive:!0}),P.addEventListener("touchcancel",S,{passive:!0}),U.destroyHandlers.push(()=>{if(P.removeEventListener("wheel",V),P.removeEventListener("touchstart",c),P.removeEventListener("touchmove",r),P.removeEventListener("touchend",S),P.removeEventListener("touchcancel",S),g(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${k}-scrollbar`)){if(J=u0(W.viewport,(t)=>U.scrollController.scrollTo(t),{},k,$),!W.viewport.classList.contains(`${k}-viewport--custom-scrollbar`))W.viewport.classList.add(`${k}-viewport--custom-scrollbar`);J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);let x=J;U.afterScroll.push((t,I)=>{if(x)x.updatePosition(t),x.show()}),U.resizeHandlers.push((t,I)=>{if(x){let z=U.getCachedCompression();x.updateBounds(z.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:E}};U.updateCompressionMode=A;let C=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return C()},U.setVisibleRangeFn((E,M,T,P,V)=>{_=null,G=null;let g=R0(P,T);e2(E,M,T,P,g,V)}),U.setScrollToPosFn((E,M,T,P,V)=>{let g=R0(P,M);return JJ(E,M,T,P,g,V)});let _=null,G=null;U.setPositionElementFn((E,M)=>{let T=U.getVirtualTotal(),P=R0(T,U.sizeCache);if(P.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||M<G)G=M,_=Math.round(r0(M,V,U.sizeCache,T,U.state.viewportState.containerSize,P));let g=_+U.sizeCache.getOffset(M)-U.sizeCache.getOffset(G),c=U.config.horizontal;E.style.transform=c?`translateX(${g}px)`:`translateY(${g}px)`}else{let V=Math.round(U.sizeCache.getOffset(M)),g=U.config.horizontal;E.style.transform=g?`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=(z)=>{let h=Q.get(z);if(!h)h={items:Array(X),count:0,lastAccess:Date.now()},Q.set(z,h);else h.lastAccess=Date.now();return h},U=(z)=>{return Math.floor(z/X)},W=(z)=>{return z%X},R=()=>K,k=(z)=>{K=z},$=(z)=>{if(z<0||z>=K)return;let h=U(z),w=Q.get(h);if(!w)return;return w.items[W(z)]},A=(z)=>{if(z<0||z>=K)return!1;let h=U(z),w=Q.get(h);if(!w)return!1;return w.items[W(z)]!==void 0},C=(z,h)=>{let w=U(z),D=N(w),F=W(z),Z=D.items[F]===void 0;if(D.items[F]=h,Z)D.count++,B++;if(z>=K)K=z+1},_=(z,h)=>{for(let w=0;w<h.length;w++){let D=h[w];if(D!==void 0)C(z+w,D)}},G=(z)=>{if(z<0||z>=K)return!1;let h=U(z),w=Q.get(h),D=W(z);if(!(w!==void 0&&w.items[D]!==void 0))return!1;let Z=h,H=Array.from(Q.keys()).filter((u)=>u>=Z).sort((u,L)=>u-L),a=[];for(let u of H){let L=Q.get(u),m=u*X;for(let v=0;v<X;v++){if(L.items[v]===void 0)continue;let O=m+v;if(O<=z)continue;a.push({oldIndex:O,item:L.items[v]})}}if(w.items[D]=void 0,w.count--,B--,w.count===0)Q.delete(h);for(let{oldIndex:u}of a){let L=U(u),m=Q.get(L);if(!m)continue;let v=W(u);if(m.items[v]!==void 0){if(m.items[v]=void 0,m.count--,B--,m.count===0)Q.delete(L)}}for(let{oldIndex:u,item:L}of a){let m=u-1,v=U(m),O=N(v),d=W(m);O.items[d]=L,O.count++,B++}return K--,!0},E=(z,h)=>{let w=[];for(let D=z;D<=h&&D<K;D++)w.push($(D));return w},M=(z,h)=>{for(let w=z;w<=h&&w<K;w++)if(!A(w))return!1;return!0},T=()=>{let z=[],h=null,w=Array.from(Q.keys()).sort((D,F)=>D-F);for(let D of w){let F=Q.get(D);if(!F)continue;let Z=D*X;for(let H=0;H<X;H++){let a=Z+H;if(a>=K)break;if(F.items[H]!==void 0)if(h===null)h={start:a,end:a};else if(a===h.end+1)h.end=a;else z.push(h),h={start:a,end:a};else if(h!==null)z.push(h),h=null}}if(h!==null)z.push(h);return z},P=(z,h)=>{let w=[],D=null;for(let F=z;F<=h&&F<K;F++)if(!A(F))if(D===null)D={start:F,end:F};else D.end=F;else if(D!==null)w.push(D),D=null;if(D!==null)w.push(D);return w},V=(z)=>{return Q.has(z)},g=(z)=>{let h=Q.get(z);if(h)h.lastAccess=Date.now()},c=(z,h)=>{if(z>h||Q.size===0)return;let w=Date.now(),D=U(Math.max(0,z)),F=U(Math.min(K-1,h));for(let Z=D;Z<=F;Z++){let H=Q.get(Z);if(H)H.lastAccess=w}},r=(z,h)=>{if(B<=q)return 0;let w=Math.max(0,z-j),D=Math.min(K-1,h+j),F=U(w),Z=U(D),H=0,a=[];for(let[u,L]of Q)if(u<F||u>Z)H+=L.count,a.push(u),B-=L.count,Q.delete(u);if(H>0&&Y)Y(H,a);return H},S=()=>{if(B<=q)return 0;let z=Array.from(Q.entries()).sort(([,D],[,F])=>D.lastAccess-F.lastAccess),h=0,w=[];for(let[D,F]of z){if(B<=q)break;h+=F.count,B-=F.count,w.push(D),Q.delete(D)}if(h>0&&Y)Y(h,w);return h},b=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},x=()=>B,t=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:R,setTotal:k,get:$,has:A,set:C,setRange:_,delete:G,getRange:E,isRangeLoaded:M,getLoadedRanges:T,findUnloadedRanges:P,getChunkIndex:U,isChunkLoaded:V,touchChunk:g,touchChunksForRange:c,evictDistant:r,evictToLimit:S,getStats:b,getCachedCount:x,clear:t,reset:()=>{t(),K=0}}},q4=(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},XJ=(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=q4(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 YJ=(J={})=>{let{maskCharacter:X=o2,maxSampleSize:q=n2}=J,j=[],Y=!1,Q=0,K=(R)=>{if(Y||R.length===0)return;let k=Math.min(R.length,q);for(let $=0;$<k;$++){let A=R[$];if(!A||typeof A!=="object")continue;let C={};for(let[_,G]of Object.entries(A)){if(_.startsWith("_")||_==="id")continue;C[_]=String(G??"").length}if(Object.keys(C).length>0)j.push(C)}Y=!0},B=()=>Y,N=(R)=>{let k={id:`${i2}${Q++}`,[q2]:!0,_index:R};if(j.length===0)return k.label=X.repeat(12),k;let $=j[R%j.length];for(let[A,C]of Object.entries($))k[A]=X.repeat(Math.max(1,C));return k};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(R,k)=>{let $=[];for(let A=R;A<=k;A++)$.push(N(A));return $},clear:()=>{j=[],Y=!1,Q=0}}},a0=(J)=>{if(!J||typeof J!=="object")return!1;return J[q2]===!0};var X4=50,UJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=X4,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=qJ({...Y,onEvict:(f,n)=>{U?.(f),P()}}),R=null,k=()=>{if(!R)R=YJ(Q);return R},$=new Map,A=!1,C,_=!0,G,E=[],M=0,T=new Map,P=()=>{B?.(I())},V=()=>{$.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&&!a0(q0))$.set(q0.id,i)}},g=(f,n)=>{if(!a0(n))$.set(n.id,f)},c=(f)=>{$.delete(f)},r=(f,n)=>{return`${f}-${n}`},S=()=>W.getTotal(),b=()=>W.getCachedCount(),x=()=>A,t=()=>_,I=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:E,error:C,hasMore:_,cursor:G}),z=()=>W,h=()=>k(),w=(f)=>{let n=W.get(f);if(n!==void 0)return n;if(f>=0&&f<W.getTotal())return k().generate(f);return},D=(f)=>{let n=$.get(f);if(n===void 0)return;return W.get(n)},F=(f)=>{return $.get(f)??-1},Z=(f)=>{let n=W.get(f);return n!==void 0&&!a0(n)},H=(f,n)=>{let i=[],q0=W.getTotal(),X0=0,Y0=0;W.touchChunksForRange(f,Math.min(n,q0-1));for(let Q0=f;Q0<=n&&Q0<q0;Q0++){let N0=W.get(Q0);if(N0!==void 0)i.push(N0),X0++;else i.push(k().generate(Q0)),Y0++}return i},a=(f)=>{W.setTotal(f),_=W.getCachedCount()<f,P()},u=(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),g(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;P(),N?.(f,n,W.getTotal())},L=(f,n)=>{let i=$.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),g(i,X0);return P(),!0},m=(f)=>{let n=$.get(f);if(n===void 0)return!1;if(!W.delete(n))return!1;return V(),T.clear(),P(),!0},v=async(f,n)=>{if(!X)return;let i=r(f,n);if(T.has(i))return;let q0=W.getLoadedRanges(),X0=XJ({start:f,end:n},q0,W.chunkSize);if(X0.length===0)return;let Y0=W.chunkSize,Q0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),D0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=D0;U0++){let V0=U0*Y0,_0=V0+Y0-1,F0=r(V0,_0);if(!Q0.some((T0)=>T0.start===V0)&&!T.has(F0))Q0.push({start:V0,end:_0})}}let N0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),D0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=D0;U0++){let V0=U0*Y0,_0=V0+Y0-1,F0=r(V0,_0);if(T.has(F0)){let T0=T.get(F0);if(!N0.includes(T0))N0.push(T0)}}}for(let K0 of Q0){let A0=r(K0.start,K0.end),D0=(async()=>{E.push(K0),A=!0,C=void 0,P();try{let U0=K0.end-K0.start+1,V0={offset:K0.start,limit:U0,cursor:void 0},_0=await X.read(V0);if(u(_0.items,K0.start,_0.total),_0.cursor)G=_0.cursor;let F0=K0.start+_0.items.length;if(F0>=M){if(M=F0,_0.hasMore!==void 0)_=_0.hasMore;else if(_0.total!==void 0)_=F0<_0.total}}catch(U0){C=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,P()}})();T.set(A0,D0),N0.push(D0)}await Promise.all(N0)},O=async(f,n)=>{if(W.isRangeLoaded(f,n))return;await v(f,n)},d=async()=>{if(!X)return;await v(0,K-1)},p=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 v(i,q0),W.getCachedCount()>f},s=async()=>{if(W.clear(),W.setTotal(0),$.clear(),R)R.clear();T.clear(),E=[],A=!1,G=void 0,_=!0,M=0,C=void 0,P()},y=(f,n)=>{if(W.evictDistant(f,n)>0)V()},o=()=>{W.clear(),$.clear(),G=void 0,C=void 0,E=[],A=!1,P()},j0=()=>{if(W.reset(),$.clear(),R)R.clear();G=void 0,_=!0,M=0,C=void 0,E=[],A=!1,P()};if(q&&q.length>0)u(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),P();return{getState:I,getTotal:S,getCached:b,getIsLoading:x,getHasMore:t,getStorage:z,getPlaceholders:h,getItem:w,getItemById:D,getIndexById:F,isItemLoaded:Z,getItemsInRange:H,setTotal:a,setItems:u,updateItem:L,removeItem:m,loadRange:v,ensureRange:O,loadInitial:d,loadMore:p,reload:s,evictDistant:y,clear:o,reset:j0}};var KJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??r2,B=q?.preloadThreshold??a2,N=q?.preloadAhead??l2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,R=U.config.reverse,k=U.methods.get("_getGridLayout"),$=(S)=>{if(k){let b=k();if(b){let x=U.dataManager.getTotal();return b.getItemRange(S.start,S.end,x)}}return S},A=UJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??p0,...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 b=U.getCachedCompression();U.state.viewportState.totalSize=b.virtualSize,U.state.viewportState.actualSize=b.actualSize,U.state.viewportState.isCompressed=b.isCompressed,U.state.viewportState.compressionRatio=b.ratio,U.updateContentSize(b.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(S,b,x)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:S,total:x,offset:b})}});U.replaceDataManager(A);let C=null,_=null,G=0,E=!1,M=null,T=120,P=(S=!1)=>{if(E=!1,_=null,S)C=null;if(M!==null)clearTimeout(M),M=null},V=()=>{if(!_)return;_=null;let{renderRange:S}=U.state.viewportState;if(S.end<S.start)return;C=null;let b=$(S);U.dataManager.ensureRange(b.start,b.end).catch((x)=>{W.emit("error",{error:x,context:"ensureRange"})})};U.afterScroll.push((S,b)=>{if(U.state.isDestroyed)return;let x=U.scrollController.getVelocity(),I=U.scrollController.isTracking()&&x<=K;if(G>K&&x<=K)E=!0;else if(E&&x>K)P();if(E&&x<0.5)P(!0);if(G=x,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(E||_))P(!0),I=!0;let h=E&&x>0.5;if(I&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(R){if(S<Q2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((F)=>{W.emit("error",{error:F,context:"loadMore"})})}else if(U.state.viewportState.totalSize-S-U.state.viewportState.containerSize<Q2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((Z)=>{W.emit("error",{error:Z,context:"loadMore"})})}let{renderRange:w}=U.state.viewportState;if(!C||w.start!==C.start||w.end!==C.end){if(C={start:w.start,end:w.end},I&&!h){if(_=null,M!==null)clearTimeout(M),M=null;let F=$(w),Z=F.start,H=F.end,a=k?U.dataManager.getTotal():U.getVirtualTotal();if(x>B)if(b==="down")H=Math.min(F.end+N,a-1);else Z=Math.max(F.start-N,0);U.dataManager.ensureRange(Z,H).catch((u)=>{W.emit("error",{error:u,context:"ensureRange"})})}else if(_={start:w.start,end:w.end},h){if(M!==null)clearTimeout(M);M=setTimeout(()=>{M=null,V(),P()},T)}}});let g=200,c=null;U.afterScroll.push((S,b)=>{if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,V(),P()},g)}),U.destroyHandlers.push(()=>{if(c!==null)clearTimeout(c),c=null;P()});let r=()=>{if(U.state.isDestroyed)return;C=null;let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);U.dataManager.ensureRange(b.start,b.end).catch((x)=>{W.emit("error",{error:x,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()=>{C=null,_=null,U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);W.emit("load:start",{offset:b.start,limit:b.end-b.start+1}),await U.dataManager.ensureRange(b.start,b.end)}}),U.methods.set("reload",async()=>{C=null,_=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:p0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);await U.dataManager.ensureRange(b.start,b.end)}}),Q)W.emit("load:start",{offset:0,limit:p0}),U.dataManager.loadInitial().catch((S)=>{W.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var BJ=()=>{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 R=W.left+window.scrollX;window.scrollTo(R+U,window.scrollY)}else{let R=W.top+window.scrollY;window.scrollTo(window.scrollX,R+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,R=Y.horizontal?U:W,k=Y.horizontal?B:K;if(Math.abs(R-k)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let $=0;$<X.resizeHandlers.length;$++)X.resizeHandlers[$](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 Y2=(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},ZJ=(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},NJ=(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},U2=(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},K2=(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)}},_J=(J,X)=>{let q=NJ(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 $=Y2(q,k),A=q[$];if(k===A.headerLayoutIndex)return{type:"header",group:A};let C=k-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+C,group:A}},layoutToDataIndex:(k)=>{if(q.length===0)return k;let $=Y2(q,k),A=q[$];if(k===A.headerLayoutIndex)return-1;let C=k-A.headerLayoutIndex-1;return A.firstDataIndex+C},dataToLayoutIndex:(k)=>{if(q.length===0)return k;let $=ZJ(q,k),A=q[$],C=k-A.firstDataIndex;return A.headerLayoutIndex+1+C},getGroupAtLayoutIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let $=Y2(q,k);return q[$]},getGroupAtDataIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let $=ZJ(q,k);return q[$]},getHeaderHeight:typeof Y==="number"?(k)=>Y:(k)=>{let $=q[k];if(!$)return 0;return Y($.key,k)},rebuild:(k)=>{q=NJ(k,X.getGroupForIndex),j=k+q.length}}};var WJ=(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,R=(G)=>{if(G===N)return;N=G;let E=X.groups;if(G<0||G>=E.length){B.textContent="";return}let M=E[G],T=j.headerTemplate(M.key,M.groupIndex),P=X.getHeaderHeight(G);if(Q)B.style.width=`${P}px`;else B.style.height=`${P}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 M=q.getOffset(E[0].headerLayoutIndex);if(G<M){A();return}let T=0,P=E.length-1;while(T<P){let S=T+P+1>>>1;if(q.getOffset(E[S].headerLayoutIndex)<=G)T=S;else P=S-1}let V=T;if(!U)$();R(V);let g=X.getHeaderHeight(V),c=0,r=V+1;if(r<E.length){let b=q.getOffset(E[r].headerLayoutIndex)-G;if(b<g)c=b-g}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)`}},$=()=>{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=""},C=()=>{let G=N;if(N=-1,G>=0)R(G)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:k,refresh:C,show:$,hide:A,destroy:_}};var VJ=(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),R;switch(Q){case"center":R=B-q/2+N/2;break;case"end":R=B-q+N;break;case"start":default:R=B;break}return Math.max(0,Math.min(R,W))};var $0=(J,X,q,j,Y="start",Q,K=VJ)=>{return K(J,X,q,j,Q,Y)};var MJ=(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,R=N.item.height;j=N.items?[...N.items]:[];let k=j.length,$={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=_J(k,$),Y=U2(j,X.groups);let A=K2(X,R);Q.setSizeConfig(A),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let C=N.item.template,{headerTemplate:_}=J,G=(I,z,h)=>{if(v0(I))return _(I.groupKey,I.groupIndex);return C(I,z,h)},E=Q.methods.get("_getGridLayout"),M=Q.methods.get("_replaceGridRenderer"),T=Q.methods.get("_updateGridLayoutForGroups"),P=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),g=Q.methods.get("_getTableHeaderHeight");if(E&&M){if(T)T((w)=>{let D=Y[w];return!!(D&&v0(D))});let{createGridRenderer:I}=(Z2(),lJ(DJ)),z=E(),h=I(K.items,G,Q.sizeCache,z,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);M(h)}else if(P&&V)V((I)=>v0(I),J.headerTemplate);else Q.replaceTemplate(G);let c=g?g():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=WJ(K.root,X,Q.sizeCache,{...$,sticky:$.sticky??!1},U,B.horizontal,c);let I=q;Q.afterScroll.push((z,h)=>{I.update(z)}),q.update(Q.scrollController.getScrollTop())}let r=N.item?.striped,S=()=>{if(r!=="data"&&r!=="even"&&r!=="odd")return;let I=new Int32Array(Y.length),z=r==="odd"?1:0,h=0;for(let w=0;w<Y.length;w++)if(v0(Y[w])){if(I[w]=-1,r==="even"||r==="odd")h=0}else I[w]=h+++z;Q.setStripeIndexFn((w)=>{if(w<0||w>=I.length)return w;return I[w]})};S();let b=()=>{if(!X)return;X.rebuild(j.length),Y=U2(j,X.groups);let I=K2(X,R);if(Q.setSizeConfig(I),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),S(),q)q.refresh()};Q.methods.set("setItems",(I)=>{j=I.slice(),b()}),Q.methods.set("appendItems",(I)=>{j.push(...I),b()}),Q.methods.set("prependItems",(I)=>{j.unshift(...I),b()}),Q.methods.set("removeItem",(I)=>{j=j.filter((z)=>z.id!==I),b()});let{animateScroll:x,cancelScroll:t}=I0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(I,z)=>{let h=X.dataToLayoutIndex(I),{align:w,behavior:D,duration:F}=y0(z),Z=Q.dataManager.getTotal(),H=Q.adjustScrollPosition($0(h,Q.sizeCache,Q.state.viewportState.containerSize,Z,w,Q.getCachedCompression()));if(D==="smooth")x(Q.scrollController.getScrollTop(),H,F);else t(),Q.scrollController.scrollTo(H)}),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 GJ=(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 C=0,_=0,G=0;for(let E=0;E<A;E++)if(j(E)){if(G++,_>0)C++,_=0;C++,_=0}else if(_++,_>=X)C++,_=0;if(_>0)C++;return C},K=(A)=>{return Y.row=B(A),Y.col=N(A),Y},B=(A)=>{if(!j)return Math.floor(A/X);let C=0,_=0;for(let G=0;G<=A;G++)if(j(G)){if(_>0)C++,_=0;if(G===A)return C;C++,_=0}else{if(G===A)return C;if(_++,_>=X)C++,_=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${C}`),C},N=(A)=>{if(!j)return A%X;if(j(A))return 0;let C=0;for(let _=0;_<=A;_++)if(j(_))C=0;else{if(_===A)return C;if(C++,C>=X)C=0}return C},U=(A,C,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let P=Math.max(0,A*X),V=Math.min(_-1,(C+1)*X-1);return{start:P,end:V}}let G=-1,E=-1,M=0,T=0;for(let P=0;P<_;P++){if(j(P)){if(T>0)M++,T=0;if(M>=A&&M<=C){if(G===-1)G=P;E=P}M++,T=0}else{if(M>=A&&M<=C){if(G===-1)G=P;E=P}if(T++,T>=X)M++,T=0}if(M>C&&T===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:E}},W=(A,C,_)=>{if(C<0||C>=X)return-1;let G=A*X+C;if(G<0||G>=_)return-1;return G},R=(A)=>{let C=(X-1)*q;return Math.max(0,(A-C)/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:R,getColumnOffset:(A,C)=>{let _=R(C);return A*(_+q)}}};Z2();var K4=new Set,OJ=(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,conflicts:["withTable","withMasonry"],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=S0(H0(B.padding),U),R=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},k=B.items?.some((H)=>H.__groupHeader===!0),$={columns:J.columns,gap:J.gap??0};if(k)$.isHeaderFn=(H)=>{let a=j.dataManager.getItem(H);return!!(a&&a.__groupHeader===!0)};X=GJ($);let A=X.gap;j.setVirtualTotalFn(()=>{let H=j.dataManager.getTotal();return X.getTotalRows(H)});let C=B.item,_=K.horizontal?C.width:C.height,G={containerWidth:R(),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((H)=>{let a=G.containerWidth-2,u=(G.columns-1)*G.gap;return E.containerWidth=G.containerWidth,E.columns=G.columns,E.gap=G.gap,E.columnWidth=(a-u)/G.columns,E.row=X.getRow(H),E.column=X.getCol(H),E.totalRows=X.getTotalRows(j.dataManager.getTotal()),E.totalColumns=G.columns,_(H,E)+G.gap});else if(A>0)j.setSizeConfig(_+A);if(j.rebuildSizeCache(),A>0){let H=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=H();return a>0?a-G.gap:0}}Y.root.classList.add(`${N}--grid`);let M=R(),T=B.item.template,P=()=>{q=B2(Y.items,T,j.sizeCache,X,N,M,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};P(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>$),j.methods.set("_replaceGridRenderer",(H)=>{q=H}),j.methods.set("_updateGridLayoutForGroups",(H)=>{X.update({isHeaderFn:H});let a=j.dataManager.getTotal(),u=0;for(let L=0;L<a;L++)if(X.getCol(L)===0){let m=j.sizeCache.getSize(L);u+=m}j.sizeCache.getTotalSize=()=>u,j.updateContentSize(u),P()}),j.methods.set("updateGrid",(H)=>{if(H.columns!==void 0){if(!Number.isInteger(H.columns)||H.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");$.columns=H.columns}if(H.gap!==void 0){if(H.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");$.gap=H.gap}if(X)X.update($);let a=R();if(G.containerWidth=a,G.columns=$.columns,G.gap=$.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let u=0;u<j.contentSizeHandlers.length;u++)j.contentSizeHandlers[u]();if(q)q.clear();j.forceRender()});let V=null,g=null,c=!1,r=()=>{if(c)return;c=!0,V=j.methods.get("_getSelectedIds")??null,g=j.methods.get("_getFocusedIndex")??null},S=-1,b=-1,x=!0,t=K.overscan,I={start:0,end:0},z={start:0,end:0},h=()=>{if(j.state.isDestroyed)return;let H=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!x&&H===S&&a===b)return;S=H,b=a,x=!1;let u=j.getVirtualTotal();if(u===0||a===0)I.start=0,I.end=0;else I.start=Math.max(0,j.sizeCache.indexAtOffset(H)),I.end=Math.min(u-1,Math.max(0,j.sizeCache.indexAtOffset(H+a-1)));z.start=Math.max(0,I.start-t),z.end=Math.min(u-1,I.end+t);let L=j.state.viewportState;L.scrollPosition=H,L.visibleRange.start=I.start,L.visibleRange.end=I.end,L.renderRange.start=z.start,L.renderRange.end=z.end;let m=j.state.lastRenderRange,v=L.isCompressed,O=j.dataManager.getTotal(),d=X.getItemRange(z.start,z.end,O),p=j.dataManager.getItemsInRange(d.start,d.end),s=v?j.getCompressionContext():void 0;r();let y=V?V():K4,o=g?g():-1;if(q.render(p,d,y,o,s),m.start!==z.start||m.end!==z.end)m.start=z.start,m.end=z.end,Q.emit("range:change",{range:{start:z.start,end:z.end}})},w=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,x=!0,h()};j.setRenderFns(h,w);let D=typeof _==="function";j.resizeHandlers.push((H,a)=>{let u=(U?a:H)-W;if(G.containerWidth=u,q)q.updateContainerWidth(u);if(D){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let L=0;L<j.contentSizeHandlers.length;L++)j.contentSizeHandlers[L]();if(q)q.clear();j.forceRender()}});let{animateScroll:F,cancelScroll:Z}=I0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(H,a)=>{let u=Math.floor(H/J.columns),{align:L,behavior:m,duration:v}=y0(a),O=j.dataManager.getState(),d=X.getTotalRows(O.total),p=Math.max(0,Math.min(u,d-1)),s=j.adjustScrollPosition($0(p,j.sizeCache,j.state.viewportState.containerSize,d,L,j.getCachedCompression()));if(m==="smooth")F(j.scrollController.getScrollTop(),s,v);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 EJ=(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 M=1;M<_.length;M++){let T=_[M];if(T<E)E=T,G=M}return G},R=(_,G)=>{if(_<=0)return N=0,B=[],[];let E=Array(X).fill(0),M=Array(X);for(let V=0;V<X;V++)M[V]=[];let T=Array(_);for(let V=0;V<_;V++){let g=W(E),c=G(V),r=E[g];T[V]={index:V,x:Q[g],y:r,lane:g,size:c,crossSize:Y},M[g].push(V),E[g]=r+c+q}B=M;let P=0;for(let V=0;V<X;V++){let g=E[V],c=g>0?g-q:0;if(c>P)P=c}return N=P,T},k=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let G=Array(X).fill(0);for(let M of _){let T=M.y+M.size,P=G[M.lane];if(T>P)G[M.lane]=T}let E=0;for(let M=0;M<X;M++)if(G[M]>E)E=G[M];return E},$=(_,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 M=0;M<X;M++){let T=B[M],P=T.length;if(P===0)continue;let V=0,g=P;while(V<g){let c=V+g>>>1,r=_[T[c]];if(r.y+r.size<=G)V=c+1;else g=c}for(let c=V;c<P;c++){let r=_[T[c]];if(r.y>=E)break;U.push(r)}}return U},A=(_,G,E)=>{let M=[];for(let T of _)if(T.y+T.size>G&&T.y<E)M.push(T);return M};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:R,getTotalSize:k,getVisibleItems:$}};var B4=(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}}},Z4=1,AJ=(J,X,q,j=!1,Y,Q)=>{let K=B4(),B=new Map,N=new Set,U=0,W="",R=-1,k={selected:!1,focused:!1},$=(S,b)=>{return k.selected=S,k.focused=b,k},A=`${q}-item ${q}-masonry-item`,C=`${q}-item--selected`,_=`${q}-item--focused`,G=(S,b)=>{if(typeof b==="string")S.innerHTML=b;else S.replaceChildren(b)},E=(S,b,x)=>{S.classList.toggle(C,b),S.classList.toggle(_,x)},M=(S,b)=>{if(j)S.style.transform=`translate(${Math.round(b.y)}px, ${Math.round(b.x)}px)`;else S.style.transform=`translate(${Math.round(b.x)}px, ${Math.round(b.y)}px)`},T=(S,b)=>{if(j)S.style.width=`${b.size}px`,S.style.height=`${b.crossSize}px`;else S.style.width=`${b.crossSize}px`,S.style.height=`${b.size}px`},P=(S,b,x,t,I)=>{let z=K.acquire(),h=$(t,I);if(z.className=A,z.dataset.index=String(S),z.dataset.id=String(b.id),z.dataset.lane=String(x.lane),z.ariaSelected=String(t),Q)z.id=`${Q}-item-${S}`;if(Y){let D=Y();if(D!==R)R=D,W=String(D);z.setAttribute("aria-setsize",W),z.setAttribute("aria-posinset",String(S+1))}T(z,x);let w=X(b,S,h);return G(z,w),E(z,t,I),M(z,x),{element:z,lastItemId:b.id,lastSelected:t,lastFocused:I,lastY:x.y,lastX:x.x,lastSize:x.size,lastCrossSize:x.crossSize,lastSeenFrame:U}},V=(S,b,x,t)=>{U++,N.clear();for(let z=0;z<b.length;z++)N.add(b[z].index);for(let[z,h]of B)if(N.has(z))h.lastSeenFrame=U;else if(U-h.lastSeenFrame>Z4)K.release(h.element),B.delete(z);let I=null;for(let z=0;z<b.length;z++){let h=b[z],w=h.index,D=S(w);if(!D)continue;let F=x.has(D.id),Z=w===t,H=B.get(w);if(H){let a=H.lastItemId!==D.id,u=H.lastSelected!==F,L=H.lastFocused!==Z,m=H.lastY!==h.y||H.lastX!==h.x,v=H.lastSize!==h.size||H.lastCrossSize!==h.crossSize;if(a||u||L){let O=$(F,Z),d=X(D,w,O);G(H.element,d),E(H.element,F,Z),H.element.dataset.id=String(D.id),H.element.ariaSelected=String(F),H.lastItemId=D.id,H.lastSelected=F,H.lastFocused=Z}if(v)T(H.element,h),H.lastSize=h.size,H.lastCrossSize=h.crossSize;if(m)M(H.element,h),H.lastY=h.y,H.lastX=h.x}else{let a=P(w,D,h,F,Z);if(!I)I=document.createDocumentFragment();I.appendChild(a.element),B.set(w,a)}}if(I)J.appendChild(I)},g=()=>{for(let{element:S}of B.values())K.release(S);B.clear(),J.innerHTML=""};return{render:V,getElement:(S)=>B.get(S)?.element,sortDOM:()=>{f0(J,B.keys(),(S)=>B.get(S)?.element)},clear:g,destroy:()=>{g(),K.clear()}}};var N4=new Set,_4=100,FJ=(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,conflicts:["withGrid","withTable"],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 R=H0(N.padding),k=S0(R,W),$=l0(R,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-k},C={columns:J.columns,gap:J.gap??0,containerSize:A()};X=EJ(C);let _=N.item,G=W&&N.item.width?N.item.width:_.height,E={containerWidth:0,columns:0,gap:0,columnWidth:0},M=typeof G==="function"?(u)=>G(u,E):()=>G,T=()=>{let u=Y.dataManager.getTotal(),L=X;E.containerWidth=L.containerSize,E.columns=L.columns,E.gap=L.gap;let m=(L.columns-1)*L.gap;E.columnWidth=Math.max(0,(E.containerWidth-m)/L.columns),j=L.calculateLayout(u,M);let v=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>v,Y.updateContentSize(v)},P=N.item.template;q=AJ(Q.items,P,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,g=null,c=!1,r=()=>{if(c)return;c=!0,V=Y.methods.get("_getSelectedIds")??null,g=Y.methods.get("_getFocusedIndex")??null},S=(u)=>Y.dataManager.getItem(u),b=-1,x=-1,t=!0,I=B.overscan*_4,z=()=>{if(Y.state.isDestroyed)return;r();let u=Y.scrollController.getScrollTop(),L=Y.state.viewportState.containerSize;if(!t&&u===b&&L===x)return;b=u,x=L,t=!1;let m=Math.max(0,u-I),v=u+L+I,O=X.getVisibleItems(j,m,v),d=V?V():N4,p=g?g():-1;if(q&&O.length>0)q.render(S,O,d,p);let s=Y.state.viewportState;s.scrollPosition=u;let y=O.length,o=y>0?O[0].index:0,j0=y>0?O[y-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}})},h=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,t=!0,z()};Y.setRenderFns(z,h);let w=(u,L)=>{let m=(W?L:u)-k;if(X&&X.containerSize!==m){if(X.update({containerSize:m}),T(),q)q.clear();h()}};Y.resizeHandlers.push(w);let D=()=>{T(),h()},F=Y.dataManager,Z=(u)=>{if(typeof F[u]!=="function")return;let L=F[u].bind(F);F[u]=(...m)=>{L(...m),D()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:H,cancelScroll:a}=I0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(u,L)=>{let m=j[u];if(!m)return;let{align:v,behavior:O,duration:d}=y0(L),p=m.y,s=Y.state.viewportState.containerSize,y=p;if(v==="center")y=p-s/2+m.size/2;else if(v==="end"){y=p-s+m.size;let o=X.getTotalSize(j);if(u===j.length-1)y=Math.max(0,o+$-s)}if(y=Math.max(0,y),y=Y.adjustScrollPosition(y),O==="smooth")H(Y.scrollController.getScrollTop(),y,d);else a(),Y.scrollController.scrollTo(y)}),T(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var LJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),N2=(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}},_2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},s0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return _2(J,[X]);else return N2(J,[X],q)},TJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},kJ=(J)=>({...J,selected:new Set}),W2=(J,X)=>{return J.focusedIndex=X,J},bJ=(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},HJ=(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},yJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},$J=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var V2=(J)=>{return Array.from(J.selected)},D2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var PJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=LJ(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 R=new Map,k=()=>{R.clear();let M=Q.dataManager.getTotal(),T=Q.dataManager.getCached();if(T===0)return;if(T>=M){for(let V=0;V<M;V++){let g=Q.dataManager.getItem(V);if(g)R.set(g.id,V)}return}let P=Q.dataManager.getStorage();if(P&&typeof P.getLoadedRanges==="function"){let V=P.getLoadedRanges();for(let g of V)for(let c=g.start;c<=g.end;c++){let r=Q.dataManager.getItem(c);if(r&&!r._isPlaceholder)R.set(r.id,c)}}};B.on("data:change",({type:M,id:T})=>{if(M==="remove")j.selected.delete(T),k()}),B.on("load:end",({items:M,offset:T})=>{if(!M||M.length===0)return;if(T!==void 0)for(let P=0;P<M.length;P++){let V=M[P];if(V&&V.id!==void 0)R.set(V.id,T+P)}else k()}),k(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:$}=Q.getRenderFns(),A=()=>{$();let M=(T)=>{let P=R.get(T);if(P===void 0)return;return Q.dataManager.getItem(P)};B.emit("selection:change",{selected:V2(j),items:D2(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 T=M.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 M=Q.dataManager.getTotal();if(M===0)return;let T=j.focusedIndex>=0?Math.min(j.focusedIndex,M-1):0;j=W2(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 P=Q.dataManager.getItem(T);if(P)Q.renderer.updateItemClasses(T,j.selected.has(P.id),!0)};K.root.addEventListener("focusin",G);let E=(M)=>{if(Q.state.isDestroyed)return;let T=M.relatedTarget;if(T&&K.root.contains(T))return;let P=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),P>=0){let V=Q.dataManager.getItem(P);if(V)Q.renderer.updateItemClasses(P,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",E),Q.clickHandlers.push((M)=>{if(Q.state.isDestroyed)return;let P=M.target.closest("[data-index]");if(!P)return;let V=parseInt(P.dataset.index??"-1",10);if(V<0)return;let g=Q.dataManager.getItem(V);if(!g)return;B.emit("item:click",{item:g,index:V,event:M}),j=W2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=s0(j,g.id,X),A()}),Q.keydownHandlers.push((M)=>{if(Q.state.isDestroyed)return;let T=Q.dataManager.getTotal(),P=j.focusedIndex,V=!1,g=!1,c=j;switch(M.key){case"ArrowUp":c=bJ(j,T,N.wrap),c.focusVisible=!0,V=!0,g=!0;break;case"ArrowDown":c=HJ(j,T,N.wrap),c.focusVisible=!0,V=!0,g=!0;break;case"Home":c=yJ(j,T),c.focusVisible=!0,V=!0,g=!0;break;case"End":c=$J(j,T),c.focusVisible=!0,V=!0,g=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let r=Q.dataManager.getItem(j.focusedIndex);if(r)c=s0(j,r.id,X),c.focusVisible=!0;V=!0}break}if(V){M.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(g){let{selected:S}=j;if(P>=0&&P!==r){let b=Q.dataManager.getItem(P);if(b)Q.renderer.updateItemClasses(P,S.has(b.id),!1)}if(r>=0){let b=Q.dataManager.getItem(r);if(b)Q.renderer.updateItemClasses(r,S.has(b.id),!0)}}else A()}}),Q.methods.set("select",(...M)=>{j=N2(j,M,X),A()}),Q.methods.set("deselect",(...M)=>{j=_2(j,M),A()}),Q.methods.set("toggleSelect",(M)=>{j=s0(j,M,X),A()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let M=Q.getAllLoadedItems();j=TJ(j,M,X),k(),A()}),Q.methods.set("clearSelection",()=>{j=kJ(j),A()}),Q.methods.set("getSelected",()=>{return V2(j)}),Q.methods.set("getSelectedItems",()=>{return D2(j,(T)=>{let P=R.get(T);return P===void 0?void 0:Q.dataManager.getItem(P)})}),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 wJ=(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/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor($),K-1)),W=($-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let R={index:U,offsetInItem:W,total:K};if(N)R.selectedIds=N;return R});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(),R=Math.max(0,Math.min(Q,N-1)),k;if(W.isCompressed){let _=q.sizeCache.getSize(R),G=_>0?K/_:0;k=(R+G)/N*W.virtualSize}else k=q.sizeCache.getOffset(R)+K;let $=q.state.viewportState.containerSize,A=Math.max(0,W.virtualSize-$);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 C=q.methods.get("loadVisibleRange");if(C)requestAnimationFrame(()=>{C()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var RJ=(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:W4(_.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 M=0;M<Q.length;M++){let T=Q[M],P=T.def;if(P.width!==void 0)T.width=M2(P.width,T.minWidth,T.maxWidth),G+=T.width;else E++}if(E>0){let T=Math.max(0,_-G)/E;for(let P=0;P<Q.length;P++){let V=Q[P];if(V.def.width===void 0)V.width=M2(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 M=M2(G,E.minWidth,E.maxWidth);return E.width=M,U(),M},R=(_)=>{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 M=G+E>>>1,T=Q[M];if(_<T.offset)E=M-1;else if(_>=T.offset+T.width)G=M+1;else return T}return Q[G]},$=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},A=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},C=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:C,resizeColumn:W,getColumn:R,getColumnAtX:k,getColumnOffset:$,getColumnWidth:A}},M2=(J,X,q)=>Math.min(q,Math.max(X,J)),W4=(J,X)=>Math.max(X,J);var vJ=(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=[],R=[],k=[],$=!0,A=null,C="asc",_=null,G=!1,E=-1,M=0,T=0,P=(w,D)=>{let F=document.createElement("div");F.className=`${j}-table-header-cell`,F.setAttribute("role","columnheader"),F.setAttribute("aria-colindex",String(D+1)),F.dataset.columnKey=w.def.key;let Z=w.def.align;if(Z==="center")F.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")F.classList.add(`${j}-table-header-cell--right`);let H=document.createElement("div");H.className=`${j}-table-header-content`;let a=w.def.header?w.def.header(w.def):w.def.label;if(typeof a==="string")H.textContent=a;else H.appendChild(a);if(F.appendChild(H),w.def.sortable){let u=document.createElement("span");u.className=`${j}-table-header-sort`,u.setAttribute("aria-hidden","true"),F.appendChild(u),k.push(u),F.classList.add(`${j}-table-header-cell--sortable`)}else k.push(null);if(w.resizable){let u=document.createElement("div");u.className=`${j}-table-header-resize`,u.dataset.resizeIndex=String(D),F.appendChild(u),R.push(u)}return F},V=(w)=>{_=w,U.textContent="",W=[],R=[],k=[];let D=w.columns;for(let F=0;F<D.length;F++){let Z=D[F],H=P(Z,F);W.push(H),U.appendChild(H)}if(g(w),A)c(A,C)},g=(w)=>{_=w;let D=w.columns;U.style.width=`${w.totalWidth}px`;for(let F=0;F<W.length&&F<D.length;F++){let Z=W[F],H=D[F];Z.style.width=`${H.width}px`}},c=(w,D)=>{if(A=w,C=D,!_)return;let F=_.columns;for(let Z=0;Z<k.length&&Z<F.length;Z++){let H=k[Z];if(!H)continue;if(F[Z].def.key===w&&w!==null)H.textContent=D==="asc"?"▲":"▼",H.style.opacity="0.7",W[Z].setAttribute("aria-sort",D==="asc"?"ascending":"descending");else H.textContent="",H.style.opacity="0",W[Z].removeAttribute("aria-sort")}},r=(w)=>{U.style.transform=`translateX(${-w}px)`},S=(w)=>{let D=w.target;if(!D.dataset.resizeIndex)return;if(w.preventDefault(),w.stopPropagation(),E=parseInt(D.dataset.resizeIndex,10),!_)return;let F=_.getColumn(E);if(!F||!F.resizable)return;G=!0,M=w.clientX,T=F.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",D.classList.add(`${j}-table-header-resize--active`),D.setPointerCapture(w.pointerId),D.addEventListener("pointermove",b),D.addEventListener("pointerup",x),D.addEventListener("pointercancel",x)},b=(w)=>{if(!G||!_)return;let D=w.clientX-M;if(Math.abs(D)<1)return;let F=Math.max(0,T+D);Y(E,F)},x=(w)=>{if(!G)return;let D=w.target;D.removeEventListener("pointermove",b),D.removeEventListener("pointerup",x),D.removeEventListener("pointercancel",x);try{D.releasePointerCapture(w.pointerId)}catch{}D.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,E=-1},t=(w)=>{let D=w.target;if(D.dataset.resizeIndex!==void 0)return;if(G)return;let F=D;while(F&&!F.dataset.columnKey)if(F=F.parentElement,F===N||F===null)return;if(!F||!F.dataset.columnKey)return;let Z=F.dataset.columnKey;if(!_)return;let H=_.columns,a=-1;for(let L=0;L<H.length;L++)if(H[L].def.key===Z){a=L;break}if(a===-1)return;let u=H[a];if(K)K({key:Z,index:a,event:w});if(u.def.sortable&&Q){let L;if(A===Z)if(C==="asc")L="desc";else L=null;else L="asc";Q({key:Z,index:a,direction:L})}};return N.addEventListener("pointerdown",S),N.addEventListener("click",t),{element:N,update:g,updateSort:c,rebuild:V,show:()=>{if($)return;$=!0,N.style.display=""},hide:()=>{if(!$)return;$=!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=[],R=[],k=[],_=null,$=!1},syncScroll:r}};var V4=(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}}},zJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=V4(),W=new Map,R=-1,k=q,$=null,A=null,C=null,_=(v,O)=>{A=v,C=O},G=(v,O)=>{if(O)v.setAttribute("aria-selected","true");else v.removeAttribute("aria-selected")},E=`${Y}-item ${Y}-table-row`,M=`${Y}-item--selected`,T=`${Y}-item--focused`,P=`${Y}-table-cell`,V=`${Y}-table-cell--center`,g=`${Y}-table-cell--right`,c=`${Y}-item--odd`,r=`${Y}-item--placeholder`,S=`${Y}-item--replaced`,b=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,x=`${Y}-table-group-header-content`,t=(v,O,d,p,s=!1)=>{if(d.def.cell){let y=d.def.cell(O,d.def,p);if(typeof y==="string")v.innerHTML=y;else v.replaceChildren(y)}else{let y=O[d.def.key],o=y!=null?String(y):"";if(s&&o)v.innerHTML=`<span>${o}</span>`;else v.textContent=o}},I=(v,O,d,p,s=!1)=>{let y=E;if(B){if($){let o=$(O);if(o>=0&&(o&1)===1)y+=` ${c}`}else if((O&1)===1)y+=` ${c}`}if(s)y+=` ${r}`;if(d)y+=` ${M}`;if(p)y+=` ${T}`;v.className=y},z=(v,O)=>{let d=O.def.align;if(d==="center")v.classList.add(V),v.classList.remove(g);else if(d==="right")v.classList.add(g),v.classList.remove(V);else v.classList.remove(V,g)},h=(v,O)=>{let p=k.columns.length;if(O.length===p)return O;let s=[];for(let y=0;y<p;y++){let o;if(y<O.length)o=O[y];else o=document.createElement("div"),o.className=P,v.appendChild(o);s.push(o)}for(let y=p;y<O.length;y++)O[y].remove();return s},w=(v,O,d)=>{let p=U.acquire(),s=v;p.style.width=`${k.totalWidth}px`;let y=d.getSize(O);p.style.height=`${y}px`,p.className=b,p.setAttribute("role","presentation"),p.setAttribute("data-id",String(v.id)),p.setAttribute("data-index",String(O)),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let o=document.createElement("div");if(o.className=x,C){let f=C(s.groupKey,s.groupIndex);if(typeof f==="string")o.innerHTML=f;else o.appendChild(f)}p.appendChild(o);let j0=d.getOffset(O);return p.style.transform=`translateY(${j0}px)`,{element:p,cells:[],index:O,isGroupHeader:!0,lastItemId:v.id,lastSelected:!1,lastFocused:!1,lastOffset:j0,lastHeight:y}},D=(v,O,d,p,s)=>{let y=U.acquire();y.style.width=`${k.totalWidth}px`;let o=s.getSize(O);y.style.height=`${o}px`;let j0=String(v.id).startsWith("__placeholder_");I(y,O,d,p,j0),y.setAttribute("role","row"),y.setAttribute("data-id",String(v.id)),y.setAttribute("data-index",String(O)),y.id=`${Q}-${O}`,y.setAttribute("aria-rowindex",String(O+2));let f=K();if(f!==R)R=f;G(y,d);let n=h(y,[]),i=k.columns;for(let X0=0;X0<n.length&&X0<i.length;X0++){let Y0=n[X0],Q0=i[X0];Y0.style.left=`${Q0.offset}px`,Y0.style.width=`${Q0.width}px`,Y0.setAttribute("role","gridcell"),Y0.setAttribute("aria-colindex",String(X0+1)),z(Y0,Q0),t(Y0,v,Q0,O,j0)}let q0=s.getOffset(O);return y.style.transform=`translateY(${q0}px)`,{element:y,cells:n,index:O,isGroupHeader:!1,lastItemId:v.id,lastSelected:d,lastFocused:p,lastOffset:q0,lastHeight:o}},F=(v,O,d,p)=>{for(let[f,n]of W)if(f<O.start||f>O.end)U.release(n.element),W.delete(f);let s=!1,y=K();if(y!==R)R=y,s=!0;let o=null,j0=X();$=typeof B==="string"&&N?N():null;for(let f=O.start;f<=O.end;f++){let n=f-O.start,i=v[n];if(!i)continue;let q0=d.has(i.id),X0=f===p,Y0=A?A(i):!1,Q0=W.get(f);if(Q0){if(Q0.isGroupHeader!==Y0){U.release(Q0.element),W.delete(f);let N0=Y0?w(i,f,j0):D(i,f,q0,X0,j0);if(W.set(f,N0),!o)o=document.createDocumentFragment();o.appendChild(N0.element);continue}if(Y0){if(Q0.lastItemId!==i.id){let D0=i,U0=Q0.element.firstElementChild;if(U0&&C){let V0=C(D0.groupKey,D0.groupIndex);if(typeof V0==="string")U0.innerHTML=V0;else U0.replaceChildren(V0)}Q0.element.setAttribute("data-id",String(i.id)),Q0.lastItemId=i.id}let K0=j0.getOffset(f);if(Q0.lastOffset!==K0)Q0.lastOffset=K0,Q0.element.style.transform=`translateY(${K0}px)`;let A0=j0.getSize(f);if(Q0.lastHeight!==A0)Q0.lastHeight=A0,Q0.element.style.height=`${A0}px`}else{let N0=Q0.lastItemId!==i.id,K0=Q0.lastSelected!==q0,A0=Q0.lastFocused!==X0;if(N0){let V0=Q0.lastItemId!=null&&String(Q0.lastItemId).startsWith("__placeholder_"),_0=String(i.id).startsWith("__placeholder_"),F0=k.columns;for(let T0=0;T0<Q0.cells.length&&T0<F0.length;T0++)t(Q0.cells[T0],i,F0[T0],f,_0);if(I(Q0.element,f,q0,X0,_0),Q0.element.setAttribute("data-id",String(i.id)),G(Q0.element,q0),V0&&!_0)Q0.element.classList.add(S),setTimeout(()=>{Q0.element.classList.remove(S)},300);Q0.lastItemId=i.id,Q0.lastSelected=q0,Q0.lastFocused=X0}else if(K0||A0){let V0=String(i.id).startsWith("__placeholder_");I(Q0.element,f,q0,X0,V0),G(Q0.element,q0),Q0.lastSelected=q0,Q0.lastFocused=X0}let D0=j0.getOffset(f);if(Q0.lastOffset!==D0)Q0.lastOffset=D0,Q0.element.style.transform=`translateY(${D0}px)`;let U0=j0.getSize(f);if(Q0.lastHeight!==U0)Q0.lastHeight=U0,Q0.element.style.height=`${U0}px`;if(s)Q0.element.setAttribute("aria-rowindex",String(f+2))}}else{let N0=Y0?w(i,f,j0):D(i,f,q0,X0,j0);if(W.set(f,N0),!o)o=document.createDocumentFragment();o.appendChild(N0.element)}}if(o)J.appendChild(o)},Z=(v,O,d,p)=>{let s=W.get(v);if(!s)return;if(s.isGroupHeader)return;let y=s.lastItemId!==O.id,o=s.lastSelected!==d,j0=s.lastFocused!==p;if(y||o||j0){if(y){let f=k.columns;for(let n=0;n<s.cells.length&&n<f.length;n++)t(s.cells[n],O,f[n],v);s.element.setAttribute("data-id",String(O.id)),s.lastItemId=O.id}I(s.element,v,d,p),G(s.element,d),s.lastSelected=d,s.lastFocused=p}},H=(v,O,d)=>{let p=W.get(v);if(!p)return;if(p.isGroupHeader)return;let s=p.lastSelected!==O,y=p.lastFocused!==d;if(s||y)I(p.element,v,O,d),G(p.element,O),p.lastSelected=O,p.lastFocused=d},a=(v)=>{k=v;let O=v.columns;for(let[,d]of W)if(d.element.style.width=`${v.totalWidth}px`,d.cells.length>0)for(let p=0;p<d.cells.length&&p<O.length;p++){let s=d.cells[p],y=O[p];s.style.left=`${y.offset}px`,s.style.width=`${y.width}px`}},u=(v)=>{return W.get(v)?.element},L=()=>{for(let[,v]of W)U.release(v.element);W.clear(),R=-1};return{render:F,updateItem:Z,updateItemClasses:H,getElement:u,updateColumnLayout:a,setGroupHeaderFn:_,clear:L,destroy:()=>{L(),U.clear()}}};var D4=new Set,CJ=(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,R=J.maxColumnWidth??1/0,k=J.columnBorders??!1,$=J.rowBorders??!0,A=J.rowHeight,C=S0(H0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof A==="number"?A:40),G=J.sort?.key??null,E=J.sort?.direction??"asc";if(X=RJ(J.columns,W,R,U),typeof A==="function")Y.setSizeConfig(A);else if(typeof A==="number")Y.setSizeConfig(A);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),$)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 M=-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 P=Y.getContainerWidth()-C;X.resolve(P);let V=(O,d)=>{if(!X)return;let p=X.getColumn(O);if(!p)return;let s=p.width,y=X.resizeColumn(O,d);if(q)q.update(X);if(j)j.updateColumnLayout(X);r(),K.emit("column:resize",{key:p.def.key,index:O,previousWidth:s,width:y})},g=(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=vJ(Q.root,Q.viewport,_,N,V,g,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=zJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let S=null,b=null,x=!1,t=()=>{if(x)return;x=!0,S=Y.methods.get("_getSelectedIds")??null,b=Y.methods.get("_getFocusedIndex")??null},I=-1,z=-1,h=-1,w=!0,D=B.overscan,F={start:0,end:0},Z={start:0,end:0},H=()=>{if(Y.state.isDestroyed)return;let O=Y.scrollController.getScrollTop(),d=Y.state.viewportState.containerSize,p=Y.getVirtualTotal();if(!w&&O===I&&d===z&&p===h)return;I=O,z=d,h=p,w=!1;let s=p+1;if(s!==M)M=s,Q.root.setAttribute("aria-rowcount",String(s));if(p===0||d===0)F.start=0,F.end=0;else F.start=Math.max(0,Y.sizeCache.indexAtOffset(O)),F.end=Math.min(p-1,Math.max(0,Y.sizeCache.indexAtOffset(O+d-1)));Z.start=Math.max(0,F.start-D),Z.end=Math.min(p-1,F.end+D);let y=Y.state.viewportState;y.scrollPosition=O,y.visibleRange.start=F.start,y.visibleRange.end=F.end,y.renderRange.start=Z.start,y.renderRange.end=Z.end;let o=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);t();let f=S?S():D4,n=b?b():-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,w=!0,H()};Y.setRenderFns(H,a);let u=q,L=-1,m=()=>{let O=Q.viewport.scrollLeft;if(O!==L){if(L=O,u.syncScroll)u.syncScroll(O)}};Y.afterScroll.push(()=>{m()});let v=()=>{m()};Q.viewport.addEventListener("scroll",v,{passive:!0}),Y.resizeHandlers.push((O,d)=>{if(!X)return;if(X.resolve(O-C),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()-C),q.rebuild(X),G)q.updateSort(G,E);if(r(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(O,d)=>{if(!X)return;let p;if(typeof O==="string"){let s=X.columns;p=-1;for(let y=0;y<s.length;y++)if(s[y].def.key===O){p=y;break}if(p===-1)return}else p=O;V(p,d)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let O={},d=X.columns;for(let p=0;p<d.length;p++)O[d[p].def.key]=d[p].width;return O}),Y.methods.set("setSort",(O,d)=>{if(G=O,E=d??"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,d)=>{if(j)j.setGroupHeaderFn(O,d)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{r()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",v),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{CJ as withTable,wJ as withSnapshots,PJ as withSelection,QJ as withScrollbar,jJ as withScale,BJ as withPage,FJ as withMasonry,MJ as withGroups,OJ as withGrid,KJ as withAsync,t2 as vlist};
package/dist/vlist.css CHANGED
@@ -1 +1 @@
1
- @keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}[data-theme-mode="light"]{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]){--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}}.dark{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}.vlist--scrolling .vlist-sticky-header{transition:none}.vlist--grid .vlist-items{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry .vlist-items{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:var(--vlist-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}
1
+ @keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]){--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}}.dark{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}.vlist--scrolling .vlist-sticky-header{transition:none}.vlist--grid .vlist-items{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry .vlist-items{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:var(--vlist-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",