@floor/vlist 1.2.3 → 1.2.5

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,28 +2,29 @@
2
2
 
3
3
  Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
4
4
 
5
- **v1.2.0** — [Changelog](./changelog.txt)
5
+ **v1.2.3** — [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
  [![bundle size](https://img.shields.io/bundlephobia/minzip/@floor/vlist)](https://bundlephobia.com/package/@floor/vlist)
9
- [![tests](https://img.shields.io/badge/tests-2268_passing-brightgreen)](https://github.com/floor/vlist)
9
+ [![tests](https://img.shields.io/badge/tests-2453_passing-brightgreen)](https://github.com/floor/vlist)
10
10
  [![license](https://img.shields.io/npm/l/vlist.svg)](https://github.com/floor/vlist/blob/main/LICENSE)
11
11
 
12
12
  - **Zero dependencies** — no external libraries
13
13
  - **Ultra memory efficient** — ~0.1-0.2 MB constant overhead regardless of dataset size
14
- - **~8.4 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
14
+ - **~8.5 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
15
15
  - **Builder API** — composable features with perfect tree-shaking
16
- - **Grid, masonry, groups, async, selection, scale** — all opt-in
16
+ - **Grid, masonry, table, groups, async, selection, scale** — all opt-in
17
17
  - **Horizontal & vertical** — semantically correct orientation support
18
18
  - **Reverse, page-scroll, wrap** — every layout mode
19
19
  - **Accessible** — WAI-ARIA, keyboard navigation, focus-visible, screen-reader friendly
20
20
  - **React, Vue, Svelte** — framework adapters available
21
21
 
22
- **30+ interactive examples → [vlist.dev](https://vlist.dev)**
22
+ **14+ interactive examples → [vlist.dev](https://vlist.dev)**
23
23
 
24
24
  ## Highlights
25
25
 
26
26
 
27
+ - **Data table** — virtualized columns with resize, sort, and horizontal scroll via `withTable()`
27
28
  - **Dimension-agnostic API** — semantically correct terminology for both orientations
28
29
  - **Performance optimized** — 13-pattern optimization playbook applied across the entire rendering pipeline
29
30
  - **Horizontal groups** — sticky headers work in horizontal carousels
@@ -96,6 +97,7 @@ const list = vlist({
96
97
  | `withSelection()` | +1.7 KB | Single/multiple selection + keyboard nav |
97
98
  | `withScale()` | +2.6 KB | 1M+ items via scroll compression |
98
99
  | `withScrollbar()` | +1.2 KB | Custom scrollbar UI |
100
+ | `withTable()` | +4.4 KB | Data table with columns, resize, sort |
99
101
  | `withPage()` | +0.4 KB | Document-level scrolling |
100
102
  | `withSnapshots()` | +0.5 KB | Scroll save/restore |
101
103
 
@@ -103,6 +105,34 @@ const list = vlist({
103
105
 
104
106
  More examples at **[vlist.dev](https://vlist.dev)**.
105
107
 
108
+ ### Data Table
109
+
110
+ ```typescript
111
+ import { vlist, withTable, withSelection } from '@floor/vlist'
112
+
113
+ const table = vlist({
114
+ container: '#my-table',
115
+ items: contacts,
116
+ item: { height: 36, template: () => '' },
117
+ })
118
+ .use(withTable({
119
+ columns: [
120
+ { key: 'name', label: 'Name', width: 200, sortable: true },
121
+ { key: 'email', label: 'Email', width: 260, sortable: true },
122
+ { key: 'role', label: 'Role', width: 160, sortable: true },
123
+ { key: 'status', label: 'Status', width: 100, align: 'center' },
124
+ ],
125
+ rowHeight: 36,
126
+ headerHeight: 36,
127
+ resizable: true,
128
+ }))
129
+ .use(withSelection({ mode: 'single' }))
130
+ .build()
131
+
132
+ table.on('column:sort', ({ key, direction }) => { /* re-sort data */ })
133
+ table.on('column:resize', ({ key, width }) => { /* persist widths */ })
134
+ ```
135
+
106
136
  ### Grid Layout
107
137
 
108
138
  ```typescript
@@ -184,11 +214,13 @@ const list = vlist({
184
214
  | **Horizontal carousel** | `orientation: 'horizontal'`, `item.width` |
185
215
  | **Horizontal groups** | `orientation: 'horizontal'` + `withGroups()` |
186
216
  | **Horizontal grid** | `orientation: 'horizontal'` + `withGrid()` |
217
+ | **Data table** | `withTable({ columns, rowHeight, resizable })` |
187
218
  | **Masonry** | `withMasonry({ columns: 4, gap: 16 })` |
188
219
  | **Page-level scroll** | `withPage()` |
189
220
  | **1M+ items** | `withScale()` — auto-compresses scroll space |
190
221
  | **Wrap navigation** | `scroll: { wrap: true }` |
191
222
  | **Variable heights** | `item: { height: (index) => heights[index] }` |
223
+ | **Zebra striping** | `item: { striped: true }` + `.vlist-item--odd { background: #fafafb }` |
192
224
 
193
225
  See **[vlist.dev](https://vlist.dev)** for live demos of each.
194
226
 
@@ -242,6 +274,22 @@ const list = vlist(config).use(...features).build()
242
274
  |--------|-------------|
243
275
  | `list.updateGrid({ columns, gap })` | Update grid at runtime |
244
276
 
277
+ ### Table (with `withTable()`)
278
+
279
+ | Method | Description |
280
+ |--------|-------------|
281
+ | `list.setSort(key, direction?)` | Set sort indicator (visual only) |
282
+ | `list.getSort()` | Get current `{ key, direction }` |
283
+ | `list.updateColumns(columns)` | Replace column definitions at runtime |
284
+ | `list.resizeColumn(key, width)` | Resize a column programmatically |
285
+ | `list.getColumnWidths()` | Get current widths keyed by column key |
286
+
287
+ | Event | Payload |
288
+ |-------|---------|
289
+ | `column:sort` | `{ key, direction, index }` |
290
+ | `column:resize` | `{ key, width, previousWidth, index }` |
291
+ | `column:click` | `{ key, index, event }` |
292
+
245
293
  ### Events
246
294
 
247
295
  `list.on()` returns an unsubscribe function. You can also use `list.off(event, handler)`.
@@ -282,6 +330,7 @@ withMasonry({ columns: 4, gap: 16 })
282
330
  withGroups({ getGroupForIndex, headerHeight, headerTemplate, sticky?: true })
283
331
  withSelection({ mode: 'single' | 'multiple', initial?: [...ids] })
284
332
  withAsync({ adapter: { read }, loading?: { cancelThreshold? } })
333
+ withTable({ columns, rowHeight, headerHeight?, resizable?, columnBorders?, rowBorders? })
285
334
  withScale() // no config — auto-activates at 16.7M px
286
335
  withScrollbar({ autoHide?, autoHideDelay?, minThumbSize? })
287
336
  withPage() // no config — uses document scroll
@@ -341,10 +390,11 @@ This makes the codebase clearer and eliminates semantic confusion when working w
341
390
 
342
391
  | Configuration | Gzipped |
343
392
  |---------------|---------|
344
- | Base only | 8.4 KB |
345
- | + Grid | 12.3 KB |
346
- | + Groups | 12.6 KB |
393
+ | Base only | 8.5 KB |
394
+ | + Grid | 12.4 KB |
395
+ | + Groups | 12.7 KB |
347
396
  | + Async | 12.4 KB |
397
+ | + Table | 12.9 KB |
348
398
 
349
399
  ### Memory Efficiency
350
400
 
@@ -395,7 +445,7 @@ const list: VList<Photo> = vlist<Photo>({
395
445
  ## Contributing
396
446
 
397
447
  1. Fork → branch → make changes → add tests → pull request
398
- 2. Run `bun test` (2268 tests) and `bun run build` before submitting
448
+ 2. Run `bun test` (2453 tests) and `bun run build` before submitting
399
449
 
400
450
  ## License
401
451
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:$2,getOwnPropertyNames:B1,getOwnPropertyDescriptor:U1}=Object,Z1=Object.prototype.hasOwnProperty;var c2=new WeakMap,N1=(J)=>{var q=c2.get(J),Q;if(q)return q;if(q=$2({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")B1(J).map((j)=>!Z1.call(q,j)&&$2(q,j,{get:()=>J[j],enumerable:!(Q=U1(J,j))||Q.enumerable}));return c2.set(J,q),q};var _1=(J,q)=>{for(var Q in q)$2(J,Q,{get:q[Q],enumerable:!0,configurable:!0,set:(j)=>q[Q]=()=>j})};var l2=(J,q)=>()=>(J&&(q=J(J=0)),q);var D1=(J,q)=>{let Q=q;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}},V1=(J,q)=>{let Q=q,j=new Float64Array(0),Y=(U)=>{Q=U,j=new Float64Array(U+1),j[0]=0;for(let _=0;_<U;_++)j[_+1]=j[_]+J(_)};Y(q);let X=(U)=>{if(Q===0)return 0;if(U<=0)return 0;if(U>=j[Q])return Q-1;let _=0,V=Q-1;while(_<V){let K=_+V+1>>>1;if(j[K]<=U)_=K;else V=K-1}return _};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Q)return j[Q];return j[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>X(U),getTotalSize:()=>j[Q]??0,getTotal:()=>Q,rebuild:(U)=>Y(U),isVariable:()=>!0}},$0=(J,q)=>{if(typeof J==="number")return D1(J,q);return V1(J,q)},g0=(J,q,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getSize(0));let Y=0,X=0,U=q;while(U<j&&X<Q)X+=J.getSize(U),Y++,U++;return Math.max(1,Y)},i0=(J,q,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(q/J.getSize(0));let j=0,Y=0;for(let X=Q-1;X>=0;X--){let U=J.getSize(X);if(Y+U>q)break;Y+=U,j++}return Math.max(j,1)},y2=(J,q,Q)=>{if(Q===0)return 0;let j=Math.floor(q),Y=q-j,X=Math.max(0,Math.min(j,Q-1));return J.getOffset(X)+Y*J.getSize(X)};var R2=200,S0=50,KJ=5,BJ=2,UJ=50,k0=16000000,ZJ="x",NJ=20,z2="_isPlaceholder",_J="__placeholder_";var DJ,L0=(J,q)=>{let Q=q.getTotalSize(),j=Q>k0,Y=j?k0:Q,X=Q>0?Y/Q:1;return{isCompressed:j,actualSize:Q,virtualSize:Y,ratio:X}},J2=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;if(!Y.isCompressed){let W=Q.indexAtOffset(J),b=Q.indexAtOffset(J+q);if(b<j-1)b++;return X.start=Math.max(0,W),X.end=Math.min(j-1,Math.max(0,b)),X}let{virtualSize:U}=Y,V=J/U*j,K=Math.floor(V),G=g0(Q,Math.max(0,K),q,j),y=Math.ceil(V)+G,R=U-q-J;if(R<=q&&R>=-1){let W=i0(Q,q,j),b=Math.max(0,j-W),Z=Math.max(0,Math.min(1,1-R/q));K=Math.floor(K+(b-K)*Z),y=R<=1?j-1:Math.min(j-1,K+G)}return X.start=Math.max(0,K),X.end=Math.min(j-1,Math.max(0,y)),X},VJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},f0=(J,q,Q,j,Y,X,U)=>{if(!X.isCompressed||j===0)return Q.getOffset(J);let{virtualSize:_}=X,V=_-Y,K=V-q;if(K<=Y&&K>=-1){if(q>=V-1){let M=Q.getTotalSize()-Q.getOffset(J);return Y-M}let R=i0(Q,Y,j),W=Math.max(0,j-R),Z=q/_*j,$=Math.max(0,Math.min(1,1-K/Y)),A=Q.getOffset(J)-Q.getOffset(W),H=Q.getOffset(J)-y2(Q,Z,j);return H+(A-H)*$}let G=q/_,y=Q.getTotalSize(),E=G*y;return Q.getOffset(J)-E},Q2=(J,q,Q,j,Y,X="start")=>{if(j===0)return 0;let U;if(Y.isCompressed){if(X==="end"&&J===j-1)return Math.max(0,Y.virtualSize-Q);U=J/j*Y.virtualSize}else U=q.getOffset(J);let _=q.getSize(J);switch(X){case"center":U-=(Q-_)/2;break;case"end":U-=Q-_;break}let V=Y.virtualSize-Q;return Math.max(0,Math.min(U,V))},GJ=(J,q,Q,j)=>{if(Q===0)return 0;if(j.isCompressed){let Y=J/j.virtualSize;return Math.floor(Y*Q)}return q.indexAtOffset(J)},WJ=(J,q)=>{if(typeof q==="number")return J*q>k0;return q.getTotalSize()>k0},MJ=(J)=>{if(J<=0)return 0;return Math.floor(k0/J)},OJ=(J,q)=>{let Q=L0(J,q);if(!Q.isCompressed)return`No compression needed (${J} items, ${(Q.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${J} items, ${(Q.actualSize/1e6).toFixed(1)}M px → ${(Q.virtualSize/1e6).toFixed(1)}M px virtual)`};var j2=l2(()=>{DJ=k0});var z0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var pJ={};_1(pJ,{createGridRenderer:()=>c0});var y1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-row"),X.removeAttribute("data-col"),q.push(X)},clear:()=>{q.length=0}}},P1=2,c0=(J,q,Q,j,Y,X,U,_,V=!1)=>{let K=y1(),G=new Map,y=X,E=!1,R=null,W=0,b=0,Z="",$=-1,A=(T)=>{if(R&&W===T)return R;return R=L0(T,Q),W=T,R},H={selected:!1,focused:!1},M=(T,v)=>{return H.selected=T,H.focused=v,H},D=`${Y}-item ${Y}-grid-item`,C=`${Y}-item--selected`,p=`${Y}-item--focused`,f=(T,v)=>{if(typeof v==="string")T.innerHTML=v;else T.replaceChildren(v)},O=(T,v,I)=>{T.classList.toggle(C,v),T.classList.toggle(p,I)},u=(T,v)=>{let I=j.getRow(T);if(v){let g=v.totalItems,S=A(g);if(S.isCompressed)return f0(I,v.scrollPosition,Q,g,v.containerSize,S,v.rangeStart)}return Q.getOffset(I)},i=(T,v)=>{let I=E&&j.getCol(T)===0,g=I?0:j.getCol(T),S=I?0:j.getColumnOffset(g,y),x;if(E){let c=j.getRow(T),t=0,e=new Set;for(let K0=0;K0<T;K0++){let U0=j.getRow(K0);if(U0<c&&!e.has(U0)){let a=Q.getSize(K0);t+=a,e.add(U0)}}x=t}else x=u(T,v);if(V)return`translate(${Math.round(x)}px, ${Math.round(S)}px)`;return`translate(${Math.round(S)}px, ${Math.round(x)}px)`},m=(T,v)=>{T.style.transform=v},l=(T,v)=>{let I=T.dataset.id?.startsWith("__group_header"),g=I?y:j.getColumnWidth(y),S;if(E||I)S=Q.getSize(v)-j.gap;else{let x=j.getRow(v);S=Q.getSize(x)-j.gap}if(V)T.style.width=`${S}px`,T.style.height=`${g}px`;else T.style.width=`${g}px`,T.style.height=`${S}px`},h=(T,v,I,g,S)=>{let x=K.acquire(),c=M(I,g);if(x.className=D,x.dataset.index=String(T),x.dataset.id=String(v.id),x.dataset.row=String(j.getRow(T)),x.dataset.col=String(j.getCol(T)),x.ariaSelected=String(I),_)x.id=`${_}-item-${T}`;if(U){let e=U();if(e!==$)$=e,Z=String(e);x.setAttribute("aria-setsize",Z),x.setAttribute("aria-posinset",String(T+1))}l(x,T);let t=q(v,T,c);return f(x,t),O(x,I,g),m(x,S),{element:x,lastItemId:v.id,lastSelected:I,lastFocused:g,lastTransform:S,lastSeenFrame:b}},B=(T,v,I,g,S)=>{if(b++,v.start===0&&T.length>0)E=z0(T[0]);for(let[t,e]of G)if(t>=v.start&&t<=v.end)e.lastSeenFrame=b;else if(b-e.lastSeenFrame>P1)K.release(e.element),G.delete(t);let x=!1;if(U){let t=U();if(t!==$)$=t,Z=String(t),x=!0}let c=null;for(let t=v.start;t<=v.end;t++){let e=t-v.start,K0=T[e];if(!K0){console.warn(`⚠️ RENDER: Missing item at index ${t} (range: ${v.start}-${v.end}, items.length: ${T.length})`);continue}let U0=I.has(K0.id),a=t===g,s=G.get(t);if(s){let J0=s.lastItemId!==K0.id,Y0=s.lastSelected!==U0,_0=s.lastFocused!==a;if(J0||Y0||_0){if(J0){let Q0=M(U0,a),E0=q(K0,t,Q0);f(s.element,E0),s.element.dataset.id=String(K0.id),s.element.dataset.row=String(j.getRow(t)),s.element.dataset.col=String(j.getCol(t)),l(s.element,t)}O(s.element,U0,a),s.element.ariaSelected=String(U0),s.lastItemId=K0.id,s.lastSelected=U0,s.lastFocused=a}let Z0=i(t,S);if(s.lastTransform!==Z0)m(s.element,Z0),s.lastTransform=Z0;if(x)s.element.setAttribute("aria-setsize",Z)}else{let J0=i(t,S),Y0=h(t,K0,U0,a,J0);if(!c)c=document.createDocumentFragment();c.appendChild(Y0.element),G.set(t,Y0)}}if(c)J.appendChild(c)},P=(T)=>{for(let[v,I]of G){let g=i(v,T);if(I.lastTransform!==g)m(I.element,g),I.lastTransform=g}},F=(T,v,I,g)=>{let S=G.get(T);if(!S)return;let x=S.lastItemId!==v.id,c=S.lastSelected!==I,t=S.lastFocused!==g;if(x||c||t){let e=M(I,g),K0=q(v,T,e);f(S.element,K0),O(S.element,I,g),S.element.dataset.id=String(v.id),S.element.ariaSelected=String(I),l(S.element,T),S.lastItemId=v.id,S.lastSelected=I,S.lastFocused=g}},N=(T,v,I)=>{let g=G.get(T);if(!g)return;let S=g.lastSelected!==v,x=g.lastFocused!==I;if(S||x)O(g.element,v,I),g.lastSelected=v,g.lastFocused=I},k=(T)=>{return G.get(T)?.element},L=(T)=>{if(Math.abs(T-y)<1)return;y=T;for(let[v,I]of G){l(I.element,v);let g=i(v);m(I.element,g),I.lastTransform=g}},w=()=>{for(let[,T]of G)K.release(T.element);G.clear()};return{render:B,updatePositions:P,updateItem:F,updateItemClasses:N,getElement:k,updateContainerWidth:L,clear:w,destroy:()=>{w(),K.clear()}}};var _2=l2(()=>{j2()});var r2=2,a2=(J=0)=>{let q=[,,,,,];for(let Q=0;Q<5;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},k2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+5)%5,U=J.samples[X],_=q-U.position,V=Q-U.time;J.velocity=V>0?Math.abs(_)/V:0}return J.lastPosition=q,J.lastTime=Q,J};var t0=(J,q)=>{let Q=new Map,j=(X)=>{let U=Q.get(X);return U!==void 0?U:J},Y=$0(j,q);return{getOffset(X){return Y.getOffset(X)},getSize(X){return j(X)},indexAtOffset(X){return Y.indexAtOffset(X)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(X){if(X<Y.getTotal()){for(let U of Q.keys())if(U>=X)Q.delete(U)}Y=$0(j,X)},isVariable(){return!0},setMeasuredSize(X,U){Q.set(X,U)},isMeasured(X){return Q.has(X)},getEstimatedSize(){return J},measuredCount(){return Q.size}}};var e0=()=>{let J={},q=(_,V)=>{if(!J[_])J[_]=new Set;return J[_].add(V),()=>Q(_,V)},Q=(_,V)=>{J[_]?.delete(V)};return{on:q,off:Q,emit:(_,V)=>{J[_]?.forEach((K)=>{try{K(V)}catch(G){console.error(`[vlist] Error in event handler for "${String(_)}":`,G)}})},once:(_,V)=>{let K=(G)=>{Q(_,K),V(G)};return q(_,K)},clear:(_)=>{if(_)delete J[_];else for(let V in J)delete J[V]},listenerCount:(_)=>{return J[_]?.size??0}}};var s2=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist/builder] Container not found: ${J}`);return q}return J},n2=(J,q,Q,j)=>{let Y=document.createElement("div");if(Y.className=q,j)Y.classList.add(`${q}--horizontal`);Y.setAttribute("tabindex","0");let X=document.createElement("div");if(X.className=`${q}-viewport`,X.setAttribute("tabindex","-1"),j)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let U=document.createElement("div");if(U.className=`${q}-content`,U.style.position="relative",j)U.style.height="100%";else U.style.width="100%";let _=document.createElement("div");if(_.className=`${q}-items`,_.setAttribute("role","listbox"),Q)_.setAttribute("aria-label",Q);if(j)_.setAttribute("aria-orientation","horizontal");if(_.style.position="relative",j)_.style.height="100%";else _.style.width="100%";return U.appendChild(_),X.appendChild(U),Y.appendChild(X),J.appendChild(Y),{root:Y,viewport:X,content:U,items:_}};var o2=(J=100)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(q.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),q.push(Q)},clear:()=>{q.length=0}}};var i2=(J,q,Q,j,Y)=>{if(j===0||q===0){Y.start=0,Y.end=0;return}let X=Q.indexAtOffset(J),U=g0(Q,X,q,j),_=X+U;Y.start=Math.max(0,X),Y.end=Math.min(j-1,Math.max(0,_))},t2=(J,q,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q)},e2=(J,q,Q,j,Y)=>{if(j===0)return 0;let X=Math.max(0,Math.min(J,j-1)),U=q.getOffset(X),_=q.getSize(X),V=Math.max(0,q.getTotalSize()-Q),K;switch(Y){case"center":K=U-(Q-_)/2;break;case"end":K=U-Q+_;break;default:K=U}return Math.max(0,Math.min(K,V))};var P2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,v0=(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}},JJ=(J,q)=>{let Q=null,j=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null};return{animateScroll:(X,U,_)=>{if(j(),Math.abs(U-X)<1){J.scrollTo(U);return}let V=performance.now(),K=(G)=>{let y=G-V,E=Math.min(y/_,1),R=X+(U-X)*P2(E);if(J.scrollTo(R),q(),E<1)Q=requestAnimationFrame(K);else Q=null};Q=requestAnimationFrame(K)},cancelScroll:j}};var QJ=(J,q)=>{let{dom:Q,emitter:j,resolvedConfig:Y,rawConfig:X,rendered:U,pool:_,sharedState:V,isHorizontal:K,classPrefix:G,contentSizeHandlers:y,afterScroll:E,clickHandlers:R,keydownHandlers:W,resizeHandlers:b,destroyHandlers:Z,methods:$,onScrollFrame:A,resizeObserver:H,renderRange:M}=q;return{get dom(){return Q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return X},get renderer(){return{render:(D,C,p,f,O)=>{J.ss=p,J.fi=f,J.ffn()},updateItemClasses:(D,C,p)=>{let f=U.get(D);if(!f)return;f.classList.toggle(`${G}-item--selected`,C),f.classList.toggle(`${G}-item--focused`,p),f.ariaSelected=C?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(D)=>U.get(D)??null,clear:()=>{},destroy:()=>{}}},set renderer(D){},get dataManager(){return J.dm},set dataManager(D){J.dm=D},get scrollController(){return J.sc},set scrollController(D){J.sc=D},state:V,getContainerWidth(){return J.cw},afterScroll:E,clickHandlers:R,keydownHandlers:W,resizeHandlers:b,contentSizeHandlers:y,destroyHandlers:Z,methods:$,replaceTemplate(D){J.at=D},replaceRenderer(D){},replaceDataManager(D){J.dm=D},replaceScrollController(D){J.sc=D},getItemsForRange(D){let{dm:C,it:p}=J,f=[];for(let O=D.start;O<=D.end;O++){let u=C?C.getItem(O):p[O];if(u)f.push(u)}return f},getAllLoadedItems(){let D=J.dm;if(D){let C=D.getTotal(),p=[];for(let f=0;f<C;f++){let O=D.getItem(f);if(O)p.push(O)}return p}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let D=J.hc;return{isCompressed:!1,actualSize:D.getTotalSize(),virtualSize:D.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:M.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,D]of U)D.remove(),_.release(D);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(D,C){J.rfn=D,J.ffn=C},setVirtualTotalFn(D){J.vtf=D},rebuildSizeCache(D){J.hc.rebuild(D??J.vtf())},setSizeConfig(D){J.hc=$0(D,J.vtf())},updateContentSize(D){let C=`${D}px`;if(K)Q.content.style.width=C;else Q.content.style.height=C},updateCompressionMode(){},setVisibleRangeFn(D){J.gvr=D},setScrollToPosFn(D){J.gsp=D},setPositionElementFn(D){J.pef=D},setScrollFns(D,C){J.sgt=D,J.sst=(p)=>{C(p),A()}},setScrollTarget(D){J.st.removeEventListener("scroll",A),J.st=D,J.st.addEventListener("scroll",A,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(D){J.gcw=D.width,J.gch=D.height,J.cw=D.width(),J.ch=D.height(),V.viewportState.containerSize=K?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,H.unobserve(Q.viewport)},disableWheelHandler(){if(J.wh)Q.viewport.removeEventListener("wheel",J.wh),J.wh=null}}},jJ=(J,q,Q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:X,applyTemplate:U,updateContentSize:_}=q,V=()=>{J.hc.rebuild(J.vtf()),_(),Q.updateCompressionMode();for(let K=0;K<X.length;K++)X[K]();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:(K)=>J.it[K],isItemLoaded:(K)=>K>=0&&K<J.it.length&&J.it[K]!==void 0,getItemsInRange:(K,G)=>{let y=J.it,E=[],R=Math.max(0,K),W=Math.min(G,y.length-1);for(let b=R;b<=W;b++)E.push(y[b]);return E},setTotal:(K)=>{},setItems:(K,G=0,y)=>{let E=J.it;if(G===0&&(y!==void 0||E.length===0))J.it=K;else{let R=G+K.length;if(E.length<R)E.length=R;for(let W=0;W<K.length;W++)E[G+W]=K[W]}if(J.ii)V()},updateItem:(K,G)=>{let y=J.it;if(K<0||K>=y.length)return!1;let E=y[K];if(!E)return!1;y[K]={...E,...G};let R=j.get(K);if(R)U(R,J.at(y[K],K,Y)),R.dataset.id=String(y[K].id);return!0},removeItem:(K)=>{if(K<0||K>=J.it.length)return!1;if(J.it.splice(K,1),J.ii)V();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),_(),J.ffn()}}},qJ=(J,q)=>{let{dom:Q,classPrefix:j}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let X=J.sgt()+Y;J.sst(X),J.ls=X,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),X=Math.max(0,Y-J.ch);return X>0?J.ls/X: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 G1=3,W1="vlist",XJ=150,M1=0,YJ=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let q=J.orientation==="horizontal",Q=q?"width":"height",j=q?"estimatedWidth":"estimatedHeight",Y=q?J.item.width:J.item.height,X=q?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&X==null)throw Error(`[vlist/builder] item.${Q} or item.${j} is required${q?" 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(X!=null){if(typeof X!=="number"||X<=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(q&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let U=new Map,_=!1,V={use(K){if(_)throw Error("[vlist/builder] Cannot call .use() after .build()");return U.set(K.name,K),V},build(){if(_)throw Error("[vlist/builder] .build() can only be called once");return _=!0,O1(J,U,q,Y,X??null)}};return V};function O1(J,q,Q,j,Y){let{item:X,items:U,overscan:_=G1,classPrefix:V=W1,ariaLabel:K,reverse:G=!1,scroll:y}=J,E=y,R=E?.wheel??!0,W=E?.wrap??!1,b=G,Z=`${V}-${M1++}`,$=j??Y,A=j==null&&Y!=null,H=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2,M=Q?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,D={overscan:_,classPrefix:V,reverse:b,wrap:W,horizontal:Q,ariaIdPrefix:Z},C=Array.from(q.values()).sort((z,r)=>(z.priority??50)-(r.priority??50)),p=new Set(C.map((z)=>z.name));for(let z of C)if(z.conflicts){for(let r of z.conflicts)if(p.has(r))throw Error(`[vlist/builder] ${z.name} and ${r} cannot be combined`)}if(b){if(p.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let f=s2(J.container),O=n2(f,V,K,Q);if(E?.wheel===!1)if(Q)O.viewport.style.overflowX="hidden";else O.viewport.style.overflow="hidden";if(E?.scrollbar==="none")O.viewport.classList.add(`${V}-viewport--no-scrollbar`);let u=e0(),i=U||[],m=typeof $==="function"&&(q.has("withGrid")||q.has("withMasonry")),l=A?t0(Y,i.length):$0($,m?0:i.length),h=o2(),B={it:i,hc:l,ch:O.viewport.clientHeight,cw:O.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:a2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Q?()=>O.viewport.scrollLeft:()=>O.viewport.scrollTop,sst:Q?(z)=>{O.viewport.scrollLeft=z}:(z)=>{O.viewport.scrollTop=z},sab:(z=2)=>{let r=B.hc.getTotalSize();return B.ls+B.ch>=r-z},sic:!1,rfn:null,ffn:null,gvr:(z,r,n,o,j0)=>{i2(z,r,n,o,j0)},gsp:(z,r,n,o,j0)=>{return e2(z,r,n,o,j0)},pef:null,at:X.template,vre:!0,st:O.viewport,wh:null,gcw:()=>B.cw,gch:()=>B.ch};B.vtf=()=>B.dm?B.dm.getTotal():B.it.length;let P=null,F=null,N=!1,k={start:0,end:0},L={start:0,end:0},w={start:-1,end:-1},d={viewportState:{scrollPosition:0,containerSize:Q?B.cw:B.ch,totalSize:B.hc.getTotalSize(),actualSize:B.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},T=new Map,v=A?new WeakMap:null,I=A?l:null,g=null,S=0,x=!1,c=()=>{if(!A)return;if(x){let z=B.sgt(),r=Q?O.viewport.scrollWidth-O.viewport.clientWidth:O.viewport.scrollHeight-O.viewport.clientHeight,n=r>0&&z>=r-2;if(A0(),x=!1,n){let o=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(o>z)B.sst(o),B.ls=o,B.rfn()}}};if(A&&I&&v)g=new ResizeObserver((z)=>{if(B.id)return;let r=!1,n=k.start;for(let o of z){let j0=v.get(o.target);if(j0===void 0)continue;let q0=Q?o.borderBoxSize[0].inlineSize:o.borderBoxSize[0].blockSize;if(!I.isMeasured(j0)){let X0=I.getSize(j0);if(I.setMeasuredSize(j0,q0),r=!0,j0<n&&q0!==X0)S+=q0-X0;g.unobserve(o.target);let N0=o.target;if(Q)N0.style.width=`${q0}px`;else N0.style.height=`${q0}px`}}if(!r)return;if(I.rebuild(B.vtf()),B.hc=I,S!==0){let o=B.sgt();B.sst(o+S),B.ls=o+S,S=0}if(N)x=!0;else{let o=B.sgt(),j0=Q?O.viewport.scrollWidth-O.viewport.clientWidth:O.viewport.scrollHeight-O.viewport.clientHeight,q0=j0>0&&o>=j0-2;if(A0(),x=!1,q0){let X0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(X0>o)B.sst(X0),B.ls=X0}}w.start=-1,w.end=-1,B.rfn()});let t={selected:!1,focused:!1},e=`${V}-item`,K0=X.striped===!0,U0=`${V}-item--odd`,a=[],s=[],J0=[],Y0=[],_0=[],Z0=[],Q0=new Map,E0=null,D0=null,H0=!1,P0=()=>{if(H0)return;H0=!0,E0=Q0.get("_getSelectedIds")??null,D0=Q0.get("_getFocusedIndex")??null},V0=(z,r)=>{if(typeof r==="string")z.innerHTML=r;else z.replaceChildren(r)},T0=(z,r)=>{let n=Math.round(B.hc.getOffset(r));if(Q)z.style.transform=`translateX(${n}px)`;else z.style.transform=`translateY(${n}px)`};B.pef=T0;let G0=(z,r)=>{let n=h.acquire();n.className=e;let o=!A||I&&I.isMeasured(z);if(Q){if(o)n.style.width=`${B.hc.getSize(z)}px`;else n.style.width="";if(M!=null)n.style.height=`${M}px`}else if(o)n.style.height=`${B.hc.getSize(z)}px`;else n.style.height="";if(n.dataset.index=String(z),n.dataset.id=String(r.id),n.ariaSelected="false",n.id=`${Z}-item-${z}`,B.la=String(B.vtf()),n.setAttribute("aria-setsize",B.la),n.setAttribute("aria-posinset",String(z+1)),String(r.id).startsWith("__placeholder_"))n.classList.add(`${V}-item--placeholder`);if(K0)n.classList.toggle(U0,(z&1)===1);return V0(n,B.at(r,z,t)),B.pef(n,z),n},A0=()=>{let z=`${B.hc.getTotalSize()}px`;if(Q)O.content.style.width=z;else O.content.style.height=z},C0=()=>{if(B.id)return;P0();let z=E0?E0():B.ss,r=D0?D0():B.fi,n=B.vtf(),o=Q?B.cw:B.ch;if(B.gvr(B.ls,o,B.hc,n,k),t2(k,_,n,L),L.start===w.start&&L.end===w.end){if(B.sic)for(let[B0,W0]of T)B.pef(W0,B0);return}let j0=String(n),q0=j0!==B.la;B.la=j0;for(let[B0,W0]of T)if(B0<L.start||B0>L.end)W0.remove(),h.release(W0),T.delete(B0);let X0=document.createDocumentFragment(),N0=[],F0=[];for(let B0=L.start;B0<=L.end;B0++){let W0=B.dm?B.dm.getItem(B0):B.it[B0];if(W0===void 0)continue;let O0=T.get(B0);if(O0){let b0=O0.dataset.id,h0=String(W0.id);if(b0!==h0){let K1=b0?.startsWith("__placeholder_"),m2=h0.startsWith("__placeholder_");V0(O0,B.at(W0,B0,t)),O0.dataset.id=h0;let d2=!A||I&&I.isMeasured(B0);if(Q)O0.style.width=d2?`${B.hc.getSize(B0)}px`:"";else O0.style.height=d2?`${B.hc.getSize(B0)}px`:"";if(m2)O0.classList.add(`${V}-item--placeholder`);else O0.classList.remove(`${V}-item--placeholder`);if(K1&&!m2)O0.classList.add(`${V}-item--replaced`),setTimeout(()=>{O0.classList.remove(`${V}-item--replaced`)},300)}B.pef(O0,B0);let o0=z.has(W0.id),Y1=B0===r;if(O0.classList.toggle(`${V}-item--selected`,o0),O0.classList.toggle(`${V}-item--focused`,Y1),O0.ariaSelected=o0?"true":"false",q0)O0.setAttribute("aria-setsize",B.la)}else{let b0=G0(B0,W0);F0.push({index:B0,element:b0});let h0=z.has(W0.id),o0=B0===r;if(h0)b0.classList.add(`${V}-item--selected`),b0.ariaSelected="true";if(o0)b0.classList.add(`${V}-item--focused`);X0.appendChild(b0),N0.push({index:B0,element:b0})}}if(N0.length>0){O.items.appendChild(X0);for(let{index:B0,element:W0}of N0)T.set(B0,W0)}if(A&&g&&I&&v){for(let{index:B0,element:W0}of F0)if(!I.isMeasured(B0))v.set(W0,B0),g.observe(W0)}w.start=L.start,w.end=L.end,d.lastRenderRange.start=L.start,d.lastRenderRange.end=L.end,d.viewportState.scrollPosition=B.ls,d.viewportState.visibleRange.start=k.start,d.viewportState.visibleRange.end=k.end,d.viewportState.renderRange.start=L.start,d.viewportState.renderRange.end=L.end,u.emit("range:change",{range:{start:L.start,end:L.end}})},lJ=()=>{w.start=-1,w.end=-1,B.rfn()};B.rfn=C0,B.ffn=lJ;let T2=()=>{if(B.id)return;let z=B.sgt(),r=z>=B.ls?"down":"up";if(B.vt=k2(B.vt,z),!O.root.classList.contains(`${V}--scrolling`))O.root.classList.add(`${V}--scrolling`);N=!0,B.ls=z,B.rfn(),u.emit("scroll",{scrollPosition:z,direction:r}),u.emit("velocity:change",{velocity:B.vt.velocity,reliable:B.vt.sampleCount>=r2});for(let n=0;n<a.length;n++)a[n](z,r);if(F)clearTimeout(F);F=setTimeout(()=>{O.root.classList.remove(`${V}--scrolling`),N=!1,B.vt.velocity=0,B.vt.sampleCount=0,u.emit("velocity:change",{velocity:0,reliable:!1}),c()},E?.idleTimeout??XJ)},w0=null;if(B.st.addEventListener("scroll",T2,{passive:!0}),R&&!Q&&!H)w0=(z)=>{z.preventDefault();let r=B.sgt(),n=z.deltaY,o=Math.max(0,Math.min(r+n,B.hc.getTotalSize()-B.ch));B.sst(o),B.ls=o,B.vt=k2(B.vt,o),B.rfn();let j0=o>=r?"down":"up";if(u.emit("scroll",{scrollPosition:o,direction:j0}),!O.root.classList.contains(`${V}--scrolling`))O.root.classList.add(`${V}--scrolling`);if(N=!0,F)clearTimeout(F);F=setTimeout(()=>{O.root.classList.remove(`${V}--scrolling`),N=!1,B.vt.velocity=0,B.vt.sampleCount=0,u.emit("velocity:change",{velocity:0,reliable:!1}),c()},E?.idleTimeout??XJ)},B.wh=w0,O.viewport.addEventListener("wheel",w0,{passive:!1});else if(Q&&R)w0=(z)=>{if(z.deltaX)return;z.preventDefault(),O.viewport.scrollLeft+=z.deltaY},B.wh=w0,O.viewport.addEventListener("wheel",w0,{passive:!1});let h2=(z)=>{let n=z.target.closest("[data-index]");if(n){let o=parseInt(n.dataset.index??"-1",10);if(o>=0){let j0=B.dm?.getItem(o)??B.it[o];if(j0){if(j0.__groupHeader)return;u.emit("item:click",{item:j0,index:o,event:z})}}}for(let o=0;o<s.length;o++)s[o](z)},rJ=(z)=>{let n=z.target.closest("[data-index]");if(n){let o=parseInt(n.dataset.index??"-1",10);if(o>=0){let j0=B.dm?.getItem(o)??B.it[o];if(j0){if(j0.__groupHeader)return;u.emit("item:dblclick",{item:j0,index:o,event:z})}}}},u2=(z)=>{for(let r=0;r<J0.length;r++)J0[r](z)};O.items.addEventListener("click",h2),O.items.addEventListener("dblclick",rJ),O.root.addEventListener("keydown",u2);let H2=new ResizeObserver((z)=>{if(B.id)return;for(let r of z){let n=r.contentRect.height,o=r.contentRect.width,j0=Q?o:n,q0=Q?B.cw:B.ch;if(B.cw=o,B.ch=n,Math.abs(j0-q0)>1){if(d.viewportState.containerSize=j0,B.ii)A0(),B.rfn(),u.emit("resize",{height:n,width:o})}if(B.ii)for(let X0=0;X0<Y0.length;X0++)Y0[X0](o,n)}});if(B.vre)H2.observe(O.viewport);let b2={dom:O,emitter:u,resolvedConfig:D,rawConfig:J,rendered:T,pool:h,itemState:t,sharedState:d,renderRange:L,isHorizontal:Q,classPrefix:V,contentSizeHandlers:_0,afterScroll:a,clickHandlers:s,keydownHandlers:J0,resizeHandlers:Y0,destroyHandlers:Z0,methods:Q0,onScrollFrame:T2,resizeObserver:H2,applyTemplate:V0,updateContentSize:A0},M0=QJ(B,b2);B.dm=jJ(B,b2,M0),B.sc=qJ(B,b2);let g2=new Map;for(let z of C)if(z.methods)for(let r of z.methods){let n=g2.get(r);if(n)throw Error(`[vlist/builder] Method "${r}" is registered by both "${n}" and "${z.name}"`);g2.set(r,z.name)}for(let z of C)z.setup(M0);if(!Q0.has("_getFocusedIndex")){let z=-1,r=`${V}-item--focused`,n=(q0,X0)=>{let N0=B.vtf();if(X0<0||X0>=N0)return;z=X0,O.root.setAttribute("aria-activedescendant",`${Z}-item-${X0}`);let F0=Q?B.cw:B.ch;if(B.sst(B.gsp(X0,B.hc,F0,N0,"center")),B.ls=B.sgt(),B.rfn(),q0>=0&&q0!==X0)T.get(q0)?.classList.remove(r);T.get(X0)?.classList.add(r)},o=()=>{if(B.id)return;if(!O.root.matches(":focus-visible"))return;let q0=B.vtf();if(q0===0)return;n(-1,z>=0?Math.min(z,q0-1):0)};O.root.addEventListener("focusin",o);let j0=(q0)=>{if(B.id)return;let X0=q0.relatedTarget;if(X0&&O.root.contains(X0))return;if(z>=0)T.get(z)?.classList.remove(r);O.root.removeAttribute("aria-activedescendant")};O.root.addEventListener("focusout",j0),J0.push((q0)=>{if(B.id)return;let X0=B.vtf();if(X0===0)return;let N0=z,F0=N0;switch(q0.key){case"ArrowUp":F0=N0<=0?X0-1:N0-1;break;case"ArrowDown":F0=N0>=X0-1?0:N0+1;break;case"Home":F0=0;break;case"End":F0=X0-1;break;default:return}q0.preventDefault(),n(N0,F0)}),Z0.push(()=>{O.root.removeEventListener("focusin",o),O.root.removeEventListener("focusout",j0)})}if(B.ii=!0,M0.state.isInitialized=!0,A0(),B.rfn(),b&&B.it.length>0){let z=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(z),B.ls=z,B.rfn()}let aJ=(z)=>{M0.dataManager.setItems(z,0,z.length)},sJ=b?(z)=>{let r=B.sab(2),n=B.it.length;if(M0.dataManager.setItems(z,n),r&&B.it.length>0){let o=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(o),B.ls=o,B.rfn()}}:(z)=>{let r=B.it.length;M0.dataManager.setItems(z,r)},nJ=b?(z)=>{let r=B.sgt(),n=B.hc.getTotalSize(),o=[...B.it];M0.dataManager.clear(),M0.dataManager.setItems([...z,...o],0);let q0=B.hc.getTotalSize()-n;if(q0>0)B.sst(r+q0),B.ls=r+q0}:(z)=>{let r=[...B.it];M0.dataManager.clear(),M0.dataManager.setItems([...z,...r],0)},oJ=(z,r)=>{M0.dataManager.updateItem(z,r)},iJ=(z)=>{M0.dataManager.removeItem(z)},tJ=async()=>{if(M0.dataManager.reload)await M0.dataManager.reload()},n0=()=>{if(P!==null)cancelAnimationFrame(P),P=null},eJ=(z,r,n)=>{if(n0(),Math.abs(r-z)<1){B.sst(r),B.ls=r,B.rfn();return}let o=performance.now(),j0=(q0)=>{let X0=q0-o,N0=Math.min(X0/n,1),F0=z+(r-z)*P2(N0);if(B.sst(F0),B.ls=F0,B.rfn(),N0<1)P=requestAnimationFrame(j0);else P=null};P=requestAnimationFrame(j0)},J1=(z,r)=>{let{align:n,behavior:o,duration:j0}=v0(r),q0=B.vtf(),X0=z;if(W&&q0>0)X0=(X0%q0+q0)%q0;let N0=B.gsp(X0,B.hc,B.ch,q0,n);if(o==="smooth")eJ(B.sgt(),N0,j0);else n0(),B.sst(N0)},Q1=()=>B.sgt(),j1=(z,r)=>{return u.on(z,r)},q1=(z,r)=>{u.off(z,r)},X1=()=>{if(B.id)return;if(B.id=!0,M0.state.isDestroyed=!0,O.items.removeEventListener("click",h2),O.root.removeEventListener("keydown",u2),B.st.removeEventListener("scroll",T2),H2.disconnect(),g)g.disconnect(),g=null;if(B.wh)O.viewport.removeEventListener("wheel",B.wh);if(F)clearTimeout(F);for(let z=0;z<Z0.length;z++)Z0[z]();for(let z of C)if(z.destroy)z.destroy();n0();for(let[,z]of T)z.remove(),h.release(z);T.clear(),h.clear(),u.clear(),O.root.remove()},x2={get element(){return O.root},get items(){if(Q0.has("_getItems"))return Q0.get("_getItems")();return B.it},get total(){if(Q0.has("_getTotal"))return Q0.get("_getTotal")();return B.vtf()},setItems:Q0.has("setItems")?Q0.get("setItems"):aJ,appendItems:Q0.has("appendItems")?Q0.get("appendItems"):sJ,prependItems:Q0.has("prependItems")?Q0.get("prependItems"):nJ,updateItem:Q0.has("updateItem")?Q0.get("updateItem"):oJ,removeItem:Q0.has("removeItem")?Q0.get("removeItem"):iJ,reload:Q0.has("reload")?Q0.get("reload"):tJ,scrollToIndex:Q0.has("scrollToIndex")?Q0.get("scrollToIndex"):J1,cancelScroll:Q0.has("cancelScroll")?Q0.get("cancelScroll"):n0,getScrollPosition:Q0.has("getScrollPosition")?Q0.get("getScrollPosition"):Q1,on:j1,off:q1,destroy:X1};for(let[z,r]of Q0){if(z.charCodeAt(0)===95||z==="setItems"||z==="appendItems"||z==="prependItems"||z==="updateItem"||z==="removeItem"||z==="reload"||z==="scrollToIndex"||z==="scrollToItem"||z==="cancelScroll"||z==="getScrollPosition")continue;x2[z]=r}return x2}j2();var I0=(J,q,Q={},j="vlist",Y=!1)=>{let{autoHide:X=!0,autoHideDelay:U=1000,minThumbSize:_=30,showOnHover:V=!0,hoverZoneWidth:K=16,showOnViewportEnter:G=!0}=Q,y=0,E=0,R=0,W=0,b=!1,Z=!1,$=0,A=0,H=0,M=null,D=!1,C=null,p=null,f=Y?"width":"height",O=Y?"translateX":"translateY",u=Y?(e)=>e.clientX:(e)=>e.clientY,i=Y?"left":"top",m=document.createElement("div"),l=document.createElement("div"),h=V?document.createElement("div"):null,B=()=>{if(m.className=`${j}-scrollbar`,l.className=`${j}-scrollbar-thumb`,Y)m.classList.add(`${j}-scrollbar--horizontal`);if(m.appendChild(l),J.appendChild(m),h){if(h.className=`${j}-scrollbar-hover`,Y)h.classList.add(`${j}-scrollbar-hover--horizontal`),h.style.height=`${K}px`;else h.style.width=`${K}px`;J.appendChild(h)}},P=()=>{if(M)clearTimeout(M),M=null},F=()=>{if(!X)return;P(),M=setTimeout(k,U)},N=()=>{if(y<=E)return;if(P(),!D)m.classList.add(`${j}-scrollbar--visible`),D=!0;if(X&&!b&&!Z)F()},k=()=>{if(b||Z)return;m.classList.remove(`${j}-scrollbar--visible`),D=!1},L=(e,K0)=>{y=e,E=K0;let U0=y>E;if(m.style.display=U0?"":"none",!U0){k();return}let a=E/y;R=Math.max(_,a*E),l.style[f]=`${R}px`,W=E-R,w(H)},w=(e)=>{if(H=e,y<=E||W<=0)return;let K0=y-E,a=Math.min(1,Math.max(0,e/K0))*W;l.style.transform=`${O}(${a}px)`},d=(e)=>{if(e.target===l)return;let K0=m.getBoundingClientRect(),s=u(e)-K0[i]-R/2,Y0=Math.max(0,Math.min(s,W))/W,_0=y-E,Z0=Y0*_0;q(Z0),N()},T=(e)=>{e.preventDefault(),e.stopPropagation(),b=!0,$=u(e),A=H,P(),m.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",v),document.addEventListener("mouseup",I)},v=(e)=>{if(!b)return;let K0=u(e)-$,U0=W>0?K0/W:0,a=y-E,s=U0*a,J0=Math.max(0,Math.min(A+s,a)),_0=J0/a*W;if(l.style.transform=`${O}(${_0}px)`,p=J0,C===null)C=requestAnimationFrame(()=>{if(p!==null)q(p);C=null})},I=()=>{if(b=!1,C!==null)cancelAnimationFrame(C),C=null;if(p!==null)q(p),p=null;if(m.classList.remove(`${j}-scrollbar--dragging`),X&&!Z)F();document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",I)},g=()=>{if(G)N()},S=()=>{if(!b){if(Z=!1,X)F()}},x=()=>{Z=!0,P(),N()},c=()=>{if(Z=!1,!b&&X)F()},t=()=>{if(P(),C!==null)cancelAnimationFrame(C),C=null;if(m.removeEventListener("click",d),m.removeEventListener("mouseenter",x),m.removeEventListener("mouseleave",c),l.removeEventListener("mousedown",T),J.removeEventListener("mouseenter",g),J.removeEventListener("mouseleave",S),document.removeEventListener("mousemove",v),document.removeEventListener("mouseup",I),h){if(h.removeEventListener("mouseenter",x),h.removeEventListener("mouseleave",c),h.parentNode)h.parentNode.removeChild(h)}if(m.parentNode)m.parentNode.removeChild(m)};if(B(),m.addEventListener("click",d),m.addEventListener("mouseenter",x),m.addEventListener("mouseleave",c),l.addEventListener("mousedown",T),J.addEventListener("mouseenter",g),J.addEventListener("mouseleave",S),h)h.addEventListener("mouseenter",x),h.addEventListener("mouseleave",c);return{show:N,hide:k,updateBounds:L,updatePosition:w,isVisible:()=>D,destroy:t}};var AJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:X,horizontal:U}=Y;if(q=I0(j.viewport,(K)=>Q.scrollController.scrollTo(K),J??{},X,U),!j.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))j.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let _=Q.getCachedCompression();q.updateBounds(_.virtualSize,Q.state.viewportState.containerSize);let V=q;Q.afterScroll.push((K,G)=>{V.updatePosition(K),V.show()}),Q.resizeHandlers.push((K,G)=>{if(V){let y=Q.getCachedCompression();V.updateBounds(y.virtualSize,Q.state.viewportState.containerSize)}}),Q.contentSizeHandlers.push(()=>{if(V){let K=Q.getCachedCompression();V.updateBounds(K.virtualSize,Q.state.viewportState.containerSize)}}),Q.destroyHandlers.push(()=>{if(V)V.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var EJ=(J=0)=>{let q=[,,,,,,,,];for(let Q=0;Q<8;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},q2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+8)%8,U=J.samples[X],_=q-U.position,V=Q-U.time;J.velocity=V>0?_/V:0}return J.lastPosition=q,J.lastTime=Q,J},A1=(J)=>J.sampleCount>=3,FJ=(J,q={})=>{let{wheel:Q=!0,sensitivity:j=1,smoothing:Y=!1,idleTimeout:X=150,onScroll:U,onIdle:_,scrollElement:V,horizontal:K=!1}=q,G=!!V,y=0,E=0,R=G?K?window.innerWidth:window.innerHeight:K?J.clientWidth:J.clientHeight,W=q.compressed??!1,b=q.compression,Z=EJ(),$=!1,A=null,M=X2(()=>{let S=K?J.scrollLeft:J.scrollTop,x=S>=y?"down":"up";if(Z=q2(Z,S),y=S,U)U({scrollTop:y,direction:x,velocity:Z.velocity});u()}),C=X2(()=>{let S=J.getBoundingClientRect(),x=K?Math.max(0,-S.left):Math.max(0,-S.top),c=x>=y?"down":"up";if(Z=q2(Z,x),y=x,!$)$=!0;if(U)U({scrollTop:y,direction:c,velocity:Z.velocity});u()}),p=(S)=>{S.preventDefault()},f=(S)=>{if(S.deltaX)return;S.preventDefault(),J.scrollLeft+=S.deltaY},O=(S)=>{if(!W)return;S.preventDefault();let x=(K?S.deltaX||S.deltaY:S.deltaY)*j,c=y+x;if(Y)c=y+x*0.3;if(c=Math.max(0,Math.min(c,E)),c!==y){let e=c>=y?"down":"up";if(Z=q2(Z,c),y=c,!$)$=!0;if(U)U({scrollTop:y,direction:e,velocity:Z.velocity});u()}},u=()=>{if(A)clearTimeout(A);A=setTimeout(()=>{if($=!1,Z=EJ(y),_)_()},X)},i=(S)=>{if(W)return;if(W=!0,b=S,E=S.virtualSize-R,G)return;if(M.cancel(),J.removeEventListener("scroll",M),!Q)J.removeEventListener("wheel",p);else if(K)J.removeEventListener("wheel",f);if(K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",O,{passive:!1});let x=K?J.scrollLeft:J.scrollTop;if(x>0){let c=K?b?.actualSize??J.scrollWidth:b?.actualSize??J.scrollHeight;y=x/c*E}if(K)J.scrollLeft=0;else J.scrollTop=0},m=()=>{if(!W)return;if(W=!1,G){b=void 0;return}if(J.removeEventListener("wheel",O),K)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",M,{passive:!0}),!Q)J.addEventListener("wheel",p,{passive:!1});else if(K)J.addEventListener("wheel",f,{passive:!1});if(b&&y>0){let x=y/E*(b.actualSize-R);if(K)J.scrollLeft=x;else J.scrollTop=x}b=void 0},l=()=>{if(G||W)return y;return K?J.scrollLeft:J.scrollTop},h=(S,x=!1)=>{let c=Math.max(0,Math.min(S,E||1/0));if(G){let t=J.getBoundingClientRect();if(K){let e=t.left+window.scrollX;window.scrollTo({left:e+c,behavior:x?"smooth":"auto"})}else{let e=t.top+window.scrollY;window.scrollTo({top:e+c,behavior:x?"smooth":"auto"})}}else if(W){if(c===y)return;let e=c>=y?"down":"up";if(Z=q2(Z,c),y=c,!$)$=!0;if(U)U({scrollTop:y,direction:e,velocity:Z.velocity});u()}else if(K)J.scrollTo({left:c,behavior:x?"smooth":"auto"});else J.scrollTo({top:c,behavior:x?"smooth":"auto"})},B=(S)=>{h(l()+S)},P=()=>{return l()<=0},F=(S=0)=>{let x=l(),c=G||W?E:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return x>=c-S},N=()=>{let S=l(),x=G||W?E:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(x<=0)return 0;return Math.min(1,Math.max(0,S/x))},k=(S)=>{if(S.compression)b=S.compression,E=b.virtualSize-R},L=()=>W,w=()=>Math.abs(Z.velocity),d=()=>A1(Z),T=()=>$,v=()=>G,I=(S)=>{if(R=S,b)E=b.virtualSize-R},g=()=>{if(A)clearTimeout(A);if(G)C.cancel(),window.removeEventListener("scroll",C);else M.cancel(),J.removeEventListener("scroll",M),J.removeEventListener("wheel",O),J.removeEventListener("wheel",p),J.removeEventListener("wheel",f)};if(G){if(W&&b)E=b.virtualSize-R;window.addEventListener("scroll",C,{passive:!0})}else if(W&&b){if(E=b.virtualSize-R,K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",O,{passive:!1})}else{if(K)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",M,{passive:!0}),!Q)J.addEventListener("wheel",p,{passive:!1});else if(K)J.addEventListener("wheel",f,{passive:!1})}return{getScrollTop:l,scrollTo:h,scrollBy:B,isAtTop:P,isAtBottom:F,getScrollPercentage:N,getVelocity:w,isTracking:d,isScrolling:T,updateConfig:k,enableCompression:i,disableCompression:m,isCompressed:L,isWindowMode:v,updateContainerHeight:I,destroy:g}},X2=(J)=>{let q=null,Q=null,j=(...Y)=>{if(Q=Y,q===null)q=requestAnimationFrame(()=>{if(q=null,Q)J(...Q)})};return j.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},j};var E1=0.65,F1=0.5,L1=0.95,T1=0.1,H1=5,b1=100,LJ=()=>{let J=null,q=0,Q=!1,j=0,Y=null,X=0,U=0,_=null,V=[];return{name:"withScale",priority:20,setup(K){let{dom:G,config:y}=K,{classPrefix:E,horizontal:R}=y,W=()=>{let A=K.getVirtualTotal(),H=L0(A,K.sizeCache);if(H.isCompressed&&!Q){Q=!0,K.scrollController.enableCompression(H),K.updateContentSize(H.virtualSize),K.setScrollFns(()=>q,(m)=>{if(q=m,j=m,Y!==null)cancelAnimationFrame(Y),Y=null});let M=()=>{let m=j-q;if(Math.abs(m)<F1)q=j,Y=null;else{q+=m*E1;let h=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;q=Math.max(0,Math.min(q,h)),Y=requestAnimationFrame(M)}K.scrollController.scrollTo(q)},D=G.viewport,C=(m)=>{m.preventDefault();let h=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+m.deltaY,h)),Y===null)Y=requestAnimationFrame(M)};D.addEventListener("wheel",C,{passive:!1});let p=()=>{if(_!==null)cancelAnimationFrame(_),_=null},f=(m)=>{if(p(),Y!==null)cancelAnimationFrame(Y),Y=null;let l=m.touches[0];if(!l)return;let h=R?l.clientX:l.clientY;X=h,U=q,V=[{time:performance.now(),y:h}]},O=(m)=>{m.preventDefault();let l=m.touches[0];if(!l)return;let h=R?l.clientX:l.clientY,B=performance.now();if(V.push({time:B,y:h}),V.length>H1)V.shift();let P=X-h,N=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,k=Math.max(0,Math.min(U+P,N));q=k,j=k,K.scrollController.scrollTo(k)},u=(m)=>{let l=performance.now(),h=V.filter((N)=>l-N.time<b1),B=0;if(h.length>=2){let N=h[0],k=h[h.length-1],L=k.time-N.time;if(L>0)B=(N.y-k.y)/L}if(V=[],Math.abs(B)<T1)return;let P=B*16,F=()=>{if(P*=L1,Math.abs(P)<0.5){_=null;return}let k=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,L=q+P;if(L=Math.max(0,Math.min(L,k)),L<=0&&P<0||L>=k&&P>0){q=L,j=L,K.scrollController.scrollTo(L),_=null;return}q=L,j=L,K.scrollController.scrollTo(L),_=requestAnimationFrame(F)};_=requestAnimationFrame(F)};if(D.addEventListener("touchstart",f,{passive:!0}),D.addEventListener("touchmove",O,{passive:!1}),D.addEventListener("touchend",u,{passive:!0}),D.addEventListener("touchcancel",u,{passive:!0}),K.destroyHandlers.push(()=>{if(D.removeEventListener("wheel",C),D.removeEventListener("touchstart",f),D.removeEventListener("touchmove",O),D.removeEventListener("touchend",u),D.removeEventListener("touchcancel",u),p(),Y!==null)cancelAnimationFrame(Y),Y=null}),!G.viewport.querySelector(`.${E}-scrollbar`)){if(J=I0(G.viewport,(l)=>K.scrollController.scrollTo(l),{},E,R),!G.viewport.classList.contains(`${E}-viewport--custom-scrollbar`))G.viewport.classList.add(`${E}-viewport--custom-scrollbar`);J.updateBounds(H.virtualSize,K.state.viewportState.containerSize);let m=J;K.afterScroll.push((l,h)=>{if(m)m.updatePosition(l),m.show()}),K.resizeHandlers.push((l,h)=>{if(m){let B=K.getCachedCompression();m.updateBounds(B.virtualSize,K.state.viewportState.containerSize)}})}}else if(!H.isCompressed&&Q)Q=!1,K.scrollController.disableCompression(),K.updateContentSize(H.actualSize);else if(H.isCompressed)K.scrollController.updateConfig({compression:H}),K.updateContentSize(H.virtualSize);if(J)J.updateBounds(H.virtualSize,K.state.viewportState.containerSize);K.state.cachedCompression={state:H,totalItems:A}};K.updateCompressionMode=W;let b=K.getCachedCompression.bind(K);K.getCachedCompression=()=>{if(K.state.cachedCompression)return K.state.cachedCompression.state;return b()},K.setVisibleRangeFn((A,H,M,D,C)=>{Z=null,$=null;let p=L0(D,M);J2(A,H,M,D,p,C)}),K.setScrollToPosFn((A,H,M,D,C)=>{let p=L0(D,H);return Q2(A,H,M,D,p,C)});let Z=null,$=null;K.setPositionElementFn((A,H)=>{let M=K.getVirtualTotal(),D=L0(M,K.sizeCache);if(D.isCompressed){let C=K.scrollController.getScrollTop();if(Z===null||H<$)$=H,Z=Math.round(f0(H,C,K.sizeCache,M,K.state.viewportState.containerSize,D));let p=Z+K.sizeCache.getOffset(H)-K.sizeCache.getOffset($),f=K.config.horizontal;A.style.transform=f?`translateX(${p}px)`:`translateY(${p}px)`}else{let C=Math.round(K.sizeCache.getOffset(H)),p=K.config.horizontal;A.style.transform=p?`translateX(${C}px)`:`translateY(${C}px)`}}),W(),K.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(_!==null)cancelAnimationFrame(_),_=null}}};var Y2=(J={})=>{let{chunkSize:q=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,X=new Map,U=0,_=0,V=(B)=>{let P=X.get(B);if(!P)P={items:Array(q),count:0,lastAccess:Date.now()},X.set(B,P);else P.lastAccess=Date.now();return P},K=(B)=>{return Math.floor(B/q)},G=(B)=>{return B%q},y=()=>U,E=(B)=>{U=B},R=(B)=>{if(B<0||B>=U)return;let P=K(B),F=X.get(P);if(!F)return;return F.items[G(B)]},W=(B)=>{if(B<0||B>=U)return!1;let P=K(B),F=X.get(P);if(!F)return!1;return F.items[G(B)]!==void 0},b=(B,P)=>{let F=K(B),N=V(F),k=G(B),L=N.items[k]===void 0;if(N.items[k]=P,L)N.count++,_++;if(B>=U)U=B+1},Z=(B,P)=>{for(let F=0;F<P.length;F++){let N=P[F];if(N!==void 0)b(B+F,N)}},$=(B)=>{if(B<0||B>=U)return!1;let P=K(B),F=X.get(P);if(!F)return!1;let N=G(B);if(F.items[N]===void 0)return!1;if(F.items[N]=void 0,F.count--,_--,F.count===0)X.delete(P);return!0},A=(B,P)=>{let F=[];for(let N=B;N<=P&&N<U;N++)F.push(R(N));return F},H=(B,P)=>{for(let F=B;F<=P&&F<U;F++)if(!W(F))return!1;return!0},M=()=>{let B=[],P=null,F=Array.from(X.keys()).sort((N,k)=>N-k);for(let N of F){let k=X.get(N);if(!k)continue;let L=N*q;for(let w=0;w<q;w++){let d=L+w;if(d>=U)break;if(k.items[w]!==void 0)if(P===null)P={start:d,end:d};else if(d===P.end+1)P.end=d;else B.push(P),P={start:d,end:d};else if(P!==null)B.push(P),P=null}}if(P!==null)B.push(P);return B},D=(B,P)=>{let F=[],N=null;for(let k=B;k<=P&&k<U;k++)if(!W(k))if(N===null)N={start:k,end:k};else N.end=k;else if(N!==null)F.push(N),N=null;if(N!==null)F.push(N);return F},C=(B)=>{return X.has(B)},p=(B)=>{let P=X.get(B);if(P)P.lastAccess=Date.now()},f=(B,P)=>{if(B>P||X.size===0)return;let F=Date.now(),N=K(Math.max(0,B)),k=K(Math.min(U-1,P));for(let L=N;L<=k;L++){let w=X.get(L);if(w)w.lastAccess=F}},O=(B,P)=>{if(_<=Q)return 0;let F=Math.max(0,B-j),N=Math.min(U-1,P+j),k=K(F),L=K(N),w=0,d=[];for(let[T,v]of X)if(T<k||T>L)w+=v.count,d.push(T),_-=v.count,X.delete(T);if(w>0&&Y)Y(w,d);return w},u=()=>{if(_<=Q)return 0;let B=Array.from(X.entries()).sort(([,N],[,k])=>N.lastAccess-k.lastAccess),P=0,F=[];for(let[N,k]of B){if(_<=Q)break;P+=k.count,_-=k.count,F.push(N),X.delete(N)}if(P>0&&Y)Y(P,F);return P},i=()=>{return{totalItems:U,cachedItems:_,cachedChunks:X.size,chunkSize:q,maxCachedItems:Q,memoryEfficiency:U>0?1-_/U:1}},m=()=>_,l=()=>{X.clear(),_=0};return{chunkSize:q,maxCachedItems:Q,getTotal:y,setTotal:E,get:R,has:W,set:b,setRange:Z,delete:$,getRange:A,isRangeLoaded:H,getLoadedRanges:M,findUnloadedRanges:D,getChunkIndex:K,isChunkLoaded:C,touchChunk:p,touchChunksForRange:f,evictDistant:O,evictToLimit:u,getStats:i,getCachedCount:m,clear:l,reset:()=>{l(),U=0}}},K2=(J)=>{if(J.length===0)return[];let q=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...q[0]}];for(let j=1;j<q.length;j++){let Y=q[j],X=Q[Q.length-1];if(Y.start<=X.end+1)X.end=Math.max(X.end,Y.end);else Q.push({...Y})}return Q},x0=(J,q,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,X={start:j,end:Y};if(q.length===0)return[X];let U=[],_=K2(q),V=X.start;for(let K of _){if(K.end<V)continue;if(K.start>X.end)break;if(K.start>V)U.push({start:V,end:Math.min(K.start-1,X.end)});if(V=K.end+1,V>X.end)break}if(V<=X.end)U.push({start:V,end:X.end});return U};var B2=(J={})=>{let{maskCharacter:q=ZJ,maxSampleSize:Q=NJ}=J,j=[],Y=!1,X=0,U=(y)=>{if(Y||y.length===0)return;let E=Math.min(y.length,Q);for(let R=0;R<E;R++){let W=y[R];if(!W||typeof W!=="object")continue;let b={};for(let[Z,$]of Object.entries(W)){if(Z.startsWith("_")||Z==="id")continue;b[Z]=String($??"").length}if(Object.keys(b).length>0)j.push(b)}Y=!0},_=()=>Y,V=(y)=>{let E={id:`${_J}${X++}`,[z2]:!0,_index:y};if(j.length===0)return E.label=q.repeat(12),E;let R=j[y%j.length];for(let[W,b]of Object.entries(R))E[W]=q.repeat(Math.max(1,b));return E};return{analyzeStructure:U,hasAnalyzedStructure:_,generate:V,generateRange:(y,E)=>{let R=[];for(let W=y;W<=E;W++)R.push(V(W));return R},clear:()=>{j=[],Y=!1,X=0}}},R0=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},C2=(J)=>{return J.filter((q)=>!R0(q))};var k1=50,U2=(J={})=>{let{adapter:q,initialItems:Q,initialTotal:j,storage:Y,placeholder:X,pageSize:U=k1,onStateChange:_,onItemsLoaded:V,onItemsEvicted:K}=J,G=Y2({...Y,onEvict:(a,s)=>{K?.(a),D()}}),y=null,E=()=>{if(!y)y=B2(X);return y},R=new Map,W=!1,b,Z=!0,$,A=[],H=0,M=new Map,D=()=>{_?.(h())},C=()=>{R.clear();let a=G.getLoadedRanges();for(let s of a)for(let J0=s.start;J0<=s.end;J0++){let Y0=G.get(J0);if(Y0&&!R0(Y0))R.set(Y0.id,J0)}},p=(a,s)=>{if(!R0(s))R.set(s.id,a)},f=(a)=>{R.delete(a)},O=(a,s)=>{return`${a}-${s}`},u=()=>G.getTotal(),i=()=>G.getCachedCount(),m=()=>W,l=()=>Z,h=()=>({total:G.getTotal(),cached:G.getCachedCount(),isLoading:W,pendingRanges:A,error:b,hasMore:Z,cursor:$}),B=()=>G,P=()=>E(),F=(a)=>{let s=G.get(a);if(s!==void 0)return s;if(a>=0&&a<G.getTotal())return E().generate(a);return},N=(a)=>{let s=R.get(a);if(s===void 0)return;return G.get(s)},k=(a)=>{return R.get(a)??-1},L=(a)=>{let s=G.get(a);return s!==void 0&&!R0(s)},w=(a,s)=>{let J0=[],Y0=G.getTotal(),_0=0,Z0=0;G.touchChunksForRange(a,Math.min(s,Y0-1));for(let Q0=a;Q0<=s&&Q0<Y0;Q0++){let E0=G.get(Q0);if(E0!==void 0)J0.push(E0),_0++;else J0.push(E().generate(Q0)),Z0++}return J0},d=(a)=>{G.setTotal(a),Z=G.getCachedCount()<a,D()},T=(a,s=0,J0)=>{if(y&&!y.hasAnalyzedStructure()&&a.length>0)y.analyzeStructure(a);for(let Y0=0;Y0<a.length;Y0++){let _0=a[Y0];if(_0!==void 0){let Z0=s+Y0;G.set(Z0,_0),p(Z0,_0)}}if(J0!==void 0)G.setTotal(J0);else if(s+a.length>G.getTotal())G.setTotal(s+a.length);if(G.getCachedCount()>=G.getTotal()&&G.getTotal()>0)Z=!1;V?.(a,s,G.getTotal()),D()},v=(a,s)=>{let J0=R.get(a);if(J0===void 0)return!1;let Y0=G.get(J0);if(!Y0)return!1;let _0={...Y0,...s};if(G.set(J0,_0),s.id!==void 0&&s.id!==a)f(a),p(J0,_0);return D(),!0},I=(a)=>{let s=R.get(a);if(s===void 0)return!1;G.delete(s),f(a);let J0=G.getTotal();if(J0>0)G.setTotal(J0-1);return D(),!0},g=async(a,s)=>{if(!q)return;let J0=O(a,s);if(M.has(J0))return;let Y0=G.getLoadedRanges(),_0=x0({start:a,end:s},Y0,G.chunkSize);if(_0.length===0)return;let Z0=G.chunkSize,Q0=[];for(let D0 of _0){let H0=Math.floor(D0.start/Z0),P0=Math.floor(D0.end/Z0);for(let V0=H0;V0<=P0;V0++){let T0=V0*Z0,G0=T0+Z0-1,A0=O(T0,G0);if(!Q0.some((C0)=>C0.start===T0)&&!M.has(A0))Q0.push({start:T0,end:G0})}}let E0=[];for(let D0 of _0){let H0=Math.floor(D0.start/Z0),P0=Math.floor(D0.end/Z0);for(let V0=H0;V0<=P0;V0++){let T0=V0*Z0,G0=T0+Z0-1,A0=O(T0,G0);if(M.has(A0)){let C0=M.get(A0);if(!E0.includes(C0))E0.push(C0)}}}for(let D0 of Q0){let H0=O(D0.start,D0.end),P0=(async()=>{A.push(D0),W=!0,b=void 0,D();try{let V0=D0.end-D0.start+1,T0={offset:D0.start,limit:V0,cursor:void 0},G0=await q.read(T0);if(T(G0.items,D0.start,G0.total),G0.cursor)$=G0.cursor;let A0=D0.start+G0.items.length;if(A0>=H){if(H=A0,G0.hasMore!==void 0)Z=G0.hasMore;else if(G0.total!==void 0)Z=A0<G0.total}}catch(V0){b=V0 instanceof Error?V0:Error(String(V0))}finally{M.delete(H0),A=A.filter((V0)=>V0.start!==D0.start||V0.end!==D0.end),W=M.size>0,D()}})();M.set(H0,P0),E0.push(P0)}await Promise.all(E0)},S=async(a,s)=>{if(G.isRangeLoaded(a,s))return;await g(a,s)},x=async()=>{if(!q)return;await g(0,U-1)},c=async()=>{if(!q||W||!Z)return!1;let a=G.getCachedCount(),s=G.getTotal(),J0=a,Y0=Math.min(J0+U-1,s>0?s-1:J0+U-1);if(J0>=s&&s>0)return Z=!1,!1;return await g(J0,Y0),G.getCachedCount()>a},t=async()=>{if(G.clear(),G.setTotal(0),R.clear(),y)y.clear();M.clear(),A=[],W=!1,$=void 0,Z=!0,H=0,b=void 0,D()},e=(a,s)=>{if(G.evictDistant(a,s)>0)C()},K0=()=>{G.clear(),R.clear(),$=void 0,b=void 0,A=[],W=!1,D()},U0=()=>{if(G.reset(),R.clear(),y)y.clear();$=void 0,Z=!0,H=0,b=void 0,A=[],W=!1,D()};if(Q&&Q.length>0)T(Q,0,j??Q.length);else if(j!==void 0)G.setTotal(j),D();return{getState:h,getTotal:u,getCached:i,getIsLoading:m,getHasMore:l,getStorage:B,getPlaceholders:P,getItem:F,getItemById:N,getIndexById:k,isItemLoaded:L,getItemsInRange:w,setTotal:d,setItems:T,updateItem:v,removeItem:I,loadRange:g,ensureRange:S,loadInitial:x,loadMore:c,reload:t,evictDistant:e,clear:K0,reset:U0}};var TJ=(J)=>{let{adapter:q,loading:Q,storage:j,total:Y,autoLoad:X=!0}=J,U=Q?.cancelThreshold??KJ,_=Q?.preloadThreshold??BJ,V=Q?.preloadAhead??UJ;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(K){let{emitter:G}=K,y=K.config.reverse,E=U2({adapter:q,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??S0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(K.state.isInitialized){let M=K.getVirtualTotal();K.sizeCache.rebuild(M),K.updateCompressionMode();let D=K.getCachedCompression();K.state.viewportState.totalSize=D.virtualSize,K.state.viewportState.actualSize=D.actualSize,K.state.viewportState.isCompressed=D.isCompressed,K.state.viewportState.compressionRatio=D.ratio,K.updateContentSize(D.virtualSize),K.renderIfNeeded()}},onItemsLoaded:(M,D,C)=>{if(K.state.isInitialized)K.forceRender(),G.emit("load:end",{items:M,total:C,offset:D})}});K.replaceDataManager(E);let R=null,W=null,b=0,Z=()=>{if(W){let M=W;W=null,K.dataManager.ensureRange(M.start,M.end).catch((D)=>{G.emit("error",{error:D,context:"ensureRange"})})}};K.afterScroll.push((M,D)=>{if(K.state.isDestroyed)return;let C=K.scrollController.getVelocity(),f=K.scrollController.isTracking()&&C<=U;if(W&&b>U&&C<=U){let i=W;W=null,K.dataManager.ensureRange(i.start,i.end).catch((m)=>{G.emit("error",{error:m,context:"ensureRange"})})}if(b=C,f&&!K.dataManager.getIsLoading()&&K.dataManager.getHasMore()){if(y){if(M<R2)G.emit("load:start",{offset:K.dataManager.getCached(),limit:S0}),K.dataManager.loadMore().catch((i)=>{G.emit("error",{error:i,context:"loadMore"})})}else if(K.state.viewportState.totalSize-M-K.state.viewportState.containerSize<R2)G.emit("load:start",{offset:K.dataManager.getCached(),limit:S0}),K.dataManager.loadMore().catch((m)=>{G.emit("error",{error:m,context:"loadMore"})})}let{renderRange:O}=K.state.viewportState;if(!R||O.start!==R.start||O.end!==R.end)if(R={start:O.start,end:O.end},f){W=null;let{start:i,end:m}=O,l=K.getVirtualTotal();if(C>_)if(D==="down")m=Math.min(O.end+V,l-1);else i=Math.max(O.start-V,0);K.dataManager.ensureRange(i,m).catch((h)=>{G.emit("error",{error:h,context:"ensureRange"})})}else W={start:O.start,end:O.end}});let $=200,A=null;K.afterScroll.push((M,D)=>{if(A!==null)clearTimeout(A);A=setTimeout(()=>{A=null,Z()},$)}),K.destroyHandlers.push(()=>{if(A!==null)clearTimeout(A),A=null});let H=()=>{if(K.state.isDestroyed)return;R=null;let{renderRange:M}=K.state.viewportState;if(M.end>0)K.dataManager.ensureRange(M.start,M.end).catch((D)=>{G.emit("error",{error:D,context:"ensureRange"})});Z()};if(window.addEventListener("online",H),K.destroyHandlers.push(()=>{window.removeEventListener("online",H)}),G.on("load:start",()=>{K.dom.root.setAttribute("aria-busy","true")}),G.on("load:end",()=>{K.dom.root.removeAttribute("aria-busy")}),K.methods.set("loadVisibleRange",async()=>{R=null,W=null,K.forceRender();let{renderRange:M}=K.state.viewportState;if(M.end>0)G.emit("load:start",{offset:M.start,limit:M.end-M.start+1}),await K.dataManager.ensureRange(M.start,M.end)}),K.methods.set("reload",async()=>{R=null,W=null,K.invalidateRendered(),await K.dataManager.reload(),G.emit("load:start",{offset:0,limit:S0}),await K.dataManager.loadInitial(),K.forceRender();let{renderRange:M}=K.state.viewportState;if(M.end>0)await K.dataManager.ensureRange(M.start,M.end)}),X)G.emit("load:start",{offset:0,limit:S0}),K.dataManager.loadInitial().catch((M)=>{G.emit("error",{error:M,context:"loadInitial"})});else if(Y!==void 0)K.dataManager.setTotal(Y)}}};var HJ=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Q,state:j,config:Y,emitter:X}=q;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`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let K=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-K.left);else return Math.max(0,-K.top)},(K)=>{let G=Q.viewport.getBoundingClientRect();if(Y.horizontal){let y=G.left+window.scrollX;window.scrollTo(y+K,window.scrollY)}else{let y=G.top+window.scrollY;window.scrollTo(window.scrollX,y+K)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:U,innerWidth:_}=window,V=()=>{let{innerWidth:K,innerHeight:G}=window,y=Y.horizontal?K:G,E=Y.horizontal?_:U;if(Math.abs(y-E)<=1)return;U=G,_=K,j.viewportState.containerSize=G,X.emit("resize",{width:K,height:G});for(let R=0;R<q.resizeHandlers.length;R++)q.resizeHandlers[R](K,G);q.renderIfNeeded()};window.addEventListener("resize",V,{passive:!0}),J=()=>{window.removeEventListener("resize",V)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var w2=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=q)Q=Y;else j=Y-1}return Q},bJ=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=q)Q=Y;else j=Y-1}return Q},$J=(J,q)=>{if(J===0)return[];let Q=[],j=q(0),Y=0,X=0;for(let U=1;U<J;U++){let _=q(U);if(_!==j){let V=U-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:V}),X=X+1+V,j=_,Y=U}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:J-Y}),Q},m0=(J,q)=>{if(J.length===0||q.length===0)return[];let Q=J.length+q.length,j=Array(Q),Y=0;for(let X of q){j[Y]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},Y++;for(let U=0;U<X.count;U++)j[Y]=J[X.firstDataIndex+U],Y++}return j},d0=(J,q)=>{let Q=typeof q==="number"?(j)=>q:q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},Z2=(J,q)=>{let Q=$J(J,q.getGroupForIndex),j=J+Q.length,Y=q.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:(E)=>{if(Q.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let R=w2(Q,E),W=Q[R];if(E===W.headerLayoutIndex)return{type:"header",group:W};let b=E-W.headerLayoutIndex-1;return{type:"item",dataIndex:W.firstDataIndex+b,group:W}},layoutToDataIndex:(E)=>{if(Q.length===0)return E;let R=w2(Q,E),W=Q[R];if(E===W.headerLayoutIndex)return-1;let b=E-W.headerLayoutIndex-1;return W.firstDataIndex+b},dataToLayoutIndex:(E)=>{if(Q.length===0)return E;let R=bJ(Q,E),W=Q[R],b=E-W.firstDataIndex;return W.headerLayoutIndex+1+b},getGroupAtLayoutIndex:(E)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let R=w2(Q,E);return Q[R]},getGroupAtDataIndex:(E)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let R=bJ(Q,E);return Q[R]},getHeaderHeight:typeof Y==="number"?(E)=>Y:(E)=>{let R=Q[E];if(!R)return 0;return Y(R.key,E)},rebuild:(E)=>{Q=$J(E,q.getGroupForIndex),j=E+Q.length}}};var N2=(J,q,Q,j,Y,X=!1)=>{let U=document.createElement("div");if(U.className=`${Y}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",X)U.style.top="0",U.style.bottom="0",U.style.left="0";else U.style.top="0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let _=-1,V=!1,K=0,G=(Z)=>{if(Z===_)return;_=Z;let $=q.groups;if(Z<0||Z>=$.length){U.textContent="";return}let A=$[Z],H=j.headerTemplate(A.key,A.groupIndex),M=q.getHeaderHeight(Z);if(X)U.style.width=`${M}px`;else U.style.height=`${M}px`;if(typeof H==="string")U.innerHTML=H;else U.replaceChildren(H)},y=(Z)=>{let $=q.groups;if($.length===0){R();return}let A=Q.getOffset($[0].headerLayoutIndex);if(Z<A){R();return}let H=0,M=$.length-1;while(H<M){let O=H+M+1>>>1;if(Q.getOffset($[O].headerLayoutIndex)<=Z)H=O;else M=O-1}let D=H;if(!V)E();G(D);let C=q.getHeaderHeight(D),p=0,f=D+1;if(f<$.length){let u=Q.getOffset($[f].headerLayoutIndex)-Z;if(u<C)p=u-C}if(p!==K)if(K=p,p===0)U.style.transform="";else{let O=Math.round(p);U.style.transform=X?`translateX(${O}px)`:`translateY(${O}px)`}},E=()=>{if(V)return;V=!0,U.style.display=""},R=()=>{if(!V)return;V=!1,U.style.display="none",_=-1,K=0,U.style.transform=""},W=()=>{let Z=_;if(_=-1,Z>=0)G(Z)},b=()=>{U.remove(),_=-1,V=!1};return U.style.display="none",{update:y,refresh:W,show:E,hide:R,destroy:b}};var kJ=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;let U=Q.indexAtOffset(J),_=Q.indexAtOffset(J+q);if(_<j-1)_++;return X.start=Math.max(0,U),X.end=Math.min(j-1,Math.max(0,_)),X},yJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},PJ=(J,q,Q,j,Y,X)=>{if(j===0)return 0;let U=Math.max(0,Math.min(J,j-1)),_=q.getOffset(U),V=q.getSize(U),K=q.getTotalSize(),G=Math.max(0,K-Q),y;switch(X){case"center":y=_-Q/2+V/2;break;case"end":y=_-Q+V;break;case"start":default:y=_;break}return Math.max(0,Math.min(y,G))},RJ=(J,q,Q)=>{if(Q&&Q.isCompressed)return Q.virtualSize;return q.getTotalSize()},zJ=(J,q)=>{return q.getTotalSize()},CJ=(J,q)=>{return q.getOffset(J)},wJ=(J,q,Q)=>{let j=Math.max(0,q-Q);return Math.max(0,Math.min(J,j))};var y0=(J,q,Q,j,Y="start",X,U=PJ)=>{return U(J,q,Q,j,X,Y)},vJ=(J,q)=>{return J.start===q.start&&J.end===q.end},SJ=(J,q)=>{return J>=q.start&&J<=q.end},fJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var IJ=(J,q)=>{let Q=[],j=[];for(let Y=J.start;Y<=J.end;Y++)if(Y<q.start||Y>q.end)j.push(Y);for(let Y=q.start;Y<=q.end;Y++)if(Y<J.start||Y>J.end)Q.push(Y);return{add:Q,remove:j}};j2();var hJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let q=null,Q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(X){let{dom:U,config:_,rawConfig:V}=X,{classPrefix:K}=_,y=V.item.height;j=V.items?[...V.items]:[];let E=j.length,R={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};q=Z2(E,R),Y=m0(j,q.groups);let W=d0(q,y);X.setSizeConfig(W),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length);let b=V.item.template,{headerTemplate:Z}=J,$=(f,O,u)=>{if(z0(f))return Z(f.groupKey,f.groupIndex);return b(f,O,u)},A=X.methods.get("_getGridLayout"),H=X.methods.get("_replaceGridRenderer"),M=X.methods.get("_updateGridLayoutForGroups");if(A&&H){if(M)M((i)=>{let m=Y[i];return!!(m&&z0(m))});let{createGridRenderer:f}=(_2(),N1(pJ)),O=A(),u=f(U.items,$,X.sizeCache,O,K,X.getContainerWidth(),()=>X.dataManager.getTotal(),_.ariaIdPrefix);H(u)}else X.replaceTemplate($);if(U.root.classList.add(`${K}--grouped`),J.sticky!==!1){Q=N2(U.root,q,X.sizeCache,{...R,sticky:R.sticky??!1},K,_.horizontal);let f=Q;X.afterScroll.push((O,u)=>{f.update(O)}),Q.update(X.scrollController.getScrollTop())}let D=()=>{if(!q)return;q.rebuild(j.length),Y=m0(j,q.groups);let f=d0(q,y);if(X.setSizeConfig(f),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};X.methods.set("setItems",(f)=>{j=f.slice(),D()}),X.methods.set("appendItems",(f)=>{j.push(...f),D()}),X.methods.set("prependItems",(f)=>{j.unshift(...f),D()}),X.methods.set("removeItem",(f)=>{j=j.filter((O)=>O.id!==f),D()});let{animateScroll:C,cancelScroll:p}=JJ(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(f,O)=>{let u=q.dataToLayoutIndex(f),{align:i,behavior:m,duration:l}=v0(O),h=X.dataManager.getTotal(),B=y0(u,X.sizeCache,X.state.viewportState.containerSize,h,i,X.getCachedCompression());if(m==="smooth")C(X.scrollController.getScrollTop(),B,l);else p(),X.scrollController.scrollTo(B)}),X.methods.set("_getItems",()=>j),X.methods.set("_getTotal",()=>j.length),X.destroyHandlers.push(()=>{if(p(),Q)Q.destroy(),Q=null;U.root.classList.remove(`${K}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}};var D2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},X=(W)=>{if(W<=0)return 0;if(!j)return Math.ceil(W/q);let b=0,Z=0,$=0;for(let A=0;A<W;A++)if(j(A)){if($++,Z>0)b++,Z=0;b++,Z=0}else if(Z++,Z>=q)b++,Z=0;if(Z>0)b++;return b},U=(W)=>{return Y.row=_(W),Y.col=V(W),Y},_=(W)=>{if(!j)return Math.floor(W/q);let b=0,Z=0;for(let $=0;$<=W;$++)if(j($)){if(Z>0)b++,Z=0;if($===W)return b;b++,Z=0}else{if($===W)return b;if(Z++,Z>=q)b++,Z=0}return console.warn(`⚠️ getRow(${W}) fell through - returning ${b}`),b},V=(W)=>{if(!j)return W%q;if(j(W))return 0;let b=0;for(let Z=0;Z<=W;Z++)if(j(Z))b=0;else{if(Z===W)return b;if(b++,b>=q)b=0}return b},K=(W,b,Z)=>{if(Z<=0)return{start:0,end:-1};if(!j){let D=Math.max(0,W*q),C=Math.min(Z-1,(b+1)*q-1);return{start:D,end:C}}let $=-1,A=-1,H=0,M=0;for(let D=0;D<Z;D++){if(j(D)){if(M>0)H++,M=0;if(H>=W&&H<=b){if($===-1)$=D;A=D}H++,M=0}else{if(H>=W&&H<=b){if($===-1)$=D;A=D}if(M++,M>=q)H++,M=0}if(H>b&&M===0)break}if($===-1)return{start:0,end:-1};return{start:$,end:A}},G=(W,b,Z)=>{if(b<0||b>=q)return-1;let $=W*q+b;if($<0||$>=Z)return-1;return $},y=(W)=>{let b=(q-1)*Q;return Math.max(0,(W-b)/q)};return{get columns(){return q},get gap(){return Q},update:(W)=>{if(W.columns!==void 0)q=Math.max(1,Math.floor(W.columns));if(W.gap!==void 0)Q=W.gap;if(W.isHeaderFn!==void 0)j=W.isHeaderFn},getTotalRows:X,getPosition:U,getRow:_,getCol:V,getItemRange:K,getItemIndex:G,getColumnWidth:y,getColumnOffset:(W,b)=>{let Z=y(b);return W*(Z+Q)}}};_2();var R1=new Set,uJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:X,config:U,rawConfig:_}=j,{classPrefix:V}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let K=U.horizontal,G=()=>K?Y.viewport.clientHeight:j.getContainerWidth(),y=_.items?.some((N)=>N.__groupHeader===!0),E={columns:J.columns,gap:J.gap??0};if(y)E.isHeaderFn=(N)=>{let k=j.dataManager.getItem(N);return!!(k&&k.__groupHeader===!0)};q=D2(E);let R=q.gap;j.setVirtualTotalFn(()=>{let N=j.dataManager.getTotal();return q.getTotalRows(N)});let W=_.item,b=U.horizontal?W.width:W.height,Z={containerWidth:G(),columns:q.columns,gap:q.gap},$={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof b==="function")j.setSizeConfig((N)=>{let k=Z.containerWidth-2,L=(Z.columns-1)*Z.gap;return $.containerWidth=Z.containerWidth,$.columns=Z.columns,$.gap=Z.gap,$.columnWidth=(k-L)/Z.columns,$.row=q.getRow(N),$.column=q.getCol(N),$.totalRows=q.getTotalRows(j.dataManager.getTotal()),$.totalColumns=Z.columns,b(N,$)+Z.gap});else if(R>0)j.setSizeConfig(b+R);if(j.rebuildSizeCache(),R>0){let N=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let k=N();return k>0?k-Z.gap:0}}Y.root.classList.add(`${V}--grid`);let A=G(),H=_.item.template,M=()=>{Q=c0(Y.items,H,j.sizeCache,q,V,A,()=>j.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),j.replaceRenderer(Q)};M(),j.methods.set("_getGridLayout",()=>q),j.methods.set("_getGridConfig",()=>E),j.methods.set("_replaceGridRenderer",(N)=>{Q=N}),j.methods.set("_updateGridLayoutForGroups",(N)=>{q.update({isHeaderFn:N});let k=j.dataManager.getTotal(),L=0;for(let w=0;w<k;w++)if(q.getCol(w)===0){let d=j.sizeCache.getSize(w);L+=d}if(j.sizeCache.getTotalSize=()=>L,U.horizontal)j.dom.content.style.width=`${L}px`;else j.dom.content.style.height=`${L}px`;M()}),j.methods.set("updateGrid",(N)=>{if(N.columns!==void 0){if(!Number.isInteger(N.columns)||N.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");E.columns=N.columns}if(N.gap!==void 0){if(N.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");E.gap=N.gap}if(q)q.update(E);let k=G();if(Z.containerWidth=k,Z.columns=E.columns,Z.gap=E.gap??0,Q)Q.updateContainerWidth(k);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 D=null,C=null,p=!1,f=()=>{if(p)return;p=!0,D=j.methods.get("_getSelectedIds")??null,C=j.methods.get("_getFocusedIndex")??null},O=-1,u=-1,i=!0,m=U.overscan??3,l={start:0,end:0},h={start:0,end:0},B=()=>{if(j.state.isDestroyed)return;let N=j.scrollController.getScrollTop(),k=j.state.viewportState.containerSize;if(!i&&N===O&&k===u)return;O=N,u=k,i=!1;let L=j.getVirtualTotal();if(L===0||k===0)l.start=0,l.end=0;else{l.start=Math.max(0,j.sizeCache.indexAtOffset(N));let t=j.sizeCache.indexAtOffset(N+k);if(t<L-1)t++;l.end=Math.min(L-1,Math.max(0,t))}h.start=Math.max(0,l.start-m),h.end=Math.min(L-1,l.end+m);let w=j.state.viewportState;w.scrollPosition=N,w.visibleRange.start=l.start,w.visibleRange.end=l.end,w.renderRange.start=h.start,w.renderRange.end=h.end;let d=j.state.lastRenderRange,T=w.isCompressed,v=j.dataManager.getTotal(),I=q.getItemRange(h.start,h.end,v),g=j.dataManager.getItemsInRange(I.start,I.end),S=T?j.getCompressionContext():void 0;f();let x=D?D():R1,c=C?C():-1;if(Q.render(g,I,x,c,S),d.start!==h.start||d.end!==h.end)d.start=h.start,d.end=h.end,X.emit("range:change",{range:{start:h.start,end:h.end}})},P=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,i=!0,B()};j.setRenderFns(B,P);let F=typeof b==="function";if(j.resizeHandlers.push((N,k)=>{let L=K?k:N;if(Z.containerWidth=L,Q)Q.updateContainerWidth(L);if(F){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let w=0;w<j.contentSizeHandlers.length;w++)j.contentSizeHandlers[w]();if(Q)Q.clear();j.forceRender()}}),j.methods.set("scrollToIndex",(N,k)=>{let L=Math.floor(N/J.columns),{align:w,behavior:d}=v0(k),T=j.dataManager.getState(),v=q.getTotalRows(T.total),I=Math.max(0,Math.min(L,v-1)),g=y0(I,j.sizeCache,j.state.viewportState.containerSize,v,w,j.getCachedCompression());if(d==="smooth")j.scrollController.scrollTo(g);else j.scrollController.scrollTo(g)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;Y.root.classList.remove(`${V}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}};_2();var V2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.containerSize,Y=0,X=[],U=()=>{let Z=(q-1)*Q;Y=Math.max(0,(j-Z)/q),X=Array(q);let $=Y+Q;for(let A=0;A<q;A++)X[A]=A*$};U();let _=[],V=0,K=[],G=(Z)=>{let $=0,A=Z[0];for(let H=1;H<Z.length;H++){let M=Z[H];if(M<A)A=M,$=H}return $},y=(Z,$)=>{if(Z<=0)return V=0,_=[],[];let A=Array(q).fill(0),H=Array(q);for(let C=0;C<q;C++)H[C]=[];let M=Array(Z);for(let C=0;C<Z;C++){let p=G(A),f=$(C),O=A[p];M[C]={index:C,x:X[p],y:O,lane:p,size:f,crossSize:Y},H[p].push(C),A[p]=O+f+Q}_=H;let D=0;for(let C=0;C<q;C++){let p=A[C],f=p>0?p-Q:0;if(f>D)D=f}return V=D,M},E=(Z)=>{if(Z.length===0)return V>0?V:0;if(V>0)return V;let $=Array(q).fill(0);for(let H of Z){let M=H.y+H.size,D=$[H.lane];if(M>D)$[H.lane]=M}let A=0;for(let H=0;H<q;H++)if($[H]>A)A=$[H];return A},R=(Z,$,A)=>{if(Z.length===0||A<=$)return K.length=0,K;if(_.length===0||_.length!==q)return W(Z,$,A);K.length=0;for(let H=0;H<q;H++){let M=_[H],D=M.length;if(D===0)continue;let C=0,p=D;while(C<p){let f=C+p>>>1,O=Z[M[f]];if(O.y+O.size<=$)C=f+1;else p=f}for(let f=C;f<D;f++){let O=Z[M[f]];if(O.y>=A)break;K.push(O)}}return K},W=(Z,$,A)=>{let H=[];for(let M of Z)if(M.y+M.size>$&&M.y<A)H.push(M);return H};return{get columns(){return q},get gap(){return Q},get containerSize(){return j},update:(Z)=>{let $=!1;if(Z.columns!==void 0){let A=Math.max(1,Math.floor(Z.columns));if(A!==q)q=A,$=!0}if(Z.gap!==void 0&&Z.gap!==Q)Q=Z.gap,$=!0;if(Z.containerSize!==void 0&&Z.containerSize!==j)j=Z.containerSize,$=!0;if($)U()},calculateLayout:y,getTotalSize:E,getVisibleItems:R}};var z1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-lane"),q.push(X)},clear:()=>{q.length=0}}};var G2=(J,q,Q,j=!1,Y,X)=>{let U=z1(),_=new Map,V=new Set,K=0,G="",y=-1,E={selected:!1,focused:!1},R=(O,u)=>{return E.selected=O,E.focused=u,E},W=`${Q}-item ${Q}-masonry-item`,b=`${Q}-item--selected`,Z=`${Q}-item--focused`,$=(O,u)=>{if(typeof u==="string")O.innerHTML=u;else O.replaceChildren(u)},A=(O,u,i)=>{O.classList.toggle(b,u),O.classList.toggle(Z,i)},H=(O,u)=>{if(j)O.style.transform=`translate(${Math.round(u.y)}px, ${Math.round(u.x)}px)`;else O.style.transform=`translate(${Math.round(u.x)}px, ${Math.round(u.y)}px)`},M=(O,u)=>{if(j)O.style.width=`${u.size}px`,O.style.height=`${u.crossSize}px`;else O.style.width=`${u.crossSize}px`,O.style.height=`${u.size}px`},D=(O,u,i,m,l)=>{let h=U.acquire(),B=R(m,l);if(h.className=W,h.dataset.index=String(O),h.dataset.id=String(u.id),h.dataset.lane=String(i.lane),h.ariaSelected=String(m),X)h.id=`${X}-item-${O}`;if(Y){let F=Y();if(F!==y)y=F,G=String(F);h.setAttribute("aria-setsize",G),h.setAttribute("aria-posinset",String(O+1))}M(h,i);let P=q(u,O,B);return $(h,P),A(h,m,l),H(h,i),{element:h,lastItemId:u.id,lastSelected:m,lastFocused:l,lastY:i.y,lastX:i.x,lastSize:i.size,lastCrossSize:i.crossSize,lastSeenFrame:K}},C=(O,u,i,m)=>{K++,V.clear();for(let h=0;h<u.length;h++)V.add(u[h].index);for(let[h,B]of _)if(V.has(h))B.lastSeenFrame=K;else if(K-B.lastSeenFrame>2)U.release(B.element),_.delete(h);let l=null;for(let h=0;h<u.length;h++){let B=u[h],P=B.index,F=O(P);if(!F)continue;let N=i.has(F.id),k=P===m,L=_.get(P);if(L){let w=L.lastItemId!==F.id,d=L.lastSelected!==N,T=L.lastFocused!==k,v=L.lastY!==B.y||L.lastX!==B.x,I=L.lastSize!==B.size||L.lastCrossSize!==B.crossSize;if(w||d||T){let g=R(N,k),S=q(F,P,g);$(L.element,S),A(L.element,N,k),L.element.dataset.id=String(F.id),L.element.ariaSelected=String(N),L.lastItemId=F.id,L.lastSelected=N,L.lastFocused=k}if(I)M(L.element,B),L.lastSize=B.size,L.lastCrossSize=B.crossSize;if(v)H(L.element,B),L.lastY=B.y,L.lastX=B.x}else{let w=D(P,F,B,N,k);if(!l)l=document.createDocumentFragment();l.appendChild(w.element),_.set(P,w)}}if(l)J.appendChild(l)},p=()=>{for(let{element:O}of _.values())U.release(O);_.clear(),J.innerHTML=""};return{render:C,getElement:(O)=>_.get(O)?.element,clear:p,destroy:()=>{p(),U.clear()}}};var C1=new Set,gJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:X,emitter:U,config:_,rawConfig:V}=Y,K=_.classPrefix,G=_.horizontal;if(_.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");X.root.classList.add(`${K}--masonry`);let y=()=>{return G?X.viewport.clientHeight:X.viewport.clientWidth},E={columns:J.columns,gap:J.gap??0,containerSize:y()};q=V2(E);let R=V.item,W=G&&V.item.width?V.item.width:R.height,b={containerWidth:0,columns:0,gap:0,columnWidth:0},Z=typeof W==="function"?(N)=>W(N,b):()=>W,$=()=>{let N=Y.dataManager.getTotal(),k=q;b.containerWidth=k.containerSize,b.columns=k.columns,b.gap=k.gap;let L=(k.columns-1)*k.gap;b.columnWidth=Math.max(0,(b.containerWidth-L)/k.columns),j=k.calculateLayout(N,Z);let w=q.getTotalSize(j);if(Y.sizeCache.getTotalSize=()=>w,G)X.content.style.width=`${w}px`;else X.content.style.height=`${w}px`},A=V.item.template;Q=G2(X.items,A,K,G,()=>Y.dataManager.getTotal(),_.ariaIdPrefix);let H=null,M=null,D=!1,C=()=>{if(D)return;D=!0,H=Y.methods.get("_getSelectedIds")??null,M=Y.methods.get("_getFocusedIndex")??null},p=(N)=>Y.dataManager.getItem(N),f=-1,O=-1,u=!0,i=(_.overscan??3)*100,m=()=>{if(Y.state.isDestroyed)return;C();let N=Y.scrollController.getScrollTop(),k=Y.state.viewportState.containerSize;if(!u&&N===f&&k===O)return;f=N,O=k,u=!1;let L=Math.max(0,N-i),w=N+k+i,d=q.getVisibleItems(j,L,w),T=H?H():C1,v=M?M():-1;if(Q&&d.length>0)Q.render(p,d,T,v);let I=Y.state.viewportState;I.scrollPosition=N;let g=d.length,S=g>0?d[0].index:0,x=g>0?d[g-1].index:0;I.visibleRange.start=S,I.visibleRange.end=x,I.renderRange.start=S,I.renderRange.end=x;let c=Y.state.lastRenderRange;if(c.start!==S||c.end!==x)c.start=S,c.end=x,U.emit("range:change",{range:{start:S,end:x}})},l=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,u=!0,m()};Y.setRenderFns(m,l);let h=(N,k)=>{let L=G?k:N;if(q&&q.containerSize!==L){if(q.update({containerSize:L}),$(),Q)Q.clear();l()}};Y.resizeHandlers.push(h);let B=()=>{$(),l()},P=Y.dataManager,F=(N)=>{if(typeof P[N]!=="function")return;let k=P[N].bind(P);P[N]=(...L)=>{k(...L),B()}};F("setItems"),F("appendItems"),F("prependItems"),F("updateItem"),F("removeItem"),Y.methods.set("scrollToIndex",(N,k,L)=>{let w=j[N];if(!w)return;let d=w.y,T=Y.state.viewportState.containerSize,v=d;if(k==="center")v=d-T/2+w.size/2;else if(k==="end")v=d-T+w.size;v=Math.max(0,v),Y.scrollController.scrollTo(v,L==="smooth")}),$(),Y.destroyHandlers.push(()=>{if(Q)Q.destroy();X.root.classList.remove(`${K}--masonry`)})}}};var W2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),l0=(J,q,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),q.length>0)j.add(q[0])}else for(let Y of q)j.add(Y);return{...J,selected:j}},r0=(J,q)=>{let Q=new Set(J.selected);for(let j of q)Q.delete(j);return{...J,selected:Q}},p0=(J,q,Q)=>{if(Q==="none")return J;if(J.selected.has(q))return r0(J,[q]);else return l0(J,[q],Q)},M2=(J,q,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(q.map((j)=>j.id))}},O2=(J)=>({...J,selected:new Set}),A2=(J,q)=>{return J.focusedIndex=q,J},v2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?q-1:0;return J.focusedIndex=j,J},S2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex+1;if(j>=q)j=Q?0:q-1;return J.focusedIndex=j,J},f2=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},I2=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J};var xJ=(J,q)=>{return J.selected.has(q)},a0=(J)=>{return Array.from(J.selected)},s0=(J,q)=>{let Q=[];for(let j of J.selected){let Y=q(j);if(Y)Q.push(Y)}return Q};var mJ=(J)=>{let q=J?.mode??"single",Q=J?.initial,j=W2(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:U,emitter:_,config:V}=X,{classPrefix:K,ariaIdPrefix:G}=V;if(q==="none"){X.methods.set("select",()=>{}),X.methods.set("deselect",()=>{}),X.methods.set("toggleSelect",()=>{}),X.methods.set("selectAll",()=>{}),X.methods.set("clearSelection",()=>{}),X.methods.set("getSelected",()=>[]),X.methods.set("getSelectedItems",()=>[]),X.methods.set("setSelectionMode",()=>{});return}U.root.classList.add(`${K}--selectable`);let y=new Map,E=()=>{y.clear();let A=X.dataManager.getTotal(),H=X.dataManager.getCached();if(H===0)return;if(H>=A){for(let D=0;D<A;D++){let C=X.dataManager.getItem(D);if(C)y.set(C.id,D)}return}let M=X.dataManager.getStorage();if(M&&typeof M.getLoadedRanges==="function"){let D=M.getLoadedRanges();for(let C of D)for(let p=C.start;p<=C.end;p++){let f=X.dataManager.getItem(p);if(f)y.set(f.id,p)}}};_.on("load:end",({items:A,offset:H})=>{if(!A||A.length===0)return;if(H!==void 0)for(let M=0;M<A.length;M++){let D=A[M];if(D&&D.id!==void 0)y.set(D.id,H+M)}else E()}),E(),X.methods.set("_getSelectedIds",()=>{return j.selected}),X.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:R}=X.getRenderFns(),W=()=>{R();let A=(H)=>{let M=y.get(H);if(M===void 0)return;return X.dataManager.getItem(M)};_.emit("selection:change",{selected:a0(j),items:s0(j,A)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${K}-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",U.root.appendChild(Y);let b=Y;_.on("selection:change",({selected:A})=>{let H=A.length;if(H===0)b.textContent="";else if(H===1)b.textContent="1 item selected";else b.textContent=`${H} items selected`});let Z=()=>{if(X.state.isDestroyed)return;if(!U.root.matches(":focus-visible"))return;let A=X.dataManager.getTotal();if(A===0)return;let H=j.focusedIndex>=0?Math.min(j.focusedIndex,A-1):0;j=A2(j,H),j.focusVisible=!0,U.root.setAttribute("aria-activedescendant",`${G}-item-${H}`),X.scrollController.scrollTo(y0(H,X.sizeCache,X.state.viewportState.containerSize,X.dataManager.getState().total,"center",X.getCachedCompression()));let M=X.dataManager.getItem(H);if(M)X.renderer.updateItemClasses(H,j.selected.has(M.id),!0)};U.root.addEventListener("focusin",Z);let $=(A)=>{if(X.state.isDestroyed)return;let H=A.relatedTarget;if(H&&U.root.contains(H))return;let M=j.focusedIndex;if(j.focusVisible=!1,U.root.removeAttribute("aria-activedescendant"),M>=0){let D=X.dataManager.getItem(M);if(D)X.renderer.updateItemClasses(M,j.selected.has(D.id),!1)}};U.root.addEventListener("focusout",$),X.clickHandlers.push((A)=>{if(X.state.isDestroyed)return;let M=A.target.closest("[data-index]");if(!M)return;let D=parseInt(M.dataset.index??"-1",10);if(D<0)return;let C=X.dataManager.getItem(D);if(!C)return;_.emit("item:click",{item:C,index:D,event:A}),j=A2(j,D),j.focusVisible=!1,U.root.setAttribute("aria-activedescendant",`${G}-item-${D}`),j=p0(j,C.id,q),W()}),X.keydownHandlers.push((A)=>{if(X.state.isDestroyed)return;let H=X.dataManager.getTotal(),M=j.focusedIndex,D=!1,C=!1,p=j;switch(A.key){case"ArrowUp":p=v2(j,H,V.wrap),p.focusVisible=!0,D=!0,C=!0;break;case"ArrowDown":p=S2(j,H,V.wrap),p.focusVisible=!0,D=!0,C=!0;break;case"Home":p=f2(j,H),p.focusVisible=!0,D=!0,C=!0;break;case"End":p=I2(j,H),p.focusVisible=!0,D=!0,C=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let f=X.dataManager.getItem(j.focusedIndex);if(f)p=p0(j,f.id,q),p.focusVisible=!0;D=!0}break}if(D){A.preventDefault(),j=p;let f=j.focusedIndex;if(f>=0){let O=X.dataManager.getState(),u=y0(f,X.sizeCache,X.state.viewportState.containerSize,O.total,"center",X.getCachedCompression());X.scrollController.scrollTo(u),U.root.setAttribute("aria-activedescendant",`${G}-item-${f}`)}else U.root.removeAttribute("aria-activedescendant");if(C){let{selected:O}=j;if(M>=0&&M!==f){let u=X.dataManager.getItem(M);if(u)X.renderer.updateItemClasses(M,O.has(u.id),!1)}if(f>=0){let u=X.dataManager.getItem(f);if(u)X.renderer.updateItemClasses(f,O.has(u.id),!0)}}else W()}}),X.methods.set("select",(...A)=>{j=l0(j,A,q),W()}),X.methods.set("deselect",(...A)=>{j=r0(j,A),W()}),X.methods.set("toggleSelect",(A)=>{j=p0(j,A,q),W()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let A=X.getAllLoadedItems();j=M2(j,A,q),E(),W()}),X.methods.set("clearSelection",()=>{j=O2(j),W()}),X.methods.set("getSelected",()=>{return a0(j)}),X.methods.set("getSelectedItems",()=>{return s0(j,(H)=>{let M=y.get(H);if(M===void 0)return;return X.dataManager.getItem(M)})}),X.destroyHandlers.push(()=>{if(b&&b.parentNode)b.remove();U.root.removeEventListener("focusin",Z),U.root.removeEventListener("focusout",$)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var dJ=(J)=>{let q=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let Y=Q.scrollController.getScrollTop(),X=Q.getCachedCompression(),U=Q.getVirtualTotal(),_=Q.methods.get("getSelected"),V=_&&_().length>0?_():void 0;if(U===0){let E={index:0,offsetInItem:0,total:0};if(V)E.selectedIds=V;return E}let K,G;if(X.isCompressed){let R=Y/X.virtualSize*U;K=Math.max(0,Math.min(Math.floor(R),U-1)),G=(R-K)*Q.sizeCache.getSize(K)}else K=Q.sizeCache.indexAtOffset(Y),G=Y-Q.sizeCache.getOffset(K);G=Math.max(0,G);let y={index:K,offsetInItem:G,total:U};if(V)y.selectedIds=V;return y});let j=(Y)=>{let{index:X,offsetInItem:U,selectedIds:_}=Y,V=Q.getVirtualTotal();if(V===0)return;if(!Number.isFinite(X)||!Number.isFinite(U))return;if(Q.sizeCache.getTotal()!==V){Q.sizeCache.rebuild(V),Q.updateCompressionMode();let Z=Q.getCachedCompression();Q.updateContentSize(Z.virtualSize)}let G=Q.getCachedCompression(),y=Math.max(0,Math.min(X,V-1)),E;if(G.isCompressed){let Z=Q.sizeCache.getSize(y),$=Z>0?U/Z:0;E=(y+$)/V*G.virtualSize}else E=Q.sizeCache.getOffset(y)+U;let R=Q.state.viewportState.containerSize,W=Math.max(0,G.virtualSize-R);if(E=Math.max(0,Math.min(E,W)),Q.scrollController.scrollTo(E),_&&_.length>0){let Z=Q.methods.get("select");if(Z)Z(..._)}let b=Q.methods.get("loadVisibleRange");if(b)requestAnimationFrame(()=>{b()});else{let Z=Q.methods.get("reload");if(Z)requestAnimationFrame(()=>{Z()})}};if(Q.methods.set("restoreScroll",j),q)queueMicrotask(()=>{j(q)})}}};var E2=(J,q=50,Q=1/0,j=!0)=>{let Y=J,X=[],U=0,_=()=>{X=Y.map((Z,$)=>({def:Z,index:$,width:0,minWidth:w1(Z.minWidth??q,1),maxWidth:Z.maxWidth??Q,resizable:Z.resizable??j,offset:0}))},V=(Z)=>{if(X.length===0){U=0;return}let $=0,A=0;for(let H=0;H<X.length;H++){let M=X[H],D=M.def;if(D.width!==void 0)M.width=p2(D.width,M.minWidth,M.maxWidth),$+=M.width;else A++}if(A>0){let M=Math.max(0,Z-$)/A;for(let D=0;D<X.length;D++){let C=X[D];if(C.def.width===void 0)C.width=p2(M,C.minWidth,C.maxWidth)}}K()},K=()=>{let Z=0;for(let $=0;$<X.length;$++){let A=X[$];A.offset=Z,Z+=A.width}U=Z},G=(Z,$)=>{if(Z<0||Z>=X.length)return 0;let A=X[Z];if(!A.resizable)return A.width;let H=p2($,A.minWidth,A.maxWidth);return A.width=H,K(),H},y=(Z)=>{return X[Z]},E=(Z)=>{if(X.length===0)return;if(Z<0)return X[0];if(Z>=U)return X[X.length-1];let $=0,A=X.length-1;while($<A){let H=$+A>>>1,M=X[H];if(Z<M.offset)A=H-1;else if(Z>=M.offset+M.width)$=H+1;else return M}return X[$]},R=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].offset},W=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].width},b=(Z)=>{Y=Z,_()};return _(),{get columns(){return X},get totalWidth(){return U},resolve:V,updateColumns:b,resizeColumn:G,getColumn:y,getColumnAtX:E,getColumnOffset:R,getColumnWidth:W}},p2=(J,q,Q)=>Math.min(Q,Math.max(q,J)),w1=(J,q)=>Math.max(q,J);var F2=(J,q,Q,j,Y,X,U)=>{let _=document.createElement("div");_.className=`${j}-table-header`,_.setAttribute("role","row"),_.setAttribute("aria-rowindex","1"),_.style.height=`${Q}px`;let V=document.createElement("div");V.className=`${j}-table-header-scroll`,_.appendChild(V),J.insertBefore(_,J.firstChild),q.style.position="absolute",q.style.top=`${Q}px`,q.style.left="0",q.style.right="0",q.style.bottom="0",q.style.height="auto";let K=[],G=[],y=[],E=!0,R=null,W="asc",b=null,Z=!1,$=-1,A=0,H=0,M=(P,F)=>{let N=document.createElement("div");N.className=`${j}-table-header-cell`,N.setAttribute("role","columnheader"),N.setAttribute("aria-colindex",String(F+1)),N.dataset.columnKey=P.def.key;let k=P.def.align;if(k==="center")N.classList.add(`${j}-table-header-cell--center`);else if(k==="right")N.classList.add(`${j}-table-header-cell--right`);let L=document.createElement("div");L.className=`${j}-table-header-content`;let w=P.def.header?P.def.header(P.def):P.def.label;if(typeof w==="string")L.textContent=w;else L.appendChild(w);if(N.appendChild(L),P.def.sortable){let d=document.createElement("span");d.className=`${j}-table-header-sort`,d.setAttribute("aria-hidden","true"),N.appendChild(d),y.push(d),N.classList.add(`${j}-table-header-cell--sortable`)}else y.push(null);if(P.resizable){let d=document.createElement("div");d.className=`${j}-table-header-resize`,d.dataset.resizeIndex=String(F),N.appendChild(d),G.push(d)}return N},D=(P)=>{b=P,V.textContent="",K=[],G=[],y=[];let F=P.columns;for(let N=0;N<F.length;N++){let k=F[N],L=M(k,N);K.push(L),V.appendChild(L)}if(C(P),R)p(R,W)},C=(P)=>{b=P;let F=P.columns;V.style.width=`${P.totalWidth}px`;for(let N=0;N<K.length&&N<F.length;N++){let k=K[N],L=F[N];k.style.width=`${L.width}px`}},p=(P,F)=>{if(R=P,W=F,!b)return;let N=b.columns;for(let k=0;k<y.length&&k<N.length;k++){let L=y[k];if(!L)continue;if(N[k].def.key===P&&P!==null)L.textContent=F==="asc"?"▲":"▼",L.style.opacity="0.7",K[k].setAttribute("aria-sort",F==="asc"?"ascending":"descending");else L.textContent="",L.style.opacity="0",K[k].removeAttribute("aria-sort")}},f=(P)=>{V.style.transform=`translateX(${-P}px)`},O=(P)=>{let F=P.target;if(!F.dataset.resizeIndex)return;if(P.preventDefault(),P.stopPropagation(),$=parseInt(F.dataset.resizeIndex,10),!b)return;let N=b.getColumn($);if(!N||!N.resizable)return;Z=!0,A=P.clientX,H=N.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",F.classList.add(`${j}-table-header-resize--active`),F.setPointerCapture(P.pointerId),F.addEventListener("pointermove",u),F.addEventListener("pointerup",i),F.addEventListener("pointercancel",i)},u=(P)=>{if(!Z||!b)return;let F=P.clientX-A;if(Math.abs(F)<1)return;let N=Math.max(0,H+F);Y($,N)},i=(P)=>{if(!Z)return;let F=P.target;F.removeEventListener("pointermove",u),F.removeEventListener("pointerup",i),F.removeEventListener("pointercancel",i);try{F.releasePointerCapture(P.pointerId)}catch{}F.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",Z=!1,$=-1},m=(P)=>{let F=P.target;if(F.dataset.resizeIndex!==void 0)return;if(Z)return;let N=F;while(N&&!N.dataset.columnKey)if(N=N.parentElement,N===_||N===null)return;if(!N||!N.dataset.columnKey)return;let k=N.dataset.columnKey;if(!b)return;let L=b.columns,w=-1;for(let T=0;T<L.length;T++)if(L[T].def.key===k){w=T;break}if(w===-1)return;let d=L[w];if(U)U({key:k,index:w,event:P});if(d.def.sortable&&X){let T;if(R===k)if(W==="asc")T="desc";else T=null;else T="asc";X({key:k,index:w,direction:T})}};return _.addEventListener("pointerdown",O),_.addEventListener("click",m),{element:_,update:C,updateSort:p,rebuild:D,show:()=>{if(E)return;E=!0,_.style.display=""},hide:()=>{if(!E)return;E=!1,_.style.display="none"},destroy:()=>{_.removeEventListener("pointerdown",O),_.removeEventListener("click",m),q.style.position="",q.style.top="",q.style.left="",q.style.right="",q.style.bottom="",_.remove(),K=[],G=[],y=[],b=null,E=!1},syncScroll:f}};var v1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;return document.createElement("div")},release:(X)=>{if(X.parentNode)X.parentNode.removeChild(X);if(q.length<J)X.className="",X.removeAttribute("data-id"),X.removeAttribute("data-index"),X.removeAttribute("aria-selected"),X.removeAttribute("aria-rowindex"),X.removeAttribute("role"),X.style.cssText="",X.textContent="",q.push(X)},clear:()=>{q.length=0}}};var L2=(J,q,Q,j,Y,X,U,_)=>{let V=v1(),K=new Map,G=0,y=-1,E=Q,R=(F,N)=>{if(N)F.setAttribute("aria-selected","true");else F.removeAttribute("aria-selected")},W=`${Y}-item ${Y}-table-row`,b=`${Y}-item--selected`,Z=`${Y}-item--focused`,$=`${Y}-table-cell`,A=`${Y}-table-cell--center`,H=`${Y}-table-cell--right`,M=`${Y}-item--odd`,D=(F,N,k,L)=>{if(k.def.cell){let w=k.def.cell(N,k.def,L);if(typeof w==="string")F.innerHTML=w;else F.replaceChildren(w)}else{let w=N[k.def.key];F.textContent=w!=null?String(w):""}},C=(F,N,k,L)=>{let w=W;if(_&&(N&1)===1)w+=` ${M}`;if(k)w+=` ${b}`;if(L)w+=` ${Z}`;F.className=w},p=(F,N)=>{let k=N.def.align;if(k==="center")F.classList.add(A),F.classList.remove(H);else if(k==="right")F.classList.add(H),F.classList.remove(A);else F.classList.remove(A,H)},f=(F,N)=>{let L=E.columns.length;if(N.length===L)return N;let w=[];for(let d=0;d<L;d++){let T;if(d<N.length)T=N[d];else T=document.createElement("div"),T.className=$,F.appendChild(T);w.push(T)}for(let d=L;d<N.length;d++)N[d].remove();return w},O=(F,N,k,L)=>{let w=V.acquire();w.style.width=`${E.totalWidth}px`;let d=q.getSize(N);w.style.height=`${d}px`,C(w,N,k,L),w.setAttribute("role","row"),w.setAttribute("data-id",String(F.id)),w.setAttribute("data-index",String(N)),w.id=`${X}-${N}`,w.setAttribute("aria-rowindex",String(N+2));let T=U();if(T!==y)y=T;R(w,k);let v=f(w,[]),I=E.columns;for(let S=0;S<v.length&&S<I.length;S++){let x=v[S],c=I[S];x.style.left=`${c.offset}px`,x.style.width=`${c.width}px`,x.setAttribute("role","gridcell"),x.setAttribute("aria-colindex",String(S+1)),p(x,c),D(x,F,c,N)}let g=q.getOffset(N);return w.style.transform=`translateY(${g}px)`,{element:w,cells:v,index:N,lastItemId:F.id,lastSelected:k,lastFocused:L,lastOffset:g,lastSeenFrame:G}},u=(F,N,k,L)=>{G++;for(let[v,I]of K)if(v>=N.start&&v<=N.end)I.lastSeenFrame=G;else if(G-I.lastSeenFrame>2)V.release(I.element),K.delete(v);let w=!1,d=U();if(d!==y)y=d,w=!0;let T=null;for(let v=N.start;v<=N.end;v++){let I=v-N.start,g=F[I];if(!g)continue;let S=k.has(g.id),x=v===L,c=K.get(v);if(c){let t=c.lastItemId!==g.id,e=c.lastSelected!==S,K0=c.lastFocused!==x;if(t){let s=E.columns;for(let J0=0;J0<c.cells.length&&J0<s.length;J0++)D(c.cells[J0],g,s[J0],v);C(c.element,v,S,x),c.element.setAttribute("data-id",String(g.id)),R(c.element,S),c.lastItemId=g.id,c.lastSelected=S,c.lastFocused=x}else if(e||K0)C(c.element,v,S,x),R(c.element,S),c.lastSelected=S,c.lastFocused=x;let U0=q.getOffset(v);if(c.lastOffset!==U0)c.lastOffset=U0,c.element.style.transform=`translateY(${U0}px)`;let a=q.getSize(v);if(c.element.style.height=`${a}px`,c.element.style.width=`${E.totalWidth}px`,w)c.element.setAttribute("aria-rowindex",String(v+2));c.lastSeenFrame=G}else{let t=O(g,v,S,x);if(K.set(v,t),!T)T=document.createDocumentFragment();T.appendChild(t.element)}}if(T)J.appendChild(T)},i=(F,N,k,L)=>{let w=K.get(F);if(!w)return;let d=w.lastItemId!==N.id,T=w.lastSelected!==k,v=w.lastFocused!==L;if(d||T||v){if(d){let I=E.columns;for(let g=0;g<w.cells.length&&g<I.length;g++)D(w.cells[g],N,I[g],F);w.element.setAttribute("data-id",String(N.id)),w.lastItemId=N.id}C(w.element,F,k,L),R(w.element,k),w.lastSelected=k,w.lastFocused=L}},m=(F,N,k)=>{let L=K.get(F);if(!L)return;let w=L.lastSelected!==N,d=L.lastFocused!==k;if(w||d)C(L.element,F,N,k),R(L.element,N),L.lastSelected=N,L.lastFocused=k},l=(F)=>{E=F;let N=F.columns;for(let[,k]of K){k.element.style.width=`${F.totalWidth}px`;for(let L=0;L<k.cells.length&&L<N.length;L++){let w=k.cells[L],d=N[L];w.style.left=`${d.offset}px`,w.style.width=`${d.width}px`}}},h=(F)=>{return K.get(F)?.element},B=()=>{for(let[,F]of K)V.release(F.element);K.clear(),G=0,y=-1};return{render:u,updateItem:i,updateItemClasses:m,getElement:h,updateColumnLayout:l,clear:B,destroy:()=>{B(),V.clear()}}};var S1=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 q=null,Q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:X,emitter:U,config:_}=Y,{classPrefix:V}=_;if(_.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(_.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let K=J.resizable??!0,G=J.minColumnWidth??50,y=J.maxColumnWidth??1/0,E=J.columnBorders??!1,R=J.rowBorders??!0,W=J.rowHeight,b=J.headerHeight??(typeof W==="number"?W:40),Z=J.sort?.key??null,$=J.sort?.direction??"asc";if(q=E2(J.columns,G,y,K),typeof W==="function")Y.setSizeConfig(W);else if(typeof W==="number")Y.setSizeConfig(W);if(Y.rebuildSizeCache(),X.root.classList.add(`${V}--table`),R)X.root.classList.add(`${V}--table-row-borders`);if(E)X.root.classList.add(`${V}--table-col-borders`);X.items.setAttribute("role","grid"),X.items.setAttribute("aria-colcount",String(J.columns.length));let A=Y.getContainerWidth();q.resolve(A);let H=(T,v)=>{if(!q)return;let I=q.getColumn(T);if(!I)return;let g=I.width,S=q.resizeColumn(T,v);if(Q)Q.update(q);if(j)j.updateColumnLayout(q);C(),U.emit("column:resize",{key:I.def.key,index:T,previousWidth:g,width:S})},M=(T)=>{if(T.direction===null)Z=null,$="asc";else Z=T.key,$=T.direction;if(Q)Q.updateSort(Z,$);U.emit("column:sort",T)},D=(T)=>{U.emit("column:click",T)};if(Q=F2(X.root,X.viewport,b,V,H,M,D),Q.rebuild(q),Z)Q.updateSort(Z,$);let C=()=>{if(!q)return;let T=q.totalWidth;X.content.style.minWidth=`${T}px`,X.items.style.minWidth=`${T}px`};C(),j=L2(X.items,Y.sizeCache,q,J.columns,V,_.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped);let p=null,f=null,O=!1,u=()=>{if(O)return;O=!0,p=Y.methods.get("_getSelectedIds")??null,f=Y.methods.get("_getFocusedIndex")??null},i=-1,m=-1,l=!0,h=_.overscan??3,B={start:0,end:0},P={start:0,end:0},F=()=>{if(Y.state.isDestroyed)return;let T=Y.scrollController.getScrollTop(),v=Y.state.viewportState.containerSize;if(!l&&T===i&&v===m)return;i=T,m=v,l=!1;let I=Y.getVirtualTotal();if(I===0||v===0)B.start=0,B.end=0;else{B.start=Math.max(0,Y.sizeCache.indexAtOffset(T));let e=Y.sizeCache.indexAtOffset(T+v);if(e<I-1)e++;B.end=Math.min(I-1,Math.max(0,e))}P.start=Math.max(0,B.start-h),P.end=Math.min(I-1,B.end+h);let g=Y.state.viewportState;g.scrollPosition=T,g.visibleRange.start=B.start,g.visibleRange.end=B.end,g.renderRange.start=P.start,g.renderRange.end=P.end;let S=Y.state.lastRenderRange,x=Y.dataManager.getItemsInRange(P.start,P.end);u();let c=p?p():S1,t=f?f():-1;if(j.render(x,P,c,t),S.start!==P.start||S.end!==P.end)S.start=P.start,S.end=P.end,U.emit("range:change",{range:{start:P.start,end:P.end}})},N=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,l=!0,F()};Y.setRenderFns(F,N);let k=Q,L=-1,w=()=>{let T=X.viewport.scrollLeft;if(T!==L){if(L=T,k.syncScroll)k.syncScroll(T)}};Y.afterScroll.push(()=>{w()});let d=()=>{w()};X.viewport.addEventListener("scroll",d,{passive:!0}),Y.resizeHandlers.push((T,v)=>{if(!q)return;if(q.resolve(T),Q)Q.update(q);if(j)j.updateColumnLayout(q);C()}),Y.methods.set("updateColumns",(T)=>{if(!q||!Q)return;if(q.updateColumns(T),q.resolve(Y.getContainerWidth()),Q.rebuild(q),Z)Q.updateSort(Z,$);if(C(),j)j.updateColumnLayout(q),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(T,v)=>{if(!q)return;let I;if(typeof T==="string"){let g=q.columns;I=-1;for(let S=0;S<g.length;S++)if(g[S].def.key===T){I=S;break}if(I===-1)return}else I=T;H(I,v)}),Y.methods.set("getColumnWidths",()=>{if(!q)return{};let T={},v=q.columns;for(let I=0;I<v.length;I++)T[v[I].def.key]=v[I].width;return T}),Y.methods.set("setSort",(T,v)=>{if(Z=T,$=v??"asc",Q)Q.updateSort(Z,$)}),Y.methods.set("getSort",()=>{return{key:Z,direction:$}}),Y.methods.set("_getTableLayout",()=>q),Y.contentSizeHandlers.push(()=>{C()}),Y.destroyHandlers.push(()=>{if(X.viewport.removeEventListener("scroll",d),Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null;X.content.style.minWidth="",X.items.style.minWidth="",X.root.classList.remove(`${V}--table`),X.items.setAttribute("role","listbox"),X.items.removeAttribute("aria-colcount")})},destroy(){if(Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null}}};export{cJ as withTable,dJ as withSnapshots,mJ as withSelection,AJ as withScrollbar,LJ as withScale,HJ as withPage,gJ as withMasonry,hJ as withGroups,uJ as withGrid,TJ as withAsync,YJ as vlist,p0 as toggleSelection,kJ as simpleVisibleRange,l0 as selectItems,M2 as selectAll,vJ as rangesEqual,X2 as rafThrottle,WJ as needsScaling,K2 as mergeRanges,xJ as isSelected,R0 as isPlaceholderItem,SJ as isInRange,z0 as isGroupHeader,s0 as getSelectedItems,a0 as getSelectedIds,L0 as getScaleState,OJ as getScaleInfo,L0 as getScale,fJ as getRangeCount,MJ as getMaxItemsWithoutScaling,C2 as filterPlaceholders,IJ as diffRanges,r0 as deselectItems,L2 as createTableRenderer,E2 as createTableLayout,F2 as createTableHeader,N2 as createStickyHeader,Y2 as createSparseStorage,$0 as createSizeCache,W2 as createSelectionState,I0 as createScrollbar,FJ as createScrollController,B2 as createPlaceholderManager,t0 as createMeasuredSizeCache,G2 as createMasonryRenderer,V2 as createMasonryLayout,d0 as createGroupedSizeFn,Z2 as createGroupLayout,c0 as createGridRenderer,D2 as createGridLayout,e0 as createEmitter,U2 as createAsyncManager,O2 as clearSelection,wJ as clampScrollPosition,RJ as calculateTotalSize,y0 as calculateScrollToIndex,J2 as calculateScaledVisibleRange,Q2 as calculateScaledScrollToIndex,VJ as calculateScaledRenderRange,f0 as calculateScaledItemPosition,yJ as calculateRenderRange,x0 as calculateMissingRanges,CJ as calculateItemOffset,GJ as calculateIndexFromScrollPosition,zJ as calculateActualSize,m0 as buildLayoutItems,k0 as MAX_VIRTUAL_SIZE,DJ as MAX_VIRTUAL_HEIGHT};
1
+ var{defineProperty:$2,getOwnPropertyNames:B1,getOwnPropertyDescriptor:U1}=Object,Z1=Object.prototype.hasOwnProperty;var c2=new WeakMap,N1=(J)=>{var q=c2.get(J),Q;if(q)return q;if(q=$2({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")B1(J).map((j)=>!Z1.call(q,j)&&$2(q,j,{get:()=>J[j],enumerable:!(Q=U1(J,j))||Q.enumerable}));return c2.set(J,q),q};var _1=(J,q)=>{for(var Q in q)$2(J,Q,{get:q[Q],enumerable:!0,configurable:!0,set:(j)=>q[Q]=()=>j})};var l2=(J,q)=>()=>(J&&(q=J(J=0)),q);var D1=(J,q)=>{let Q=q;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}},V1=(J,q)=>{let Q=q,j=new Float64Array(0),Y=(U)=>{Q=U,j=new Float64Array(U+1),j[0]=0;for(let _=0;_<U;_++)j[_+1]=j[_]+J(_)};Y(q);let X=(U)=>{if(Q===0)return 0;if(U<=0)return 0;if(U>=j[Q])return Q-1;let _=0,D=Q-1;while(_<D){let K=_+D+1>>>1;if(j[K]<=U)_=K;else D=K-1}return _};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Q)return j[Q];return j[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>X(U),getTotalSize:()=>j[Q]??0,getTotal:()=>Q,rebuild:(U)=>Y(U),isVariable:()=>!0}},$0=(J,q)=>{if(typeof J==="number")return D1(J,q);return V1(J,q)},g0=(J,q,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getSize(0));let Y=0,X=0,U=q;while(U<j&&X<Q)X+=J.getSize(U),Y++,U++;return Math.max(1,Y)},i0=(J,q,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(q/J.getSize(0));let j=0,Y=0;for(let X=Q-1;X>=0;X--){let U=J.getSize(X);if(Y+U>q)break;Y+=U,j++}return Math.max(j,1)},y2=(J,q,Q)=>{if(Q===0)return 0;let j=Math.floor(q),Y=q-j,X=Math.max(0,Math.min(j,Q-1));return J.getOffset(X)+Y*J.getSize(X)};var R2=200,S0=50,KJ=5,BJ=2,UJ=50,k0=16000000,ZJ="x",NJ=20,z2="_isPlaceholder",_J="__placeholder_";var DJ,L0=(J,q)=>{let Q=q.getTotalSize(),j=Q>k0,Y=j?k0:Q,X=Q>0?Y/Q:1;return{isCompressed:j,actualSize:Q,virtualSize:Y,ratio:X}},J2=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;if(!Y.isCompressed){let M=Q.indexAtOffset(J),b=Q.indexAtOffset(J+q);if(b<j-1)b++;return X.start=Math.max(0,M),X.end=Math.min(j-1,Math.max(0,b)),X}let{virtualSize:U}=Y,D=J/U*j,K=Math.floor(D),V=g0(Q,Math.max(0,K),q,j),k=Math.ceil(D)+V,z=U-q-J;if(z<=q&&z>=-1){let M=i0(Q,q,j),b=Math.max(0,j-M),Z=Math.max(0,Math.min(1,1-z/q));K=Math.floor(K+(b-K)*Z),k=z<=1?j-1:Math.min(j-1,K+V)}return X.start=Math.max(0,K),X.end=Math.min(j-1,Math.max(0,k)),X},VJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},f0=(J,q,Q,j,Y,X,U)=>{if(!X.isCompressed||j===0)return Q.getOffset(J);let{virtualSize:_}=X,D=_-Y,K=D-q;if(K<=Y&&K>=-1){if(q>=D-1){let P=Q.getTotalSize()-Q.getOffset(J);return Y-P}let z=i0(Q,Y,j),M=Math.max(0,j-z),Z=q/_*j,A=Math.max(0,Math.min(1,1-K/Y)),H=Q.getOffset(J)-Q.getOffset(M),E=Q.getOffset(J)-y2(Q,Z,j);return E+(H-E)*A}let V=q/_,k=Q.getTotalSize(),L=V*k;return Q.getOffset(J)-L},Q2=(J,q,Q,j,Y,X="start")=>{if(j===0)return 0;let U;if(Y.isCompressed){if(X==="end"&&J===j-1)return Math.max(0,Y.virtualSize-Q);U=J/j*Y.virtualSize}else U=q.getOffset(J);let _=q.getSize(J);switch(X){case"center":U-=(Q-_)/2;break;case"end":U-=Q-_;break}let D=Y.virtualSize-Q;return Math.max(0,Math.min(U,D))},GJ=(J,q,Q,j)=>{if(Q===0)return 0;if(j.isCompressed){let Y=J/j.virtualSize;return Math.floor(Y*Q)}return q.indexAtOffset(J)},WJ=(J,q)=>{if(typeof q==="number")return J*q>k0;return q.getTotalSize()>k0},MJ=(J)=>{if(J<=0)return 0;return Math.floor(k0/J)},OJ=(J,q)=>{let Q=L0(J,q);if(!Q.isCompressed)return`No compression needed (${J} items, ${(Q.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${J} items, ${(Q.actualSize/1e6).toFixed(1)}M px → ${(Q.virtualSize/1e6).toFixed(1)}M px virtual)`};var j2=l2(()=>{DJ=k0});var z0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var pJ={};_1(pJ,{createGridRenderer:()=>c0});var y1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-row"),X.removeAttribute("data-col"),q.push(X)},clear:()=>{q.length=0}}},P1=2,c0=(J,q,Q,j,Y,X,U,_,D=!1)=>{let K=y1(),V=new Map,k=X,L=!1,z=null,M=0,b=0,Z="",A=-1,H=(T)=>{if(z&&M===T)return z;return z=L0(T,Q),M=T,z},E={selected:!1,focused:!1},P=(T,S)=>{return E.selected=T,E.focused=S,E},G=`${Y}-item ${Y}-grid-item`,C=`${Y}-item--selected`,p=`${Y}-item--focused`,w=(T,S)=>{if(typeof S==="string")T.innerHTML=S;else T.replaceChildren(S)},W=(T,S,h)=>{T.classList.toggle(C,S),T.classList.toggle(p,h)},I=(T,S)=>{let h=j.getRow(T);if(S){let g=S.totalItems,f=H(g);if(f.isCompressed)return f0(h,S.scrollPosition,Q,g,S.containerSize,f,S.rangeStart)}return Q.getOffset(h)},t=(T,S)=>{let h=L&&j.getCol(T)===0,g=h?0:j.getCol(T),f=h?0:j.getColumnOffset(g,k),x;if(L){let c=j.getRow(T),i=0,e=new Set;for(let K0=0;K0<T;K0++){let U0=j.getRow(K0);if(U0<c&&!e.has(U0)){let a=Q.getSize(K0);i+=a,e.add(U0)}}x=i}else x=I(T,S);if(D)return`translate(${Math.round(x)}px, ${Math.round(f)}px)`;return`translate(${Math.round(f)}px, ${Math.round(x)}px)`},d=(T,S)=>{T.style.transform=S},l=(T,S)=>{let h=T.dataset.id?.startsWith("__group_header"),g=h?k:j.getColumnWidth(k),f;if(L||h)f=Q.getSize(S)-j.gap;else{let x=j.getRow(S);f=Q.getSize(x)-j.gap}if(D)T.style.width=`${f}px`,T.style.height=`${g}px`;else T.style.width=`${g}px`,T.style.height=`${f}px`},u=(T,S,h,g,f)=>{let x=K.acquire(),c=P(h,g);if(x.className=G,x.dataset.index=String(T),x.dataset.id=String(S.id),x.dataset.row=String(j.getRow(T)),x.dataset.col=String(j.getCol(T)),x.ariaSelected=String(h),_)x.id=`${_}-item-${T}`;if(U){let e=U();if(e!==A)A=e,Z=String(e);x.setAttribute("aria-setsize",Z),x.setAttribute("aria-posinset",String(T+1))}l(x,T);let i=q(S,T,c);return w(x,i),W(x,h,g),d(x,f),{element:x,lastItemId:S.id,lastSelected:h,lastFocused:g,lastTransform:f,lastSeenFrame:b}},B=(T,S,h,g,f)=>{if(b++,S.start===0&&T.length>0)L=z0(T[0]);for(let[i,e]of V)if(i>=S.start&&i<=S.end)e.lastSeenFrame=b;else if(b-e.lastSeenFrame>P1)K.release(e.element),V.delete(i);let x=!1;if(U){let i=U();if(i!==A)A=i,Z=String(i),x=!0}let c=null;for(let i=S.start;i<=S.end;i++){let e=i-S.start,K0=T[e];if(!K0){console.warn(`⚠️ RENDER: Missing item at index ${i} (range: ${S.start}-${S.end}, items.length: ${T.length})`);continue}let U0=h.has(K0.id),a=i===g,s=V.get(i);if(s){let J0=s.lastItemId!==K0.id,Y0=s.lastSelected!==U0,_0=s.lastFocused!==a;if(J0||Y0||_0){if(J0){let j0=P(U0,a),E0=q(K0,i,j0);w(s.element,E0),s.element.dataset.id=String(K0.id),s.element.dataset.row=String(j.getRow(i)),s.element.dataset.col=String(j.getCol(i)),l(s.element,i)}W(s.element,U0,a),s.element.ariaSelected=String(U0),s.lastItemId=K0.id,s.lastSelected=U0,s.lastFocused=a}let Z0=t(i,f);if(s.lastTransform!==Z0)d(s.element,Z0),s.lastTransform=Z0;if(x)s.element.setAttribute("aria-setsize",Z)}else{let J0=t(i,f),Y0=u(i,K0,U0,a,J0);if(!c)c=document.createDocumentFragment();c.appendChild(Y0.element),V.set(i,Y0)}}if(c)J.appendChild(c)},y=(T)=>{for(let[S,h]of V){let g=t(S,T);if(h.lastTransform!==g)d(h.element,g),h.lastTransform=g}},O=(T,S,h,g)=>{let f=V.get(T);if(!f)return;let x=f.lastItemId!==S.id,c=f.lastSelected!==h,i=f.lastFocused!==g;if(x||c||i){let e=P(h,g),K0=q(S,T,e);w(f.element,K0),W(f.element,h,g),f.element.dataset.id=String(S.id),f.element.ariaSelected=String(h),l(f.element,T),f.lastItemId=S.id,f.lastSelected=h,f.lastFocused=g}},N=(T,S,h)=>{let g=V.get(T);if(!g)return;let f=g.lastSelected!==S,x=g.lastFocused!==h;if(f||x)W(g.element,S,h),g.lastSelected=S,g.lastFocused=h},$=(T)=>{return V.get(T)?.element},F=(T)=>{if(Math.abs(T-k)<1)return;k=T;for(let[S,h]of V){l(h.element,S);let g=t(S);d(h.element,g),h.lastTransform=g}},v=()=>{for(let[,T]of V)K.release(T.element);V.clear()};return{render:B,updatePositions:y,updateItem:O,updateItemClasses:N,getElement:$,updateContainerWidth:F,clear:v,destroy:()=>{v(),K.clear()}}};var _2=l2(()=>{j2()});var r2=2,a2=(J=0)=>{let q=[,,,,,];for(let Q=0;Q<5;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},k2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+5)%5,U=J.samples[X],_=q-U.position,D=Q-U.time;J.velocity=D>0?Math.abs(_)/D:0}return J.lastPosition=q,J.lastTime=Q,J};var t0=(J,q)=>{let Q=new Map,j=(X)=>{let U=Q.get(X);return U!==void 0?U:J},Y=$0(j,q);return{getOffset(X){return Y.getOffset(X)},getSize(X){return j(X)},indexAtOffset(X){return Y.indexAtOffset(X)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(X){if(X<Y.getTotal()){for(let U of Q.keys())if(U>=X)Q.delete(U)}Y=$0(j,X)},isVariable(){return!0},setMeasuredSize(X,U){Q.set(X,U)},isMeasured(X){return Q.has(X)},getEstimatedSize(){return J},measuredCount(){return Q.size}}};var e0=()=>{let J={},q=(_,D)=>{if(!J[_])J[_]=new Set;return J[_].add(D),()=>Q(_,D)},Q=(_,D)=>{J[_]?.delete(D)};return{on:q,off:Q,emit:(_,D)=>{J[_]?.forEach((K)=>{try{K(D)}catch(V){console.error(`[vlist] Error in event handler for "${String(_)}":`,V)}})},once:(_,D)=>{let K=(V)=>{Q(_,K),D(V)};return q(_,K)},clear:(_)=>{if(_)delete J[_];else for(let D in J)delete J[D]},listenerCount:(_)=>{return J[_]?.size??0}}};var s2=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist/builder] Container not found: ${J}`);return q}return J},n2=(J,q,Q,j)=>{let Y=document.createElement("div");if(Y.className=q,j)Y.classList.add(`${q}--horizontal`);Y.setAttribute("tabindex","0");let X=document.createElement("div");if(X.className=`${q}-viewport`,X.setAttribute("tabindex","-1"),j)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let U=document.createElement("div");if(U.className=`${q}-content`,U.style.position="relative",j)U.style.height="100%";else U.style.width="100%";let _=document.createElement("div");if(_.className=`${q}-items`,_.setAttribute("role","listbox"),Q)_.setAttribute("aria-label",Q);if(j)_.setAttribute("aria-orientation","horizontal");if(_.style.position="relative",j)_.style.height="100%";else _.style.width="100%";return U.appendChild(_),X.appendChild(U),Y.appendChild(X),J.appendChild(Y),{root:Y,viewport:X,content:U,items:_}};var o2=(J=100)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(q.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),q.push(Q)},clear:()=>{q.length=0}}};var i2=(J,q,Q,j,Y)=>{if(j===0||q===0){Y.start=0,Y.end=0;return}let X=Q.indexAtOffset(J),U=g0(Q,X,q,j),_=X+U;Y.start=Math.max(0,X),Y.end=Math.min(j-1,Math.max(0,_))},t2=(J,q,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q)},e2=(J,q,Q,j,Y)=>{if(j===0)return 0;let X=Math.max(0,Math.min(J,j-1)),U=q.getOffset(X),_=q.getSize(X),D=Math.max(0,q.getTotalSize()-Q),K;switch(Y){case"center":K=U-(Q-_)/2;break;case"end":K=U-Q+_;break;default:K=U}return Math.max(0,Math.min(K,D))};var P2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,v0=(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}},JJ=(J,q)=>{let Q=null,j=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null};return{animateScroll:(X,U,_)=>{if(j(),Math.abs(U-X)<1){J.scrollTo(U);return}let D=performance.now(),K=(V)=>{let k=V-D,L=Math.min(k/_,1),z=X+(U-X)*P2(L);if(J.scrollTo(z),q(),L<1)Q=requestAnimationFrame(K);else Q=null};Q=requestAnimationFrame(K)},cancelScroll:j}};var QJ=(J,q)=>{let{dom:Q,emitter:j,resolvedConfig:Y,rawConfig:X,rendered:U,pool:_,sharedState:D,isHorizontal:K,classPrefix:V,contentSizeHandlers:k,afterScroll:L,clickHandlers:z,keydownHandlers:M,resizeHandlers:b,destroyHandlers:Z,methods:A,onScrollFrame:H,resizeObserver:E,renderRange:P}=q;return{get dom(){return Q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return X},get renderer(){return{render:(G,C,p,w,W)=>{J.ss=p,J.fi=w,J.ffn()},updateItemClasses:(G,C,p)=>{let w=U.get(G);if(!w)return;w.classList.toggle(`${V}-item--selected`,C),w.classList.toggle(`${V}-item--focused`,p),w.ariaSelected=C?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(G)=>U.get(G)??null,clear:()=>{},destroy:()=>{}}},set renderer(G){},get dataManager(){return J.dm},set dataManager(G){J.dm=G},get scrollController(){return J.sc},set scrollController(G){J.sc=G},state:D,getContainerWidth(){return J.cw},afterScroll:L,clickHandlers:z,keydownHandlers:M,resizeHandlers:b,contentSizeHandlers:k,destroyHandlers:Z,methods:A,replaceTemplate(G){J.at=G},replaceRenderer(G){},replaceDataManager(G){J.dm=G},replaceScrollController(G){J.sc=G},getItemsForRange(G){let{dm:C,it:p}=J,w=[];for(let W=G.start;W<=G.end;W++){let I=C?C.getItem(W):p[W];if(I)w.push(I)}return w},getAllLoadedItems(){let G=J.dm;if(G){let C=G.getTotal(),p=[];for(let w=0;w<C;w++){let W=G.getItem(w);if(W)p.push(W)}return p}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let G=J.hc;return{isCompressed:!1,actualSize:G.getTotalSize(),virtualSize:G.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:P.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,G]of U)G.remove(),_.release(G);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(G,C){J.rfn=G,J.ffn=C},setVirtualTotalFn(G){J.vtf=G},rebuildSizeCache(G){J.hc.rebuild(G??J.vtf())},setSizeConfig(G){J.hc=$0(G,J.vtf())},updateContentSize(G){let C=`${G}px`;if(K)Q.content.style.width=C;else Q.content.style.height=C},updateCompressionMode(){},setVisibleRangeFn(G){J.gvr=G},setScrollToPosFn(G){J.gsp=G},setPositionElementFn(G){J.pef=G},setScrollFns(G,C){J.sgt=G,J.sst=(p)=>{C(p),H()}},setScrollTarget(G){J.st.removeEventListener("scroll",H),J.st=G,J.st.addEventListener("scroll",H,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(G){J.gcw=G.width,J.gch=G.height,J.cw=G.width(),J.ch=G.height(),D.viewportState.containerSize=K?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,E.unobserve(Q.viewport)},disableWheelHandler(){if(J.wh)Q.viewport.removeEventListener("wheel",J.wh),J.wh=null}}},jJ=(J,q,Q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:X,applyTemplate:U,updateContentSize:_}=q,D=()=>{J.hc.rebuild(J.vtf()),_(),Q.updateCompressionMode();for(let K=0;K<X.length;K++)X[K]();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:(K)=>J.it[K],isItemLoaded:(K)=>K>=0&&K<J.it.length&&J.it[K]!==void 0,getItemsInRange:(K,V)=>{let k=J.it,L=[],z=Math.max(0,K),M=Math.min(V,k.length-1);for(let b=z;b<=M;b++)L.push(k[b]);return L},setTotal:(K)=>{},setItems:(K,V=0,k)=>{let L=J.it;if(V===0&&(k!==void 0||L.length===0))J.it=K;else{let z=V+K.length;if(L.length<z)L.length=z;for(let M=0;M<K.length;M++)L[V+M]=K[M]}if(J.ii)D()},updateItem:(K,V)=>{let k=J.it;if(K<0||K>=k.length)return!1;let L=k[K];if(!L)return!1;k[K]={...L,...V};let z=j.get(K);if(z)U(z,J.at(k[K],K,Y)),z.dataset.id=String(k[K].id);return!0},removeItem:(K)=>{if(K<0||K>=J.it.length)return!1;if(J.it.splice(K,1),J.ii)D();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),_(),J.ffn()}}},qJ=(J,q)=>{let{dom:Q,classPrefix:j}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let X=J.sgt()+Y;J.sst(X),J.ls=X,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),X=Math.max(0,Y-J.ch);return X>0?J.ls/X: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 G1=3,W1="vlist",XJ=150,M1=0,YJ=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let q=J.orientation==="horizontal",Q=q?"width":"height",j=q?"estimatedWidth":"estimatedHeight",Y=q?J.item.width:J.item.height,X=q?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&X==null)throw Error(`[vlist/builder] item.${Q} or item.${j} is required${q?" 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(X!=null){if(typeof X!=="number"||X<=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(q&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let U=new Map,_=!1,D={use(K){if(_)throw Error("[vlist/builder] Cannot call .use() after .build()");return U.set(K.name,K),D},build(){if(_)throw Error("[vlist/builder] .build() can only be called once");return _=!0,O1(J,U,q,Y,X??null)}};return D};function O1(J,q,Q,j,Y){let{item:X,items:U,overscan:_=G1,classPrefix:D=W1,ariaLabel:K,reverse:V=!1,scroll:k}=J,L=k,z=L?.wheel??!0,M=L?.wrap??!1,b=V,Z=`${D}-${M1++}`,A=j??Y,H=j==null&&Y!=null,E=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||navigator.maxTouchPoints&&navigator.maxTouchPoints>2,P=Q?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,G={overscan:_,classPrefix:D,reverse:b,wrap:M,horizontal:Q,ariaIdPrefix:Z},C=Array.from(q.values()).sort((R,r)=>(R.priority??50)-(r.priority??50)),p=new Set(C.map((R)=>R.name));for(let R of C)if(R.conflicts){for(let r of R.conflicts)if(p.has(r))throw Error(`[vlist/builder] ${R.name} and ${r} cannot be combined`)}if(b){if(p.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let w=s2(J.container),W=n2(w,D,K,Q);if(L?.wheel===!1)if(Q)W.viewport.style.overflowX="hidden";else W.viewport.style.overflow="hidden";if(L?.scrollbar==="none")W.viewport.classList.add(`${D}-viewport--no-scrollbar`);let I=e0(),t=U||[],d=typeof A==="function"&&(q.has("withGrid")||q.has("withMasonry")),l=H?t0(Y,t.length):$0(A,d?0:t.length),u=o2(),B={it:t,hc:l,ch:W.viewport.clientHeight,cw:W.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:a2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Q?()=>W.viewport.scrollLeft:()=>W.viewport.scrollTop,sst:Q?(R)=>{W.viewport.scrollLeft=R}:(R)=>{W.viewport.scrollTop=R},sab:(R=2)=>{let r=B.hc.getTotalSize();return B.ls+B.ch>=r-R},sic:!1,rfn:null,ffn:null,gvr:(R,r,n,o,q0)=>{i2(R,r,n,o,q0)},gsp:(R,r,n,o,q0)=>{return e2(R,r,n,o,q0)},pef:null,at:X.template,vre:!0,st:W.viewport,wh:null,gcw:()=>B.cw,gch:()=>B.ch};B.vtf=()=>B.dm?B.dm.getTotal():B.it.length;let y=null,O=null,N=!1,$={start:0,end:0},F={start:0,end:0},v={start:-1,end:-1},m={viewportState:{scrollPosition:0,containerSize:Q?B.cw:B.ch,totalSize:B.hc.getTotalSize(),actualSize:B.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},T=new Map,S=H?new WeakMap:null,h=H?l:null,g=null,f=0,x=!1,c=()=>{if(!H)return;if(x){let R=B.sgt(),r=Q?W.viewport.scrollWidth-W.viewport.clientWidth:W.viewport.scrollHeight-W.viewport.clientHeight,n=r>0&&R>=r-2;if(A0(),x=!1,n){let o=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(o>R)B.sst(o),B.ls=o,B.rfn()}}};if(H&&h&&S)g=new ResizeObserver((R)=>{if(B.id)return;let r=!1,n=$.start;for(let o of R){let q0=S.get(o.target);if(q0===void 0)continue;let Q0=Q?o.borderBoxSize[0].inlineSize:o.borderBoxSize[0].blockSize;if(!h.isMeasured(q0)){let X0=h.getSize(q0);if(h.setMeasuredSize(q0,Q0),r=!0,q0<n&&Q0!==X0)f+=Q0-X0;g.unobserve(o.target);let N0=o.target;if(Q)N0.style.width=`${Q0}px`;else N0.style.height=`${Q0}px`}}if(!r)return;if(h.rebuild(B.vtf()),B.hc=h,f!==0){let o=B.sgt();B.sst(o+f),B.ls=o+f,f=0}if(N)x=!0;else{let o=B.sgt(),q0=Q?W.viewport.scrollWidth-W.viewport.clientWidth:W.viewport.scrollHeight-W.viewport.clientHeight,Q0=q0>0&&o>=q0-2;if(A0(),x=!1,Q0){let X0=Math.max(0,B.hc.getTotalSize()-(Q?B.cw:B.ch));if(X0>o)B.sst(X0),B.ls=X0}}v.start=-1,v.end=-1,B.rfn()});let i={selected:!1,focused:!1},e=`${D}-item`,K0=X.striped===!0,U0=`${D}-item--odd`,a=[],s=[],J0=[],Y0=[],_0=[],Z0=[],j0=new Map,E0=null,D0=null,H0=!1,P0=()=>{if(H0)return;H0=!0,E0=j0.get("_getSelectedIds")??null,D0=j0.get("_getFocusedIndex")??null},V0=(R,r)=>{if(typeof r==="string")R.innerHTML=r;else R.replaceChildren(r)},T0=(R,r)=>{let n=Math.round(B.hc.getOffset(r));if(Q)R.style.transform=`translateX(${n}px)`;else R.style.transform=`translateY(${n}px)`};B.pef=T0;let G0=(R,r)=>{let n=u.acquire();n.className=e;let o=!H||h&&h.isMeasured(R);if(Q){if(o)n.style.width=`${B.hc.getSize(R)}px`;else n.style.width="";if(P!=null)n.style.height=`${P}px`}else if(o)n.style.height=`${B.hc.getSize(R)}px`;else n.style.height="";if(n.dataset.index=String(R),n.dataset.id=String(r.id),n.ariaSelected="false",n.id=`${Z}-item-${R}`,B.la=String(B.vtf()),n.setAttribute("aria-setsize",B.la),n.setAttribute("aria-posinset",String(R+1)),String(r.id).startsWith("__placeholder_"))n.classList.add(`${D}-item--placeholder`);if(K0)n.classList.toggle(U0,(R&1)===1);return V0(n,B.at(r,R,i)),B.pef(n,R),n},A0=()=>{let R=`${B.hc.getTotalSize()}px`;if(Q)W.content.style.width=R;else W.content.style.height=R},C0=()=>{if(B.id)return;P0();let R=E0?E0():B.ss,r=D0?D0():B.fi,n=B.vtf(),o=Q?B.cw:B.ch;if(B.gvr(B.ls,o,B.hc,n,$),t2($,_,n,F),F.start===v.start&&F.end===v.end){if(B.sic)for(let[B0,W0]of T)B.pef(W0,B0);return}let q0=String(n),Q0=q0!==B.la;B.la=q0;for(let[B0,W0]of T)if(B0<F.start||B0>F.end)W0.remove(),u.release(W0),T.delete(B0);let X0=document.createDocumentFragment(),N0=[],F0=[];for(let B0=F.start;B0<=F.end;B0++){let W0=B.dm?B.dm.getItem(B0):B.it[B0];if(W0===void 0)continue;let O0=T.get(B0);if(O0){let b0=O0.dataset.id,h0=String(W0.id);if(b0!==h0){let K1=b0?.startsWith("__placeholder_"),m2=h0.startsWith("__placeholder_");V0(O0,B.at(W0,B0,i)),O0.dataset.id=h0;let d2=!H||h&&h.isMeasured(B0);if(Q)O0.style.width=d2?`${B.hc.getSize(B0)}px`:"";else O0.style.height=d2?`${B.hc.getSize(B0)}px`:"";if(m2)O0.classList.add(`${D}-item--placeholder`);else O0.classList.remove(`${D}-item--placeholder`);if(K1&&!m2)O0.classList.add(`${D}-item--replaced`),setTimeout(()=>{O0.classList.remove(`${D}-item--replaced`)},300)}B.pef(O0,B0);let o0=R.has(W0.id),Y1=B0===r;if(O0.classList.toggle(`${D}-item--selected`,o0),O0.classList.toggle(`${D}-item--focused`,Y1),O0.ariaSelected=o0?"true":"false",Q0)O0.setAttribute("aria-setsize",B.la)}else{let b0=G0(B0,W0);F0.push({index:B0,element:b0});let h0=R.has(W0.id),o0=B0===r;if(h0)b0.classList.add(`${D}-item--selected`),b0.ariaSelected="true";if(o0)b0.classList.add(`${D}-item--focused`);X0.appendChild(b0),N0.push({index:B0,element:b0})}}if(N0.length>0){W.items.appendChild(X0);for(let{index:B0,element:W0}of N0)T.set(B0,W0)}if(H&&g&&h&&S){for(let{index:B0,element:W0}of F0)if(!h.isMeasured(B0))S.set(W0,B0),g.observe(W0)}v.start=F.start,v.end=F.end,m.lastRenderRange.start=F.start,m.lastRenderRange.end=F.end,m.viewportState.scrollPosition=B.ls,m.viewportState.visibleRange.start=$.start,m.viewportState.visibleRange.end=$.end,m.viewportState.renderRange.start=F.start,m.viewportState.renderRange.end=F.end,I.emit("range:change",{range:{start:F.start,end:F.end}})},lJ=()=>{v.start=-1,v.end=-1,B.rfn()};B.rfn=C0,B.ffn=lJ;let T2=()=>{if(B.id)return;let R=B.sgt(),r=R>=B.ls?"down":"up";if(B.vt=k2(B.vt,R),!W.root.classList.contains(`${D}--scrolling`))W.root.classList.add(`${D}--scrolling`);N=!0,B.ls=R,B.rfn(),I.emit("scroll",{scrollPosition:R,direction:r}),I.emit("velocity:change",{velocity:B.vt.velocity,reliable:B.vt.sampleCount>=r2});for(let n=0;n<a.length;n++)a[n](R,r);if(O)clearTimeout(O);O=setTimeout(()=>{W.root.classList.remove(`${D}--scrolling`),N=!1,B.vt.velocity=0,B.vt.sampleCount=0,I.emit("velocity:change",{velocity:0,reliable:!1}),c()},L?.idleTimeout??XJ)},w0=null;if(B.st.addEventListener("scroll",T2,{passive:!0}),z&&!Q&&!E)w0=(R)=>{if(m.viewportState.isCompressed)return;let r=W.viewport.scrollWidth>W.viewport.clientWidth;if(r&&Math.abs(R.deltaX)>Math.abs(R.deltaY))return;if(R.preventDefault(),r&&R.deltaX!==0)W.viewport.scrollLeft+=R.deltaX;let n=B.sgt(),o=R.deltaY,q0=W.viewport.scrollHeight-W.viewport.clientHeight,Q0=Math.max(0,Math.min(n+o,q0));if(Math.abs(Q0-n)<1){if(B.vt.velocity!==0)B.vt.velocity=0,B.vt.sampleCount=0,I.emit("velocity:change",{velocity:0,reliable:!1});return}B.sst(Q0),B.ls=Q0,B.vt=k2(B.vt,Q0),B.rfn();let X0=Q0>=n?"down":"up";if(I.emit("scroll",{scrollPosition:Q0,direction:X0}),!W.root.classList.contains(`${D}--scrolling`))W.root.classList.add(`${D}--scrolling`);if(N=!0,O)clearTimeout(O);O=setTimeout(()=>{W.root.classList.remove(`${D}--scrolling`),N=!1,B.vt.velocity=0,B.vt.sampleCount=0,I.emit("velocity:change",{velocity:0,reliable:!1}),c()},L?.idleTimeout??XJ)},B.wh=w0,W.viewport.addEventListener("wheel",w0,{passive:!1});else if(Q&&z)w0=(R)=>{if(R.deltaX)return;R.preventDefault(),W.viewport.scrollLeft+=R.deltaY},B.wh=w0,W.viewport.addEventListener("wheel",w0,{passive:!1});let h2=(R)=>{let n=R.target.closest("[data-index]");if(n){let o=parseInt(n.dataset.index??"-1",10);if(o>=0){let q0=B.dm?.getItem(o)??B.it[o];if(q0){if(q0.__groupHeader)return;I.emit("item:click",{item:q0,index:o,event:R})}}}for(let o=0;o<s.length;o++)s[o](R)},rJ=(R)=>{let n=R.target.closest("[data-index]");if(n){let o=parseInt(n.dataset.index??"-1",10);if(o>=0){let q0=B.dm?.getItem(o)??B.it[o];if(q0){if(q0.__groupHeader)return;I.emit("item:dblclick",{item:q0,index:o,event:R})}}}},u2=(R)=>{for(let r=0;r<J0.length;r++)J0[r](R)};W.items.addEventListener("click",h2),W.items.addEventListener("dblclick",rJ),W.root.addEventListener("keydown",u2);let H2=new ResizeObserver((R)=>{if(B.id)return;for(let r of R){let n=r.contentRect.height,o=r.contentRect.width,q0=Q?o:n,Q0=Q?B.cw:B.ch;if(B.cw=o,B.ch=n,Math.abs(q0-Q0)>1){if(m.viewportState.containerSize=q0,B.ii)A0(),B.rfn(),I.emit("resize",{height:n,width:o})}if(B.ii)for(let X0=0;X0<Y0.length;X0++)Y0[X0](o,n)}});if(B.vre)H2.observe(W.viewport);let b2={dom:W,emitter:I,resolvedConfig:G,rawConfig:J,rendered:T,pool:u,itemState:i,sharedState:m,renderRange:F,isHorizontal:Q,classPrefix:D,contentSizeHandlers:_0,afterScroll:a,clickHandlers:s,keydownHandlers:J0,resizeHandlers:Y0,destroyHandlers:Z0,methods:j0,onScrollFrame:T2,resizeObserver:H2,applyTemplate:V0,updateContentSize:A0},M0=QJ(B,b2);B.dm=jJ(B,b2,M0),B.sc=qJ(B,b2);let g2=new Map;for(let R of C)if(R.methods)for(let r of R.methods){let n=g2.get(r);if(n)throw Error(`[vlist/builder] Method "${r}" is registered by both "${n}" and "${R.name}"`);g2.set(r,R.name)}for(let R of C)R.setup(M0);if(!j0.has("_getFocusedIndex")){let R=-1,r=`${D}-item--focused`,n=(Q0,X0)=>{let N0=B.vtf();if(X0<0||X0>=N0)return;R=X0,W.root.setAttribute("aria-activedescendant",`${Z}-item-${X0}`);let F0=Q?B.cw:B.ch;if(B.sst(B.gsp(X0,B.hc,F0,N0,"center")),B.ls=B.sgt(),B.rfn(),Q0>=0&&Q0!==X0)T.get(Q0)?.classList.remove(r);T.get(X0)?.classList.add(r)},o=()=>{if(B.id)return;if(!W.root.matches(":focus-visible"))return;let Q0=B.vtf();if(Q0===0)return;n(-1,R>=0?Math.min(R,Q0-1):0)};W.root.addEventListener("focusin",o);let q0=(Q0)=>{if(B.id)return;let X0=Q0.relatedTarget;if(X0&&W.root.contains(X0))return;if(R>=0)T.get(R)?.classList.remove(r);W.root.removeAttribute("aria-activedescendant")};W.root.addEventListener("focusout",q0),J0.push((Q0)=>{if(B.id)return;let X0=B.vtf();if(X0===0)return;let N0=R,F0=N0;switch(Q0.key){case"ArrowUp":F0=N0<=0?X0-1:N0-1;break;case"ArrowDown":F0=N0>=X0-1?0:N0+1;break;case"Home":F0=0;break;case"End":F0=X0-1;break;default:return}Q0.preventDefault(),n(N0,F0)}),Z0.push(()=>{W.root.removeEventListener("focusin",o),W.root.removeEventListener("focusout",q0)})}if(B.ii=!0,M0.state.isInitialized=!0,A0(),B.rfn(),b&&B.it.length>0){let R=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(R),B.ls=R,B.rfn()}let aJ=(R)=>{M0.dataManager.setItems(R,0,R.length)},sJ=b?(R)=>{let r=B.sab(2),n=B.it.length;if(M0.dataManager.setItems(R,n),r&&B.it.length>0){let o=B.gsp(B.it.length-1,B.hc,B.ch,B.it.length,"end");B.sst(o),B.ls=o,B.rfn()}}:(R)=>{let r=B.it.length;M0.dataManager.setItems(R,r)},nJ=b?(R)=>{let r=B.sgt(),n=B.hc.getTotalSize(),o=[...B.it];M0.dataManager.clear(),M0.dataManager.setItems([...R,...o],0);let Q0=B.hc.getTotalSize()-n;if(Q0>0)B.sst(r+Q0),B.ls=r+Q0}:(R)=>{let r=[...B.it];M0.dataManager.clear(),M0.dataManager.setItems([...R,...r],0)},oJ=(R,r)=>{M0.dataManager.updateItem(R,r)},iJ=(R)=>{M0.dataManager.removeItem(R)},tJ=async()=>{if(M0.dataManager.reload)await M0.dataManager.reload()},n0=()=>{if(y!==null)cancelAnimationFrame(y),y=null},eJ=(R,r,n)=>{if(n0(),Math.abs(r-R)<1){B.sst(r),B.ls=r,B.rfn();return}let o=performance.now(),q0=(Q0)=>{let X0=Q0-o,N0=Math.min(X0/n,1),F0=R+(r-R)*P2(N0);if(B.sst(F0),B.ls=F0,B.rfn(),N0<1)y=requestAnimationFrame(q0);else y=null};y=requestAnimationFrame(q0)},J1=(R,r)=>{let{align:n,behavior:o,duration:q0}=v0(r),Q0=B.vtf(),X0=R;if(M&&Q0>0)X0=(X0%Q0+Q0)%Q0;let N0=B.gsp(X0,B.hc,B.ch,Q0,n);if(o==="smooth")eJ(B.sgt(),N0,q0);else n0(),B.sst(N0)},Q1=()=>B.sgt(),j1=(R,r)=>{return I.on(R,r)},q1=(R,r)=>{I.off(R,r)},X1=()=>{if(B.id)return;if(B.id=!0,M0.state.isDestroyed=!0,W.items.removeEventListener("click",h2),W.root.removeEventListener("keydown",u2),B.st.removeEventListener("scroll",T2),H2.disconnect(),g)g.disconnect(),g=null;if(B.wh)W.viewport.removeEventListener("wheel",B.wh);if(O)clearTimeout(O);for(let R=0;R<Z0.length;R++)Z0[R]();for(let R of C)if(R.destroy)R.destroy();n0();for(let[,R]of T)R.remove(),u.release(R);T.clear(),u.clear(),I.clear(),W.root.remove()},x2={get element(){return W.root},get items(){if(j0.has("_getItems"))return j0.get("_getItems")();return B.it},get total(){if(j0.has("_getTotal"))return j0.get("_getTotal")();return B.vtf()},setItems:j0.has("setItems")?j0.get("setItems"):aJ,appendItems:j0.has("appendItems")?j0.get("appendItems"):sJ,prependItems:j0.has("prependItems")?j0.get("prependItems"):nJ,updateItem:j0.has("updateItem")?j0.get("updateItem"):oJ,removeItem:j0.has("removeItem")?j0.get("removeItem"):iJ,reload:j0.has("reload")?j0.get("reload"):tJ,scrollToIndex:j0.has("scrollToIndex")?j0.get("scrollToIndex"):J1,cancelScroll:j0.has("cancelScroll")?j0.get("cancelScroll"):n0,getScrollPosition:j0.has("getScrollPosition")?j0.get("getScrollPosition"):Q1,on:j1,off:q1,destroy:X1};for(let[R,r]of j0){if(R.charCodeAt(0)===95||R==="setItems"||R==="appendItems"||R==="prependItems"||R==="updateItem"||R==="removeItem"||R==="reload"||R==="scrollToIndex"||R==="scrollToItem"||R==="cancelScroll"||R==="getScrollPosition")continue;x2[R]=r}return x2}j2();var I0=(J,q,Q={},j="vlist",Y=!1)=>{let{autoHide:X=!0,autoHideDelay:U=1000,minThumbSize:_=30,showOnHover:D=!0,hoverZoneWidth:K=16,showOnViewportEnter:V=!0}=Q,k=0,L=0,z=0,M=0,b=!1,Z=!1,A=0,H=0,E=0,P=null,G=!1,C=null,p=null,w=Y?"width":"height",W=Y?"translateX":"translateY",I=Y?(e)=>e.clientX:(e)=>e.clientY,t=Y?"left":"top",d=document.createElement("div"),l=document.createElement("div"),u=D?document.createElement("div"):null,B=()=>{if(d.className=`${j}-scrollbar`,l.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(l),J.appendChild(d),u){if(u.className=`${j}-scrollbar-hover`,Y)u.classList.add(`${j}-scrollbar-hover--horizontal`),u.style.height=`${K}px`;else u.style.width=`${K}px`;J.appendChild(u)}},y=()=>{if(P)clearTimeout(P),P=null},O=()=>{if(!X)return;y(),P=setTimeout($,U)},N=()=>{if(k<=L)return;if(y(),!G)d.classList.add(`${j}-scrollbar--visible`),G=!0;if(X&&!b&&!Z)O()},$=()=>{if(b||Z)return;d.classList.remove(`${j}-scrollbar--visible`),G=!1},F=(e,K0)=>{k=e,L=K0;let U0=k>L;if(d.style.display=U0?"":"none",!U0){$();return}let a=L/k;z=Math.max(_,a*L),l.style[w]=`${z}px`,M=L-z,v(E)},v=(e)=>{if(E=e,k<=L||M<=0)return;let K0=k-L,a=Math.min(1,Math.max(0,e/K0))*M;l.style.transform=`${W}(${a}px)`},m=(e)=>{if(e.target===l)return;let K0=d.getBoundingClientRect(),s=I(e)-K0[t]-z/2,Y0=Math.max(0,Math.min(s,M))/M,_0=k-L,Z0=Y0*_0;q(Z0),N()},T=(e)=>{e.preventDefault(),e.stopPropagation(),b=!0,A=I(e),H=E,y(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",S),document.addEventListener("mouseup",h)},S=(e)=>{if(!b)return;let K0=I(e)-A,U0=M>0?K0/M:0,a=k-L,s=U0*a,J0=Math.max(0,Math.min(H+s,a)),_0=J0/a*M;if(l.style.transform=`${W}(${_0}px)`,p=J0,C===null)C=requestAnimationFrame(()=>{if(p!==null)q(p);C=null})},h=()=>{if(b=!1,C!==null)cancelAnimationFrame(C),C=null;if(p!==null)q(p),p=null;if(d.classList.remove(`${j}-scrollbar--dragging`),X&&!Z)O();document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",h)},g=()=>{if(V)N()},f=()=>{if(!b){if(Z=!1,X)O()}},x=()=>{Z=!0,y(),N()},c=()=>{if(Z=!1,!b&&X)O()},i=()=>{if(y(),C!==null)cancelAnimationFrame(C),C=null;if(d.removeEventListener("click",m),d.removeEventListener("mouseenter",x),d.removeEventListener("mouseleave",c),l.removeEventListener("mousedown",T),J.removeEventListener("mouseenter",g),J.removeEventListener("mouseleave",f),document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",h),u){if(u.removeEventListener("mouseenter",x),u.removeEventListener("mouseleave",c),u.parentNode)u.parentNode.removeChild(u)}if(d.parentNode)d.parentNode.removeChild(d)};if(B(),d.addEventListener("click",m),d.addEventListener("mouseenter",x),d.addEventListener("mouseleave",c),l.addEventListener("mousedown",T),J.addEventListener("mouseenter",g),J.addEventListener("mouseleave",f),u)u.addEventListener("mouseenter",x),u.addEventListener("mouseleave",c);return{show:N,hide:$,updateBounds:F,updatePosition:v,isVisible:()=>G,destroy:i}};var AJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:X,horizontal:U}=Y;if(q=I0(j.viewport,(K)=>Q.scrollController.scrollTo(K),J??{},X,U),!j.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))j.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let _=Q.getCachedCompression();q.updateBounds(_.virtualSize,Q.state.viewportState.containerSize);let D=q;Q.afterScroll.push((K,V)=>{D.updatePosition(K),D.show()}),Q.resizeHandlers.push((K,V)=>{if(D){let k=Q.getCachedCompression();D.updateBounds(k.virtualSize,Q.state.viewportState.containerSize)}}),Q.contentSizeHandlers.push(()=>{if(D){let K=Q.getCachedCompression();D.updateBounds(K.virtualSize,Q.state.viewportState.containerSize)}}),Q.destroyHandlers.push(()=>{if(D)D.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var EJ=(J=0)=>{let q=[,,,,,,,,];for(let Q=0;Q<8;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},q2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+8)%8,U=J.samples[X],_=q-U.position,D=Q-U.time;J.velocity=D>0?_/D:0}return J.lastPosition=q,J.lastTime=Q,J},A1=(J)=>J.sampleCount>=3,FJ=(J,q={})=>{let{wheel:Q=!0,sensitivity:j=1,smoothing:Y=!1,idleTimeout:X=150,onScroll:U,onIdle:_,scrollElement:D,horizontal:K=!1}=q,V=!!D,k=0,L=0,z=V?K?window.innerWidth:window.innerHeight:K?J.clientWidth:J.clientHeight,M=q.compressed??!1,b=q.compression,Z=EJ(),A=!1,H=null,P=X2(()=>{let f=K?J.scrollLeft:J.scrollTop,x=f>=k?"down":"up";if(Z=q2(Z,f),k=f,U)U({scrollTop:k,direction:x,velocity:Z.velocity});I()}),C=X2(()=>{let f=J.getBoundingClientRect(),x=K?Math.max(0,-f.left):Math.max(0,-f.top),c=x>=k?"down":"up";if(Z=q2(Z,x),k=x,!A)A=!0;if(U)U({scrollTop:k,direction:c,velocity:Z.velocity});I()}),p=(f)=>{f.preventDefault()},w=(f)=>{if(f.deltaX)return;f.preventDefault(),J.scrollLeft+=f.deltaY},W=(f)=>{if(!M)return;f.preventDefault();let x=(K?f.deltaX||f.deltaY:f.deltaY)*j,c=k+x;if(Y)c=k+x*0.3;if(c=Math.max(0,Math.min(c,L)),c!==k){let e=c>=k?"down":"up";if(Z=q2(Z,c),k=c,!A)A=!0;if(U)U({scrollTop:k,direction:e,velocity:Z.velocity});I()}},I=()=>{if(H)clearTimeout(H);H=setTimeout(()=>{if(A=!1,Z=EJ(k),_)_()},X)},t=(f)=>{if(M)return;if(M=!0,b=f,L=f.virtualSize-z,V)return;if(P.cancel(),J.removeEventListener("scroll",P),!Q)J.removeEventListener("wheel",p);else if(K)J.removeEventListener("wheel",w);if(K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",W,{passive:!1});let x=K?J.scrollLeft:J.scrollTop;if(x>0){let c=K?b?.actualSize??J.scrollWidth:b?.actualSize??J.scrollHeight;k=x/c*L}if(K)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!M)return;if(M=!1,V){b=void 0;return}if(J.removeEventListener("wheel",W),K)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!Q)J.addEventListener("wheel",p,{passive:!1});else if(K)J.addEventListener("wheel",w,{passive:!1});if(b&&k>0){let x=k/L*(b.actualSize-z);if(K)J.scrollLeft=x;else J.scrollTop=x}b=void 0},l=()=>{if(V||M)return k;return K?J.scrollLeft:J.scrollTop},u=(f,x=!1)=>{let c=Math.max(0,Math.min(f,L||1/0));if(V){let i=J.getBoundingClientRect();if(K){let e=i.left+window.scrollX;window.scrollTo({left:e+c,behavior:x?"smooth":"auto"})}else{let e=i.top+window.scrollY;window.scrollTo({top:e+c,behavior:x?"smooth":"auto"})}}else if(M){if(c===k)return;let e=c>=k?"down":"up";if(Z=q2(Z,c),k=c,!A)A=!0;if(U)U({scrollTop:k,direction:e,velocity:Z.velocity});I()}else if(K)J.scrollTo({left:c,behavior:x?"smooth":"auto"});else J.scrollTo({top:c,behavior:x?"smooth":"auto"})},B=(f)=>{u(l()+f)},y=()=>{return l()<=0},O=(f=0)=>{let x=l(),c=V||M?L:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return x>=c-f},N=()=>{let f=l(),x=V||M?L:K?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(x<=0)return 0;return Math.min(1,Math.max(0,f/x))},$=(f)=>{if(f.compression)b=f.compression,L=b.virtualSize-z},F=()=>M,v=()=>Math.abs(Z.velocity),m=()=>A1(Z),T=()=>A,S=()=>V,h=(f)=>{if(z=f,b)L=b.virtualSize-z},g=()=>{if(H)clearTimeout(H);if(V)C.cancel(),window.removeEventListener("scroll",C);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",W),J.removeEventListener("wheel",p),J.removeEventListener("wheel",w)};if(V){if(M&&b)L=b.virtualSize-z;window.addEventListener("scroll",C,{passive:!0})}else if(M&&b){if(L=b.virtualSize-z,K)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",W,{passive:!1})}else{if(K)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!Q)J.addEventListener("wheel",p,{passive:!1});else if(K)J.addEventListener("wheel",w,{passive:!1})}return{getScrollTop:l,scrollTo:u,scrollBy:B,isAtTop:y,isAtBottom:O,getScrollPercentage:N,getVelocity:v,isTracking:m,isScrolling:T,updateConfig:$,enableCompression:t,disableCompression:d,isCompressed:F,isWindowMode:S,updateContainerHeight:h,destroy:g}},X2=(J)=>{let q=null,Q=null,j=(...Y)=>{if(Q=Y,q===null)q=requestAnimationFrame(()=>{if(q=null,Q)J(...Q)})};return j.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},j};var E1=0.65,F1=0.5,L1=0.95,T1=0.1,H1=5,b1=100,LJ=()=>{let J=null,q=0,Q=!1,j=0,Y=null,X=0,U=0,_=null,D=[];return{name:"withScale",priority:20,setup(K){let{dom:V,config:k}=K,{classPrefix:L,horizontal:z}=k,M=()=>{let H=K.getVirtualTotal(),E=L0(H,K.sizeCache);if(E.isCompressed&&!Q){Q=!0,K.scrollController.enableCompression(E),K.updateContentSize(E.virtualSize),K.setScrollFns(()=>q,(d)=>{if(q=d,j=d,Y!==null)cancelAnimationFrame(Y),Y=null});let P=()=>{let d=j-q;if(Math.abs(d)<F1)q=j,Y=null;else{q+=d*E1;let u=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;q=Math.max(0,Math.min(q,u)),Y=requestAnimationFrame(P)}K.scrollController.scrollTo(q)},G=V.viewport,C=(d)=>{d.preventDefault();let u=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+d.deltaY,u)),Y===null)Y=requestAnimationFrame(P)};G.addEventListener("wheel",C,{passive:!1});let p=()=>{if(_!==null)cancelAnimationFrame(_),_=null},w=(d)=>{if(p(),Y!==null)cancelAnimationFrame(Y),Y=null;let l=d.touches[0];if(!l)return;let u=z?l.clientX:l.clientY;X=u,U=q,D=[{time:performance.now(),y:u}]},W=(d)=>{d.preventDefault();let l=d.touches[0];if(!l)return;let u=z?l.clientX:l.clientY,B=performance.now();if(D.push({time:B,y:u}),D.length>H1)D.shift();let y=X-u,N=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,$=Math.max(0,Math.min(U+y,N));q=$,j=$,K.scrollController.scrollTo($)},I=(d)=>{let l=performance.now(),u=D.filter((N)=>l-N.time<b1),B=0;if(u.length>=2){let N=u[0],$=u[u.length-1],F=$.time-N.time;if(F>0)B=(N.y-$.y)/F}if(D=[],Math.abs(B)<T1)return;let y=B*16,O=()=>{if(y*=L1,Math.abs(y)<0.5){_=null;return}let $=K.getCachedCompression().virtualSize-K.state.viewportState.containerSize,F=q+y;if(F=Math.max(0,Math.min(F,$)),F<=0&&y<0||F>=$&&y>0){q=F,j=F,K.scrollController.scrollTo(F),_=null;return}q=F,j=F,K.scrollController.scrollTo(F),_=requestAnimationFrame(O)};_=requestAnimationFrame(O)};if(G.addEventListener("touchstart",w,{passive:!0}),G.addEventListener("touchmove",W,{passive:!1}),G.addEventListener("touchend",I,{passive:!0}),G.addEventListener("touchcancel",I,{passive:!0}),K.destroyHandlers.push(()=>{if(G.removeEventListener("wheel",C),G.removeEventListener("touchstart",w),G.removeEventListener("touchmove",W),G.removeEventListener("touchend",I),G.removeEventListener("touchcancel",I),p(),Y!==null)cancelAnimationFrame(Y),Y=null}),!V.viewport.querySelector(`.${L}-scrollbar`)){if(J=I0(V.viewport,(l)=>K.scrollController.scrollTo(l),{},L,z),!V.viewport.classList.contains(`${L}-viewport--custom-scrollbar`))V.viewport.classList.add(`${L}-viewport--custom-scrollbar`);J.updateBounds(E.virtualSize,K.state.viewportState.containerSize);let d=J;K.afterScroll.push((l,u)=>{if(d)d.updatePosition(l),d.show()}),K.resizeHandlers.push((l,u)=>{if(d){let B=K.getCachedCompression();d.updateBounds(B.virtualSize,K.state.viewportState.containerSize)}})}}else if(!E.isCompressed&&Q)Q=!1,K.scrollController.disableCompression(),K.updateContentSize(E.actualSize);else if(E.isCompressed)K.scrollController.updateConfig({compression:E}),K.updateContentSize(E.virtualSize);if(J)J.updateBounds(E.virtualSize,K.state.viewportState.containerSize);K.state.cachedCompression={state:E,totalItems:H}};K.updateCompressionMode=M;let b=K.getCachedCompression.bind(K);K.getCachedCompression=()=>{if(K.state.cachedCompression)return K.state.cachedCompression.state;return b()},K.setVisibleRangeFn((H,E,P,G,C)=>{Z=null,A=null;let p=L0(G,P);J2(H,E,P,G,p,C)}),K.setScrollToPosFn((H,E,P,G,C)=>{let p=L0(G,E);return Q2(H,E,P,G,p,C)});let Z=null,A=null;K.setPositionElementFn((H,E)=>{let P=K.getVirtualTotal(),G=L0(P,K.sizeCache);if(G.isCompressed){let C=K.scrollController.getScrollTop();if(Z===null||E<A)A=E,Z=Math.round(f0(E,C,K.sizeCache,P,K.state.viewportState.containerSize,G));let p=Z+K.sizeCache.getOffset(E)-K.sizeCache.getOffset(A),w=K.config.horizontal;H.style.transform=w?`translateX(${p}px)`:`translateY(${p}px)`}else{let C=Math.round(K.sizeCache.getOffset(E)),p=K.config.horizontal;H.style.transform=p?`translateX(${C}px)`:`translateY(${C}px)`}}),M(),K.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(_!==null)cancelAnimationFrame(_),_=null}}};var Y2=(J={})=>{let{chunkSize:q=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,X=new Map,U=0,_=0,D=(B)=>{let y=X.get(B);if(!y)y={items:Array(q),count:0,lastAccess:Date.now()},X.set(B,y);else y.lastAccess=Date.now();return y},K=(B)=>{return Math.floor(B/q)},V=(B)=>{return B%q},k=()=>U,L=(B)=>{U=B},z=(B)=>{if(B<0||B>=U)return;let y=K(B),O=X.get(y);if(!O)return;return O.items[V(B)]},M=(B)=>{if(B<0||B>=U)return!1;let y=K(B),O=X.get(y);if(!O)return!1;return O.items[V(B)]!==void 0},b=(B,y)=>{let O=K(B),N=D(O),$=V(B),F=N.items[$]===void 0;if(N.items[$]=y,F)N.count++,_++;if(B>=U)U=B+1},Z=(B,y)=>{for(let O=0;O<y.length;O++){let N=y[O];if(N!==void 0)b(B+O,N)}},A=(B)=>{if(B<0||B>=U)return!1;let y=K(B),O=X.get(y);if(!O)return!1;let N=V(B);if(O.items[N]===void 0)return!1;if(O.items[N]=void 0,O.count--,_--,O.count===0)X.delete(y);return!0},H=(B,y)=>{let O=[];for(let N=B;N<=y&&N<U;N++)O.push(z(N));return O},E=(B,y)=>{for(let O=B;O<=y&&O<U;O++)if(!M(O))return!1;return!0},P=()=>{let B=[],y=null,O=Array.from(X.keys()).sort((N,$)=>N-$);for(let N of O){let $=X.get(N);if(!$)continue;let F=N*q;for(let v=0;v<q;v++){let m=F+v;if(m>=U)break;if($.items[v]!==void 0)if(y===null)y={start:m,end:m};else if(m===y.end+1)y.end=m;else B.push(y),y={start:m,end:m};else if(y!==null)B.push(y),y=null}}if(y!==null)B.push(y);return B},G=(B,y)=>{let O=[],N=null;for(let $=B;$<=y&&$<U;$++)if(!M($))if(N===null)N={start:$,end:$};else N.end=$;else if(N!==null)O.push(N),N=null;if(N!==null)O.push(N);return O},C=(B)=>{return X.has(B)},p=(B)=>{let y=X.get(B);if(y)y.lastAccess=Date.now()},w=(B,y)=>{if(B>y||X.size===0)return;let O=Date.now(),N=K(Math.max(0,B)),$=K(Math.min(U-1,y));for(let F=N;F<=$;F++){let v=X.get(F);if(v)v.lastAccess=O}},W=(B,y)=>{if(_<=Q)return 0;let O=Math.max(0,B-j),N=Math.min(U-1,y+j),$=K(O),F=K(N),v=0,m=[];for(let[T,S]of X)if(T<$||T>F)v+=S.count,m.push(T),_-=S.count,X.delete(T);if(v>0&&Y)Y(v,m);return v},I=()=>{if(_<=Q)return 0;let B=Array.from(X.entries()).sort(([,N],[,$])=>N.lastAccess-$.lastAccess),y=0,O=[];for(let[N,$]of B){if(_<=Q)break;y+=$.count,_-=$.count,O.push(N),X.delete(N)}if(y>0&&Y)Y(y,O);return y},t=()=>{return{totalItems:U,cachedItems:_,cachedChunks:X.size,chunkSize:q,maxCachedItems:Q,memoryEfficiency:U>0?1-_/U:1}},d=()=>_,l=()=>{X.clear(),_=0};return{chunkSize:q,maxCachedItems:Q,getTotal:k,setTotal:L,get:z,has:M,set:b,setRange:Z,delete:A,getRange:H,isRangeLoaded:E,getLoadedRanges:P,findUnloadedRanges:G,getChunkIndex:K,isChunkLoaded:C,touchChunk:p,touchChunksForRange:w,evictDistant:W,evictToLimit:I,getStats:t,getCachedCount:d,clear:l,reset:()=>{l(),U=0}}},K2=(J)=>{if(J.length===0)return[];let q=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...q[0]}];for(let j=1;j<q.length;j++){let Y=q[j],X=Q[Q.length-1];if(Y.start<=X.end+1)X.end=Math.max(X.end,Y.end);else Q.push({...Y})}return Q},x0=(J,q,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,X={start:j,end:Y};if(q.length===0)return[X];let U=[],_=K2(q),D=X.start;for(let K of _){if(K.end<D)continue;if(K.start>X.end)break;if(K.start>D)U.push({start:D,end:Math.min(K.start-1,X.end)});if(D=K.end+1,D>X.end)break}if(D<=X.end)U.push({start:D,end:X.end});return U};var B2=(J={})=>{let{maskCharacter:q=ZJ,maxSampleSize:Q=NJ}=J,j=[],Y=!1,X=0,U=(k)=>{if(Y||k.length===0)return;let L=Math.min(k.length,Q);for(let z=0;z<L;z++){let M=k[z];if(!M||typeof M!=="object")continue;let b={};for(let[Z,A]of Object.entries(M)){if(Z.startsWith("_")||Z==="id")continue;b[Z]=String(A??"").length}if(Object.keys(b).length>0)j.push(b)}Y=!0},_=()=>Y,D=(k)=>{let L={id:`${_J}${X++}`,[z2]:!0,_index:k};if(j.length===0)return L.label=q.repeat(12),L;let z=j[k%j.length];for(let[M,b]of Object.entries(z))L[M]=q.repeat(Math.max(1,b));return L};return{analyzeStructure:U,hasAnalyzedStructure:_,generate:D,generateRange:(k,L)=>{let z=[];for(let M=k;M<=L;M++)z.push(D(M));return z},clear:()=>{j=[],Y=!1,X=0}}},R0=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},C2=(J)=>{return J.filter((q)=>!R0(q))};var k1=50,U2=(J={})=>{let{adapter:q,initialItems:Q,initialTotal:j,storage:Y,placeholder:X,pageSize:U=k1,onStateChange:_,onItemsLoaded:D,onItemsEvicted:K}=J,V=Y2({...Y,onEvict:(a,s)=>{K?.(a),G()}}),k=null,L=()=>{if(!k)k=B2(X);return k},z=new Map,M=!1,b,Z=!0,A,H=[],E=0,P=new Map,G=()=>{_?.(u())},C=()=>{z.clear();let a=V.getLoadedRanges();for(let s of a)for(let J0=s.start;J0<=s.end;J0++){let Y0=V.get(J0);if(Y0&&!R0(Y0))z.set(Y0.id,J0)}},p=(a,s)=>{if(!R0(s))z.set(s.id,a)},w=(a)=>{z.delete(a)},W=(a,s)=>{return`${a}-${s}`},I=()=>V.getTotal(),t=()=>V.getCachedCount(),d=()=>M,l=()=>Z,u=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:M,pendingRanges:H,error:b,hasMore:Z,cursor:A}),B=()=>V,y=()=>L(),O=(a)=>{let s=V.get(a);if(s!==void 0)return s;if(a>=0&&a<V.getTotal())return L().generate(a);return},N=(a)=>{let s=z.get(a);if(s===void 0)return;return V.get(s)},$=(a)=>{return z.get(a)??-1},F=(a)=>{let s=V.get(a);return s!==void 0&&!R0(s)},v=(a,s)=>{let J0=[],Y0=V.getTotal(),_0=0,Z0=0;V.touchChunksForRange(a,Math.min(s,Y0-1));for(let j0=a;j0<=s&&j0<Y0;j0++){let E0=V.get(j0);if(E0!==void 0)J0.push(E0),_0++;else J0.push(L().generate(j0)),Z0++}return J0},m=(a)=>{V.setTotal(a),Z=V.getCachedCount()<a,G()},T=(a,s=0,J0)=>{if(k&&!k.hasAnalyzedStructure()&&a.length>0)k.analyzeStructure(a);for(let Y0=0;Y0<a.length;Y0++){let _0=a[Y0];if(_0!==void 0){let Z0=s+Y0;V.set(Z0,_0),p(Z0,_0)}}if(J0!==void 0)V.setTotal(J0);else if(s+a.length>V.getTotal())V.setTotal(s+a.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)Z=!1;D?.(a,s,V.getTotal()),G()},S=(a,s)=>{let J0=z.get(a);if(J0===void 0)return!1;let Y0=V.get(J0);if(!Y0)return!1;let _0={...Y0,...s};if(V.set(J0,_0),s.id!==void 0&&s.id!==a)w(a),p(J0,_0);return G(),!0},h=(a)=>{let s=z.get(a);if(s===void 0)return!1;V.delete(s),w(a);let J0=V.getTotal();if(J0>0)V.setTotal(J0-1);return G(),!0},g=async(a,s)=>{if(!q)return;let J0=W(a,s);if(P.has(J0))return;let Y0=V.getLoadedRanges(),_0=x0({start:a,end:s},Y0,V.chunkSize);if(_0.length===0)return;let Z0=V.chunkSize,j0=[];for(let D0 of _0){let H0=Math.floor(D0.start/Z0),P0=Math.floor(D0.end/Z0);for(let V0=H0;V0<=P0;V0++){let T0=V0*Z0,G0=T0+Z0-1,A0=W(T0,G0);if(!j0.some((C0)=>C0.start===T0)&&!P.has(A0))j0.push({start:T0,end:G0})}}let E0=[];for(let D0 of _0){let H0=Math.floor(D0.start/Z0),P0=Math.floor(D0.end/Z0);for(let V0=H0;V0<=P0;V0++){let T0=V0*Z0,G0=T0+Z0-1,A0=W(T0,G0);if(P.has(A0)){let C0=P.get(A0);if(!E0.includes(C0))E0.push(C0)}}}for(let D0 of j0){let H0=W(D0.start,D0.end),P0=(async()=>{H.push(D0),M=!0,b=void 0,G();try{let V0=D0.end-D0.start+1,T0={offset:D0.start,limit:V0,cursor:void 0},G0=await q.read(T0);if(T(G0.items,D0.start,G0.total),G0.cursor)A=G0.cursor;let A0=D0.start+G0.items.length;if(A0>=E){if(E=A0,G0.hasMore!==void 0)Z=G0.hasMore;else if(G0.total!==void 0)Z=A0<G0.total}}catch(V0){b=V0 instanceof Error?V0:Error(String(V0))}finally{P.delete(H0),H=H.filter((V0)=>V0.start!==D0.start||V0.end!==D0.end),M=P.size>0,G()}})();P.set(H0,P0),E0.push(P0)}await Promise.all(E0)},f=async(a,s)=>{if(V.isRangeLoaded(a,s))return;await g(a,s)},x=async()=>{if(!q)return;await g(0,U-1)},c=async()=>{if(!q||M||!Z)return!1;let a=V.getCachedCount(),s=V.getTotal(),J0=a,Y0=Math.min(J0+U-1,s>0?s-1:J0+U-1);if(J0>=s&&s>0)return Z=!1,!1;return await g(J0,Y0),V.getCachedCount()>a},i=async()=>{if(V.clear(),V.setTotal(0),z.clear(),k)k.clear();P.clear(),H=[],M=!1,A=void 0,Z=!0,E=0,b=void 0,G()},e=(a,s)=>{if(V.evictDistant(a,s)>0)C()},K0=()=>{V.clear(),z.clear(),A=void 0,b=void 0,H=[],M=!1,G()},U0=()=>{if(V.reset(),z.clear(),k)k.clear();A=void 0,Z=!0,E=0,b=void 0,H=[],M=!1,G()};if(Q&&Q.length>0)T(Q,0,j??Q.length);else if(j!==void 0)V.setTotal(j),G();return{getState:u,getTotal:I,getCached:t,getIsLoading:d,getHasMore:l,getStorage:B,getPlaceholders:y,getItem:O,getItemById:N,getIndexById:$,isItemLoaded:F,getItemsInRange:v,setTotal:m,setItems:T,updateItem:S,removeItem:h,loadRange:g,ensureRange:f,loadInitial:x,loadMore:c,reload:i,evictDistant:e,clear:K0,reset:U0}};var TJ=(J)=>{let{adapter:q,loading:Q,storage:j,total:Y,autoLoad:X=!0}=J,U=Q?.cancelThreshold??KJ,_=Q?.preloadThreshold??BJ,D=Q?.preloadAhead??UJ;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(K){let{emitter:V}=K,k=K.config.reverse,L=U2({adapter:q,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??S0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(K.state.isInitialized){let w=K.getVirtualTotal();K.sizeCache.rebuild(w),K.updateCompressionMode();let W=K.getCachedCompression();K.state.viewportState.totalSize=W.virtualSize,K.state.viewportState.actualSize=W.actualSize,K.state.viewportState.isCompressed=W.isCompressed,K.state.viewportState.compressionRatio=W.ratio,K.updateContentSize(W.virtualSize),K.renderIfNeeded()}},onItemsLoaded:(w,W,I)=>{if(K.state.isInitialized)K.forceRender(),V.emit("load:end",{items:w,total:I,offset:W})}});K.replaceDataManager(L);let z=null,M=null,b=0,Z=!1,A=null,H=120,E=(w=!1)=>{if(Z=!1,M=null,w)z=null;if(A!==null)clearTimeout(A),A=null},P=()=>{if(M){let w=M;M=null,K.dataManager.ensureRange(w.start,w.end).catch((W)=>{V.emit("error",{error:W,context:"ensureRange"})})}};K.afterScroll.push((w,W)=>{if(K.state.isDestroyed)return;let I=K.scrollController.getVelocity(),d=K.scrollController.isTracking()&&I<=U;if(b>U&&I<=U)Z=!0;else if(Z&&I>U)E();if(Z&&I<0.5)E(!0);if(b=I,(K.scrollController.isAtTop()||K.scrollController.isAtBottom())&&(Z||M))E(!0),d=!0;let u=Z&&I>0.5;if(d&&!K.dataManager.getIsLoading()&&K.dataManager.getHasMore()){if(k){if(w<R2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:S0}),K.dataManager.loadMore().catch((O)=>{V.emit("error",{error:O,context:"loadMore"})})}else if(K.state.viewportState.totalSize-w-K.state.viewportState.containerSize<R2)V.emit("load:start",{offset:K.dataManager.getCached(),limit:S0}),K.dataManager.loadMore().catch((N)=>{V.emit("error",{error:N,context:"loadMore"})})}let{renderRange:B}=K.state.viewportState;if(!z||B.start!==z.start||B.end!==z.end){if(z={start:B.start,end:B.end},d&&!u){if(M=null,A!==null)clearTimeout(A),A=null;let{start:O,end:N}=B,$=K.getVirtualTotal();if(I>_)if(W==="down")N=Math.min(B.end+D,$-1);else O=Math.max(B.start-D,0);K.dataManager.ensureRange(O,N).catch((F)=>{V.emit("error",{error:F,context:"ensureRange"})})}else if(M={start:B.start,end:B.end},u){if(A!==null)clearTimeout(A);A=setTimeout(()=>{A=null,P(),E()},H)}}});let G=200,C=null;K.afterScroll.push((w,W)=>{if(C!==null)clearTimeout(C);C=setTimeout(()=>{C=null,P(),E()},G)}),K.destroyHandlers.push(()=>{if(C!==null)clearTimeout(C),C=null;E()});let p=()=>{if(K.state.isDestroyed)return;z=null;let{renderRange:w}=K.state.viewportState;if(w.end>0)K.dataManager.ensureRange(w.start,w.end).catch((W)=>{V.emit("error",{error:W,context:"ensureRange"})});P()};if(window.addEventListener("online",p),K.destroyHandlers.push(()=>{window.removeEventListener("online",p)}),V.on("load:start",()=>{K.dom.root.setAttribute("aria-busy","true")}),V.on("load:end",()=>{K.dom.root.removeAttribute("aria-busy")}),K.methods.set("loadVisibleRange",async()=>{z=null,M=null,K.forceRender();let{renderRange:w}=K.state.viewportState;if(w.end>0)V.emit("load:start",{offset:w.start,limit:w.end-w.start+1}),await K.dataManager.ensureRange(w.start,w.end)}),K.methods.set("reload",async()=>{z=null,M=null,K.invalidateRendered(),await K.dataManager.reload(),V.emit("load:start",{offset:0,limit:S0}),await K.dataManager.loadInitial(),K.forceRender();let{renderRange:w}=K.state.viewportState;if(w.end>0)await K.dataManager.ensureRange(w.start,w.end)}),X)V.emit("load:start",{offset:0,limit:S0}),K.dataManager.loadInitial().catch((w)=>{V.emit("error",{error:w,context:"loadInitial"})});else if(Y!==void 0)K.dataManager.setTotal(Y)}}};var HJ=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Q,state:j,config:Y,emitter:X}=q;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`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let K=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-K.left);else return Math.max(0,-K.top)},(K)=>{let V=Q.viewport.getBoundingClientRect();if(Y.horizontal){let k=V.left+window.scrollX;window.scrollTo(k+K,window.scrollY)}else{let k=V.top+window.scrollY;window.scrollTo(window.scrollX,k+K)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:U,innerWidth:_}=window,D=()=>{let{innerWidth:K,innerHeight:V}=window,k=Y.horizontal?K:V,L=Y.horizontal?_:U;if(Math.abs(k-L)<=1)return;U=V,_=K,j.viewportState.containerSize=V,X.emit("resize",{width:K,height:V});for(let z=0;z<q.resizeHandlers.length;z++)q.resizeHandlers[z](K,V);q.renderIfNeeded()};window.addEventListener("resize",D,{passive:!0}),J=()=>{window.removeEventListener("resize",D)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var w2=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=q)Q=Y;else j=Y-1}return Q},bJ=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=q)Q=Y;else j=Y-1}return Q},$J=(J,q)=>{if(J===0)return[];let Q=[],j=q(0),Y=0,X=0;for(let U=1;U<J;U++){let _=q(U);if(_!==j){let D=U-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:D}),X=X+1+D,j=_,Y=U}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:J-Y}),Q},m0=(J,q)=>{if(J.length===0||q.length===0)return[];let Q=J.length+q.length,j=Array(Q),Y=0;for(let X of q){j[Y]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},Y++;for(let U=0;U<X.count;U++)j[Y]=J[X.firstDataIndex+U],Y++}return j},d0=(J,q)=>{let Q=typeof q==="number"?(j)=>q:q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},Z2=(J,q)=>{let Q=$J(J,q.getGroupForIndex),j=J+Q.length,Y=q.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:(L)=>{if(Q.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let z=w2(Q,L),M=Q[z];if(L===M.headerLayoutIndex)return{type:"header",group:M};let b=L-M.headerLayoutIndex-1;return{type:"item",dataIndex:M.firstDataIndex+b,group:M}},layoutToDataIndex:(L)=>{if(Q.length===0)return L;let z=w2(Q,L),M=Q[z];if(L===M.headerLayoutIndex)return-1;let b=L-M.headerLayoutIndex-1;return M.firstDataIndex+b},dataToLayoutIndex:(L)=>{if(Q.length===0)return L;let z=bJ(Q,L),M=Q[z],b=L-M.firstDataIndex;return M.headerLayoutIndex+1+b},getGroupAtLayoutIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=w2(Q,L);return Q[z]},getGroupAtDataIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=bJ(Q,L);return Q[z]},getHeaderHeight:typeof Y==="number"?(L)=>Y:(L)=>{let z=Q[L];if(!z)return 0;return Y(z.key,L)},rebuild:(L)=>{Q=$J(L,q.getGroupForIndex),j=L+Q.length}}};var N2=(J,q,Q,j,Y,X=!1)=>{let U=document.createElement("div");if(U.className=`${Y}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",X)U.style.top="0",U.style.bottom="0",U.style.left="0";else U.style.top="0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let _=-1,D=!1,K=0,V=(Z)=>{if(Z===_)return;_=Z;let A=q.groups;if(Z<0||Z>=A.length){U.textContent="";return}let H=A[Z],E=j.headerTemplate(H.key,H.groupIndex),P=q.getHeaderHeight(Z);if(X)U.style.width=`${P}px`;else U.style.height=`${P}px`;if(typeof E==="string")U.innerHTML=E;else U.replaceChildren(E)},k=(Z)=>{let A=q.groups;if(A.length===0){z();return}let H=Q.getOffset(A[0].headerLayoutIndex);if(Z<H){z();return}let E=0,P=A.length-1;while(E<P){let W=E+P+1>>>1;if(Q.getOffset(A[W].headerLayoutIndex)<=Z)E=W;else P=W-1}let G=E;if(!D)L();V(G);let C=q.getHeaderHeight(G),p=0,w=G+1;if(w<A.length){let I=Q.getOffset(A[w].headerLayoutIndex)-Z;if(I<C)p=I-C}if(p!==K)if(K=p,p===0)U.style.transform="";else{let W=Math.round(p);U.style.transform=X?`translateX(${W}px)`:`translateY(${W}px)`}},L=()=>{if(D)return;D=!0,U.style.display=""},z=()=>{if(!D)return;D=!1,U.style.display="none",_=-1,K=0,U.style.transform=""},M=()=>{let Z=_;if(_=-1,Z>=0)V(Z)},b=()=>{U.remove(),_=-1,D=!1};return U.style.display="none",{update:k,refresh:M,show:L,hide:z,destroy:b}};var kJ=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;let U=Q.indexAtOffset(J),_=Q.indexAtOffset(J+q);if(_<j-1)_++;return X.start=Math.max(0,U),X.end=Math.min(j-1,Math.max(0,_)),X},yJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},PJ=(J,q,Q,j,Y,X)=>{if(j===0)return 0;let U=Math.max(0,Math.min(J,j-1)),_=q.getOffset(U),D=q.getSize(U),K=q.getTotalSize(),V=Math.max(0,K-Q),k;switch(X){case"center":k=_-Q/2+D/2;break;case"end":k=_-Q+D;break;case"start":default:k=_;break}return Math.max(0,Math.min(k,V))},RJ=(J,q,Q)=>{if(Q&&Q.isCompressed)return Q.virtualSize;return q.getTotalSize()},zJ=(J,q)=>{return q.getTotalSize()},CJ=(J,q)=>{return q.getOffset(J)},wJ=(J,q,Q)=>{let j=Math.max(0,q-Q);return Math.max(0,Math.min(J,j))};var y0=(J,q,Q,j,Y="start",X,U=PJ)=>{return U(J,q,Q,j,X,Y)},vJ=(J,q)=>{return J.start===q.start&&J.end===q.end},SJ=(J,q)=>{return J>=q.start&&J<=q.end},fJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var IJ=(J,q)=>{let Q=[],j=[];for(let Y=J.start;Y<=J.end;Y++)if(Y<q.start||Y>q.end)j.push(Y);for(let Y=q.start;Y<=q.end;Y++)if(Y<J.start||Y>J.end)Q.push(Y);return{add:Q,remove:j}};j2();var hJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let q=null,Q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(X){let{dom:U,config:_,rawConfig:D}=X,{classPrefix:K}=_,k=D.item.height;j=D.items?[...D.items]:[];let L=j.length,z={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};q=Z2(L,z),Y=m0(j,q.groups);let M=d0(q,k);X.setSizeConfig(M),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length);let b=D.item.template,{headerTemplate:Z}=J,A=(w,W,I)=>{if(z0(w))return Z(w.groupKey,w.groupIndex);return b(w,W,I)},H=X.methods.get("_getGridLayout"),E=X.methods.get("_replaceGridRenderer"),P=X.methods.get("_updateGridLayoutForGroups");if(H&&E){if(P)P((t)=>{let d=Y[t];return!!(d&&z0(d))});let{createGridRenderer:w}=(_2(),N1(pJ)),W=H(),I=w(U.items,A,X.sizeCache,W,K,X.getContainerWidth(),()=>X.dataManager.getTotal(),_.ariaIdPrefix);E(I)}else X.replaceTemplate(A);if(U.root.classList.add(`${K}--grouped`),J.sticky!==!1){Q=N2(U.root,q,X.sizeCache,{...z,sticky:z.sticky??!1},K,_.horizontal);let w=Q;X.afterScroll.push((W,I)=>{w.update(W)}),Q.update(X.scrollController.getScrollTop())}let G=()=>{if(!q)return;q.rebuild(j.length),Y=m0(j,q.groups);let w=d0(q,k);if(X.setSizeConfig(w),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};X.methods.set("setItems",(w)=>{j=w.slice(),G()}),X.methods.set("appendItems",(w)=>{j.push(...w),G()}),X.methods.set("prependItems",(w)=>{j.unshift(...w),G()}),X.methods.set("removeItem",(w)=>{j=j.filter((W)=>W.id!==w),G()});let{animateScroll:C,cancelScroll:p}=JJ(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(w,W)=>{let I=q.dataToLayoutIndex(w),{align:t,behavior:d,duration:l}=v0(W),u=X.dataManager.getTotal(),B=y0(I,X.sizeCache,X.state.viewportState.containerSize,u,t,X.getCachedCompression());if(d==="smooth")C(X.scrollController.getScrollTop(),B,l);else p(),X.scrollController.scrollTo(B)}),X.methods.set("_getItems",()=>j),X.methods.set("_getTotal",()=>j.length),X.destroyHandlers.push(()=>{if(p(),Q)Q.destroy(),Q=null;U.root.classList.remove(`${K}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}};var D2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},X=(M)=>{if(M<=0)return 0;if(!j)return Math.ceil(M/q);let b=0,Z=0,A=0;for(let H=0;H<M;H++)if(j(H)){if(A++,Z>0)b++,Z=0;b++,Z=0}else if(Z++,Z>=q)b++,Z=0;if(Z>0)b++;return b},U=(M)=>{return Y.row=_(M),Y.col=D(M),Y},_=(M)=>{if(!j)return Math.floor(M/q);let b=0,Z=0;for(let A=0;A<=M;A++)if(j(A)){if(Z>0)b++,Z=0;if(A===M)return b;b++,Z=0}else{if(A===M)return b;if(Z++,Z>=q)b++,Z=0}return console.warn(`⚠️ getRow(${M}) fell through - returning ${b}`),b},D=(M)=>{if(!j)return M%q;if(j(M))return 0;let b=0;for(let Z=0;Z<=M;Z++)if(j(Z))b=0;else{if(Z===M)return b;if(b++,b>=q)b=0}return b},K=(M,b,Z)=>{if(Z<=0)return{start:0,end:-1};if(!j){let G=Math.max(0,M*q),C=Math.min(Z-1,(b+1)*q-1);return{start:G,end:C}}let A=-1,H=-1,E=0,P=0;for(let G=0;G<Z;G++){if(j(G)){if(P>0)E++,P=0;if(E>=M&&E<=b){if(A===-1)A=G;H=G}E++,P=0}else{if(E>=M&&E<=b){if(A===-1)A=G;H=G}if(P++,P>=q)E++,P=0}if(E>b&&P===0)break}if(A===-1)return{start:0,end:-1};return{start:A,end:H}},V=(M,b,Z)=>{if(b<0||b>=q)return-1;let A=M*q+b;if(A<0||A>=Z)return-1;return A},k=(M)=>{let b=(q-1)*Q;return Math.max(0,(M-b)/q)};return{get columns(){return q},get gap(){return Q},update:(M)=>{if(M.columns!==void 0)q=Math.max(1,Math.floor(M.columns));if(M.gap!==void 0)Q=M.gap;if(M.isHeaderFn!==void 0)j=M.isHeaderFn},getTotalRows:X,getPosition:U,getRow:_,getCol:D,getItemRange:K,getItemIndex:V,getColumnWidth:k,getColumnOffset:(M,b)=>{let Z=k(b);return M*(Z+Q)}}};_2();var R1=new Set,uJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:X,config:U,rawConfig:_}=j,{classPrefix:D}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let K=U.horizontal,V=()=>K?Y.viewport.clientHeight:j.getContainerWidth(),k=_.items?.some((N)=>N.__groupHeader===!0),L={columns:J.columns,gap:J.gap??0};if(k)L.isHeaderFn=(N)=>{let $=j.dataManager.getItem(N);return!!($&&$.__groupHeader===!0)};q=D2(L);let z=q.gap;j.setVirtualTotalFn(()=>{let N=j.dataManager.getTotal();return q.getTotalRows(N)});let M=_.item,b=U.horizontal?M.width:M.height,Z={containerWidth:V(),columns:q.columns,gap:q.gap},A={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof b==="function")j.setSizeConfig((N)=>{let $=Z.containerWidth-2,F=(Z.columns-1)*Z.gap;return A.containerWidth=Z.containerWidth,A.columns=Z.columns,A.gap=Z.gap,A.columnWidth=($-F)/Z.columns,A.row=q.getRow(N),A.column=q.getCol(N),A.totalRows=q.getTotalRows(j.dataManager.getTotal()),A.totalColumns=Z.columns,b(N,A)+Z.gap});else if(z>0)j.setSizeConfig(b+z);if(j.rebuildSizeCache(),z>0){let N=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let $=N();return $>0?$-Z.gap:0}}Y.root.classList.add(`${D}--grid`);let H=V(),E=_.item.template,P=()=>{Q=c0(Y.items,E,j.sizeCache,q,D,H,()=>j.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),j.replaceRenderer(Q)};P(),j.methods.set("_getGridLayout",()=>q),j.methods.set("_getGridConfig",()=>L),j.methods.set("_replaceGridRenderer",(N)=>{Q=N}),j.methods.set("_updateGridLayoutForGroups",(N)=>{q.update({isHeaderFn:N});let $=j.dataManager.getTotal(),F=0;for(let v=0;v<$;v++)if(q.getCol(v)===0){let m=j.sizeCache.getSize(v);F+=m}if(j.sizeCache.getTotalSize=()=>F,U.horizontal)j.dom.content.style.width=`${F}px`;else j.dom.content.style.height=`${F}px`;P()}),j.methods.set("updateGrid",(N)=>{if(N.columns!==void 0){if(!Number.isInteger(N.columns)||N.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");L.columns=N.columns}if(N.gap!==void 0){if(N.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");L.gap=N.gap}if(q)q.update(L);let $=V();if(Z.containerWidth=$,Z.columns=L.columns,Z.gap=L.gap??0,Q)Q.updateContainerWidth($);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 G=null,C=null,p=!1,w=()=>{if(p)return;p=!0,G=j.methods.get("_getSelectedIds")??null,C=j.methods.get("_getFocusedIndex")??null},W=-1,I=-1,t=!0,d=U.overscan??3,l={start:0,end:0},u={start:0,end:0},B=()=>{if(j.state.isDestroyed)return;let N=j.scrollController.getScrollTop(),$=j.state.viewportState.containerSize;if(!t&&N===W&&$===I)return;W=N,I=$,t=!1;let F=j.getVirtualTotal();if(F===0||$===0)l.start=0,l.end=0;else{l.start=Math.max(0,j.sizeCache.indexAtOffset(N));let i=j.sizeCache.indexAtOffset(N+$);if(i<F-1)i++;l.end=Math.min(F-1,Math.max(0,i))}u.start=Math.max(0,l.start-d),u.end=Math.min(F-1,l.end+d);let v=j.state.viewportState;v.scrollPosition=N,v.visibleRange.start=l.start,v.visibleRange.end=l.end,v.renderRange.start=u.start,v.renderRange.end=u.end;let m=j.state.lastRenderRange,T=v.isCompressed,S=j.dataManager.getTotal(),h=q.getItemRange(u.start,u.end,S),g=j.dataManager.getItemsInRange(h.start,h.end),f=T?j.getCompressionContext():void 0;w();let x=G?G():R1,c=C?C():-1;if(Q.render(g,h,x,c,f),m.start!==u.start||m.end!==u.end)m.start=u.start,m.end=u.end,X.emit("range:change",{range:{start:u.start,end:u.end}})},y=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,t=!0,B()};j.setRenderFns(B,y);let O=typeof b==="function";if(j.resizeHandlers.push((N,$)=>{let F=K?$:N;if(Z.containerWidth=F,Q)Q.updateContainerWidth(F);if(O){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let v=0;v<j.contentSizeHandlers.length;v++)j.contentSizeHandlers[v]();if(Q)Q.clear();j.forceRender()}}),j.methods.set("scrollToIndex",(N,$)=>{let F=Math.floor(N/J.columns),{align:v,behavior:m}=v0($),T=j.dataManager.getState(),S=q.getTotalRows(T.total),h=Math.max(0,Math.min(F,S-1)),g=y0(h,j.sizeCache,j.state.viewportState.containerSize,S,v,j.getCachedCompression());if(m==="smooth")j.scrollController.scrollTo(g);else j.scrollController.scrollTo(g)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;Y.root.classList.remove(`${D}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}};_2();var V2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.containerSize,Y=0,X=[],U=()=>{let Z=(q-1)*Q;Y=Math.max(0,(j-Z)/q),X=Array(q);let A=Y+Q;for(let H=0;H<q;H++)X[H]=H*A};U();let _=[],D=0,K=[],V=(Z)=>{let A=0,H=Z[0];for(let E=1;E<Z.length;E++){let P=Z[E];if(P<H)H=P,A=E}return A},k=(Z,A)=>{if(Z<=0)return D=0,_=[],[];let H=Array(q).fill(0),E=Array(q);for(let C=0;C<q;C++)E[C]=[];let P=Array(Z);for(let C=0;C<Z;C++){let p=V(H),w=A(C),W=H[p];P[C]={index:C,x:X[p],y:W,lane:p,size:w,crossSize:Y},E[p].push(C),H[p]=W+w+Q}_=E;let G=0;for(let C=0;C<q;C++){let p=H[C],w=p>0?p-Q:0;if(w>G)G=w}return D=G,P},L=(Z)=>{if(Z.length===0)return D>0?D:0;if(D>0)return D;let A=Array(q).fill(0);for(let E of Z){let P=E.y+E.size,G=A[E.lane];if(P>G)A[E.lane]=P}let H=0;for(let E=0;E<q;E++)if(A[E]>H)H=A[E];return H},z=(Z,A,H)=>{if(Z.length===0||H<=A)return K.length=0,K;if(_.length===0||_.length!==q)return M(Z,A,H);K.length=0;for(let E=0;E<q;E++){let P=_[E],G=P.length;if(G===0)continue;let C=0,p=G;while(C<p){let w=C+p>>>1,W=Z[P[w]];if(W.y+W.size<=A)C=w+1;else p=w}for(let w=C;w<G;w++){let W=Z[P[w]];if(W.y>=H)break;K.push(W)}}return K},M=(Z,A,H)=>{let E=[];for(let P of Z)if(P.y+P.size>A&&P.y<H)E.push(P);return E};return{get columns(){return q},get gap(){return Q},get containerSize(){return j},update:(Z)=>{let A=!1;if(Z.columns!==void 0){let H=Math.max(1,Math.floor(Z.columns));if(H!==q)q=H,A=!0}if(Z.gap!==void 0&&Z.gap!==Q)Q=Z.gap,A=!0;if(Z.containerSize!==void 0&&Z.containerSize!==j)j=Z.containerSize,A=!0;if(A)U()},calculateLayout:k,getTotalSize:L,getVisibleItems:z}};var z1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-lane"),q.push(X)},clear:()=>{q.length=0}}};var G2=(J,q,Q,j=!1,Y,X)=>{let U=z1(),_=new Map,D=new Set,K=0,V="",k=-1,L={selected:!1,focused:!1},z=(W,I)=>{return L.selected=W,L.focused=I,L},M=`${Q}-item ${Q}-masonry-item`,b=`${Q}-item--selected`,Z=`${Q}-item--focused`,A=(W,I)=>{if(typeof I==="string")W.innerHTML=I;else W.replaceChildren(I)},H=(W,I,t)=>{W.classList.toggle(b,I),W.classList.toggle(Z,t)},E=(W,I)=>{if(j)W.style.transform=`translate(${Math.round(I.y)}px, ${Math.round(I.x)}px)`;else W.style.transform=`translate(${Math.round(I.x)}px, ${Math.round(I.y)}px)`},P=(W,I)=>{if(j)W.style.width=`${I.size}px`,W.style.height=`${I.crossSize}px`;else W.style.width=`${I.crossSize}px`,W.style.height=`${I.size}px`},G=(W,I,t,d,l)=>{let u=U.acquire(),B=z(d,l);if(u.className=M,u.dataset.index=String(W),u.dataset.id=String(I.id),u.dataset.lane=String(t.lane),u.ariaSelected=String(d),X)u.id=`${X}-item-${W}`;if(Y){let O=Y();if(O!==k)k=O,V=String(O);u.setAttribute("aria-setsize",V),u.setAttribute("aria-posinset",String(W+1))}P(u,t);let y=q(I,W,B);return A(u,y),H(u,d,l),E(u,t),{element:u,lastItemId:I.id,lastSelected:d,lastFocused:l,lastY:t.y,lastX:t.x,lastSize:t.size,lastCrossSize:t.crossSize,lastSeenFrame:K}},C=(W,I,t,d)=>{K++,D.clear();for(let u=0;u<I.length;u++)D.add(I[u].index);for(let[u,B]of _)if(D.has(u))B.lastSeenFrame=K;else if(K-B.lastSeenFrame>2)U.release(B.element),_.delete(u);let l=null;for(let u=0;u<I.length;u++){let B=I[u],y=B.index,O=W(y);if(!O)continue;let N=t.has(O.id),$=y===d,F=_.get(y);if(F){let v=F.lastItemId!==O.id,m=F.lastSelected!==N,T=F.lastFocused!==$,S=F.lastY!==B.y||F.lastX!==B.x,h=F.lastSize!==B.size||F.lastCrossSize!==B.crossSize;if(v||m||T){let g=z(N,$),f=q(O,y,g);A(F.element,f),H(F.element,N,$),F.element.dataset.id=String(O.id),F.element.ariaSelected=String(N),F.lastItemId=O.id,F.lastSelected=N,F.lastFocused=$}if(h)P(F.element,B),F.lastSize=B.size,F.lastCrossSize=B.crossSize;if(S)E(F.element,B),F.lastY=B.y,F.lastX=B.x}else{let v=G(y,O,B,N,$);if(!l)l=document.createDocumentFragment();l.appendChild(v.element),_.set(y,v)}}if(l)J.appendChild(l)},p=()=>{for(let{element:W}of _.values())U.release(W);_.clear(),J.innerHTML=""};return{render:C,getElement:(W)=>_.get(W)?.element,clear:p,destroy:()=>{p(),U.clear()}}};var C1=new Set,gJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:X,emitter:U,config:_,rawConfig:D}=Y,K=_.classPrefix,V=_.horizontal;if(_.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");X.root.classList.add(`${K}--masonry`);let k=()=>{return V?X.viewport.clientHeight:X.viewport.clientWidth},L={columns:J.columns,gap:J.gap??0,containerSize:k()};q=V2(L);let z=D.item,M=V&&D.item.width?D.item.width:z.height,b={containerWidth:0,columns:0,gap:0,columnWidth:0},Z=typeof M==="function"?(N)=>M(N,b):()=>M,A=()=>{let N=Y.dataManager.getTotal(),$=q;b.containerWidth=$.containerSize,b.columns=$.columns,b.gap=$.gap;let F=($.columns-1)*$.gap;b.columnWidth=Math.max(0,(b.containerWidth-F)/$.columns),j=$.calculateLayout(N,Z);let v=q.getTotalSize(j);if(Y.sizeCache.getTotalSize=()=>v,V)X.content.style.width=`${v}px`;else X.content.style.height=`${v}px`},H=D.item.template;Q=G2(X.items,H,K,V,()=>Y.dataManager.getTotal(),_.ariaIdPrefix);let E=null,P=null,G=!1,C=()=>{if(G)return;G=!0,E=Y.methods.get("_getSelectedIds")??null,P=Y.methods.get("_getFocusedIndex")??null},p=(N)=>Y.dataManager.getItem(N),w=-1,W=-1,I=!0,t=(_.overscan??3)*100,d=()=>{if(Y.state.isDestroyed)return;C();let N=Y.scrollController.getScrollTop(),$=Y.state.viewportState.containerSize;if(!I&&N===w&&$===W)return;w=N,W=$,I=!1;let F=Math.max(0,N-t),v=N+$+t,m=q.getVisibleItems(j,F,v),T=E?E():C1,S=P?P():-1;if(Q&&m.length>0)Q.render(p,m,T,S);let h=Y.state.viewportState;h.scrollPosition=N;let g=m.length,f=g>0?m[0].index:0,x=g>0?m[g-1].index:0;h.visibleRange.start=f,h.visibleRange.end=x,h.renderRange.start=f,h.renderRange.end=x;let c=Y.state.lastRenderRange;if(c.start!==f||c.end!==x)c.start=f,c.end=x,U.emit("range:change",{range:{start:f,end:x}})},l=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,I=!0,d()};Y.setRenderFns(d,l);let u=(N,$)=>{let F=V?$:N;if(q&&q.containerSize!==F){if(q.update({containerSize:F}),A(),Q)Q.clear();l()}};Y.resizeHandlers.push(u);let B=()=>{A(),l()},y=Y.dataManager,O=(N)=>{if(typeof y[N]!=="function")return;let $=y[N].bind(y);y[N]=(...F)=>{$(...F),B()}};O("setItems"),O("appendItems"),O("prependItems"),O("updateItem"),O("removeItem"),Y.methods.set("scrollToIndex",(N,$,F)=>{let v=j[N];if(!v)return;let m=v.y,T=Y.state.viewportState.containerSize,S=m;if($==="center")S=m-T/2+v.size/2;else if($==="end")S=m-T+v.size;S=Math.max(0,S),Y.scrollController.scrollTo(S,F==="smooth")}),A(),Y.destroyHandlers.push(()=>{if(Q)Q.destroy();X.root.classList.remove(`${K}--masonry`)})}}};var W2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),l0=(J,q,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),q.length>0)j.add(q[0])}else for(let Y of q)j.add(Y);return{...J,selected:j}},r0=(J,q)=>{let Q=new Set(J.selected);for(let j of q)Q.delete(j);return{...J,selected:Q}},p0=(J,q,Q)=>{if(Q==="none")return J;if(J.selected.has(q))return r0(J,[q]);else return l0(J,[q],Q)},M2=(J,q,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(q.map((j)=>j.id))}},O2=(J)=>({...J,selected:new Set}),A2=(J,q)=>{return J.focusedIndex=q,J},v2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?q-1:0;return J.focusedIndex=j,J},S2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex+1;if(j>=q)j=Q?0:q-1;return J.focusedIndex=j,J},f2=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},I2=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J};var xJ=(J,q)=>{return J.selected.has(q)},a0=(J)=>{return Array.from(J.selected)},s0=(J,q)=>{let Q=[];for(let j of J.selected){let Y=q(j);if(Y)Q.push(Y)}return Q};var mJ=(J)=>{let q=J?.mode??"single",Q=J?.initial,j=W2(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:U,emitter:_,config:D}=X,{classPrefix:K,ariaIdPrefix:V}=D;if(q==="none"){X.methods.set("select",()=>{}),X.methods.set("deselect",()=>{}),X.methods.set("toggleSelect",()=>{}),X.methods.set("selectAll",()=>{}),X.methods.set("clearSelection",()=>{}),X.methods.set("getSelected",()=>[]),X.methods.set("getSelectedItems",()=>[]),X.methods.set("setSelectionMode",()=>{});return}U.root.classList.add(`${K}--selectable`);let k=new Map,L=()=>{k.clear();let H=X.dataManager.getTotal(),E=X.dataManager.getCached();if(E===0)return;if(E>=H){for(let G=0;G<H;G++){let C=X.dataManager.getItem(G);if(C)k.set(C.id,G)}return}let P=X.dataManager.getStorage();if(P&&typeof P.getLoadedRanges==="function"){let G=P.getLoadedRanges();for(let C of G)for(let p=C.start;p<=C.end;p++){let w=X.dataManager.getItem(p);if(w)k.set(w.id,p)}}};_.on("load:end",({items:H,offset:E})=>{if(!H||H.length===0)return;if(E!==void 0)for(let P=0;P<H.length;P++){let G=H[P];if(G&&G.id!==void 0)k.set(G.id,E+P)}else L()}),L(),X.methods.set("_getSelectedIds",()=>{return j.selected}),X.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:z}=X.getRenderFns(),M=()=>{z();let H=(E)=>{let P=k.get(E);if(P===void 0)return;return X.dataManager.getItem(P)};_.emit("selection:change",{selected:a0(j),items:s0(j,H)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${K}-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",U.root.appendChild(Y);let b=Y;_.on("selection:change",({selected:H})=>{let E=H.length;if(E===0)b.textContent="";else if(E===1)b.textContent="1 item selected";else b.textContent=`${E} items selected`});let Z=()=>{if(X.state.isDestroyed)return;if(!U.root.matches(":focus-visible"))return;let H=X.dataManager.getTotal();if(H===0)return;let E=j.focusedIndex>=0?Math.min(j.focusedIndex,H-1):0;j=A2(j,E),j.focusVisible=!0,U.root.setAttribute("aria-activedescendant",`${V}-item-${E}`),X.scrollController.scrollTo(y0(E,X.sizeCache,X.state.viewportState.containerSize,X.dataManager.getState().total,"center",X.getCachedCompression()));let P=X.dataManager.getItem(E);if(P)X.renderer.updateItemClasses(E,j.selected.has(P.id),!0)};U.root.addEventListener("focusin",Z);let A=(H)=>{if(X.state.isDestroyed)return;let E=H.relatedTarget;if(E&&U.root.contains(E))return;let P=j.focusedIndex;if(j.focusVisible=!1,U.root.removeAttribute("aria-activedescendant"),P>=0){let G=X.dataManager.getItem(P);if(G)X.renderer.updateItemClasses(P,j.selected.has(G.id),!1)}};U.root.addEventListener("focusout",A),X.clickHandlers.push((H)=>{if(X.state.isDestroyed)return;let P=H.target.closest("[data-index]");if(!P)return;let G=parseInt(P.dataset.index??"-1",10);if(G<0)return;let C=X.dataManager.getItem(G);if(!C)return;_.emit("item:click",{item:C,index:G,event:H}),j=A2(j,G),j.focusVisible=!1,U.root.setAttribute("aria-activedescendant",`${V}-item-${G}`),j=p0(j,C.id,q),M()}),X.keydownHandlers.push((H)=>{if(X.state.isDestroyed)return;let E=X.dataManager.getTotal(),P=j.focusedIndex,G=!1,C=!1,p=j;switch(H.key){case"ArrowUp":p=v2(j,E,D.wrap),p.focusVisible=!0,G=!0,C=!0;break;case"ArrowDown":p=S2(j,E,D.wrap),p.focusVisible=!0,G=!0,C=!0;break;case"Home":p=f2(j,E),p.focusVisible=!0,G=!0,C=!0;break;case"End":p=I2(j,E),p.focusVisible=!0,G=!0,C=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let w=X.dataManager.getItem(j.focusedIndex);if(w)p=p0(j,w.id,q),p.focusVisible=!0;G=!0}break}if(G){H.preventDefault(),j=p;let w=j.focusedIndex;if(w>=0){let W=X.dataManager.getState(),I=y0(w,X.sizeCache,X.state.viewportState.containerSize,W.total,"center",X.getCachedCompression());X.scrollController.scrollTo(I),U.root.setAttribute("aria-activedescendant",`${V}-item-${w}`)}else U.root.removeAttribute("aria-activedescendant");if(C){let{selected:W}=j;if(P>=0&&P!==w){let I=X.dataManager.getItem(P);if(I)X.renderer.updateItemClasses(P,W.has(I.id),!1)}if(w>=0){let I=X.dataManager.getItem(w);if(I)X.renderer.updateItemClasses(w,W.has(I.id),!0)}}else M()}}),X.methods.set("select",(...H)=>{j=l0(j,H,q),M()}),X.methods.set("deselect",(...H)=>{j=r0(j,H),M()}),X.methods.set("toggleSelect",(H)=>{j=p0(j,H,q),M()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let H=X.getAllLoadedItems();j=M2(j,H,q),L(),M()}),X.methods.set("clearSelection",()=>{j=O2(j),M()}),X.methods.set("getSelected",()=>{return a0(j)}),X.methods.set("getSelectedItems",()=>{return s0(j,(E)=>{let P=k.get(E);if(P===void 0)return;return X.dataManager.getItem(P)})}),X.destroyHandlers.push(()=>{if(b&&b.parentNode)b.remove();U.root.removeEventListener("focusin",Z),U.root.removeEventListener("focusout",A)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var dJ=(J)=>{let q=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let Y=Q.scrollController.getScrollTop(),X=Q.getCachedCompression(),U=Q.getVirtualTotal(),_=Q.methods.get("getSelected"),D=_&&_().length>0?_():void 0;if(U===0){let L={index:0,offsetInItem:0,total:0};if(D)L.selectedIds=D;return L}let K,V;if(X.isCompressed){let z=Y/X.virtualSize*U;K=Math.max(0,Math.min(Math.floor(z),U-1)),V=(z-K)*Q.sizeCache.getSize(K)}else K=Q.sizeCache.indexAtOffset(Y),V=Y-Q.sizeCache.getOffset(K);V=Math.max(0,V);let k={index:K,offsetInItem:V,total:U};if(D)k.selectedIds=D;return k});let j=(Y)=>{let{index:X,offsetInItem:U,selectedIds:_}=Y,D=Q.getVirtualTotal();if(D===0)return;if(!Number.isFinite(X)||!Number.isFinite(U))return;if(Q.sizeCache.getTotal()!==D){Q.sizeCache.rebuild(D),Q.updateCompressionMode();let Z=Q.getCachedCompression();Q.updateContentSize(Z.virtualSize)}let V=Q.getCachedCompression(),k=Math.max(0,Math.min(X,D-1)),L;if(V.isCompressed){let Z=Q.sizeCache.getSize(k),A=Z>0?U/Z:0;L=(k+A)/D*V.virtualSize}else L=Q.sizeCache.getOffset(k)+U;let z=Q.state.viewportState.containerSize,M=Math.max(0,V.virtualSize-z);if(L=Math.max(0,Math.min(L,M)),Q.scrollController.scrollTo(L),_&&_.length>0){let Z=Q.methods.get("select");if(Z)Z(..._)}let b=Q.methods.get("loadVisibleRange");if(b)requestAnimationFrame(()=>{b()});else{let Z=Q.methods.get("reload");if(Z)requestAnimationFrame(()=>{Z()})}};if(Q.methods.set("restoreScroll",j),q)queueMicrotask(()=>{j(q)})}}};var E2=(J,q=50,Q=1/0,j=!0)=>{let Y=J,X=[],U=0,_=()=>{X=Y.map((Z,A)=>({def:Z,index:A,width:0,minWidth:w1(Z.minWidth??q,1),maxWidth:Z.maxWidth??Q,resizable:Z.resizable??j,offset:0}))},D=(Z)=>{if(X.length===0){U=0;return}let A=0,H=0;for(let E=0;E<X.length;E++){let P=X[E],G=P.def;if(G.width!==void 0)P.width=p2(G.width,P.minWidth,P.maxWidth),A+=P.width;else H++}if(H>0){let P=Math.max(0,Z-A)/H;for(let G=0;G<X.length;G++){let C=X[G];if(C.def.width===void 0)C.width=p2(P,C.minWidth,C.maxWidth)}}K()},K=()=>{let Z=0;for(let A=0;A<X.length;A++){let H=X[A];H.offset=Z,Z+=H.width}U=Z},V=(Z,A)=>{if(Z<0||Z>=X.length)return 0;let H=X[Z];if(!H.resizable)return H.width;let E=p2(A,H.minWidth,H.maxWidth);return H.width=E,K(),E},k=(Z)=>{return X[Z]},L=(Z)=>{if(X.length===0)return;if(Z<0)return X[0];if(Z>=U)return X[X.length-1];let A=0,H=X.length-1;while(A<H){let E=A+H>>>1,P=X[E];if(Z<P.offset)H=E-1;else if(Z>=P.offset+P.width)A=E+1;else return P}return X[A]},z=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].offset},M=(Z)=>{if(Z<0||Z>=X.length)return 0;return X[Z].width},b=(Z)=>{Y=Z,_()};return _(),{get columns(){return X},get totalWidth(){return U},resolve:D,updateColumns:b,resizeColumn:V,getColumn:k,getColumnAtX:L,getColumnOffset:z,getColumnWidth:M}},p2=(J,q,Q)=>Math.min(Q,Math.max(q,J)),w1=(J,q)=>Math.max(q,J);var F2=(J,q,Q,j,Y,X,U)=>{let _=document.createElement("div");_.className=`${j}-table-header`,_.setAttribute("role","row"),_.setAttribute("aria-rowindex","1"),_.style.height=`${Q}px`;let D=document.createElement("div");D.className=`${j}-table-header-scroll`,_.appendChild(D),J.insertBefore(_,J.firstChild),q.style.position="absolute",q.style.top=`${Q}px`,q.style.left="0",q.style.right="0",q.style.bottom="0",q.style.height="auto";let K=[],V=[],k=[],L=!0,z=null,M="asc",b=null,Z=!1,A=-1,H=0,E=0,P=(y,O)=>{let N=document.createElement("div");N.className=`${j}-table-header-cell`,N.setAttribute("role","columnheader"),N.setAttribute("aria-colindex",String(O+1)),N.dataset.columnKey=y.def.key;let $=y.def.align;if($==="center")N.classList.add(`${j}-table-header-cell--center`);else if($==="right")N.classList.add(`${j}-table-header-cell--right`);let F=document.createElement("div");F.className=`${j}-table-header-content`;let v=y.def.header?y.def.header(y.def):y.def.label;if(typeof v==="string")F.textContent=v;else F.appendChild(v);if(N.appendChild(F),y.def.sortable){let m=document.createElement("span");m.className=`${j}-table-header-sort`,m.setAttribute("aria-hidden","true"),N.appendChild(m),k.push(m),N.classList.add(`${j}-table-header-cell--sortable`)}else k.push(null);if(y.resizable){let m=document.createElement("div");m.className=`${j}-table-header-resize`,m.dataset.resizeIndex=String(O),N.appendChild(m),V.push(m)}return N},G=(y)=>{b=y,D.textContent="",K=[],V=[],k=[];let O=y.columns;for(let N=0;N<O.length;N++){let $=O[N],F=P($,N);K.push(F),D.appendChild(F)}if(C(y),z)p(z,M)},C=(y)=>{b=y;let O=y.columns;D.style.width=`${y.totalWidth}px`;for(let N=0;N<K.length&&N<O.length;N++){let $=K[N],F=O[N];$.style.width=`${F.width}px`}},p=(y,O)=>{if(z=y,M=O,!b)return;let N=b.columns;for(let $=0;$<k.length&&$<N.length;$++){let F=k[$];if(!F)continue;if(N[$].def.key===y&&y!==null)F.textContent=O==="asc"?"▲":"▼",F.style.opacity="0.7",K[$].setAttribute("aria-sort",O==="asc"?"ascending":"descending");else F.textContent="",F.style.opacity="0",K[$].removeAttribute("aria-sort")}},w=(y)=>{D.style.transform=`translateX(${-y}px)`},W=(y)=>{let O=y.target;if(!O.dataset.resizeIndex)return;if(y.preventDefault(),y.stopPropagation(),A=parseInt(O.dataset.resizeIndex,10),!b)return;let N=b.getColumn(A);if(!N||!N.resizable)return;Z=!0,H=y.clientX,E=N.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",O.classList.add(`${j}-table-header-resize--active`),O.setPointerCapture(y.pointerId),O.addEventListener("pointermove",I),O.addEventListener("pointerup",t),O.addEventListener("pointercancel",t)},I=(y)=>{if(!Z||!b)return;let O=y.clientX-H;if(Math.abs(O)<1)return;let N=Math.max(0,E+O);Y(A,N)},t=(y)=>{if(!Z)return;let O=y.target;O.removeEventListener("pointermove",I),O.removeEventListener("pointerup",t),O.removeEventListener("pointercancel",t);try{O.releasePointerCapture(y.pointerId)}catch{}O.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",Z=!1,A=-1},d=(y)=>{let O=y.target;if(O.dataset.resizeIndex!==void 0)return;if(Z)return;let N=O;while(N&&!N.dataset.columnKey)if(N=N.parentElement,N===_||N===null)return;if(!N||!N.dataset.columnKey)return;let $=N.dataset.columnKey;if(!b)return;let F=b.columns,v=-1;for(let T=0;T<F.length;T++)if(F[T].def.key===$){v=T;break}if(v===-1)return;let m=F[v];if(U)U({key:$,index:v,event:y});if(m.def.sortable&&X){let T;if(z===$)if(M==="asc")T="desc";else T=null;else T="asc";X({key:$,index:v,direction:T})}};return _.addEventListener("pointerdown",W),_.addEventListener("click",d),{element:_,update:C,updateSort:p,rebuild:G,show:()=>{if(L)return;L=!0,_.style.display=""},hide:()=>{if(!L)return;L=!1,_.style.display="none"},destroy:()=>{_.removeEventListener("pointerdown",W),_.removeEventListener("click",d),q.style.position="",q.style.top="",q.style.left="",q.style.right="",q.style.bottom="",_.remove(),K=[],V=[],k=[],b=null,L=!1},syncScroll:w}};var v1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;return document.createElement("div")},release:(X)=>{if(X.parentNode)X.parentNode.removeChild(X);if(q.length<J)X.className="",X.removeAttribute("data-id"),X.removeAttribute("data-index"),X.removeAttribute("aria-selected"),X.removeAttribute("aria-rowindex"),X.removeAttribute("role"),X.style.cssText="",X.textContent="",q.push(X)},clear:()=>{q.length=0}}};var L2=(J,q,Q,j,Y,X,U,_)=>{let D=v1(),K=new Map,V=0,k=-1,L=Q,z=(O,N)=>{if(N)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},M=`${Y}-item ${Y}-table-row`,b=`${Y}-item--selected`,Z=`${Y}-item--focused`,A=`${Y}-table-cell`,H=`${Y}-table-cell--center`,E=`${Y}-table-cell--right`,P=`${Y}-item--odd`,G=(O,N,$,F)=>{if($.def.cell){let v=$.def.cell(N,$.def,F);if(typeof v==="string")O.innerHTML=v;else O.replaceChildren(v)}else{let v=N[$.def.key];O.textContent=v!=null?String(v):""}},C=(O,N,$,F)=>{let v=M;if(_&&(N&1)===1)v+=` ${P}`;if($)v+=` ${b}`;if(F)v+=` ${Z}`;O.className=v},p=(O,N)=>{let $=N.def.align;if($==="center")O.classList.add(H),O.classList.remove(E);else if($==="right")O.classList.add(E),O.classList.remove(H);else O.classList.remove(H,E)},w=(O,N)=>{let F=L.columns.length;if(N.length===F)return N;let v=[];for(let m=0;m<F;m++){let T;if(m<N.length)T=N[m];else T=document.createElement("div"),T.className=A,O.appendChild(T);v.push(T)}for(let m=F;m<N.length;m++)N[m].remove();return v},W=(O,N,$,F)=>{let v=D.acquire();v.style.width=`${L.totalWidth}px`;let m=q.getSize(N);v.style.height=`${m}px`,C(v,N,$,F),v.setAttribute("role","row"),v.setAttribute("data-id",String(O.id)),v.setAttribute("data-index",String(N)),v.id=`${X}-${N}`,v.setAttribute("aria-rowindex",String(N+2));let T=U();if(T!==k)k=T;z(v,$);let S=w(v,[]),h=L.columns;for(let f=0;f<S.length&&f<h.length;f++){let x=S[f],c=h[f];x.style.left=`${c.offset}px`,x.style.width=`${c.width}px`,x.setAttribute("role","gridcell"),x.setAttribute("aria-colindex",String(f+1)),p(x,c),G(x,O,c,N)}let g=q.getOffset(N);return v.style.transform=`translateY(${g}px)`,{element:v,cells:S,index:N,lastItemId:O.id,lastSelected:$,lastFocused:F,lastOffset:g,lastSeenFrame:V}},I=(O,N,$,F)=>{V++;for(let[S,h]of K)if(S>=N.start&&S<=N.end)h.lastSeenFrame=V;else if(V-h.lastSeenFrame>2)D.release(h.element),K.delete(S);let v=!1,m=U();if(m!==k)k=m,v=!0;let T=null;for(let S=N.start;S<=N.end;S++){let h=S-N.start,g=O[h];if(!g)continue;let f=$.has(g.id),x=S===F,c=K.get(S);if(c){let i=c.lastItemId!==g.id,e=c.lastSelected!==f,K0=c.lastFocused!==x;if(i){let s=L.columns;for(let J0=0;J0<c.cells.length&&J0<s.length;J0++)G(c.cells[J0],g,s[J0],S);C(c.element,S,f,x),c.element.setAttribute("data-id",String(g.id)),z(c.element,f),c.lastItemId=g.id,c.lastSelected=f,c.lastFocused=x}else if(e||K0)C(c.element,S,f,x),z(c.element,f),c.lastSelected=f,c.lastFocused=x;let U0=q.getOffset(S);if(c.lastOffset!==U0)c.lastOffset=U0,c.element.style.transform=`translateY(${U0}px)`;let a=q.getSize(S);if(c.element.style.height=`${a}px`,c.element.style.width=`${L.totalWidth}px`,v)c.element.setAttribute("aria-rowindex",String(S+2));c.lastSeenFrame=V}else{let i=W(g,S,f,x);if(K.set(S,i),!T)T=document.createDocumentFragment();T.appendChild(i.element)}}if(T)J.appendChild(T)},t=(O,N,$,F)=>{let v=K.get(O);if(!v)return;let m=v.lastItemId!==N.id,T=v.lastSelected!==$,S=v.lastFocused!==F;if(m||T||S){if(m){let h=L.columns;for(let g=0;g<v.cells.length&&g<h.length;g++)G(v.cells[g],N,h[g],O);v.element.setAttribute("data-id",String(N.id)),v.lastItemId=N.id}C(v.element,O,$,F),z(v.element,$),v.lastSelected=$,v.lastFocused=F}},d=(O,N,$)=>{let F=K.get(O);if(!F)return;let v=F.lastSelected!==N,m=F.lastFocused!==$;if(v||m)C(F.element,O,N,$),z(F.element,N),F.lastSelected=N,F.lastFocused=$},l=(O)=>{L=O;let N=O.columns;for(let[,$]of K){$.element.style.width=`${O.totalWidth}px`;for(let F=0;F<$.cells.length&&F<N.length;F++){let v=$.cells[F],m=N[F];v.style.left=`${m.offset}px`,v.style.width=`${m.width}px`}}},u=(O)=>{return K.get(O)?.element},B=()=>{for(let[,O]of K)D.release(O.element);K.clear(),V=0,k=-1};return{render:I,updateItem:t,updateItemClasses:d,getElement:u,updateColumnLayout:l,clear:B,destroy:()=>{B(),D.clear()}}};var S1=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 q=null,Q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:X,emitter:U,config:_}=Y,{classPrefix:D}=_;if(_.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(_.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let K=J.resizable??!0,V=J.minColumnWidth??50,k=J.maxColumnWidth??1/0,L=J.columnBorders??!1,z=J.rowBorders??!0,M=J.rowHeight,b=J.headerHeight??(typeof M==="number"?M:40),Z=J.sort?.key??null,A=J.sort?.direction??"asc";if(q=E2(J.columns,V,k,K),typeof M==="function")Y.setSizeConfig(M);else if(typeof M==="number")Y.setSizeConfig(M);if(Y.rebuildSizeCache(),X.root.classList.add(`${D}--table`),z)X.root.classList.add(`${D}--table-row-borders`);if(L)X.root.classList.add(`${D}--table-col-borders`);X.items.setAttribute("role","grid"),X.items.setAttribute("aria-colcount",String(J.columns.length));let H=Y.getContainerWidth();q.resolve(H);let E=(T,S)=>{if(!q)return;let h=q.getColumn(T);if(!h)return;let g=h.width,f=q.resizeColumn(T,S);if(Q)Q.update(q);if(j)j.updateColumnLayout(q);C(),U.emit("column:resize",{key:h.def.key,index:T,previousWidth:g,width:f})},P=(T)=>{if(T.direction===null)Z=null,A="asc";else Z=T.key,A=T.direction;if(Q)Q.updateSort(Z,A);U.emit("column:sort",T)},G=(T)=>{U.emit("column:click",T)};if(Q=F2(X.root,X.viewport,b,D,E,P,G),Q.rebuild(q),Z)Q.updateSort(Z,A);let C=()=>{if(!q)return;let T=q.totalWidth;X.content.style.minWidth=`${T}px`,X.items.style.minWidth=`${T}px`};C(),j=L2(X.items,Y.sizeCache,q,J.columns,D,_.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped);let p=null,w=null,W=!1,I=()=>{if(W)return;W=!0,p=Y.methods.get("_getSelectedIds")??null,w=Y.methods.get("_getFocusedIndex")??null},t=-1,d=-1,l=!0,u=_.overscan??3,B={start:0,end:0},y={start:0,end:0},O=()=>{if(Y.state.isDestroyed)return;let T=Y.scrollController.getScrollTop(),S=Y.state.viewportState.containerSize;if(!l&&T===t&&S===d)return;t=T,d=S,l=!1;let h=Y.getVirtualTotal();if(h===0||S===0)B.start=0,B.end=0;else{B.start=Math.max(0,Y.sizeCache.indexAtOffset(T));let e=Y.sizeCache.indexAtOffset(T+S);if(e<h-1)e++;B.end=Math.min(h-1,Math.max(0,e))}y.start=Math.max(0,B.start-u),y.end=Math.min(h-1,B.end+u);let g=Y.state.viewportState;g.scrollPosition=T,g.visibleRange.start=B.start,g.visibleRange.end=B.end,g.renderRange.start=y.start,g.renderRange.end=y.end;let f=Y.state.lastRenderRange,x=Y.dataManager.getItemsInRange(y.start,y.end);I();let c=p?p():S1,i=w?w():-1;if(j.render(x,y,c,i),f.start!==y.start||f.end!==y.end)f.start=y.start,f.end=y.end,U.emit("range:change",{range:{start:y.start,end:y.end}})},N=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,l=!0,O()};Y.setRenderFns(O,N);let $=Q,F=-1,v=()=>{let T=X.viewport.scrollLeft;if(T!==F){if(F=T,$.syncScroll)$.syncScroll(T)}};Y.afterScroll.push(()=>{v()});let m=()=>{v()};X.viewport.addEventListener("scroll",m,{passive:!0}),Y.resizeHandlers.push((T,S)=>{if(!q)return;if(q.resolve(T),Q)Q.update(q);if(j)j.updateColumnLayout(q);C()}),Y.methods.set("updateColumns",(T)=>{if(!q||!Q)return;if(q.updateColumns(T),q.resolve(Y.getContainerWidth()),Q.rebuild(q),Z)Q.updateSort(Z,A);if(C(),j)j.updateColumnLayout(q),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(T,S)=>{if(!q)return;let h;if(typeof T==="string"){let g=q.columns;h=-1;for(let f=0;f<g.length;f++)if(g[f].def.key===T){h=f;break}if(h===-1)return}else h=T;E(h,S)}),Y.methods.set("getColumnWidths",()=>{if(!q)return{};let T={},S=q.columns;for(let h=0;h<S.length;h++)T[S[h].def.key]=S[h].width;return T}),Y.methods.set("setSort",(T,S)=>{if(Z=T,A=S??"asc",Q)Q.updateSort(Z,A)}),Y.methods.set("getSort",()=>{return{key:Z,direction:A}}),Y.methods.set("_getTableLayout",()=>q),Y.contentSizeHandlers.push(()=>{C()}),Y.destroyHandlers.push(()=>{if(X.viewport.removeEventListener("scroll",m),Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null;X.content.style.minWidth="",X.items.style.minWidth="",X.root.classList.remove(`${D}--table`),X.items.setAttribute("role","listbox"),X.items.removeAttribute("aria-colcount")})},destroy(){if(Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null}}};export{cJ as withTable,dJ as withSnapshots,mJ as withSelection,AJ as withScrollbar,LJ as withScale,HJ as withPage,gJ as withMasonry,hJ as withGroups,uJ as withGrid,TJ as withAsync,YJ as vlist,p0 as toggleSelection,kJ as simpleVisibleRange,l0 as selectItems,M2 as selectAll,vJ as rangesEqual,X2 as rafThrottle,WJ as needsScaling,K2 as mergeRanges,xJ as isSelected,R0 as isPlaceholderItem,SJ as isInRange,z0 as isGroupHeader,s0 as getSelectedItems,a0 as getSelectedIds,L0 as getScaleState,OJ as getScaleInfo,L0 as getScale,fJ as getRangeCount,MJ as getMaxItemsWithoutScaling,C2 as filterPlaceholders,IJ as diffRanges,r0 as deselectItems,L2 as createTableRenderer,E2 as createTableLayout,F2 as createTableHeader,N2 as createStickyHeader,Y2 as createSparseStorage,$0 as createSizeCache,W2 as createSelectionState,I0 as createScrollbar,FJ as createScrollController,B2 as createPlaceholderManager,t0 as createMeasuredSizeCache,G2 as createMasonryRenderer,V2 as createMasonryLayout,d0 as createGroupedSizeFn,Z2 as createGroupLayout,c0 as createGridRenderer,D2 as createGridLayout,e0 as createEmitter,U2 as createAsyncManager,O2 as clearSelection,wJ as clampScrollPosition,RJ as calculateTotalSize,y0 as calculateScrollToIndex,J2 as calculateScaledVisibleRange,Q2 as calculateScaledScrollToIndex,VJ as calculateScaledRenderRange,f0 as calculateScaledItemPosition,yJ as calculateRenderRange,x0 as calculateMissingRanges,CJ as calculateItemOffset,GJ as calculateIndexFromScrollPosition,zJ as calculateActualSize,m0 as buildLayoutItems,k0 as MAX_VIRTUAL_SIZE,DJ as MAX_VIRTUAL_HEIGHT};
@@ -1 +1 @@
1
- .vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,#dbeafe)}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell:last-child{border-right:none}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}[data-theme-mode="dark"] .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#1f2937)}[data-theme-mode="dark"] .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}
1
+ .vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,#f9fafb)}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,#eff6ff)}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,#dbeafe)}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}[data-theme-mode="dark"] .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,#1f2937)}[data-theme-mode="dark"] .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "1.2.3",
3
+ "version": "1.2.5",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",