@floor/vlist 1.3.7 → 1.3.8
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 +25 -15
- package/dist/builder/index.d.ts +1 -1
- package/dist/builder/types.d.ts +36 -1
- package/dist/features/async/feature.d.ts +2 -1
- package/dist/features/scale/feature.d.ts +19 -1
- package/dist/features/scale/index.d.ts +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -1
- package/dist/internals.js +1 -1
- package/dist/rendering/renderer.d.ts +2 -0
- package/dist/rendering/scale.d.ts +8 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
|
|
4
4
|
|
|
5
|
-
**v1.3.
|
|
5
|
+
**v1.3.8** — [Changelog](./changelog.txt)
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@floor/vlist)
|
|
8
8
|
[](https://github.com/floor/vlist/actions/workflows/ci.yml)
|
|
@@ -10,7 +10,7 @@ Lightweight, high-performance virtual list with zero dependencies and dimension-
|
|
|
10
10
|
|
|
11
11
|
- **Zero dependencies** — no external libraries
|
|
12
12
|
- **Ultra memory efficient** — ~0.1-0.2 MB constant overhead regardless of dataset size
|
|
13
|
-
- **~9.
|
|
13
|
+
- **~9.9 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
|
|
14
14
|
- **Builder API** — composable features with perfect tree-shaking
|
|
15
15
|
- **Grid, masonry, table, groups, async, selection, scale** — all opt-in
|
|
16
16
|
- **Horizontal & vertical** — semantically correct orientation support
|
|
@@ -89,17 +89,17 @@ const list = vlist({
|
|
|
89
89
|
|
|
90
90
|
| Feature | Size | Description |
|
|
91
91
|
|---------|------|-------------|
|
|
92
|
-
| **Base** | 9.
|
|
93
|
-
| `withGrid()` | +
|
|
92
|
+
| **Base** | 9.9 KB | Core virtualization, gap, padding, ARIA live region |
|
|
93
|
+
| `withGrid()` | +3.9 KB | 2D grid layout with context injection |
|
|
94
94
|
| `withMasonry()` | +2.7 KB | Pinterest-style masonry layout |
|
|
95
|
-
| `withGroups()` | +4.
|
|
96
|
-
| `withAsync()` | +4.
|
|
95
|
+
| `withGroups()` | +4.2 KB | Grouped lists with sticky/inline headers |
|
|
96
|
+
| `withAsync()` | +4.4 KB | Lazy loading with adapters |
|
|
97
97
|
| `withSelection()` | +1.7 KB | Single/multiple selection + keyboard nav |
|
|
98
|
-
| `withScale()` | +
|
|
99
|
-
| `withScrollbar()` | +1.
|
|
100
|
-
| `withTable()` | +5.
|
|
98
|
+
| `withScale()` | +3.0 KB | 1M+ items via scroll compression |
|
|
99
|
+
| `withScrollbar()` | +1.1 KB | Custom scrollbar UI |
|
|
100
|
+
| `withTable()` | +5.1 KB | Data table with columns, resize, sort, groups |
|
|
101
101
|
| `withPage()` | +0.4 KB | Document-level scrolling |
|
|
102
|
-
| `withSnapshots()` | +0.
|
|
102
|
+
| `withSnapshots()` | +0.6 KB | Scroll save/restore |
|
|
103
103
|
|
|
104
104
|
## Examples
|
|
105
105
|
|
|
@@ -242,7 +242,10 @@ const list = vlist(config).use(...features).build()
|
|
|
242
242
|
| `list.prependItems(items)` | Add to start (preserves scroll position) |
|
|
243
243
|
| `list.updateItem(index, partial)` | Update a single item by index |
|
|
244
244
|
| `list.removeItem(index)` | Remove by index |
|
|
245
|
+
| `list.getItemAt(index)` | Get item at index |
|
|
246
|
+
| `list.getIndexById(id)` | Get index by item ID |
|
|
245
247
|
| `list.reload()` | Re-fetch from adapter (async) |
|
|
248
|
+
| `list.reload({ snapshot })` | Re-fetch and restore scroll position from snapshot |
|
|
246
249
|
|
|
247
250
|
### Navigation
|
|
248
251
|
|
|
@@ -309,6 +312,12 @@ list.on('load:error', ({ error, offset, limit }) => {})
|
|
|
309
312
|
list.on('velocity:change', ({ velocity, reliable }) => {})
|
|
310
313
|
```
|
|
311
314
|
|
|
315
|
+
### Statistics (with `createStats()`)
|
|
316
|
+
|
|
317
|
+
| Method | Description |
|
|
318
|
+
|--------|-------------|
|
|
319
|
+
| `createStats(list)` | Create a stats tracker for scroll performance metrics |
|
|
320
|
+
|
|
312
321
|
### Properties
|
|
313
322
|
|
|
314
323
|
| Property | Description |
|
|
@@ -334,7 +343,8 @@ withGroups({ getGroupForIndex, headerHeight, headerTemplate, sticky?: true })
|
|
|
334
343
|
withSelection({ mode: 'single' | 'multiple', initial?: [...ids] })
|
|
335
344
|
withAsync({ adapter: { read }, loading?: { cancelThreshold? } })
|
|
336
345
|
withTable({ columns, rowHeight, headerHeight?, resizable?, columnBorders?, rowBorders? })
|
|
337
|
-
withScale() //
|
|
346
|
+
withScale() // auto-activates at 16.7M px
|
|
347
|
+
withScale({ force: true }) // force compression on any list size
|
|
338
348
|
withScrollbar({ autoHide?, autoHideDelay?, minThumbSize? })
|
|
339
349
|
withPage() // no config — uses document scroll
|
|
340
350
|
withSnapshots() // included by default
|
|
@@ -405,11 +415,11 @@ This makes the codebase clearer and eliminates semantic confusion when working w
|
|
|
405
415
|
|
|
406
416
|
| Configuration | Gzipped |
|
|
407
417
|
|---------------|---------|
|
|
408
|
-
| Base only | 9.
|
|
409
|
-
| + Grid | 13.
|
|
418
|
+
| Base only | 9.9 KB |
|
|
419
|
+
| + Grid | 13.8 KB |
|
|
410
420
|
| + Groups | 14.1 KB |
|
|
411
|
-
| + Async |
|
|
412
|
-
| + Table |
|
|
421
|
+
| + Async | 14.3 KB |
|
|
422
|
+
| + Table | 15.0 KB |
|
|
413
423
|
|
|
414
424
|
### Memory Efficiency
|
|
415
425
|
|
package/dist/builder/index.d.ts
CHANGED
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
* @packageDocumentation
|
|
22
22
|
*/
|
|
23
23
|
export { vlist } from "./core";
|
|
24
|
-
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, FeatureFactory, BuilderContext, BuilderState, ResolvedBuilderConfig, } from "./types";
|
|
24
|
+
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, FeatureFactory, BuilderContext, ReloadOptions, BuilderState, ResolvedBuilderConfig, } from "./types";
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/builder/types.d.ts
CHANGED
|
@@ -8,6 +8,39 @@ import type { CompressionState } from "../rendering/viewport";
|
|
|
8
8
|
import type { SimpleDataManager } from "./data";
|
|
9
9
|
import type { ScrollController } from "../features/scrollbar/controller";
|
|
10
10
|
import type { Emitter } from "../events";
|
|
11
|
+
/** Options for the reload() method. */
|
|
12
|
+
export interface ReloadOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Skip the initial page-1 load after resetting state.
|
|
15
|
+
* When true, reload() clears data and DOM but does NOT call loadInitial().
|
|
16
|
+
* The caller is responsible for loading data (e.g. via restoreScroll).
|
|
17
|
+
*
|
|
18
|
+
* Automatically set to true when `snapshot` is provided with meaningful data.
|
|
19
|
+
*/
|
|
20
|
+
skipInitialLoad?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Snapshot to restore after resetting state.
|
|
23
|
+
*
|
|
24
|
+
* When provided with meaningful data (total > 0 and index > 0),
|
|
25
|
+
* reload() automatically:
|
|
26
|
+
* 1. Skips loadInitial() (no wasted page-1 request)
|
|
27
|
+
* 2. Calls restoreScroll(snapshot) to load data at the target position
|
|
28
|
+
*
|
|
29
|
+
* This eliminates the need for the consumer to manually coordinate
|
|
30
|
+
* skipInitialLoad and restoreScroll after reload.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* // Before: manual coordination
|
|
34
|
+
* const hasRestorable = snapshot && snapshot.total > 0 && snapshot.index > 0;
|
|
35
|
+
* await list.reload(hasRestorable ? { skipInitialLoad: true } : undefined);
|
|
36
|
+
* if (hasRestorable) list.restoreScroll(snapshot);
|
|
37
|
+
*
|
|
38
|
+
* // After: vlist handles it
|
|
39
|
+
* await list.reload({ snapshot });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
snapshot?: ScrollSnapshot;
|
|
43
|
+
}
|
|
11
44
|
/** Configuration accepted by the builder's vlist() factory */
|
|
12
45
|
export interface BuilderConfig<T extends VListItem = VListItem> {
|
|
13
46
|
/** Container element or selector */
|
|
@@ -352,7 +385,9 @@ export interface VList<T extends VListItem = VListItem> {
|
|
|
352
385
|
prependItems: (items: T[]) => void;
|
|
353
386
|
updateItem: (id: string | number, updates: Partial<T>) => void;
|
|
354
387
|
removeItem: (id: string | number) => void;
|
|
355
|
-
|
|
388
|
+
getItemAt: (index: number) => T | undefined;
|
|
389
|
+
getIndexById: (id: string | number) => number;
|
|
390
|
+
reload: (options?: ReloadOptions) => Promise<void>;
|
|
356
391
|
scrollToIndex: (index: number, alignOrOptions?: "start" | "center" | "end" | ScrollToOptions) => void;
|
|
357
392
|
cancelScroll: () => void;
|
|
358
393
|
getScrollPosition: () => number;
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
* - Placeholder generation — creates skeleton items for unloaded ranges
|
|
12
12
|
* - Request deduplication — prevents duplicate fetches for the same range
|
|
13
13
|
* - Idle handler — loads any pending ranges when scrolling stops
|
|
14
|
+
* - Snapshot-aware reload — reload({ snapshot }) skips page-1 and auto-restores position
|
|
14
15
|
*
|
|
15
|
-
* Added methods: reload
|
|
16
|
+
* Added methods: reload, loadVisibleRange
|
|
16
17
|
* Added events: load:start, load:end, error
|
|
17
18
|
*/
|
|
18
19
|
import type { VListItem, VListAdapter } from "../../types";
|
|
@@ -20,6 +20,24 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { VListItem } from "../../types";
|
|
22
22
|
import type { VListFeature } from "../../builder/types";
|
|
23
|
+
/** Configuration options for the scale feature */
|
|
24
|
+
export interface ScaleConfig {
|
|
25
|
+
/**
|
|
26
|
+
* Force compressed scroll mode even when the total size is below the
|
|
27
|
+
* browser's ~16.7M pixel limit.
|
|
28
|
+
*
|
|
29
|
+
* When `true`, the feature always activates compressed scrolling
|
|
30
|
+
* (custom wheel/touch handling, lerp-based smooth scroll, custom
|
|
31
|
+
* scrollbar fallback) regardless of the list size. This is useful for:
|
|
32
|
+
*
|
|
33
|
+
* - **Testing** — verify compression behaviour with a small item set
|
|
34
|
+
* - **Consistent UX** — prefer the smooth scroll physics for all lists
|
|
35
|
+
* - **Pre-emptive** — avoid the mode switch when items are added at runtime
|
|
36
|
+
*
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
force?: boolean;
|
|
40
|
+
}
|
|
23
41
|
/**
|
|
24
42
|
* Create a compression feature for the builder.
|
|
25
43
|
*
|
|
@@ -40,5 +58,5 @@ import type { VListFeature } from "../../builder/types";
|
|
|
40
58
|
* .build()
|
|
41
59
|
* ```
|
|
42
60
|
*/
|
|
43
|
-
export declare const withScale: <T extends VListItem = VListItem>() => VListFeature<T>;
|
|
61
|
+
export declare const withScale: <T extends VListItem = VListItem>(config?: ScaleConfig) => VListFeature<T>;
|
|
44
62
|
//# sourceMappingURL=feature.d.ts.map
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* Usage: import { withScale } from 'vlist/compression'
|
|
7
7
|
*/
|
|
8
8
|
export { MAX_VIRTUAL_SIZE, getCompressionState, needsCompression, getMaxItemsWithoutCompression, getCompressionInfo, calculateCompressedVisibleRange, calculateCompressedRenderRange, calculateCompressedItemPosition, calculateCompressedScrollToIndex, calculateIndexFromScrollPosition, type CompressionState, } from "../../rendering/scale";
|
|
9
|
-
export { withScale } from "./feature";
|
|
9
|
+
export { withScale, type ScaleConfig } from "./feature";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { vlist } from "./builder";
|
|
12
12
|
export { withScale } from "./features/scale";
|
|
13
|
+
export type { ScaleConfig } from "./features/scale";
|
|
13
14
|
export { withAsync } from "./features/async";
|
|
14
15
|
export { withScrollbar } from "./features/scrollbar";
|
|
15
16
|
export { withPage } from "./features/page";
|
|
@@ -19,6 +20,8 @@ export { withMasonry } from "./features/masonry";
|
|
|
19
20
|
export { withSelection } from "./features/selection";
|
|
20
21
|
export { withSnapshots } from "./features/snapshots";
|
|
21
22
|
export { withTable } from "./features/table";
|
|
23
|
+
export { createStats } from "./utils/stats";
|
|
24
|
+
export type { Stats, StatsConfig, StatsState } from "./utils/stats";
|
|
22
25
|
export type { VListItem, VListEvents, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridSizeContext, GridHeightContext, } from "./types";
|
|
23
|
-
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, } from "./builder";
|
|
26
|
+
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, ReloadOptions, } from "./builder";
|
|
24
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var{defineProperty:t0,getOwnPropertyNames:mJ,getOwnPropertyDescriptor:dJ}=Object,cJ=Object.prototype.hasOwnProperty;var b2=new WeakMap,lJ=(J)=>{var X=b2.get(J),q;if(X)return X;if(X=t0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")mJ(J).map((j)=>!cJ.call(X,j)&&t0(X,j,{get:()=>J[j],enumerable:!(q=dJ(J,j))||q.enumerable}));return b2.set(J,X),X};var rJ=(J,X)=>{for(var q in X)t0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var H2=(J,X)=>()=>(J&&(X=J(J=0)),X);var aJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},sJ=(J,X)=>{let q=X,j=new Float64Array(0),Y=(K)=>{q=K,j=new Float64Array(K+1),j[0]=0;for(let B=0;B<K;B++)j[B+1]=j[B]+J(B)};Y(X);let Q=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=j[q])return q-1;let B=0,N=q-1;while(B<N){let U=B+N+1>>>1;if(j[U]<=K)B=U;else N=U-1}return B};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return j[q];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Q(K),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(K)=>Y(K),isVariable:()=>!0}},w0=(J,X)=>{if(typeof J==="number")return aJ(J,X);return sJ(J,X)},d0=(J,X,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let Y=0,Q=0,K=X;while(K<j&&Q<q)Q+=J.getSize(K),Y++,K++;return Math.max(1,Y)},e0=(J,X,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getSize(0));let j=0,Y=0;for(let Q=q-1;Q>=0;Q--){let K=J.getSize(Q);if(Y+K>X)break;Y+=K,j++}return Math.max(j,1)},w2=(J,X,q)=>{if(q===0)return 0;let j=Math.floor(X),Y=X-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+Y*J.getSize(Q)};var f0=(J,X,q)=>{let j=Array.from(X).sort((K,B)=>K-B);if(j.length<=1)return;let Y=[];for(let K=0;K<j.length;K++){let B=q(j[K]);if(B)Y.push(B)}if(Y.length<=1)return;let Q=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===Q)Q=Q.nextSibling;else J.insertBefore(B,Q)}};var d2=3,c2="vlist",Q2=200,p0=50,l2=50,r2=5,a2=2,j2=16000000,s2=150,o2="x",n2=20,q2="_isPlaceholder",i2="__placeholder_";var R0=(J,X)=>{let q=X.getTotalSize(),j=q>j2,Y=j?j2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},e2=(J,X,q,j,Y,Q)=>{if(j===0||X===0)return Q.start=0,Q.end=-1,Q;if(!Y.isCompressed){let A=q.indexAtOffset(J),C=q.indexAtOffset(J+X);if(C<j-1)C++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,C)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=d0(q,Math.max(0,U),X,j),R=Math.ceil(N)+W,$=K-X-J;if($<=X&&$>=-1){let A=e0(q,X,j),C=Math.max(0,j-A),_=Math.max(0,Math.min(1,1-$/X));U=Math.floor(U+(C-U)*_),R=$<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,R)),Q},r0=(J,X,q,j,Y,Q,K)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);let{virtualSize:B}=Q,N=B-Y,U=N-X;if(U<=Y&&U>=-1){if(X>=N-1){let T=q.getTotalSize()-q.getOffset(J);return Y-T}let $=e0(q,Y,j),A=Math.max(0,j-$),_=X/B*j,G=Math.max(0,Math.min(1,1-U/Y)),E=q.getOffset(J)-q.getOffset(A),M=q.getOffset(J)-w2(q,_,j);return M+(E-M)*G}let W=X/B,R=q.getTotalSize(),k=W*R;return q.getOffset(J)-k},JJ=(J,X,q,j,Y,Q="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(Q==="end"&&J===j-1)return Math.max(0,Y.virtualSize-q);K=J/j*Y.virtualSize}else K=X.getOffset(J);let B=X.getSize(J);switch(Q){case"center":K-=(q-B)/2;break;case"end":K-=q-B;break}let N=Y.virtualSize-q;return Math.max(0,Math.min(K,N))};var X2=()=>{};var v0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var DJ={};rJ(DJ,{createGridRenderer:()=>B2});var Y4=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),X.push(Q)},clear:()=>{X.length=0}}},U4=1,B2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=Y4(),W=new Map,R=Q,k=!1,$=null,A=0,C=0,_="",G=-1,E=(L)=>{if($&&A===L)return $;return $=R0(L,q),A=L,$},M={selected:!1,focused:!1},T=(L,m)=>{return M.selected=L,M.focused=m,M},P=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,g=`${Y}-item--focused`,c=(L,m)=>{if(typeof m==="string")L.innerHTML=m;else L.replaceChildren(m)},r=(L,m,v)=>{L.classList.toggle(V,m),L.classList.toggle(g,v)},S=(L,m)=>{let v=j.getRow(L);if(m){let O=m.totalItems,d=E(O);if(d.isCompressed)return r0(v,m.scrollPosition,q,O,m.containerSize,d,m.rangeStart)}return q.getOffset(v)},b=(L,m)=>{let v=k&&j.getCol(L)===0,O=v?0:j.getCol(L),d=v?0:j.getColumnOffset(O,R),p;if(k){let s=j.getRow(L),y=0,o=new Set;for(let j0=0;j0<L;j0++){let f=j.getRow(j0);if(f<s&&!o.has(f)){let n=q.getSize(j0);y+=n,o.add(f)}}p=y}else p=S(L,m);if(N)return`translate(${Math.round(p)}px, ${Math.round(d)}px)`;return`translate(${Math.round(d)}px, ${Math.round(p)}px)`},x=(L,m)=>{L.style.transform=m},t=(L,m)=>{let v=L.dataset.id?.startsWith("__group_header"),O=v?R:j.getColumnWidth(R),d;if(k||v)d=q.getSize(m)-j.gap;else{let p=j.getRow(m);d=q.getSize(p)-j.gap}if(N)L.style.width=`${d}px`,L.style.height=`${O}px`;else L.style.width=`${O}px`,L.style.height=`${d}px`},I=(L,m,v,O,d)=>{let p=U.acquire(),s=T(v,O);if(p.className=P,p.dataset.index=String(L),p.dataset.id=String(m.id),p.dataset.row=String(j.getRow(L)),p.dataset.col=String(j.getCol(L)),p.ariaSelected=String(v),B)p.id=`${B}-item-${L}`;if(K){let o=K();if(o!==G)G=o,_=String(o);p.setAttribute("aria-setsize",_),p.setAttribute("aria-posinset",String(L+1))}t(p,L);let y=X(m,L,s);return c(p,y),r(p,v,O),x(p,d),{element:p,lastItemId:m.id,lastSelected:v,lastFocused:O,lastTransform:d,lastSeenFrame:C}},z=(L,m,v,O,d)=>{if(C++,m.start===0&&L.length>0)k=v0(L[0]);for(let[y,o]of W)if(y>=m.start&&y<=m.end)o.lastSeenFrame=C;else if(C-o.lastSeenFrame>U4)U.release(o.element),W.delete(y);let p=!1;if(K){let y=K();if(y!==G)G=y,_=String(y),p=!0}let s=null;for(let y=m.start;y<=m.end;y++){let o=y-m.start,j0=L[o];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${y} (range: ${m.start}-${m.end}, items.length: ${L.length})`);continue}let f=v.has(j0.id),n=y===O,i=W.get(y);if(i){let q0=i.lastItemId!==j0.id,X0=i.lastSelected!==f,Y0=i.lastFocused!==n;if(q0||X0||Y0){if(q0){let N0=T(f,n),K0=X(j0,y,N0);c(i.element,K0),i.element.dataset.id=String(j0.id),i.element.dataset.row=String(j.getRow(y)),i.element.dataset.col=String(j.getCol(y)),t(i.element,y)}r(i.element,f,n),i.element.ariaSelected=String(f),i.lastItemId=j0.id,i.lastSelected=f,i.lastFocused=n}let Q0=b(y,d);if(i.lastTransform!==Q0)x(i.element,Q0),i.lastTransform=Q0;if(p)i.element.setAttribute("aria-setsize",_)}else{let q0=b(y,d),X0=I(y,j0,f,n,q0);if(!s)s=document.createDocumentFragment();s.appendChild(X0.element),W.set(y,X0)}}if(s)J.appendChild(s)},h=(L)=>{for(let[m,v]of W){let O=b(m,L);if(v.lastTransform!==O)x(v.element,O),v.lastTransform=O}},w=(L,m,v,O)=>{let d=W.get(L);if(!d)return;let p=d.lastItemId!==m.id,s=d.lastSelected!==v,y=d.lastFocused!==O;if(p||s||y){let o=T(v,O),j0=X(m,L,o);c(d.element,j0),r(d.element,v,O),d.element.dataset.id=String(m.id),d.element.ariaSelected=String(v),t(d.element,L),d.lastItemId=m.id,d.lastSelected=v,d.lastFocused=O}},D=(L,m,v)=>{let O=W.get(L);if(!O)return;let d=O.lastSelected!==m,p=O.lastFocused!==v;if(d||p)r(O.element,m,v),O.lastSelected=m,O.lastFocused=v},F=(L)=>{return W.get(L)?.element},Z=(L)=>{if(Math.abs(L-R)<1)return;R=L;for(let[m,v]of W){t(v.element,m);let O=b(m);x(v.element,O),v.lastTransform=O}},H=()=>{f0(J,W.keys(),(L)=>W.get(L)?.element)},a=()=>{for(let[,L]of W)U.release(L.element);W.clear()};return{render:z,updatePositions:h,updateItem:w,updateItemClasses:D,getElement:F,sortDOM:H,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var Z2=H2(()=>{X2()});var y2=2,$2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},P2=(J,X)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=X,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[Q],B=X-K.position,N=q-K.time;J.velocity=N>0?Math.abs(B)/N:0}return J.lastPosition=X,J.lastTime=q,J};var R2=(J,X)=>{let q=new Map,j=(Q)=>{let K=q.get(Q);return K!==void 0?K:J},Y=w0(j,X);return{getOffset(Q){return Y.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return Y.indexAtOffset(Q)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(Q){if(Q<Y.getTotal()){for(let K of q.keys())if(K>=Q)q.delete(K)}Y=w0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,K){q.set(Q,K)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var v2=()=>{let J={},X=(B,N)=>{if(!J[B])J[B]=new Set;return J[B].add(N),()=>q(B,N)},q=(B,N)=>{J[B]?.delete(N)};return{on:X,off:q,emit:(B,N)=>{J[B]?.forEach((U)=>{try{U(N)}catch(W){console.error(`[vlist] Error in event handler for "${String(B)}":`,W)}})},once:(B,N)=>{let U=(W)=>{q(B,U),N(W)};return X(B,U)},clear:(B)=>{if(B)delete J[B];else for(let N in J)delete J[N]},listenerCount:(B)=>{return J[B]?.size??0}}};var z2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},C2=(J,X,q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);Y.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${X}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let K=document.createElement("div");if(K.className=`${X}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${X}-items`,B.setAttribute("role","listbox"),q)B.setAttribute("aria-label",q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";let N=document.createElement("div");return N.setAttribute("aria-live","polite"),N.setAttribute("aria-atomic","true"),N.setAttribute("role","status"),N.className=`${X}-live`,N.style.position="absolute",N.style.width="1px",N.style.height="1px",N.style.padding="0",N.style.margin="-1px",N.style.overflow="hidden",N.style.clip="rect(0,0,0,0)",N.style.whiteSpace="nowrap",N.style.border="0",K.appendChild(B),Q.appendChild(K),Y.appendChild(N),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B,liveRegion:N}};var S2=(J=100)=>{let X=[];return{acquire:()=>{let q=X.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(X.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),X.push(q)},clear:()=>{X.length=0}}};var f2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=d0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},I2=(J,X,q,j)=>{if(q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(q-1,J.end+X)},p2=(J,X,q,j,Y,Q=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U+Q-q),R;switch(Y){case"center":R=B-(q-N)/2;break;case"end":R=Q>0&&B+N>=U?W:B-q+N;break;default:R=B}return Math.max(0,Math.min(R,W))};var c0={top:0,right:0,bottom:0,left:0},H0=(J)=>{if(J==null)return c0;if(typeof J==="number")return J===0?c0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?c0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?c0:{top:X,right:q,bottom:j,left:Y}},l0=(J,X)=>X?J.left+J.right:J.top+J.bottom,S0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var h2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:R,idleHandlers:k,afterScroll:$,clickHandlers:A,keydownHandlers:C,resizeHandlers:_,destroyHandlers:G,methods:E,onScrollFrame:M,resizeObserver:T,renderRange:P}=X;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return Q},adjustScrollPosition(V){if(J.mp===0)return V;let g=U?J.cw:J.ch,c=J.hc.getTotalSize(),r=Math.max(0,c-g),S=Math.max(0,c+J.mp-g);if(V>=r)return S;return Math.min(V,S)},get renderer(){return{render:(V,g,c,r,S)=>{J.ss=c,J.fi=r,J.ffn()},updateItemClasses:(V,g,c)=>{let r=K.get(V);if(!r)return;r.classList.toggle(`${W}-item--selected`,g),r.classList.toggle(`${W}-item--focused`,c),r.ariaSelected=g?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(V)=>K.get(V)??null,clear:()=>{},destroy:()=>{}}},set renderer(V){},get dataManager(){return J.dm},set dataManager(V){J.dm=V},get scrollController(){return J.sc},set scrollController(V){J.sc=V},state:N,getContainerWidth(){return J.cw},afterScroll:$,idleHandlers:k,clickHandlers:A,keydownHandlers:C,resizeHandlers:_,contentSizeHandlers:R,destroyHandlers:G,methods:E,replaceTemplate(V){J.at=V},replaceRenderer(V){},replaceDataManager(V){J.dm=V},replaceScrollController(V){J.sc=V},getItemsForRange(V){let{dm:g,it:c}=J,r=[];for(let S=V.start;S<=V.end;S++){let b=g?g.getItem(S):c[S];if(b)r.push(b)}return r},getAllLoadedItems(){let V=J.dm;if(V){let g=V.getTotal(),c=[];for(let r=0;r<g;r++){let S=V.getItem(r);if(S)c.push(S)}return c}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let V=J.hc;return{isCompressed:!1,actualSize:V.getTotalSize(),virtualSize:V.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:P.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,V]of K)V.remove(),B.release(V);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(V,g){J.rfn=V,J.ffn=g},setVirtualTotalFn(V){J.vtf=V},rebuildSizeCache(V){J.hc.rebuild(V??J.vtf())},setSizeConfig(V){if(J.hc=w0(V,J.vtf()),J.gp>0){let g=J.hc.getTotalSize,c=J.gp;J.hc.getTotalSize=()=>{let r=g();return r>0?r-c:0}}},updateContentSize(V){let g=`${V+J.mp}px`;if(U)q.content.style.width=g;else q.content.style.height=g},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,g){J.sgt=V,J.sst=(c)=>{g(c),M()}},setScrollTarget(V){J.st.removeEventListener("scroll",M),J.st=V,J.st.addEventListener("scroll",M,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(V){J.gcw=V.width,J.gch=V.height,J.cw=V.width(),J.ch=V.height(),N.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,T.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(V){J.sif=V}}},u2=(J,X,q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:Q,applyTemplate:K,updateContentSize:B}=X,N=()=>{J.hc.rebuild(J.vtf()),B(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let R=J.it,k=[],$=Math.max(0,U),A=Math.min(W,R.length-1);for(let C=$;C<=A;C++)k.push(R[C]);return k},setTotal:(U)=>{},setItems:(U,W=0,R)=>{let k=J.it;if(W===0&&(R!==void 0||k.length===0))J.it=U;else{let $=W+U.length;if(k.length<$)k.length=$;for(let A=0;A<U.length;A++)k[W+A]=U[A]}if(J.ii)N()},updateItem:(U,W)=>{let R=J.it;if(U<0||U>=R.length)return!1;let k=R[U];if(!k)return!1;R[U]={...k,...W};let $=j.get(U);if($)K($,J.at(R[U],U,Y)),$.dataset.id=String(R[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((R)=>R.id===U);if(W<0||W>=J.it.length)return!1;if(J.it.splice(W,1),J.ii)N();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},g2=(J,X)=>{let{dom:q,classPrefix:j}=X;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let Q=J.sgt()+Y;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),Q=Math.max(0,Y-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var x2=(J,X,q,j,Y,Q,K,B,N,U=0)=>{let W=(_,G=!1)=>{let E=q?X.viewport.scrollWidth-X.viewport.clientWidth:X.viewport.scrollHeight-X.viewport.clientHeight;if(E<=0||_<E-2)return!1;let M=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(M>_){if(J.sst(M),J.ls=M,G)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let R=new WeakMap,k=0,$=!1,A=null,C=()=>{if($){let _=J.sgt();K(),$=!1,W(_,!0)}};return A=new ResizeObserver((_)=>{if(J.id)return;let G=!1,E=j.start;for(let M of _){let T=R.get(M.target);if(T===void 0)continue;let P=q?M.borderBoxSize[0].inlineSize:M.borderBoxSize[0].blockSize;if(!B.isMeasured(T)){let V=P+U,g=B.getSize(T);if(B.setMeasuredSize(T,V),G=!0,T<E&&V!==g)k+=V-g;A.unobserve(M.target);let c=M.target;if(q)c.style.width=`${P}px`;else c.style.height=`${P}px`}}if(!G)return;if(B.rebuild(J.vtf()),J.hc=B,k!==0){let M=J.sgt();J.sst(M+k),J.ls=M+k,k=0}if(Q())$=!0;else{let M=J.sgt();K(),$=!1,W(M)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:A,ei:R,mc:B,fl:C,se:W}};var J2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,y0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},I0=(J,X)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,K,B)=>{if(j(),Math.abs(K-Q)<1){J.scrollTo(K);return}let N=performance.now(),U=(W)=>{let R=W-N,k=Math.min(R/B,1),$=Q+(K-Q)*J2(k);if(J.scrollTo($),X(),k<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var m2=(J,X,q,j,Y,Q,K,B,N,U,W,R,k,$,A,C,_,G)=>{let E=(D)=>{{if(!Array.isArray(D)){console.warn("[vlist] setItems() expects an array, got:",typeof D);return}if(D.length>0&&D[0]&&!("id"in D[0]))console.warn('[vlist] Items must have an "id" property. First item:',D[0]);let F=new Set;for(let Z=0;Z<D.length;Z++){let H=D[Z];if(H&&"id"in H){if(F.has(H.id)){console.warn(`[vlist] Duplicate item ID "${H.id}" at index ${Z}. updateItem() and removeItem() will only match the first occurrence.`);break}F.add(H.id)}}}S(),N.dataManager.setItems(D,0,D.length)},M=U?(D)=>{let F=J.sab(2),Z=J.it.length;if(N.dataManager.setItems(D,Z),F&&J.it.length>0){let H=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(H),J.ls=H,J.rfn()}}:(D)=>{let F=J.it.length;N.dataManager.setItems(D,F)},T=U?(D)=>{let F=J.sgt(),Z=J.hc.getTotalSize(),H=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...D,...H],0);let u=J.hc.getTotalSize()-Z;if(u>0)J.sst(F+u),J.ls=F+u}:(D)=>{let F=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...D,...F],0)},P=(D,F)=>{{let Z=J.vtf();if(D<0||D>=Z)console.warn(`[vlist] updateItem() index ${D} is out of range (0–${Z-1}).`)}N.dataManager.updateItem(D,F)},V=!1,g=(D)=>{let F=-1;if(typeof document<"u"){let H=document.activeElement;if(H&&X.items.contains(H)){let a=H.dataset?.index;if(a!==void 0)F=parseInt(a,10)}}let Z=N.dataManager.removeItem(D);if(Z){if(q.emit("data:change",{type:"remove",id:D}),N.forceRender(),!V){let H=N.dataManager;if(typeof H.ensureRange==="function")V=!0,queueMicrotask(()=>{V=!1;let{start:a,end:u}=N.state.viewportState.renderRange;if(u>=a)H.ensureRange(a,u).catch(()=>{})})}}if(!Z)console.warn(`[vlist] removeItem() could not find item with id "${D}".`);if(Z&&F>=0){let H=J.vtf();if(H>0){let a=Math.min(F,H-1),u=j.get(a);if(u&&typeof u.focus==="function")u.focus()}}return Z},c=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},r=null,S=()=>{if(r!==null)cancelAnimationFrame(r),r=null},b=(D,F,Z)=>{if(S(),Math.abs(F-D)<1){J.sst(F),J.ls=F,J.rfn();return}let H=performance.now(),a=(u)=>{let L=u-H,m=Math.min(L/Z,1),v=D+(F-D)*J2(m);if(J.sst(v),J.ls=v,J.rfn(),m<1)r=requestAnimationFrame(a);else r=null};r=requestAnimationFrame(a)},x=(D,F)=>{{let v=J.vtf();if(v>0&&(D<0||D>=v))console.warn(`[vlist] scrollToIndex(${D}) is out of range (0–${v-1}).`)}let{align:Z,behavior:H,duration:a}=y0(F),u=J.vtf(),L=D;if(W&&u>0)L=(L%u+u)%u;let m=J.gsp(L,J.hc,J.ch,u,Z);if(H==="smooth")b(J.sgt(),m,a);else S(),J.sst(m)},t=()=>J.sgt(),I=(D,F)=>{return q.on(D,F)},z=(D,F)=>{q.off(D,F)},h=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",R),X.items.removeEventListener("dblclick",k),X.root.removeEventListener("keydown",$),J.st.removeEventListener("scroll",A),C.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);G();for(let D=0;D<B.length;D++)B[D]();for(let D of K)if(D.destroy)D.destroy();S();for(let[,D]of j)D.remove(),Y.release(D);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},w={get element(){return X.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):E,appendItems:Q.has("appendItems")?Q.get("appendItems"):M,prependItems:Q.has("prependItems")?Q.get("prependItems"):T,updateItem:Q.has("updateItem")?Q.get("updateItem"):P,removeItem:Q.has("removeItem")?Q.get("removeItem"):g,reload:Q.has("reload")?Q.get("reload"):c,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):x,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):S,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):t,on:I,off:z,destroy:h};for(let[D,F]of Q){if(D.charCodeAt(0)===95||D==="setItems"||D==="appendItems"||D==="prependItems"||D==="updateItem"||D==="removeItem"||D==="reload"||D==="scrollToIndex"||D==="scrollToItem"||D==="cancelScroll"||D==="getScrollPosition")continue;w[D]=F}return w};var oJ=0,t2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.orientation==="horizontal",q=X?"width":"height",j=X?"estimatedWidth":"estimatedHeight",Y=X?J.item.width:J.item.height,Q=X?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${X?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,N={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),N},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,nJ(J,K,X,Y,Q??null)}};return N};function nJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=d2,classPrefix:N=c2,ariaLabel:U,padding:W,reverse:R=!1,scroll:k}=J,$=k,A=$?.wheel??!0,C=$?.wrap??!1,_=R,G=`${N}-${oJ++}`,E=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,M=j??Y,T=j==null&&Y!=null,P=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,V=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,g={overscan:B,classPrefix:N,reverse:_,wrap:C,horizontal:q,ariaIdPrefix:G},c=Array.from(X.values()).sort((l,e)=>(l.priority??50)-(e.priority??50)),r=new Set(c.map((l)=>l.name));for(let l of c)if(l.conflicts){for(let e of l.conflicts)if(r.has(e))throw Error(`[vlist/builder] ${l.name} and ${e} cannot be combined`)}if(_){if(r.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=z2(J.container),b=C2(S,N,U,q);if($?.wheel===!1)if(q)b.viewport.style.overflowX="hidden";else b.viewport.style.overflow="hidden";if($?.scrollbar==="none")b.viewport.classList.add(`${N}-viewport--no-scrollbar`);let x=H0(W),t=l0(x,q);if(x.top||x.right||x.bottom||x.left)b.content.style.boxSizing="border-box",b.content.style.padding=`${x.top}px ${x.right}px ${x.bottom}px ${x.left}px`;let I=v2(),z=K||[],h=typeof M==="function"&&(X.has("withGrid")||X.has("withMasonry")),w=E>0?typeof M==="function"?(l)=>M(l)+E:M+E:M,D=T?R2(Y+E,z.length):w0(w,h?0:z.length);if(E>0){let l=D.getTotalSize;D.getTotalSize=()=>{let e=l();return e>0?e-E:0}}let F=S2(),Z={it:z,hc:D,ch:b.viewport.clientHeight,cw:b.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:$2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>b.viewport.scrollLeft:()=>b.viewport.scrollTop,sst:q?(l)=>{b.viewport.scrollLeft=l}:(l)=>{b.viewport.scrollTop=l},sab:(l=2)=>{let e=Z.hc.getTotalSize();return Z.ls+Z.ch>=e-l},sic:!1,rfn:null,ffn:null,gvr:(l,e,J0,Z0,G0)=>{f2(l,e,J0,Z0,G0)},gsp:(l,e,J0,Z0,G0)=>{return p2(l,e,J0,Z0,G0,Z.mp)},pef:null,at:Q.template,vre:!0,st:b.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch,gp:E,mp:t,sif:(l)=>l};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let H=null,a=!1,u={start:0,end:0},L={start:0,end:0},m={start:-1,end:-1},v={viewportState:{scrollPosition:0,containerSize:q?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},O=new Map,d=()=>{f0(b.items,O.keys(),(l)=>O.get(l))},p=()=>{let l=`${Z.hc.getTotalSize()+t}px`;if(q)b.content.style.width=l;else b.content.style.height=l},y=x2(Z,b,q,u,m,()=>a,p,T?D:null,T,E),o={selected:!1,focused:!1},j0=`${N}-item`,f=Q.striped,n=!!f,i=f==="data"||f==="even"||f==="odd",q0=`${N}-item--odd`,X0=[],Y0=[],Q0=[],N0=[],K0=[],A0=[],D0=[],U0=new Map,V0=null,_0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,V0=U0.get("_getSelectedIds")??null,_0=U0.get("_getFocusedIndex")??null},o0=(l,e,J0)=>{if(!e)console.warn(`[vlist] Template returned falsy value${J0!==void 0?` for item at index ${J0}`:""}. The element will render as blank.`);else if(typeof e==="string"&&e==="")console.warn(`[vlist] Template returned empty string${J0!==void 0?` for item at index ${J0}`:""}. The element will render as blank.`);if(typeof e==="string")l.innerHTML=e;else l.replaceChildren(e)},SJ=(l,e)=>{let J0=Math.round(Z.hc.getOffset(e));if(q)l.style.transform=`translateX(${J0}px)`;else l.style.transform=`translateY(${J0}px)`};Z.pef=SJ;let fJ=(l,e)=>{let J0=F.acquire();J0.className=j0;let Z0=!T||y.mc&&y.mc.isMeasured(l);if(q){if(Z0)J0.style.width=`${Z.hc.getSize(l)-E}px`;else J0.style.width="";if(V!=null)J0.style.height=`${V}px`}else if(Z0)J0.style.height=`${Z.hc.getSize(l)-E}px`;else J0.style.height="";if(J0.dataset.index=String(l),J0.dataset.id=String(e.id),J0.ariaSelected="false",J0.id=`${G}-item-${l}`,Z.la=String(Z.vtf()),J0.setAttribute("aria-setsize",Z.la),J0.setAttribute("aria-posinset",String(l+1)),String(e.id).startsWith("__placeholder_"))J0.classList.add(`${N}-item--placeholder`);if(n)if(i){let M0=Z.sif(l);if(M0<0)J0.classList.remove(q0);else J0.classList.toggle(q0,(M0&1)===1)}else J0.classList.toggle(q0,(l&1)===1);return o0(J0,Z.at(e,l,o),l),Z.pef(J0,l),J0},IJ=()=>{if(Z.id)return;let l=q?Z.cw:Z.ch;if(l<=0)return;T0();let e=V0?V0():Z.ss,J0=_0?_0():Z.fi,Z0=Z.vtf();if(Z.gvr(Z.ls,l,Z.hc,Z0,u),I2(u,B,Z0,L),L.start===m.start&&L.end===m.end){if(Z.sic)for(let[B0,O0]of O)Z.pef(O0,B0);return}let G0=String(Z0),M0=G0!==Z.la;Z.la=G0;for(let[B0,O0]of O)if(B0<L.start||B0>L.end)O0.remove(),F.release(O0),O.delete(B0);let W0=document.createDocumentFragment(),L0=[],k0=[];for(let B0=L.start;B0<=L.end;B0++){let O0=Z.dm?Z.dm.getItem(B0):Z.it[B0];if(O0===void 0)continue;let E0=O.get(B0);if(E0){let b0=E0.dataset.id,h0=String(O0.id);if(b0!==h0){let xJ=b0?.startsWith("__placeholder_"),T2=h0.startsWith("__placeholder_");o0(E0,Z.at(O0,B0,o),B0),E0.dataset.id=h0;let k2=!T||y.mc&&y.mc.isMeasured(B0);if(q)E0.style.width=k2?`${Z.hc.getSize(B0)-E}px`:"";else E0.style.height=k2?`${Z.hc.getSize(B0)-E}px`:"";if(T2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(xJ&&!T2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,B0);let m0=e.has(O0.id),gJ=B0===J0;if(E0.classList.toggle(`${N}-item--selected`,m0),E0.classList.toggle(`${N}-item--focused`,gJ),E0.ariaSelected=m0?"true":"false",M0)E0.setAttribute("aria-setsize",Z.la)}else{let b0=fJ(B0,O0);k0.push({index:B0,element:b0});let h0=e.has(O0.id),m0=B0===J0;if(h0)b0.classList.add(`${N}-item--selected`),b0.ariaSelected="true";if(m0)b0.classList.add(`${N}-item--focused`);W0.appendChild(b0),L0.push({index:B0,element:b0})}}if(L0.length>0){b.items.appendChild(W0);for(let{index:B0,element:O0}of L0)O.set(B0,O0)}if(T&&y.ob&&y.mc&&y.ei){for(let{index:B0,element:O0}of k0)if(!y.mc.isMeasured(B0))y.ei.set(O0,B0),y.ob.observe(O0)}m.start=L.start,m.end=L.end,v.lastRenderRange.start=L.start,v.lastRenderRange.end=L.end,v.viewportState.scrollPosition=Z.ls,v.viewportState.visibleRange.start=u.start,v.viewportState.visibleRange.end=u.end,v.viewportState.renderRange.start=L.start,v.viewportState.renderRange.end=L.end,I.emit("range:change",{range:{start:L.start,end:L.end}})},pJ=()=>{m.start=-1,m.end=-1,Z.rfn()};Z.rfn=IJ,Z.ffn=pJ;let hJ=()=>{b.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,I.emit("velocity:change",{velocity:0,reliable:!1}),y.fl(),d();for(let l=0;l<Y0.length;l++)Y0[l]();I.emit("scroll:idle",{scrollPosition:Z.ls})},uJ=()=>{if(H)clearTimeout(H);H=setTimeout(hJ,$?.idleTimeout??s2)},g0=()=>{if(Z.id)return;let l=Z.sgt();if(l===Z.ls&&a)return;let e=l>=Z.ls?"down":"up";if(Z.vt=P2(Z.vt,l),!b.root.classList.contains(`${N}--scrolling`))b.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=l,Z.rfn(),I.emit("scroll",{scrollPosition:l,direction:e}),I.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=y2});for(let J0=0;J0<X0.length;J0++)X0[J0](l,e);uJ()},z0=null;if(Z.st.addEventListener("scroll",g0,{passive:!0}),A&&!q&&!P)z0=(l)=>{if(v.viewportState.isCompressed)return;let e=b.viewport.scrollWidth>b.viewport.clientWidth;if(e&&Math.abs(l.deltaX)>Math.abs(l.deltaY))return;if(l.preventDefault(),e&&l.deltaX!==0)b.viewport.scrollLeft+=l.deltaX;let J0=Z.sgt(),Z0=b.viewport.scrollHeight-b.viewport.clientHeight,G0=Math.max(0,Math.min(J0+l.deltaY,Z0));if(Math.abs(G0-J0)<1)return;Z.sst(G0),g0()},Z.wh=z0,b.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(l)=>{if(l.deltaX)return;l.preventDefault(),b.viewport.scrollLeft+=l.deltaY},Z.wh=z0,b.viewport.addEventListener("wheel",z0,{passive:!1});let G2=(l)=>{let e=l.target.closest("[data-index]");if(!e)return null;let J0=parseInt(e.dataset.index??"-1",10);if(J0<0)return null;let Z0=Z.dm?.getItem(J0)??Z.it[J0];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:J0}},O2=(l)=>{let e=G2(l);if(e)I.emit("item:click",{item:e.item,index:e.index,event:l});for(let J0=0;J0<Q0.length;J0++)Q0[J0](l)},E2=(l)=>{let e=G2(l);if(e)I.emit("item:dblclick",{item:e.item,index:e.index,event:l})},A2=(l)=>{for(let e=0;e<N0.length;e++)N0[e](l)};b.items.addEventListener("click",O2),b.items.addEventListener("dblclick",E2),b.root.addEventListener("keydown",A2);let C0=null,F2=(l)=>{if(C0)clearTimeout(C0);C0=setTimeout(()=>{if(C0=null,Z.id)return;let e=Z.vtf(),{start:J0,end:Z0}=l.range;b.liveRegion.textContent=`Showing items ${J0+1} to ${Math.min(Z0+1,e)} of ${e}`},300)};I.on("range:change",F2),D0.push(()=>{if(C0)clearTimeout(C0);I.off("range:change",F2)});let n0=new ResizeObserver((l)=>{if(Z.id)return;for(let e of l){let J0=e.contentRect.height,Z0=e.contentRect.width,G0=q?Z0:J0,M0=q?Z.cw:Z.ch;if(Z.cw=Z0,Z.ch=J0,Math.abs(G0-M0)>1){if(v.viewportState.containerSize=G0,Z.ii)p(),Z.rfn(),I.emit("resize",{height:J0,width:Z0})}if(Z.ii)for(let W0=0;W0<K0.length;W0++)K0[W0](Z0,J0)}});if(Z.vre)n0.observe(b.viewport);let i0={dom:b,emitter:I,resolvedConfig:g,rawConfig:J,rendered:O,pool:F,itemState:o,sharedState:v,renderRange:L,isHorizontal:q,classPrefix:N,contentSizeHandlers:A0,idleHandlers:Y0,afterScroll:X0,clickHandlers:Q0,keydownHandlers:N0,resizeHandlers:K0,destroyHandlers:D0,methods:U0,onScrollFrame:g0,resizeObserver:n0,applyTemplate:o0,updateContentSize:p},x0=h2(Z,i0);Z.dm=u2(Z,i0,x0),Z.sc=g2(Z,i0);let L2=new Map;for(let l of c)if(l.methods)for(let e of l.methods){let J0=L2.get(e);if(J0)throw Error(`[vlist/builder] Method "${e}" is registered by both "${J0}" and "${l.name}"`);L2.set(e,l.name)}for(let l of c)l.setup(x0);if(!U0.has("_getFocusedIndex")){let l=-1,e=`${N}-item--focused`,J0=(M0,W0)=>{let L0=Z.vtf();if(W0<0||W0>=L0)return;l=W0,b.root.setAttribute("aria-activedescendant",`${G}-item-${W0}`);let k0=q?Z.cw:Z.ch;if(Z.sst(Z.gsp(W0,Z.hc,k0,L0,"center")),Z.ls=Z.sgt(),Z.rfn(),M0>=0&&M0!==W0)O.get(M0)?.classList.remove(e);O.get(W0)?.classList.add(e)},Z0=()=>{if(Z.id)return;if(!b.root.matches(":focus-visible"))return;let M0=Z.vtf();if(M0===0)return;J0(-1,l>=0?Math.min(l,M0-1):0)};b.root.addEventListener("focusin",Z0);let G0=(M0)=>{if(Z.id)return;let W0=M0.relatedTarget;if(W0&&b.root.contains(W0))return;if(l>=0)O.get(l)?.classList.remove(e);b.root.removeAttribute("aria-activedescendant")};b.root.addEventListener("focusout",G0),N0.push((M0)=>{if(Z.id)return;let W0=Z.vtf();if(W0===0)return;let L0=l,k0=L0;switch(M0.key){case"ArrowUp":k0=L0<=0?W0-1:L0-1;break;case"ArrowDown":k0=L0>=W0-1?0:L0+1;break;case"Home":k0=0;break;case"End":k0=W0-1;break;default:return}M0.preventDefault(),J0(L0,k0)}),D0.push(()=>{b.root.removeEventListener("focusin",Z0),b.root.removeEventListener("focusout",G0)})}if(Z.ii=!0,x0.state.isInitialized=!0,p(),Z.rfn(),_&&Z.it.length>0){let l=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(l),Z.ls=l,Z.rfn()}return m2(Z,b,I,O,F,U0,c,D0,x0,_,C,O2,E2,A2,g0,n0,()=>{if(y.ob)y.ob.disconnect()},()=>{if(H)clearTimeout(H)})}X2();var u0=(J,X,q={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:N=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,R=0,k=0,$=0,A=0,C=!1,_=!1,G=0,E=0,M=0,T=null,P=!1,V=null,g=null,c=Y?"width":"height",r=Y?"translateX":"translateY",S=Y?(y)=>y.clientX:(y)=>y.clientY,b=Y?"left":"top",x=document.createElement("div"),t=document.createElement("div"),I=N?document.createElement("div"):null,z=()=>{if(x.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,Y)x.classList.add(`${j}-scrollbar--horizontal`);if(x.appendChild(t),J.appendChild(x),I){if(I.className=`${j}-scrollbar-hover`,Y)I.classList.add(`${j}-scrollbar-hover--horizontal`),I.style.height=`${U}px`;else I.style.width=`${U}px`;J.appendChild(I)}},h=()=>{if(T)clearTimeout(T),T=null},w=()=>{if(!Q)return;h(),T=setTimeout(F,K)},D=()=>{if(R<=k)return;if(h(),!P)x.classList.add(`${j}-scrollbar--visible`),P=!0;if(Q&&!C&&!_)w()},F=()=>{if(C||_)return;x.classList.remove(`${j}-scrollbar--visible`),P=!1},Z=(y,o)=>{R=y,k=o;let j0=R>k;if(x.style.display=j0?"":"none",!j0){F();return}let f=k/R;$=Math.max(B,f*k),t.style[c]=`${$}px`,A=k-$,H(M)},H=(y)=>{if(M=y,R<=k||A<=0)return;let o=R-k,f=Math.min(1,Math.max(0,y/o))*A;t.style.transform=`${r}(${f}px)`},a=(y)=>{if(y.target===t)return;let o=x.getBoundingClientRect(),n=S(y)-o[b]-$/2,q0=Math.max(0,Math.min(n,A))/A,X0=R-k,Y0=q0*X0;X(Y0),D()},u=(y)=>{y.preventDefault(),y.stopPropagation(),C=!0,G=S(y),E=M,h(),x.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",L),document.addEventListener("mouseup",m)},L=(y)=>{if(!C)return;let o=S(y)-G,j0=A>0?o/A:0,f=R-k,n=j0*f,i=Math.max(0,Math.min(E+n,f)),X0=i/f*A;if(t.style.transform=`${r}(${X0}px)`,g=i,V===null)V=requestAnimationFrame(()=>{if(g!==null)X(g);V=null})},m=()=>{if(C=!1,V!==null)cancelAnimationFrame(V),V=null;if(g!==null)X(g),g=null;if(x.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)w();document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",m)},v=()=>{if(W)D()},O=()=>{if(!C){if(_=!1,Q)w()}},d=()=>{_=!0,h(),D()},p=()=>{if(_=!1,!C&&Q)w()},s=()=>{if(h(),V!==null)cancelAnimationFrame(V),V=null;if(x.removeEventListener("click",a),x.removeEventListener("mouseenter",d),x.removeEventListener("mouseleave",p),t.removeEventListener("mousedown",u),J.removeEventListener("mouseenter",v),J.removeEventListener("mouseleave",O),document.removeEventListener("mousemove",L),document.removeEventListener("mouseup",m),I){if(I.removeEventListener("mouseenter",d),I.removeEventListener("mouseleave",p),I.parentNode)I.parentNode.removeChild(I)}if(x.parentNode)x.parentNode.removeChild(x)};if(z(),x.addEventListener("click",a),x.addEventListener("mouseenter",d),x.addEventListener("mouseleave",p),t.addEventListener("mousedown",u),J.addEventListener("mouseenter",v),J.addEventListener("mouseleave",O),I)I.addEventListener("mouseenter",d),I.addEventListener("mouseleave",p);return{show:D,hide:F,updateBounds:Z,updatePosition:H,isVisible:()=>P,destroy:s}};var QJ=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=u0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,K),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let B=q.getCachedCompression();X.updateBounds(B.virtualSize,q.state.viewportState.containerSize);let N=X;q.afterScroll.push((U,W)=>{N.updatePosition(U),N.show()}),q.resizeHandlers.push((U,W)=>{if(N){let R=q.getCachedCompression();N.updateBounds(R.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(N){let U=q.getCachedCompression();N.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(N)N.destroy()})},destroy(){if(X)X.destroy(),X=null}}};var iJ=0.65,tJ=0.5,eJ=0.95,J4=0.1,Q4=5,j4=100,jJ=()=>{let J=null,X=0,q=!1,j=0,Y=null,Q=0,K=0,B=null,N=[];return{name:"withScale",priority:20,setup(U){let{dom:W,config:R}=U,{classPrefix:k,horizontal:$}=R,A=()=>{let E=U.getVirtualTotal(),M=R0(E,U.sizeCache);if(M.isCompressed&&!q){q=!0,U.scrollController.enableCompression(M),U.updateContentSize(M.virtualSize),U.setScrollFns(()=>X,(x)=>{if(X=x,j=x,Y!==null)cancelAnimationFrame(Y),Y=null});let T=()=>{let x=j-X;if(Math.abs(x)<tJ)X=j,Y=null;else{X+=x*iJ;let I=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,I)),Y=requestAnimationFrame(T)}U.scrollController.scrollTo(X)},P=W.viewport,V=(x)=>{x.preventDefault();let I=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+x.deltaY,I)),Y===null)Y=requestAnimationFrame(T)};P.addEventListener("wheel",V,{passive:!1});let g=()=>{if(B!==null)cancelAnimationFrame(B),B=null},c=(x)=>{if(g(),Y!==null)cancelAnimationFrame(Y),Y=null;let t=x.touches[0];if(!t)return;let I=$?t.clientX:t.clientY;Q=I,K=X,N=[{time:performance.now(),y:I}]},r=(x)=>{x.preventDefault();let t=x.touches[0];if(!t)return;let I=$?t.clientX:t.clientY,z=performance.now();if(N.push({time:z,y:I}),N.length>Q4)N.shift();let h=Q-I,D=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,F=Math.max(0,Math.min(K+h,D));X=F,j=F,U.scrollController.scrollTo(F)},S=(x)=>{let t=performance.now(),I=N.filter((D)=>t-D.time<j4),z=0;if(I.length>=2){let D=I[0],F=I[I.length-1],Z=F.time-D.time;if(Z>0)z=(D.y-F.y)/Z}if(N=[],Math.abs(z)<J4)return;let h=z*16,w=()=>{if(h*=eJ,Math.abs(h)<0.5){B=null;return}let F=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+h;if(Z=Math.max(0,Math.min(Z,F)),Z<=0&&h<0||Z>=F&&h>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(w)};B=requestAnimationFrame(w)};if(P.addEventListener("touchstart",c,{passive:!0}),P.addEventListener("touchmove",r,{passive:!1}),P.addEventListener("touchend",S,{passive:!0}),P.addEventListener("touchcancel",S,{passive:!0}),U.destroyHandlers.push(()=>{if(P.removeEventListener("wheel",V),P.removeEventListener("touchstart",c),P.removeEventListener("touchmove",r),P.removeEventListener("touchend",S),P.removeEventListener("touchcancel",S),g(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${k}-scrollbar`)){if(J=u0(W.viewport,(t)=>U.scrollController.scrollTo(t),{},k,$),!W.viewport.classList.contains(`${k}-viewport--custom-scrollbar`))W.viewport.classList.add(`${k}-viewport--custom-scrollbar`);J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);let x=J;U.afterScroll.push((t,I)=>{if(x)x.updatePosition(t),x.show()}),U.resizeHandlers.push((t,I)=>{if(x){let z=U.getCachedCompression();x.updateBounds(z.virtualSize,U.state.viewportState.containerSize)}})}}else if(!M.isCompressed&&q)q=!1,U.scrollController.disableCompression(),U.updateContentSize(M.actualSize);else if(M.isCompressed)U.scrollController.updateConfig({compression:M}),U.updateContentSize(M.virtualSize);if(J)J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);U.state.cachedCompression={state:M,totalItems:E}};U.updateCompressionMode=A;let C=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return C()},U.setVisibleRangeFn((E,M,T,P,V)=>{_=null,G=null;let g=R0(P,T);e2(E,M,T,P,g,V)}),U.setScrollToPosFn((E,M,T,P,V)=>{let g=R0(P,M);return JJ(E,M,T,P,g,V)});let _=null,G=null;U.setPositionElementFn((E,M)=>{let T=U.getVirtualTotal(),P=R0(T,U.sizeCache);if(P.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||M<G)G=M,_=Math.round(r0(M,V,U.sizeCache,T,U.state.viewportState.containerSize,P));let g=_+U.sizeCache.getOffset(M)-U.sizeCache.getOffset(G),c=U.config.horizontal;E.style.transform=c?`translateX(${g}px)`:`translateY(${g}px)`}else{let V=Math.round(U.sizeCache.getOffset(M)),g=U.config.horizontal;E.style.transform=g?`translateX(${V}px)`:`translateY(${V}px)`}}),A(),U.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(B!==null)cancelAnimationFrame(B),B=null}}};var qJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:Y}=J,Q=new Map,K=0,B=0,N=(z)=>{let h=Q.get(z);if(!h)h={items:Array(X),count:0,lastAccess:Date.now()},Q.set(z,h);else h.lastAccess=Date.now();return h},U=(z)=>{return Math.floor(z/X)},W=(z)=>{return z%X},R=()=>K,k=(z)=>{K=z},$=(z)=>{if(z<0||z>=K)return;let h=U(z),w=Q.get(h);if(!w)return;return w.items[W(z)]},A=(z)=>{if(z<0||z>=K)return!1;let h=U(z),w=Q.get(h);if(!w)return!1;return w.items[W(z)]!==void 0},C=(z,h)=>{let w=U(z),D=N(w),F=W(z),Z=D.items[F]===void 0;if(D.items[F]=h,Z)D.count++,B++;if(z>=K)K=z+1},_=(z,h)=>{for(let w=0;w<h.length;w++){let D=h[w];if(D!==void 0)C(z+w,D)}},G=(z)=>{if(z<0||z>=K)return!1;let h=U(z),w=Q.get(h),D=W(z);if(!(w!==void 0&&w.items[D]!==void 0))return!1;let Z=h,H=Array.from(Q.keys()).filter((u)=>u>=Z).sort((u,L)=>u-L),a=[];for(let u of H){let L=Q.get(u),m=u*X;for(let v=0;v<X;v++){if(L.items[v]===void 0)continue;let O=m+v;if(O<=z)continue;a.push({oldIndex:O,item:L.items[v]})}}if(w.items[D]=void 0,w.count--,B--,w.count===0)Q.delete(h);for(let{oldIndex:u}of a){let L=U(u),m=Q.get(L);if(!m)continue;let v=W(u);if(m.items[v]!==void 0){if(m.items[v]=void 0,m.count--,B--,m.count===0)Q.delete(L)}}for(let{oldIndex:u,item:L}of a){let m=u-1,v=U(m),O=N(v),d=W(m);O.items[d]=L,O.count++,B++}return K--,!0},E=(z,h)=>{let w=[];for(let D=z;D<=h&&D<K;D++)w.push($(D));return w},M=(z,h)=>{for(let w=z;w<=h&&w<K;w++)if(!A(w))return!1;return!0},T=()=>{let z=[],h=null,w=Array.from(Q.keys()).sort((D,F)=>D-F);for(let D of w){let F=Q.get(D);if(!F)continue;let Z=D*X;for(let H=0;H<X;H++){let a=Z+H;if(a>=K)break;if(F.items[H]!==void 0)if(h===null)h={start:a,end:a};else if(a===h.end+1)h.end=a;else z.push(h),h={start:a,end:a};else if(h!==null)z.push(h),h=null}}if(h!==null)z.push(h);return z},P=(z,h)=>{let w=[],D=null;for(let F=z;F<=h&&F<K;F++)if(!A(F))if(D===null)D={start:F,end:F};else D.end=F;else if(D!==null)w.push(D),D=null;if(D!==null)w.push(D);return w},V=(z)=>{return Q.has(z)},g=(z)=>{let h=Q.get(z);if(h)h.lastAccess=Date.now()},c=(z,h)=>{if(z>h||Q.size===0)return;let w=Date.now(),D=U(Math.max(0,z)),F=U(Math.min(K-1,h));for(let Z=D;Z<=F;Z++){let H=Q.get(Z);if(H)H.lastAccess=w}},r=(z,h)=>{if(B<=q)return 0;let w=Math.max(0,z-j),D=Math.min(K-1,h+j),F=U(w),Z=U(D),H=0,a=[];for(let[u,L]of Q)if(u<F||u>Z)H+=L.count,a.push(u),B-=L.count,Q.delete(u);if(H>0&&Y)Y(H,a);return H},S=()=>{if(B<=q)return 0;let z=Array.from(Q.entries()).sort(([,D],[,F])=>D.lastAccess-F.lastAccess),h=0,w=[];for(let[D,F]of z){if(B<=q)break;h+=F.count,B-=F.count,w.push(D),Q.delete(D)}if(h>0&&Y)Y(h,w);return h},b=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},x=()=>B,t=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:R,setTotal:k,get:$,has:A,set:C,setRange:_,delete:G,getRange:E,isRangeLoaded:M,getLoadedRanges:T,findUnloadedRanges:P,getChunkIndex:U,isChunkLoaded:V,touchChunk:g,touchChunksForRange:c,evictDistant:r,evictToLimit:S,getStats:b,getCachedCount:x,clear:t,reset:()=>{t(),K=0}}},q4=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],Q=q[q.length-1];if(Y.start<=Q.end+1)Q.end=Math.max(Q.end,Y.end);else q.push({...Y})}return q},XJ=(J,X,q)=>{let j=Math.floor(J.start/q)*q,Y=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:Y};if(X.length===0)return[Q];let K=[],B=q4(X),N=Q.start;for(let U of B){if(U.end<N)continue;if(U.start>Q.end)break;if(U.start>N)K.push({start:N,end:Math.min(U.start-1,Q.end)});if(N=U.end+1,N>Q.end)break}if(N<=Q.end)K.push({start:N,end:Q.end});return K};var YJ=(J={})=>{let{maskCharacter:X=o2,maxSampleSize:q=n2}=J,j=[],Y=!1,Q=0,K=(R)=>{if(Y||R.length===0)return;let k=Math.min(R.length,q);for(let $=0;$<k;$++){let A=R[$];if(!A||typeof A!=="object")continue;let C={};for(let[_,G]of Object.entries(A)){if(_.startsWith("_")||_==="id")continue;C[_]=String(G??"").length}if(Object.keys(C).length>0)j.push(C)}Y=!0},B=()=>Y,N=(R)=>{let k={id:`${i2}${Q++}`,[q2]:!0,_index:R};if(j.length===0)return k.label=X.repeat(12),k;let $=j[R%j.length];for(let[A,C]of Object.entries($))k[A]=X.repeat(Math.max(1,C));return k};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(R,k)=>{let $=[];for(let A=R;A<=k;A++)$.push(N(A));return $},clear:()=>{j=[],Y=!1,Q=0}}},a0=(J)=>{if(!J||typeof J!=="object")return!1;return J[q2]===!0};var X4=50,UJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=X4,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=qJ({...Y,onEvict:(f,n)=>{U?.(f),P()}}),R=null,k=()=>{if(!R)R=YJ(Q);return R},$=new Map,A=!1,C,_=!0,G,E=[],M=0,T=new Map,P=()=>{B?.(I())},V=()=>{$.clear();let f=W.getLoadedRanges();for(let n of f)for(let i=n.start;i<=n.end;i++){let q0=W.get(i);if(q0&&!a0(q0))$.set(q0.id,i)}},g=(f,n)=>{if(!a0(n))$.set(n.id,f)},c=(f)=>{$.delete(f)},r=(f,n)=>{return`${f}-${n}`},S=()=>W.getTotal(),b=()=>W.getCachedCount(),x=()=>A,t=()=>_,I=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:E,error:C,hasMore:_,cursor:G}),z=()=>W,h=()=>k(),w=(f)=>{let n=W.get(f);if(n!==void 0)return n;if(f>=0&&f<W.getTotal())return k().generate(f);return},D=(f)=>{let n=$.get(f);if(n===void 0)return;return W.get(n)},F=(f)=>{return $.get(f)??-1},Z=(f)=>{let n=W.get(f);return n!==void 0&&!a0(n)},H=(f,n)=>{let i=[],q0=W.getTotal(),X0=0,Y0=0;W.touchChunksForRange(f,Math.min(n,q0-1));for(let Q0=f;Q0<=n&&Q0<q0;Q0++){let N0=W.get(Q0);if(N0!==void 0)i.push(N0),X0++;else i.push(k().generate(Q0)),Y0++}return i},a=(f)=>{W.setTotal(f),_=W.getCachedCount()<f,P()},u=(f,n=0,i)=>{if(X&&f.length>0){let q0=k();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(f)}for(let q0=0;q0<f.length;q0++){let X0=f[q0];if(X0!==void 0){let Y0=n+q0;W.set(Y0,X0),g(Y0,X0)}}if(i!==void 0)W.setTotal(i);else if(n+f.length>W.getTotal())W.setTotal(n+f.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)_=!1;P(),N?.(f,n,W.getTotal())},L=(f,n)=>{let i=$.get(f);if(i===void 0)return!1;let q0=W.get(i);if(!q0)return!1;let X0={...q0,...n};if(W.set(i,X0),n.id!==void 0&&n.id!==f)c(f),g(i,X0);return P(),!0},m=(f)=>{let n=$.get(f);if(n===void 0)return!1;if(!W.delete(n))return!1;return V(),T.clear(),P(),!0},v=async(f,n)=>{if(!X)return;let i=r(f,n);if(T.has(i))return;let q0=W.getLoadedRanges(),X0=XJ({start:f,end:n},q0,W.chunkSize);if(X0.length===0)return;let Y0=W.chunkSize,Q0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),D0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=D0;U0++){let V0=U0*Y0,_0=V0+Y0-1,F0=r(V0,_0);if(!Q0.some((T0)=>T0.start===V0)&&!T.has(F0))Q0.push({start:V0,end:_0})}}let N0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),D0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=D0;U0++){let V0=U0*Y0,_0=V0+Y0-1,F0=r(V0,_0);if(T.has(F0)){let T0=T.get(F0);if(!N0.includes(T0))N0.push(T0)}}}for(let K0 of Q0){let A0=r(K0.start,K0.end),D0=(async()=>{E.push(K0),A=!0,C=void 0,P();try{let U0=K0.end-K0.start+1,V0={offset:K0.start,limit:U0,cursor:void 0},_0=await X.read(V0);if(u(_0.items,K0.start,_0.total),_0.cursor)G=_0.cursor;let F0=K0.start+_0.items.length;if(F0>=M){if(M=F0,_0.hasMore!==void 0)_=_0.hasMore;else if(_0.total!==void 0)_=F0<_0.total}}catch(U0){C=U0 instanceof Error?U0:Error(String(U0))}finally{T.delete(A0),E=E.filter((U0)=>U0.start!==K0.start||U0.end!==K0.end),A=T.size>0,P()}})();T.set(A0,D0),N0.push(D0)}await Promise.all(N0)},O=async(f,n)=>{if(W.isRangeLoaded(f,n))return;await v(f,n)},d=async()=>{if(!X)return;await v(0,K-1)},p=async()=>{if(!X||A||!_)return!1;let f=W.getCachedCount(),n=W.getTotal(),i=f,q0=Math.min(i+K-1,n>0?n-1:i+K-1);if(i>=n&&n>0)return _=!1,!1;return await v(i,q0),W.getCachedCount()>f},s=async()=>{if(W.clear(),W.setTotal(0),$.clear(),R)R.clear();T.clear(),E=[],A=!1,G=void 0,_=!0,M=0,C=void 0,P()},y=(f,n)=>{if(W.evictDistant(f,n)>0)V()},o=()=>{W.clear(),$.clear(),G=void 0,C=void 0,E=[],A=!1,P()},j0=()=>{if(W.reset(),$.clear(),R)R.clear();G=void 0,_=!0,M=0,C=void 0,E=[],A=!1,P()};if(q&&q.length>0)u(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),P();return{getState:I,getTotal:S,getCached:b,getIsLoading:x,getHasMore:t,getStorage:z,getPlaceholders:h,getItem:w,getItemById:D,getIndexById:F,isItemLoaded:Z,getItemsInRange:H,setTotal:a,setItems:u,updateItem:L,removeItem:m,loadRange:v,ensureRange:O,loadInitial:d,loadMore:p,reload:s,evictDistant:y,clear:o,reset:j0}};var KJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??r2,B=q?.preloadThreshold??a2,N=q?.preloadAhead??l2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,R=U.config.reverse,k=U.methods.get("_getGridLayout"),$=(S)=>{if(k){let b=k();if(b){let x=U.dataManager.getTotal();return b.getItemRange(S.start,S.end,x)}}return S},A=UJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??p0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let S=U.getVirtualTotal();U.sizeCache.rebuild(S),U.updateCompressionMode();let b=U.getCachedCompression();U.state.viewportState.totalSize=b.virtualSize,U.state.viewportState.actualSize=b.actualSize,U.state.viewportState.isCompressed=b.isCompressed,U.state.viewportState.compressionRatio=b.ratio,U.updateContentSize(b.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(S,b,x)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:S,total:x,offset:b})}});U.replaceDataManager(A);let C=null,_=null,G=0,E=!1,M=null,T=120,P=(S=!1)=>{if(E=!1,_=null,S)C=null;if(M!==null)clearTimeout(M),M=null},V=()=>{if(!_)return;_=null;let{renderRange:S}=U.state.viewportState;if(S.end<S.start)return;C=null;let b=$(S);U.dataManager.ensureRange(b.start,b.end).catch((x)=>{W.emit("error",{error:x,context:"ensureRange"})})};U.afterScroll.push((S,b)=>{if(U.state.isDestroyed)return;let x=U.scrollController.getVelocity(),I=U.scrollController.isTracking()&&x<=K;if(G>K&&x<=K)E=!0;else if(E&&x>K)P();if(E&&x<0.5)P(!0);if(G=x,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(E||_))P(!0),I=!0;let h=E&&x>0.5;if(I&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(R){if(S<Q2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((F)=>{W.emit("error",{error:F,context:"loadMore"})})}else if(U.state.viewportState.totalSize-S-U.state.viewportState.containerSize<Q2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((Z)=>{W.emit("error",{error:Z,context:"loadMore"})})}let{renderRange:w}=U.state.viewportState;if(!C||w.start!==C.start||w.end!==C.end){if(C={start:w.start,end:w.end},I&&!h){if(_=null,M!==null)clearTimeout(M),M=null;let F=$(w),Z=F.start,H=F.end,a=k?U.dataManager.getTotal():U.getVirtualTotal();if(x>B)if(b==="down")H=Math.min(F.end+N,a-1);else Z=Math.max(F.start-N,0);U.dataManager.ensureRange(Z,H).catch((u)=>{W.emit("error",{error:u,context:"ensureRange"})})}else if(_={start:w.start,end:w.end},h){if(M!==null)clearTimeout(M);M=setTimeout(()=>{M=null,V(),P()},T)}}});let g=200,c=null;U.afterScroll.push((S,b)=>{if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,V(),P()},g)}),U.destroyHandlers.push(()=>{if(c!==null)clearTimeout(c),c=null;P()});let r=()=>{if(U.state.isDestroyed)return;C=null;let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);U.dataManager.ensureRange(b.start,b.end).catch((x)=>{W.emit("error",{error:x,context:"ensureRange"})})}V()};if(window.addEventListener("online",r),U.destroyHandlers.push(()=>{window.removeEventListener("online",r)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{C=null,_=null,U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);W.emit("load:start",{offset:b.start,limit:b.end-b.start+1}),await U.dataManager.ensureRange(b.start,b.end)}}),U.methods.set("reload",async()=>{C=null,_=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:p0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let b=$(S);await U.dataManager.ensureRange(b.start,b.end)}}),Q)W.emit("load:start",{offset:0,limit:p0}),U.dataManager.loadInitial().catch((S)=>{W.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var BJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:q,state:j,config:Y,emitter:Q}=X;if(q.root.style.overflow="visible",q.root.style.height="auto",Y.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.disableWheelHandler(),X.setScrollTarget(window),X.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(Y.horizontal){let R=W.left+window.scrollX;window.scrollTo(R+U,window.scrollY)}else{let R=W.top+window.scrollY;window.scrollTo(window.scrollX,R+U)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,N=()=>{let{innerWidth:U,innerHeight:W}=window,R=Y.horizontal?U:W,k=Y.horizontal?B:K;if(Math.abs(R-k)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let $=0;$<X.resizeHandlers.length;$++)X.resizeHandlers[$](U,W);X.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),J=()=>{window.removeEventListener("resize",N)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var Y2=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)q=Y;else j=Y-1}return q},ZJ=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].firstDataIndex<=X)q=Y;else j=Y-1}return q},NJ=(J,X)=>{if(J===0)return[];let q=[],j=X(0),Y=0,Q=0;for(let K=1;K<J;K++){let B=X(K);if(B!==j){let N=K-Y;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:N}),Q=Q+1+N,j=B,Y=K}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:J-Y}),q},U2=(J,X)=>{if(J.length===0||X.length===0)return[];let q=J.length+X.length,j=Array(q),Y=0;for(let Q of X){j[Y]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},Y++;for(let K=0;K<Q.count;K++)j[Y]=J[Q.firstDataIndex+K],Y++}return j},K2=(J,X)=>{let q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return q(Y.dataIndex)}},_J=(J,X)=>{let q=NJ(J,X.getGroupForIndex),j=J+q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(k)=>{if(q.length===0)return{type:"item",dataIndex:k,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let $=Y2(q,k),A=q[$];if(k===A.headerLayoutIndex)return{type:"header",group:A};let C=k-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+C,group:A}},layoutToDataIndex:(k)=>{if(q.length===0)return k;let $=Y2(q,k),A=q[$];if(k===A.headerLayoutIndex)return-1;let C=k-A.headerLayoutIndex-1;return A.firstDataIndex+C},dataToLayoutIndex:(k)=>{if(q.length===0)return k;let $=ZJ(q,k),A=q[$],C=k-A.firstDataIndex;return A.headerLayoutIndex+1+C},getGroupAtLayoutIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let $=Y2(q,k);return q[$]},getGroupAtDataIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let $=ZJ(q,k);return q[$]},getHeaderHeight:typeof Y==="number"?(k)=>Y:(k)=>{let $=q[k];if(!$)return 0;return Y($.key,k)},rebuild:(k)=>{q=NJ(k,X.getGroupForIndex),j=k+q.length}}};var WJ=(J,X,q,j,Y,Q=!1,K=0)=>{let B=document.createElement("div");if(B.className=`${Y}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",Q)B.style.top="0",B.style.bottom="0",B.style.left=K?`${K}px`:"0";else B.style.top=K?`${K}px`:"0",B.style.left="0",B.style.right="0";J.insertBefore(B,J.firstChild);let N=-1,U=!1,W=0,R=(G)=>{if(G===N)return;N=G;let E=X.groups;if(G<0||G>=E.length){B.textContent="";return}let M=E[G],T=j.headerTemplate(M.key,M.groupIndex),P=X.getHeaderHeight(G);if(Q)B.style.width=`${P}px`;else B.style.height=`${P}px`;if(typeof T==="string")B.innerHTML=T;else B.replaceChildren(T)},k=(G)=>{let E=X.groups;if(E.length===0){A();return}let M=q.getOffset(E[0].headerLayoutIndex);if(G<M){A();return}let T=0,P=E.length-1;while(T<P){let S=T+P+1>>>1;if(q.getOffset(E[S].headerLayoutIndex)<=G)T=S;else P=S-1}let V=T;if(!U)$();R(V);let g=X.getHeaderHeight(V),c=0,r=V+1;if(r<E.length){let b=q.getOffset(E[r].headerLayoutIndex)-G;if(b<g)c=b-g}if(c!==W)if(W=c,c===0)B.style.transform="";else{let S=Math.round(c);B.style.transform=Q?`translateX(${S}px)`:`translateY(${S}px)`}},$=()=>{if(U)return;U=!0,B.style.display=""},A=()=>{if(!U)return;U=!1,B.style.display="none",N=-1,W=0,B.style.transform=""},C=()=>{let G=N;if(N=-1,G>=0)R(G)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:k,refresh:C,show:$,hide:A,destroy:_}};var VJ=(J,X,q,j,Y,Q)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U-q),R;switch(Q){case"center":R=B-q/2+N/2;break;case"end":R=B-q+N;break;case"start":default:R=B;break}return Math.max(0,Math.min(R,W))};var $0=(J,X,q,j,Y="start",Q,K=VJ)=>{return K(J,X,q,j,Q,Y)};var MJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(Q){let{dom:K,config:B,rawConfig:N}=Q,{classPrefix:U}=B,R=N.item.height;j=N.items?[...N.items]:[];let k=j.length,$={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=_J(k,$),Y=U2(j,X.groups);let A=K2(X,R);Q.setSizeConfig(A),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let C=N.item.template,{headerTemplate:_}=J,G=(I,z,h)=>{if(v0(I))return _(I.groupKey,I.groupIndex);return C(I,z,h)},E=Q.methods.get("_getGridLayout"),M=Q.methods.get("_replaceGridRenderer"),T=Q.methods.get("_updateGridLayoutForGroups"),P=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),g=Q.methods.get("_getTableHeaderHeight");if(E&&M){if(T)T((w)=>{let D=Y[w];return!!(D&&v0(D))});let{createGridRenderer:I}=(Z2(),lJ(DJ)),z=E(),h=I(K.items,G,Q.sizeCache,z,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);M(h)}else if(P&&V)V((I)=>v0(I),J.headerTemplate);else Q.replaceTemplate(G);let c=g?g():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=WJ(K.root,X,Q.sizeCache,{...$,sticky:$.sticky??!1},U,B.horizontal,c);let I=q;Q.afterScroll.push((z,h)=>{I.update(z)}),q.update(Q.scrollController.getScrollTop())}let r=N.item?.striped,S=()=>{if(r!=="data"&&r!=="even"&&r!=="odd")return;let I=new Int32Array(Y.length),z=r==="odd"?1:0,h=0;for(let w=0;w<Y.length;w++)if(v0(Y[w])){if(I[w]=-1,r==="even"||r==="odd")h=0}else I[w]=h+++z;Q.setStripeIndexFn((w)=>{if(w<0||w>=I.length)return w;return I[w]})};S();let b=()=>{if(!X)return;X.rebuild(j.length),Y=U2(j,X.groups);let I=K2(X,R);if(Q.setSizeConfig(I),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),S(),q)q.refresh()};Q.methods.set("setItems",(I)=>{j=I.slice(),b()}),Q.methods.set("appendItems",(I)=>{j.push(...I),b()}),Q.methods.set("prependItems",(I)=>{j.unshift(...I),b()}),Q.methods.set("removeItem",(I)=>{j=j.filter((z)=>z.id!==I),b()});let{animateScroll:x,cancelScroll:t}=I0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(I,z)=>{let h=X.dataToLayoutIndex(I),{align:w,behavior:D,duration:F}=y0(z),Z=Q.dataManager.getTotal(),H=Q.adjustScrollPosition($0(h,Q.sizeCache,Q.state.viewportState.containerSize,Z,w,Q.getCachedCompression()));if(D==="smooth")x(Q.scrollController.getScrollTop(),H,F);else t(),Q.scrollController.scrollTo(H)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(t(),q)q.destroy(),q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var GJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},Q=(A)=>{if(A<=0)return 0;if(!j)return Math.ceil(A/X);let C=0,_=0,G=0;for(let E=0;E<A;E++)if(j(E)){if(G++,_>0)C++,_=0;C++,_=0}else if(_++,_>=X)C++,_=0;if(_>0)C++;return C},K=(A)=>{return Y.row=B(A),Y.col=N(A),Y},B=(A)=>{if(!j)return Math.floor(A/X);let C=0,_=0;for(let G=0;G<=A;G++)if(j(G)){if(_>0)C++,_=0;if(G===A)return C;C++,_=0}else{if(G===A)return C;if(_++,_>=X)C++,_=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${C}`),C},N=(A)=>{if(!j)return A%X;if(j(A))return 0;let C=0;for(let _=0;_<=A;_++)if(j(_))C=0;else{if(_===A)return C;if(C++,C>=X)C=0}return C},U=(A,C,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let P=Math.max(0,A*X),V=Math.min(_-1,(C+1)*X-1);return{start:P,end:V}}let G=-1,E=-1,M=0,T=0;for(let P=0;P<_;P++){if(j(P)){if(T>0)M++,T=0;if(M>=A&&M<=C){if(G===-1)G=P;E=P}M++,T=0}else{if(M>=A&&M<=C){if(G===-1)G=P;E=P}if(T++,T>=X)M++,T=0}if(M>C&&T===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:E}},W=(A,C,_)=>{if(C<0||C>=X)return-1;let G=A*X+C;if(G<0||G>=_)return-1;return G},R=(A)=>{let C=(X-1)*q;return Math.max(0,(A-C)/X)};return{get columns(){return X},get gap(){return q},update:(A)=>{if(A.columns!==void 0)X=Math.max(1,Math.floor(A.columns));if(A.gap!==void 0)q=A.gap;if(A.isHeaderFn!==void 0)j=A.isHeaderFn},getTotalRows:Q,getPosition:K,getRow:B,getCol:N,getItemRange:U,getItemIndex:W,getColumnWidth:R,getColumnOffset:(A,C)=>{let _=R(C);return A*(_+q)}}};Z2();var K4=new Set,OJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,q=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(j){let{dom:Y,emitter:Q,config:K,rawConfig:B}=j,{classPrefix:N}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,W=S0(H0(B.padding),U),R=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},k=B.items?.some((H)=>H.__groupHeader===!0),$={columns:J.columns,gap:J.gap??0};if(k)$.isHeaderFn=(H)=>{let a=j.dataManager.getItem(H);return!!(a&&a.__groupHeader===!0)};X=GJ($);let A=X.gap;j.setVirtualTotalFn(()=>{let H=j.dataManager.getTotal();return X.getTotalRows(H)});let C=B.item,_=K.horizontal?C.width:C.height,G={containerWidth:R(),columns:X.columns,gap:X.gap},E={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof _==="function")j.setSizeConfig((H)=>{let a=G.containerWidth-2,u=(G.columns-1)*G.gap;return E.containerWidth=G.containerWidth,E.columns=G.columns,E.gap=G.gap,E.columnWidth=(a-u)/G.columns,E.row=X.getRow(H),E.column=X.getCol(H),E.totalRows=X.getTotalRows(j.dataManager.getTotal()),E.totalColumns=G.columns,_(H,E)+G.gap});else if(A>0)j.setSizeConfig(_+A);if(j.rebuildSizeCache(),A>0){let H=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=H();return a>0?a-G.gap:0}}Y.root.classList.add(`${N}--grid`);let M=R(),T=B.item.template,P=()=>{q=B2(Y.items,T,j.sizeCache,X,N,M,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};P(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>$),j.methods.set("_replaceGridRenderer",(H)=>{q=H}),j.methods.set("_updateGridLayoutForGroups",(H)=>{X.update({isHeaderFn:H});let a=j.dataManager.getTotal(),u=0;for(let L=0;L<a;L++)if(X.getCol(L)===0){let m=j.sizeCache.getSize(L);u+=m}j.sizeCache.getTotalSize=()=>u,j.updateContentSize(u),P()}),j.methods.set("updateGrid",(H)=>{if(H.columns!==void 0){if(!Number.isInteger(H.columns)||H.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");$.columns=H.columns}if(H.gap!==void 0){if(H.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");$.gap=H.gap}if(X)X.update($);let a=R();if(G.containerWidth=a,G.columns=$.columns,G.gap=$.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let u=0;u<j.contentSizeHandlers.length;u++)j.contentSizeHandlers[u]();if(q)q.clear();j.forceRender()});let V=null,g=null,c=!1,r=()=>{if(c)return;c=!0,V=j.methods.get("_getSelectedIds")??null,g=j.methods.get("_getFocusedIndex")??null},S=-1,b=-1,x=!0,t=K.overscan,I={start:0,end:0},z={start:0,end:0},h=()=>{if(j.state.isDestroyed)return;let H=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!x&&H===S&&a===b)return;S=H,b=a,x=!1;let u=j.getVirtualTotal();if(u===0||a===0)I.start=0,I.end=0;else I.start=Math.max(0,j.sizeCache.indexAtOffset(H)),I.end=Math.min(u-1,Math.max(0,j.sizeCache.indexAtOffset(H+a-1)));z.start=Math.max(0,I.start-t),z.end=Math.min(u-1,I.end+t);let L=j.state.viewportState;L.scrollPosition=H,L.visibleRange.start=I.start,L.visibleRange.end=I.end,L.renderRange.start=z.start,L.renderRange.end=z.end;let m=j.state.lastRenderRange,v=L.isCompressed,O=j.dataManager.getTotal(),d=X.getItemRange(z.start,z.end,O),p=j.dataManager.getItemsInRange(d.start,d.end),s=v?j.getCompressionContext():void 0;r();let y=V?V():K4,o=g?g():-1;if(q.render(p,d,y,o,s),m.start!==z.start||m.end!==z.end)m.start=z.start,m.end=z.end,Q.emit("range:change",{range:{start:z.start,end:z.end}})},w=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,x=!0,h()};j.setRenderFns(h,w);let D=typeof _==="function";j.resizeHandlers.push((H,a)=>{let u=(U?a:H)-W;if(G.containerWidth=u,q)q.updateContainerWidth(u);if(D){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let L=0;L<j.contentSizeHandlers.length;L++)j.contentSizeHandlers[L]();if(q)q.clear();j.forceRender()}});let{animateScroll:F,cancelScroll:Z}=I0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(H,a)=>{let u=Math.floor(H/J.columns),{align:L,behavior:m,duration:v}=y0(a),O=j.dataManager.getState(),d=X.getTotalRows(O.total),p=Math.max(0,Math.min(u,d-1)),s=j.adjustScrollPosition($0(p,j.sizeCache,j.state.viewportState.containerSize,d,L,j.getCachedCompression()));if(m==="smooth")F(j.scrollController.getScrollTop(),s,v);else Z(),j.scrollController.scrollTo(s)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(Z(),q)q.destroy(),q=null;Y.root.classList.remove(`${N}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var EJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,Y=0,Q=[],K=()=>{let _=(X-1)*q;Y=Math.max(0,(j-_)/X),Q=Array(X);let G=Y+q;for(let E=0;E<X;E++)Q[E]=E*G};K();let B=[],N=0,U=[],W=(_)=>{let G=0,E=_[0];for(let M=1;M<_.length;M++){let T=_[M];if(T<E)E=T,G=M}return G},R=(_,G)=>{if(_<=0)return N=0,B=[],[];let E=Array(X).fill(0),M=Array(X);for(let V=0;V<X;V++)M[V]=[];let T=Array(_);for(let V=0;V<_;V++){let g=W(E),c=G(V),r=E[g];T[V]={index:V,x:Q[g],y:r,lane:g,size:c,crossSize:Y},M[g].push(V),E[g]=r+c+q}B=M;let P=0;for(let V=0;V<X;V++){let g=E[V],c=g>0?g-q:0;if(c>P)P=c}return N=P,T},k=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let G=Array(X).fill(0);for(let M of _){let T=M.y+M.size,P=G[M.lane];if(T>P)G[M.lane]=T}let E=0;for(let M=0;M<X;M++)if(G[M]>E)E=G[M];return E},$=(_,G,E)=>{if(_.length===0||E<=G)return U.length=0,U;if(B.length===0||B.length!==X)return A(_,G,E);U.length=0;for(let M=0;M<X;M++){let T=B[M],P=T.length;if(P===0)continue;let V=0,g=P;while(V<g){let c=V+g>>>1,r=_[T[c]];if(r.y+r.size<=G)V=c+1;else g=c}for(let c=V;c<P;c++){let r=_[T[c]];if(r.y>=E)break;U.push(r)}}return U},A=(_,G,E)=>{let M=[];for(let T of _)if(T.y+T.size>G&&T.y<E)M.push(T);return M};return{get columns(){return X},get gap(){return q},get containerSize(){return j},update:(_)=>{let G=!1;if(_.columns!==void 0){let E=Math.max(1,Math.floor(_.columns));if(E!==X)X=E,G=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,G=!0;if(_.containerSize!==void 0&&_.containerSize!==j)j=_.containerSize,G=!0;if(G)K()},calculateLayout:R,getTotalSize:k,getVisibleItems:$}};var B4=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),X.push(Q)},clear:()=>{X.length=0}}},Z4=1,AJ=(J,X,q,j=!1,Y,Q)=>{let K=B4(),B=new Map,N=new Set,U=0,W="",R=-1,k={selected:!1,focused:!1},$=(S,b)=>{return k.selected=S,k.focused=b,k},A=`${q}-item ${q}-masonry-item`,C=`${q}-item--selected`,_=`${q}-item--focused`,G=(S,b)=>{if(typeof b==="string")S.innerHTML=b;else S.replaceChildren(b)},E=(S,b,x)=>{S.classList.toggle(C,b),S.classList.toggle(_,x)},M=(S,b)=>{if(j)S.style.transform=`translate(${Math.round(b.y)}px, ${Math.round(b.x)}px)`;else S.style.transform=`translate(${Math.round(b.x)}px, ${Math.round(b.y)}px)`},T=(S,b)=>{if(j)S.style.width=`${b.size}px`,S.style.height=`${b.crossSize}px`;else S.style.width=`${b.crossSize}px`,S.style.height=`${b.size}px`},P=(S,b,x,t,I)=>{let z=K.acquire(),h=$(t,I);if(z.className=A,z.dataset.index=String(S),z.dataset.id=String(b.id),z.dataset.lane=String(x.lane),z.ariaSelected=String(t),Q)z.id=`${Q}-item-${S}`;if(Y){let D=Y();if(D!==R)R=D,W=String(D);z.setAttribute("aria-setsize",W),z.setAttribute("aria-posinset",String(S+1))}T(z,x);let w=X(b,S,h);return G(z,w),E(z,t,I),M(z,x),{element:z,lastItemId:b.id,lastSelected:t,lastFocused:I,lastY:x.y,lastX:x.x,lastSize:x.size,lastCrossSize:x.crossSize,lastSeenFrame:U}},V=(S,b,x,t)=>{U++,N.clear();for(let z=0;z<b.length;z++)N.add(b[z].index);for(let[z,h]of B)if(N.has(z))h.lastSeenFrame=U;else if(U-h.lastSeenFrame>Z4)K.release(h.element),B.delete(z);let I=null;for(let z=0;z<b.length;z++){let h=b[z],w=h.index,D=S(w);if(!D)continue;let F=x.has(D.id),Z=w===t,H=B.get(w);if(H){let a=H.lastItemId!==D.id,u=H.lastSelected!==F,L=H.lastFocused!==Z,m=H.lastY!==h.y||H.lastX!==h.x,v=H.lastSize!==h.size||H.lastCrossSize!==h.crossSize;if(a||u||L){let O=$(F,Z),d=X(D,w,O);G(H.element,d),E(H.element,F,Z),H.element.dataset.id=String(D.id),H.element.ariaSelected=String(F),H.lastItemId=D.id,H.lastSelected=F,H.lastFocused=Z}if(v)T(H.element,h),H.lastSize=h.size,H.lastCrossSize=h.crossSize;if(m)M(H.element,h),H.lastY=h.y,H.lastX=h.x}else{let a=P(w,D,h,F,Z);if(!I)I=document.createDocumentFragment();I.appendChild(a.element),B.set(w,a)}}if(I)J.appendChild(I)},g=()=>{for(let{element:S}of B.values())K.release(S);B.clear(),J.innerHTML=""};return{render:V,getElement:(S)=>B.get(S)?.element,sortDOM:()=>{f0(J,B.keys(),(S)=>B.get(S)?.element)},clear:g,destroy:()=>{g(),K.clear()}}};var N4=new Set,_4=100,FJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let X=null,q=null,j=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(Y){let{dom:Q,emitter:K,config:B,rawConfig:N}=Y,U=B.classPrefix,W=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let R=H0(N.padding),k=S0(R,W),$=l0(R,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-k},C={columns:J.columns,gap:J.gap??0,containerSize:A()};X=EJ(C);let _=N.item,G=W&&N.item.width?N.item.width:_.height,E={containerWidth:0,columns:0,gap:0,columnWidth:0},M=typeof G==="function"?(u)=>G(u,E):()=>G,T=()=>{let u=Y.dataManager.getTotal(),L=X;E.containerWidth=L.containerSize,E.columns=L.columns,E.gap=L.gap;let m=(L.columns-1)*L.gap;E.columnWidth=Math.max(0,(E.containerWidth-m)/L.columns),j=L.calculateLayout(u,M);let v=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>v,Y.updateContentSize(v)},P=N.item.template;q=AJ(Q.items,P,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,g=null,c=!1,r=()=>{if(c)return;c=!0,V=Y.methods.get("_getSelectedIds")??null,g=Y.methods.get("_getFocusedIndex")??null},S=(u)=>Y.dataManager.getItem(u),b=-1,x=-1,t=!0,I=B.overscan*_4,z=()=>{if(Y.state.isDestroyed)return;r();let u=Y.scrollController.getScrollTop(),L=Y.state.viewportState.containerSize;if(!t&&u===b&&L===x)return;b=u,x=L,t=!1;let m=Math.max(0,u-I),v=u+L+I,O=X.getVisibleItems(j,m,v),d=V?V():N4,p=g?g():-1;if(q&&O.length>0)q.render(S,O,d,p);let s=Y.state.viewportState;s.scrollPosition=u;let y=O.length,o=y>0?O[0].index:0,j0=y>0?O[y-1].index:0;s.visibleRange.start=o,s.visibleRange.end=j0,s.renderRange.start=o,s.renderRange.end=j0;let f=Y.state.lastRenderRange;if(f.start!==o||f.end!==j0)f.start=o,f.end=j0,K.emit("range:change",{range:{start:o,end:j0}})},h=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,t=!0,z()};Y.setRenderFns(z,h);let w=(u,L)=>{let m=(W?L:u)-k;if(X&&X.containerSize!==m){if(X.update({containerSize:m}),T(),q)q.clear();h()}};Y.resizeHandlers.push(w);let D=()=>{T(),h()},F=Y.dataManager,Z=(u)=>{if(typeof F[u]!=="function")return;let L=F[u].bind(F);F[u]=(...m)=>{L(...m),D()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:H,cancelScroll:a}=I0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(u,L)=>{let m=j[u];if(!m)return;let{align:v,behavior:O,duration:d}=y0(L),p=m.y,s=Y.state.viewportState.containerSize,y=p;if(v==="center")y=p-s/2+m.size/2;else if(v==="end"){y=p-s+m.size;let o=X.getTotalSize(j);if(u===j.length-1)y=Math.max(0,o+$-s)}if(y=Math.max(0,y),y=Y.adjustScrollPosition(y),O==="smooth")H(Y.scrollController.getScrollTop(),y,d);else a(),Y.scrollController.scrollTo(y)}),T(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var LJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),N2=(J,X,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},_2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},s0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return _2(J,[X]);else return N2(J,[X],q)},TJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},kJ=(J)=>({...J,selected:new Set}),W2=(J,X)=>{return J.focusedIndex=X,J},bJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?X-1:0;return J.focusedIndex=j,J},HJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=q?0:X-1;return J.focusedIndex=j,J},yJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},$J=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var V2=(J)=>{return Array.from(J.selected)},D2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var PJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=LJ(q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:K,emitter:B,config:N}=Q,{classPrefix:U,ariaIdPrefix:W}=N;if(X==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let R=new Map,k=()=>{R.clear();let M=Q.dataManager.getTotal(),T=Q.dataManager.getCached();if(T===0)return;if(T>=M){for(let V=0;V<M;V++){let g=Q.dataManager.getItem(V);if(g)R.set(g.id,V)}return}let P=Q.dataManager.getStorage();if(P&&typeof P.getLoadedRanges==="function"){let V=P.getLoadedRanges();for(let g of V)for(let c=g.start;c<=g.end;c++){let r=Q.dataManager.getItem(c);if(r&&!r._isPlaceholder)R.set(r.id,c)}}};B.on("data:change",({type:M,id:T})=>{if(M==="remove")j.selected.delete(T),k()}),B.on("load:end",({items:M,offset:T})=>{if(!M||M.length===0)return;if(T!==void 0)for(let P=0;P<M.length;P++){let V=M[P];if(V&&V.id!==void 0)R.set(V.id,T+P)}else k()}),k(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:$}=Q.getRenderFns(),A=()=>{$();let M=(T)=>{let P=R.get(T);if(P===void 0)return;return Q.dataManager.getItem(P)};B.emit("selection:change",{selected:V2(j),items:D2(j,M)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${U}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(K.root.getAttribute("role")==="grid"?K.root.parentElement??K.root:K.root).appendChild(Y);let _=Y;B.on("selection:change",({selected:M})=>{let T=M.length;if(T===0)_.textContent="";else if(T===1)_.textContent="1 item selected";else _.textContent=`${T} items selected`});let G=()=>{if(Q.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let M=Q.dataManager.getTotal();if(M===0)return;let T=j.focusedIndex>=0?Math.min(j.focusedIndex,M-1):0;j=W2(j,T),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${W}-item-${T}`),Q.scrollController.scrollTo(Q.adjustScrollPosition($0(T,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let P=Q.dataManager.getItem(T);if(P)Q.renderer.updateItemClasses(T,j.selected.has(P.id),!0)};K.root.addEventListener("focusin",G);let E=(M)=>{if(Q.state.isDestroyed)return;let T=M.relatedTarget;if(T&&K.root.contains(T))return;let P=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),P>=0){let V=Q.dataManager.getItem(P);if(V)Q.renderer.updateItemClasses(P,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",E),Q.clickHandlers.push((M)=>{if(Q.state.isDestroyed)return;let P=M.target.closest("[data-index]");if(!P)return;let V=parseInt(P.dataset.index??"-1",10);if(V<0)return;let g=Q.dataManager.getItem(V);if(!g)return;B.emit("item:click",{item:g,index:V,event:M}),j=W2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=s0(j,g.id,X),A()}),Q.keydownHandlers.push((M)=>{if(Q.state.isDestroyed)return;let T=Q.dataManager.getTotal(),P=j.focusedIndex,V=!1,g=!1,c=j;switch(M.key){case"ArrowUp":c=bJ(j,T,N.wrap),c.focusVisible=!0,V=!0,g=!0;break;case"ArrowDown":c=HJ(j,T,N.wrap),c.focusVisible=!0,V=!0,g=!0;break;case"Home":c=yJ(j,T),c.focusVisible=!0,V=!0,g=!0;break;case"End":c=$J(j,T),c.focusVisible=!0,V=!0,g=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let r=Q.dataManager.getItem(j.focusedIndex);if(r)c=s0(j,r.id,X),c.focusVisible=!0;V=!0}break}if(V){M.preventDefault(),j=c;let r=j.focusedIndex;if(r>=0){let S=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition($0(r,Q.sizeCache,Q.state.viewportState.containerSize,S.total,"center",Q.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${W}-item-${r}`)}else K.root.removeAttribute("aria-activedescendant");if(g){let{selected:S}=j;if(P>=0&&P!==r){let b=Q.dataManager.getItem(P);if(b)Q.renderer.updateItemClasses(P,S.has(b.id),!1)}if(r>=0){let b=Q.dataManager.getItem(r);if(b)Q.renderer.updateItemClasses(r,S.has(b.id),!0)}}else A()}}),Q.methods.set("select",(...M)=>{j=N2(j,M,X),A()}),Q.methods.set("deselect",(...M)=>{j=_2(j,M),A()}),Q.methods.set("toggleSelect",(M)=>{j=s0(j,M,X),A()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let M=Q.getAllLoadedItems();j=TJ(j,M,X),k(),A()}),Q.methods.set("clearSelection",()=>{j=kJ(j),A()}),Q.methods.set("getSelected",()=>{return V2(j)}),Q.methods.set("getSelectedItems",()=>{return D2(j,(T)=>{let P=R.get(T);return P===void 0?void 0:Q.dataManager.getItem(P)})}),Q.destroyHandlers.push(()=>{if(_&&_.parentNode)_.remove();K.root.removeEventListener("focusin",G),K.root.removeEventListener("focusout",E)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var wJ=(J)=>{let X=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let Y=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),K=q.getVirtualTotal(),B=q.methods.get("getSelected"),N=B&&B().length>0?B():void 0;if(K===0){let k={index:0,offsetInItem:0,total:0};if(N)k.selectedIds=N;return k}let U,W;if(Q.isCompressed){let $=Y/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor($),K-1)),W=($-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let R={index:U,offsetInItem:W,total:K};if(N)R.selectedIds=N;return R});let j=(Y)=>{let{index:Q,offsetInItem:K,selectedIds:B}=Y,N=q.getVirtualTotal();if(N===0)return;if(!Number.isFinite(Q)||!Number.isFinite(K))return;if(q.sizeCache.getTotal()!==N){q.sizeCache.rebuild(N),q.updateCompressionMode();let _=q.getCachedCompression();q.updateContentSize(_.virtualSize)}let W=q.getCachedCompression(),R=Math.max(0,Math.min(Q,N-1)),k;if(W.isCompressed){let _=q.sizeCache.getSize(R),G=_>0?K/_:0;k=(R+G)/N*W.virtualSize}else k=q.sizeCache.getOffset(R)+K;let $=q.state.viewportState.containerSize,A=Math.max(0,W.virtualSize-$);if(k=Math.max(0,Math.min(k,A)),q.scrollController.scrollTo(k),B&&B.length>0){let _=q.methods.get("select");if(_)_(...B)}let C=q.methods.get("loadVisibleRange");if(C)requestAnimationFrame(()=>{C()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var RJ=(J,X=50,q=1/0,j=!0)=>{let Y=J,Q=[],K=0,B=()=>{Q=Y.map((_,G)=>({def:_,index:G,width:0,minWidth:W4(_.minWidth??X,1),maxWidth:_.maxWidth??q,resizable:_.resizable??j,offset:0}))},N=(_)=>{if(Q.length===0){K=0;return}let G=0,E=0;for(let M=0;M<Q.length;M++){let T=Q[M],P=T.def;if(P.width!==void 0)T.width=M2(P.width,T.minWidth,T.maxWidth),G+=T.width;else E++}if(E>0){let T=Math.max(0,_-G)/E;for(let P=0;P<Q.length;P++){let V=Q[P];if(V.def.width===void 0)V.width=M2(T,V.minWidth,V.maxWidth)}}U()},U=()=>{let _=0;for(let G=0;G<Q.length;G++){let E=Q[G];E.offset=_,_+=E.width}K=_},W=(_,G)=>{if(_<0||_>=Q.length)return 0;let E=Q[_];if(!E.resizable)return E.width;let M=M2(G,E.minWidth,E.maxWidth);return E.width=M,U(),M},R=(_)=>{return Q[_]},k=(_)=>{if(Q.length===0)return;if(_<0)return Q[0];if(_>=K)return Q[Q.length-1];let G=0,E=Q.length-1;while(G<E){let M=G+E>>>1,T=Q[M];if(_<T.offset)E=M-1;else if(_>=T.offset+T.width)G=M+1;else return T}return Q[G]},$=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},A=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},C=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:C,resizeColumn:W,getColumn:R,getColumnAtX:k,getColumnOffset:$,getColumnWidth:A}},M2=(J,X,q)=>Math.min(q,Math.max(X,J)),W4=(J,X)=>Math.max(X,J);var vJ=(J,X,q,j,Y,Q,K)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let N=document.createElement("div");N.className=`${j}-table-header`,N.setAttribute("role","row"),N.setAttribute("aria-rowindex","1"),N.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),N.appendChild(U),B.appendChild(N),J.insertBefore(B,J.firstChild),X.style.position="absolute",X.style.top=`${q}px`,X.style.left="0",X.style.right="0",X.style.bottom="0",X.style.height="auto";let W=[],R=[],k=[],$=!0,A=null,C="asc",_=null,G=!1,E=-1,M=0,T=0,P=(w,D)=>{let F=document.createElement("div");F.className=`${j}-table-header-cell`,F.setAttribute("role","columnheader"),F.setAttribute("aria-colindex",String(D+1)),F.dataset.columnKey=w.def.key;let Z=w.def.align;if(Z==="center")F.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")F.classList.add(`${j}-table-header-cell--right`);let H=document.createElement("div");H.className=`${j}-table-header-content`;let a=w.def.header?w.def.header(w.def):w.def.label;if(typeof a==="string")H.textContent=a;else H.appendChild(a);if(F.appendChild(H),w.def.sortable){let u=document.createElement("span");u.className=`${j}-table-header-sort`,u.setAttribute("aria-hidden","true"),F.appendChild(u),k.push(u),F.classList.add(`${j}-table-header-cell--sortable`)}else k.push(null);if(w.resizable){let u=document.createElement("div");u.className=`${j}-table-header-resize`,u.dataset.resizeIndex=String(D),F.appendChild(u),R.push(u)}return F},V=(w)=>{_=w,U.textContent="",W=[],R=[],k=[];let D=w.columns;for(let F=0;F<D.length;F++){let Z=D[F],H=P(Z,F);W.push(H),U.appendChild(H)}if(g(w),A)c(A,C)},g=(w)=>{_=w;let D=w.columns;U.style.width=`${w.totalWidth}px`;for(let F=0;F<W.length&&F<D.length;F++){let Z=W[F],H=D[F];Z.style.width=`${H.width}px`}},c=(w,D)=>{if(A=w,C=D,!_)return;let F=_.columns;for(let Z=0;Z<k.length&&Z<F.length;Z++){let H=k[Z];if(!H)continue;if(F[Z].def.key===w&&w!==null)H.textContent=D==="asc"?"▲":"▼",H.style.opacity="0.7",W[Z].setAttribute("aria-sort",D==="asc"?"ascending":"descending");else H.textContent="",H.style.opacity="0",W[Z].removeAttribute("aria-sort")}},r=(w)=>{U.style.transform=`translateX(${-w}px)`},S=(w)=>{let D=w.target;if(!D.dataset.resizeIndex)return;if(w.preventDefault(),w.stopPropagation(),E=parseInt(D.dataset.resizeIndex,10),!_)return;let F=_.getColumn(E);if(!F||!F.resizable)return;G=!0,M=w.clientX,T=F.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",D.classList.add(`${j}-table-header-resize--active`),D.setPointerCapture(w.pointerId),D.addEventListener("pointermove",b),D.addEventListener("pointerup",x),D.addEventListener("pointercancel",x)},b=(w)=>{if(!G||!_)return;let D=w.clientX-M;if(Math.abs(D)<1)return;let F=Math.max(0,T+D);Y(E,F)},x=(w)=>{if(!G)return;let D=w.target;D.removeEventListener("pointermove",b),D.removeEventListener("pointerup",x),D.removeEventListener("pointercancel",x);try{D.releasePointerCapture(w.pointerId)}catch{}D.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,E=-1},t=(w)=>{let D=w.target;if(D.dataset.resizeIndex!==void 0)return;if(G)return;let F=D;while(F&&!F.dataset.columnKey)if(F=F.parentElement,F===N||F===null)return;if(!F||!F.dataset.columnKey)return;let Z=F.dataset.columnKey;if(!_)return;let H=_.columns,a=-1;for(let L=0;L<H.length;L++)if(H[L].def.key===Z){a=L;break}if(a===-1)return;let u=H[a];if(K)K({key:Z,index:a,event:w});if(u.def.sortable&&Q){let L;if(A===Z)if(C==="asc")L="desc";else L=null;else L="asc";Q({key:Z,index:a,direction:L})}};return N.addEventListener("pointerdown",S),N.addEventListener("click",t),{element:N,update:g,updateSort:c,rebuild:V,show:()=>{if($)return;$=!0,N.style.display=""},hide:()=>{if(!$)return;$=!1,N.style.display="none"},destroy:()=>{N.removeEventListener("pointerdown",S),N.removeEventListener("click",t),X.style.position="",X.style.top="",X.style.left="",X.style.right="",X.style.bottom="",B.remove(),W=[],R=[],k=[],_=null,$=!1},syncScroll:r}};var V4=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(X.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",X.push(Q)},clear:()=>{X.length=0}}},zJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=V4(),W=new Map,R=-1,k=q,$=null,A=null,C=null,_=(v,O)=>{A=v,C=O},G=(v,O)=>{if(O)v.setAttribute("aria-selected","true");else v.removeAttribute("aria-selected")},E=`${Y}-item ${Y}-table-row`,M=`${Y}-item--selected`,T=`${Y}-item--focused`,P=`${Y}-table-cell`,V=`${Y}-table-cell--center`,g=`${Y}-table-cell--right`,c=`${Y}-item--odd`,r=`${Y}-item--placeholder`,S=`${Y}-item--replaced`,b=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,x=`${Y}-table-group-header-content`,t=(v,O,d,p,s=!1)=>{if(d.def.cell){let y=d.def.cell(O,d.def,p);if(typeof y==="string")v.innerHTML=y;else v.replaceChildren(y)}else{let y=O[d.def.key],o=y!=null?String(y):"";if(s&&o)v.innerHTML=`<span>${o}</span>`;else v.textContent=o}},I=(v,O,d,p,s=!1)=>{let y=E;if(B){if($){let o=$(O);if(o>=0&&(o&1)===1)y+=` ${c}`}else if((O&1)===1)y+=` ${c}`}if(s)y+=` ${r}`;if(d)y+=` ${M}`;if(p)y+=` ${T}`;v.className=y},z=(v,O)=>{let d=O.def.align;if(d==="center")v.classList.add(V),v.classList.remove(g);else if(d==="right")v.classList.add(g),v.classList.remove(V);else v.classList.remove(V,g)},h=(v,O)=>{let p=k.columns.length;if(O.length===p)return O;let s=[];for(let y=0;y<p;y++){let o;if(y<O.length)o=O[y];else o=document.createElement("div"),o.className=P,v.appendChild(o);s.push(o)}for(let y=p;y<O.length;y++)O[y].remove();return s},w=(v,O,d)=>{let p=U.acquire(),s=v;p.style.width=`${k.totalWidth}px`;let y=d.getSize(O);p.style.height=`${y}px`,p.className=b,p.setAttribute("role","presentation"),p.setAttribute("data-id",String(v.id)),p.setAttribute("data-index",String(O)),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let o=document.createElement("div");if(o.className=x,C){let f=C(s.groupKey,s.groupIndex);if(typeof f==="string")o.innerHTML=f;else o.appendChild(f)}p.appendChild(o);let j0=d.getOffset(O);return p.style.transform=`translateY(${j0}px)`,{element:p,cells:[],index:O,isGroupHeader:!0,lastItemId:v.id,lastSelected:!1,lastFocused:!1,lastOffset:j0,lastHeight:y}},D=(v,O,d,p,s)=>{let y=U.acquire();y.style.width=`${k.totalWidth}px`;let o=s.getSize(O);y.style.height=`${o}px`;let j0=String(v.id).startsWith("__placeholder_");I(y,O,d,p,j0),y.setAttribute("role","row"),y.setAttribute("data-id",String(v.id)),y.setAttribute("data-index",String(O)),y.id=`${Q}-${O}`,y.setAttribute("aria-rowindex",String(O+2));let f=K();if(f!==R)R=f;G(y,d);let n=h(y,[]),i=k.columns;for(let X0=0;X0<n.length&&X0<i.length;X0++){let Y0=n[X0],Q0=i[X0];Y0.style.left=`${Q0.offset}px`,Y0.style.width=`${Q0.width}px`,Y0.setAttribute("role","gridcell"),Y0.setAttribute("aria-colindex",String(X0+1)),z(Y0,Q0),t(Y0,v,Q0,O,j0)}let q0=s.getOffset(O);return y.style.transform=`translateY(${q0}px)`,{element:y,cells:n,index:O,isGroupHeader:!1,lastItemId:v.id,lastSelected:d,lastFocused:p,lastOffset:q0,lastHeight:o}},F=(v,O,d,p)=>{for(let[f,n]of W)if(f<O.start||f>O.end)U.release(n.element),W.delete(f);let s=!1,y=K();if(y!==R)R=y,s=!0;let o=null,j0=X();$=typeof B==="string"&&N?N():null;for(let f=O.start;f<=O.end;f++){let n=f-O.start,i=v[n];if(!i)continue;let q0=d.has(i.id),X0=f===p,Y0=A?A(i):!1,Q0=W.get(f);if(Q0){if(Q0.isGroupHeader!==Y0){U.release(Q0.element),W.delete(f);let N0=Y0?w(i,f,j0):D(i,f,q0,X0,j0);if(W.set(f,N0),!o)o=document.createDocumentFragment();o.appendChild(N0.element);continue}if(Y0){if(Q0.lastItemId!==i.id){let D0=i,U0=Q0.element.firstElementChild;if(U0&&C){let V0=C(D0.groupKey,D0.groupIndex);if(typeof V0==="string")U0.innerHTML=V0;else U0.replaceChildren(V0)}Q0.element.setAttribute("data-id",String(i.id)),Q0.lastItemId=i.id}let K0=j0.getOffset(f);if(Q0.lastOffset!==K0)Q0.lastOffset=K0,Q0.element.style.transform=`translateY(${K0}px)`;let A0=j0.getSize(f);if(Q0.lastHeight!==A0)Q0.lastHeight=A0,Q0.element.style.height=`${A0}px`}else{let N0=Q0.lastItemId!==i.id,K0=Q0.lastSelected!==q0,A0=Q0.lastFocused!==X0;if(N0){let V0=Q0.lastItemId!=null&&String(Q0.lastItemId).startsWith("__placeholder_"),_0=String(i.id).startsWith("__placeholder_"),F0=k.columns;for(let T0=0;T0<Q0.cells.length&&T0<F0.length;T0++)t(Q0.cells[T0],i,F0[T0],f,_0);if(I(Q0.element,f,q0,X0,_0),Q0.element.setAttribute("data-id",String(i.id)),G(Q0.element,q0),V0&&!_0)Q0.element.classList.add(S),setTimeout(()=>{Q0.element.classList.remove(S)},300);Q0.lastItemId=i.id,Q0.lastSelected=q0,Q0.lastFocused=X0}else if(K0||A0){let V0=String(i.id).startsWith("__placeholder_");I(Q0.element,f,q0,X0,V0),G(Q0.element,q0),Q0.lastSelected=q0,Q0.lastFocused=X0}let D0=j0.getOffset(f);if(Q0.lastOffset!==D0)Q0.lastOffset=D0,Q0.element.style.transform=`translateY(${D0}px)`;let U0=j0.getSize(f);if(Q0.lastHeight!==U0)Q0.lastHeight=U0,Q0.element.style.height=`${U0}px`;if(s)Q0.element.setAttribute("aria-rowindex",String(f+2))}}else{let N0=Y0?w(i,f,j0):D(i,f,q0,X0,j0);if(W.set(f,N0),!o)o=document.createDocumentFragment();o.appendChild(N0.element)}}if(o)J.appendChild(o)},Z=(v,O,d,p)=>{let s=W.get(v);if(!s)return;if(s.isGroupHeader)return;let y=s.lastItemId!==O.id,o=s.lastSelected!==d,j0=s.lastFocused!==p;if(y||o||j0){if(y){let f=k.columns;for(let n=0;n<s.cells.length&&n<f.length;n++)t(s.cells[n],O,f[n],v);s.element.setAttribute("data-id",String(O.id)),s.lastItemId=O.id}I(s.element,v,d,p),G(s.element,d),s.lastSelected=d,s.lastFocused=p}},H=(v,O,d)=>{let p=W.get(v);if(!p)return;if(p.isGroupHeader)return;let s=p.lastSelected!==O,y=p.lastFocused!==d;if(s||y)I(p.element,v,O,d),G(p.element,O),p.lastSelected=O,p.lastFocused=d},a=(v)=>{k=v;let O=v.columns;for(let[,d]of W)if(d.element.style.width=`${v.totalWidth}px`,d.cells.length>0)for(let p=0;p<d.cells.length&&p<O.length;p++){let s=d.cells[p],y=O[p];s.style.left=`${y.offset}px`,s.style.width=`${y.width}px`}},u=(v)=>{return W.get(v)?.element},L=()=>{for(let[,v]of W)U.release(v.element);W.clear(),R=-1};return{render:F,updateItem:Z,updateItemClasses:H,getElement:u,updateColumnLayout:a,setGroupHeaderFn:_,clear:L,destroy:()=>{L(),U.clear()}}};var D4=new Set,CJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let X=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:Q,emitter:K,config:B}=Y,{classPrefix:N}=B;if(B.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,R=J.maxColumnWidth??1/0,k=J.columnBorders??!1,$=J.rowBorders??!0,A=J.rowHeight,C=S0(H0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof A==="number"?A:40),G=J.sort?.key??null,E=J.sort?.direction??"asc";if(X=RJ(J.columns,W,R,U),typeof A==="function")Y.setSizeConfig(A);else if(typeof A==="number")Y.setSizeConfig(A);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),$)Q.root.classList.add(`${N}--table-row-borders`);if(k)Q.root.classList.add(`${N}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let M=-1,T=Q.items.getAttribute("aria-label");if(T)Q.root.setAttribute("aria-label",T),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let P=Y.getContainerWidth()-C;X.resolve(P);let V=(O,d)=>{if(!X)return;let p=X.getColumn(O);if(!p)return;let s=p.width,y=X.resizeColumn(O,d);if(q)q.update(X);if(j)j.updateColumnLayout(X);r(),K.emit("column:resize",{key:p.def.key,index:O,previousWidth:s,width:y})},g=(O)=>{if(O.direction===null)G=null,E="asc";else G=O.key,E=O.direction;if(q)q.updateSort(G,E);K.emit("column:sort",O)},c=(O)=>{K.emit("column:click",O)};if(q=vJ(Q.root,Q.viewport,_,N,V,g,c),q.rebuild(X),G)q.updateSort(G,E);let r=()=>{if(!X)return;let O=X.totalWidth;Q.content.style.minWidth=`${O}px`,Q.items.style.minWidth=`${O}px`};r(),j=zJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let S=null,b=null,x=!1,t=()=>{if(x)return;x=!0,S=Y.methods.get("_getSelectedIds")??null,b=Y.methods.get("_getFocusedIndex")??null},I=-1,z=-1,h=-1,w=!0,D=B.overscan,F={start:0,end:0},Z={start:0,end:0},H=()=>{if(Y.state.isDestroyed)return;let O=Y.scrollController.getScrollTop(),d=Y.state.viewportState.containerSize,p=Y.getVirtualTotal();if(!w&&O===I&&d===z&&p===h)return;I=O,z=d,h=p,w=!1;let s=p+1;if(s!==M)M=s,Q.root.setAttribute("aria-rowcount",String(s));if(p===0||d===0)F.start=0,F.end=0;else F.start=Math.max(0,Y.sizeCache.indexAtOffset(O)),F.end=Math.min(p-1,Math.max(0,Y.sizeCache.indexAtOffset(O+d-1)));Z.start=Math.max(0,F.start-D),Z.end=Math.min(p-1,F.end+D);let y=Y.state.viewportState;y.scrollPosition=O,y.visibleRange.start=F.start,y.visibleRange.end=F.end,y.renderRange.start=Z.start,y.renderRange.end=Z.end;let o=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);t();let f=S?S():D4,n=b?b():-1;if(j.render(j0,Z,f,n),o.start!==Z.start||o.end!==Z.end)o.start=Z.start,o.end=Z.end,K.emit("range:change",{range:{start:Z.start,end:Z.end}})},a=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,w=!0,H()};Y.setRenderFns(H,a);let u=q,L=-1,m=()=>{let O=Q.viewport.scrollLeft;if(O!==L){if(L=O,u.syncScroll)u.syncScroll(O)}};Y.afterScroll.push(()=>{m()});let v=()=>{m()};Q.viewport.addEventListener("scroll",v,{passive:!0}),Y.resizeHandlers.push((O,d)=>{if(!X)return;if(X.resolve(O-C),q)q.update(X);if(j)j.updateColumnLayout(X);r()}),Y.methods.set("updateColumns",(O)=>{if(!X||!q)return;if(X.updateColumns(O),X.resolve(Y.getContainerWidth()-C),q.rebuild(X),G)q.updateSort(G,E);if(r(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(O,d)=>{if(!X)return;let p;if(typeof O==="string"){let s=X.columns;p=-1;for(let y=0;y<s.length;y++)if(s[y].def.key===O){p=y;break}if(p===-1)return}else p=O;V(p,d)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let O={},d=X.columns;for(let p=0;p<d.length;p++)O[d[p].def.key]=d[p].width;return O}),Y.methods.set("setSort",(O,d)=>{if(G=O,E=d??"asc",q)q.updateSort(G,E)}),Y.methods.set("getSort",()=>{return{key:G,direction:E}}),Y.methods.set("_getTableLayout",()=>X),Y.methods.set("_replaceTableRenderer",(O)=>{j=O}),Y.methods.set("_updateTableForGroups",(O,d)=>{if(j)j.setGroupHeaderFn(O,d)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{r()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",v),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${N}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let O=Q.root.getAttribute("aria-label");if(O)Q.items.setAttribute("aria-label",O),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};export{CJ as withTable,wJ as withSnapshots,PJ as withSelection,QJ as withScrollbar,jJ as withScale,BJ as withPage,FJ as withMasonry,MJ as withGroups,OJ as withGrid,KJ as withAsync,t2 as vlist};
|
|
1
|
+
var{defineProperty:e0,getOwnPropertyNames:mJ,getOwnPropertyDescriptor:dJ}=Object,cJ=Object.prototype.hasOwnProperty;var H2=new WeakMap,lJ=(J)=>{var Y=H2.get(J),q;if(Y)return Y;if(Y=e0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")mJ(J).map((j)=>!cJ.call(Y,j)&&e0(Y,j,{get:()=>J[j],enumerable:!(q=dJ(J,j))||q.enumerable}));return H2.set(J,Y),Y};var rJ=(J,Y)=>{for(var q in Y)e0(J,q,{get:Y[q],enumerable:!0,configurable:!0,set:(j)=>Y[q]=()=>j})};var b2=(J,Y)=>()=>(J&&(Y=J(J=0)),Y);var aJ=(J,Y)=>{let q=Y;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},sJ=(J,Y)=>{let q=Y,j=new Float64Array(0),X=(B)=>{q=B,j=new Float64Array(B+1),j[0]=0;for(let N=0;N<B;N++)j[N+1]=j[N]+J(N)};X(Y);let Q=(B)=>{if(q===0)return 0;if(B<=0)return 0;if(B>=j[q])return q-1;let N=0,Z=q-1;while(N<Z){let U=N+Z+1>>>1;if(j[U]<=B)N=U;else Z=U-1}return N};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=q)return j[q];return j[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Q(B),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(B)=>X(B),isVariable:()=>!0}},w0=(J,Y)=>{if(typeof J==="number")return aJ(J,Y);return sJ(J,Y)},c0=(J,Y,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let X=0,Q=0,B=Y;while(B<j&&Q<q)Q+=J.getSize(B),X++,B++;return Math.max(1,X)},J2=(J,Y,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(Y/J.getSize(0));let j=0,X=0;for(let Q=q-1;Q>=0;Q--){let B=J.getSize(Q);if(X+B>Y)break;X+=B,j++}return Math.max(j,1)},w2=(J,Y,q)=>{if(q===0)return 0;let j=Math.floor(Y),X=Y-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+X*J.getSize(Q)};var S0=(J,Y,q)=>{let j=Array.from(Y).sort((B,N)=>B-N);if(j.length<=1)return;let X=[];for(let B=0;B<j.length;B++){let N=q(j[B]);if(N)X.push(N)}if(X.length<=1)return;let Q=J.firstChild;for(let B=0;B<X.length;B++){let N=X[B];if(N===Q)Q=Q.nextSibling;else J.insertBefore(N,Q)}};var d2=3,c2="vlist",j2=200,I0=50,l2=50,r2=5,a2=2,p0=16000000,s2=150,o2="x",n2=20,q2="_isPlaceholder",i2="__placeholder_";var u0=(J,Y,q)=>{let j=Y.getTotalSize(),X=q===!0||j>p0,Q=j>p0?p0:j,B=j>0?Q/j:1;return{isCompressed:X,actualSize:j,virtualSize:Q,ratio:B}},e2=(J,Y,q,j,X,Q)=>{if(j===0||Y===0)return Q.start=0,Q.end=-1,Q;if(!X.isCompressed||X.ratio===1){let A=q.indexAtOffset(J),P=q.indexAtOffset(J+Y);if(P<j-1)P++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,P)),Q}let{virtualSize:B}=X,Z=J/B*j,U=Math.floor(Z),W=c0(q,Math.max(0,U),Y,j),D=Math.ceil(Z)+W,w=B-Y-J;if(w<=Y&&w>=-1){let A=J2(q,Y,j),P=Math.max(0,j-A),V=Math.max(0,Math.min(1,1-w/Y));U=Math.floor(U+(P-U)*V),D=w<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,D)),Q},a0=(J,Y,q,j,X,Q,B)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);if(Q.ratio===1)return q.getOffset(J)-Y;let{virtualSize:N}=Q,Z=N-X,U=Z-Y;if(U<=X&&U>=-1){if(Y>=Z-1){let k=q.getTotalSize()-q.getOffset(J);return X-k}let w=J2(q,X,j),A=Math.max(0,j-w),V=Y/N*j,M=Math.max(0,Math.min(1,1-U/X)),F=q.getOffset(J)-q.getOffset(A),O=q.getOffset(J)-w2(q,V,j);return O+(F-O)*M}let W=Y/N,D=q.getTotalSize(),E=W*D;return q.getOffset(J)-E},JJ=(J,Y,q,j,X,Q="start")=>{if(j===0)return 0;let B;if(X.isCompressed&&X.ratio!==1){if(Q==="end"&&J===j-1)return Math.max(0,X.virtualSize-q);B=J/j*X.virtualSize}else B=Y.getOffset(J);let N=Y.getSize(J);switch(Q){case"center":B-=(q-N)/2;break;case"end":B-=q-N;break}let Z=X.virtualSize-q;return Math.max(0,Math.min(B,Z))};var Y2=()=>{};var R0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var VJ={};rJ(VJ,{createGridRenderer:()=>B2});var X4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Q)=>{if(Q.remove(),Y.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),Y.push(Q)},clear:()=>{Y.length=0}}},U4=1,B2=(J,Y,q,j,X,Q,B,N,Z=!1)=>{let U=X4(),W=new Map,D=Q,E=!1,w=0,A="",P=-1,V={selected:!1,focused:!1},M=(_,y)=>{return V.selected=_,V.focused=y,V},F=`${X}-item ${X}-grid-item`,O=`${X}-item--selected`,k=`${X}-item--focused`,$=(_,y)=>{if(typeof y==="string")_.innerHTML=y;else _.replaceChildren(y)},G=(_,y,L)=>{_.classList.toggle(O,y),_.classList.toggle(k,L)},p=(_,y)=>{let L=j.getRow(_);if(y?.compression?.isCompressed)return a0(L,y.scrollPosition,q,y.totalItems,y.containerSize,y.compression,y.rangeStart);return q.getOffset(L)},h=(_,y)=>{let L=E&&j.getCol(_)===0,R=L?0:j.getCol(_),u=L?0:j.getColumnOffset(R,D),S;if(E){let b=j.getRow(_),x=0,l=new Set;for(let s=0;s<_;s++){let f=j.getRow(s);if(f<b&&!l.has(f)){let n=q.getSize(s);x+=n,l.add(f)}}S=x}else S=p(_,y);if(Z)return`translate(${Math.round(S)}px, ${Math.round(u)}px)`;return`translate(${Math.round(u)}px, ${Math.round(S)}px)`},g=(_,y)=>{_.style.transform=y},I=(_,y)=>{let L=_.dataset.id?.startsWith("__group_header"),R=L?D:j.getColumnWidth(D),u;if(E||L)u=q.getSize(y)-j.gap;else{let S=j.getRow(y);u=q.getSize(S)-j.gap}if(Z)_.style.width=`${u}px`,_.style.height=`${R}px`;else _.style.width=`${R}px`,_.style.height=`${u}px`},H=(_,y,L,R,u)=>{let S=U.acquire(),b=M(L,R);if(S.className=F,S.dataset.index=String(_),S.dataset.id=String(y.id),S.dataset.row=String(j.getRow(_)),S.dataset.col=String(j.getCol(_)),S.ariaSelected=String(L),N)S.id=`${N}-item-${_}`;if(B){let l=B();if(l!==P)P=l,A=String(l);S.setAttribute("aria-setsize",A),S.setAttribute("aria-posinset",String(_+1))}I(S,_);let x=Y(y,_,b);return $(S,x),G(S,L,R),g(S,u),{element:S,lastItemId:y.id,lastSelected:L,lastFocused:R,lastTransform:u,lastSeenFrame:w}},a=(_,y,L,R,u)=>{if(w++,y.start===0&&_.length>0)E=R0(_[0]);for(let[x,l]of W)if(x>=y.start&&x<=y.end)l.lastSeenFrame=w;else if(w-l.lastSeenFrame>U4)U.release(l.element),W.delete(x);let S=!1;if(B){let x=B();if(x!==P)P=x,A=String(x),S=!0}let b=null;for(let x=y.start;x<=y.end;x++){let l=x-y.start,s=_[l];if(!s){console.warn(`⚠️ RENDER: Missing item at index ${x} (range: ${y.start}-${y.end}, items.length: ${_.length})`);continue}let f=L.has(s.id),n=x===R,J0=W.get(x);if(J0){let m=J0.lastItemId!==s.id,o=J0.lastSelected!==f,Q0=J0.lastFocused!==n;if(m||o||Q0){if(m){let Y0=M(f,n),X0=Y(s,x,Y0);$(J0.element,X0),J0.element.dataset.id=String(s.id),J0.element.dataset.row=String(j.getRow(x)),J0.element.dataset.col=String(j.getCol(x)),I(J0.element,x)}G(J0.element,f,n),J0.element.ariaSelected=String(f),J0.lastItemId=s.id,J0.lastSelected=f,J0.lastFocused=n}let q0=h(x,u);if(J0.lastTransform!==q0)g(J0.element,q0),J0.lastTransform=q0;if(S)J0.element.setAttribute("aria-setsize",A)}else{let m=h(x,u),o=H(x,s,f,n,m);if(!b)b=document.createDocumentFragment();b.appendChild(o.element),W.set(x,o)}}if(b)J.appendChild(b)},j0=(_)=>{for(let[y,L]of W){let R=h(y,_);if(L.lastTransform!==R)g(L.element,R),L.lastTransform=R}},d=(_,y,L,R)=>{let u=W.get(_);if(!u)return;let S=u.lastItemId!==y.id,b=u.lastSelected!==L,x=u.lastFocused!==R;if(S||b||x){let l=M(L,R),s=Y(y,_,l);$(u.element,s),G(u.element,L,R),u.element.dataset.id=String(y.id),u.element.ariaSelected=String(L),I(u.element,_),u.lastItemId=y.id,u.lastSelected=L,u.lastFocused=R}},C=(_,y,L)=>{let R=W.get(_);if(!R)return;let u=R.lastSelected!==y,S=R.lastFocused!==L;if(u||S)G(R.element,y,L),R.lastSelected=y,R.lastFocused=L},c=(_)=>{return W.get(_)?.element},T=(_)=>{if(Math.abs(_-D)<1)return;D=_;for(let[y,L]of W){I(L.element,y);let R=h(y);g(L.element,R),L.lastTransform=R}},v=()=>{S0(J,W.keys(),(_)=>W.get(_)?.element)},z=()=>{for(let[,_]of W)U.release(_.element);W.clear()};return{render:a,updatePositions:j0,updateItem:d,updateItemClasses:C,getElement:c,sortDOM:v,updateContainerWidth:T,clear:z,destroy:()=>{z(),U.clear()}}};var Z2=b2(()=>{Y2()});var $2=2,y2=(J=0)=>{let Y=[,,,,,];for(let q=0;q<5;q++)Y[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Y,sampleIndex:0,sampleCount:0}},P2=(J,Y)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=Y,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Y,J.lastTime=q,J}let X=J.samples[J.sampleIndex];if(X.position=Y,X.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,B=J.samples[Q],N=Y-B.position,Z=q-B.time;J.velocity=Z>0?Math.abs(N)/Z:0}return J.lastPosition=Y,J.lastTime=q,J};var R2=(J,Y)=>{let q=new Map,j=(Q)=>{let B=q.get(Q);return B!==void 0?B:J},X=w0(j,Y);return{getOffset(Q){return X.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return X.indexAtOffset(Q)},getTotalSize(){return X.getTotalSize()},getTotal(){return X.getTotal()},rebuild(Q){if(Q<X.getTotal()){for(let B of q.keys())if(B>=Q)q.delete(B)}X=w0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,B){q.set(Q,B)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var z2=()=>{let J={},Y=(N,Z)=>{if(!J[N])J[N]=new Set;return J[N].add(Z),()=>q(N,Z)},q=(N,Z)=>{J[N]?.delete(Z)};return{on:Y,off:q,emit:(N,Z)=>{J[N]?.forEach((U)=>{try{U(Z)}catch(W){console.error(`[vlist] Error in event handler for "${String(N)}":`,W)}})},once:(N,Z)=>{let U=(W)=>{q(N,U),Z(W)};return Y(N,U)},clear:(N)=>{if(N)delete J[N];else for(let Z in J)delete J[Z]},listenerCount:(N)=>{return J[N]?.size??0}}};var v2=(J)=>{if(typeof J==="string"){let Y=document.querySelector(J);if(!Y)throw Error(`[vlist/builder] Container not found: ${J}`);return Y}return J},C2=(J,Y,q,j)=>{let X=document.createElement("div");if(X.className=Y,j)X.classList.add(`${Y}--horizontal`);X.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${Y}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let B=document.createElement("div");if(B.className=`${Y}-content`,B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";let N=document.createElement("div");if(N.className=`${Y}-items`,N.setAttribute("role","listbox"),q)N.setAttribute("aria-label",q);if(j)N.setAttribute("aria-orientation","horizontal");if(N.style.position="relative",j)N.style.height="100%";else N.style.width="100%";let Z=document.createElement("div");return Z.setAttribute("aria-live","polite"),Z.setAttribute("aria-atomic","true"),Z.setAttribute("role","status"),Z.className=`${Y}-live`,Z.style.position="absolute",Z.style.width="1px",Z.style.height="1px",Z.style.padding="0",Z.style.margin="-1px",Z.style.overflow="hidden",Z.style.clip="rect(0,0,0,0)",Z.style.whiteSpace="nowrap",Z.style.border="0",B.appendChild(N),Q.appendChild(B),X.appendChild(Z),X.appendChild(Q),J.appendChild(X),{root:X,viewport:Q,content:B,items:N,liveRegion:Z}};var S2=(J=100)=>{let Y=[];return{acquire:()=>{let q=Y.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(Y.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),Y.push(q)},clear:()=>{Y.length=0}}};var f2=(J,Y,q,j,X)=>{if(j===0||Y===0){X.start=0,X.end=-1;return}let Q=q.indexAtOffset(J),B=c0(q,Q,Y,j),N=Q+B;X.start=Math.max(0,Q),X.end=Math.min(j-1,Math.max(0,N))},I2=(J,Y,q,j)=>{j.start=Math.max(0,J.start-Y),j.end=Math.min(q-1,J.end+Y)},p2=(J,Y,q,j,X,Q=0)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),N=Y.getOffset(B),Z=Y.getSize(B),U=Y.getTotalSize(),W=Math.max(0,U+Q-q),D;switch(X){case"center":D=N-(q-Z)/2;break;case"end":D=Q>0&&N+Z>=U?W:N-q+Z;break;default:D=N}return Math.max(0,Math.min(D,W))};var l0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return l0;if(typeof J==="number")return J===0?l0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,B]=J;return Q===0&&B===0?l0:{top:Q,right:B,bottom:Q,left:B}}let[Y,q,j,X]=J;return Y===0&&q===0&&j===0&&X===0?l0:{top:Y,right:q,bottom:j,left:X}},r0=(J,Y)=>Y?J.left+J.right:J.top+J.bottom,C0=(J,Y)=>Y?J.top+J.bottom:J.left+J.right;var h2=(J,Y)=>{let{dom:q,emitter:j,resolvedConfig:X,rawConfig:Q,rendered:B,pool:N,sharedState:Z,isHorizontal:U,classPrefix:W,contentSizeHandlers:D,idleHandlers:E,afterScroll:w,clickHandlers:A,keydownHandlers:P,resizeHandlers:V,destroyHandlers:M,methods:F,onScrollFrame:O,resizeObserver:k,renderRange:$}=Y;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return X},get rawConfig(){return Q},adjustScrollPosition(G){if(J.mp===0)return G;let p=U?J.cw:J.ch,h=J.hc.getTotalSize(),g=Math.max(0,h-p),I=Math.max(0,h+J.mp-p);if(G>=g)return I;return Math.min(G,I)},get renderer(){return{render:(G,p,h,g,I)=>{J.ss=h,J.fi=g,J.ffn()},updateItemClasses:(G,p,h)=>{let g=B.get(G);if(!g)return;g.classList.toggle(`${W}-item--selected`,p),g.classList.toggle(`${W}-item--focused`,h),g.ariaSelected=p?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(G)=>B.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:Z,getContainerWidth(){return J.cw},afterScroll:w,idleHandlers:E,clickHandlers:A,keydownHandlers:P,resizeHandlers:V,contentSizeHandlers:D,destroyHandlers:M,methods:F,replaceTemplate(G){J.at=G},replaceRenderer(G){},replaceDataManager(G){J.dm=G},replaceScrollController(G){J.sc=G},getItemsForRange(G){let{dm:p,it:h}=J,g=[];for(let I=G.start;I<=G.end;I++){let H=p?p.getItem(I):h[I];if(H)g.push(H)}return g},getAllLoadedItems(){let G=J.dm;if(G){let p=G.getTotal(),h=[];for(let g=0;g<p;g++){let I=G.getItem(g);if(I)h.push(I)}return h}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:$.start,compression:Z.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,G]of B)G.remove(),N.release(G);B.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(G,p){J.rfn=G,J.ffn=p},setVirtualTotalFn(G){J.vtf=G},rebuildSizeCache(G){J.hc.rebuild(G??J.vtf())},setSizeConfig(G){if(J.hc=w0(G,J.vtf()),J.gp>0){let p=J.hc.getTotalSize,h=J.gp;J.hc.getTotalSize=()=>{let g=p();return g>0?g-h:0}}},updateContentSize(G){let p=`${G+J.mp}px`;if(U)q.content.style.width=p;else q.content.style.height=p},updateCompressionMode(){},setVisibleRangeFn(G){J.gvr=G},setScrollToPosFn(G){J.gsp=G},setPositionElementFn(G){J.pef=G},setScrollFns(G,p){J.sgt=G,J.sst=(h)=>{p(h),O()}},setScrollTarget(G){J.st.removeEventListener("scroll",O),J.st=G,J.st.addEventListener("scroll",O,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(G){J.gcw=G.width,J.gch=G.height,J.cw=G.width(),J.ch=G.height(),Z.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,k.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(G){J.sif=G}}},u2=(J,Y,q)=>{let{rendered:j,itemState:X,contentSizeHandlers:Q,applyTemplate:B,updateContentSize:N}=Y,Z=()=>{J.hc.rebuild(J.vtf()),N(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let D=J.it,E=[],w=Math.max(0,U),A=Math.min(W,D.length-1);for(let P=w;P<=A;P++)E.push(D[P]);return E},setTotal:(U)=>{},setItems:(U,W=0,D)=>{let E=J.it;if(W===0&&(D!==void 0||E.length===0))J.it=U;else{let w=W+U.length;if(E.length<w)E.length=w;for(let A=0;A<U.length;A++)E[W+A]=U[A]}if(J.ii)Z()},updateItem:(U,W)=>{let D=J.it;if(U<0||U>=D.length)return!1;let E=D[U];if(!E)return!1;D[U]={...E,...W};let w=j.get(U);if(w)B(w,J.at(D[U],U,X)),w.dataset.id=String(D[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((D)=>D.id===U);if(W<0||W>=J.it.length)return!1;if(J.it.splice(W,1),J.ii)Z();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),N(),J.ffn()}}},g2=(J,Y)=>{let{dom:q,classPrefix:j}=Y;return{getScrollTop:()=>J.sgt(),scrollTo:(X)=>{J.sst(X),J.ls=X,J.rfn()},scrollBy:(X)=>{let Q=J.sgt()+X;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(X=2)=>J.sab(X),getScrollPercentage:()=>{let X=J.hc.getTotalSize(),Q=Math.max(0,X-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(X)=>{J.ch=X},destroy:()=>{}}};var x2=(J,Y,q,j,X,Q,B,N,Z,U=0)=>{let W=(V,M=!1)=>{let F=q?Y.viewport.scrollWidth-Y.viewport.clientWidth:Y.viewport.scrollHeight-Y.viewport.clientHeight;if(F<=0||V<F-2)return!1;let O=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(O>V){if(J.sst(O),J.ls=O,M)J.rfn();return!0}return!1};if(!Z||!N)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let D=new WeakMap,E=0,w=!1,A=null,P=()=>{if(w){let V=J.sgt();B(),w=!1,W(V,!0)}};return A=new ResizeObserver((V)=>{if(J.id)return;let M=!1,F=j.start;for(let O of V){let k=D.get(O.target);if(k===void 0)continue;let $=q?O.borderBoxSize[0].inlineSize:O.borderBoxSize[0].blockSize;if(!N.isMeasured(k)){let G=$+U,p=N.getSize(k);if(N.setMeasuredSize(k,G),M=!0,k<F&&G!==p)E+=G-p;A.unobserve(O.target);let h=O.target;if(q)h.style.width=`${$}px`;else h.style.height=`${$}px`}}if(!M)return;if(N.rebuild(J.vtf()),J.hc=N,E!==0){let O=J.sgt();J.sst(O+E),J.ls=O+E,E=0}if(Q())w=!0;else{let O=J.sgt();B(),w=!1,W(O)}X.start=-1,X.end=-1,J.rfn()}),{ob:A,ei:D,mc:N,fl:P,se:W}};var Q2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,$0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,Y)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,B,N)=>{if(j(),Math.abs(B-Q)<1){J.scrollTo(B);return}let Z=performance.now(),U=(W)=>{let D=W-Z,E=Math.min(D/N,1),w=Q+(B-Q)*Q2(E);if(J.scrollTo(w),Y(),E<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var m2=(J,Y,q,j,X,Q,B,N,Z,U,W,D,E,w,A,P,V,M)=>{let F=(K)=>{{if(!Array.isArray(K)){console.warn("[vlist] setItems() expects an array, got:",typeof K);return}if(K.length>0&&K[0]&&!("id"in K[0]))console.warn('[vlist] Items must have an "id" property. First item:',K[0]);let _=new Set;for(let y=0;y<K.length;y++){let L=K[y];if(L&&"id"in L){if(_.has(L.id)){console.warn(`[vlist] Duplicate item ID "${L.id}" at index ${y}. updateItem() and removeItem() will only match the first occurrence.`);break}_.add(L.id)}}}a(),Z.dataManager.setItems(K,0,K.length)},O=U?(K)=>{let _=J.sab(2),y=J.it.length;if(Z.dataManager.setItems(K,y),_&&J.it.length>0){let L=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(L),J.ls=L,J.rfn()}}:(K)=>{let _=J.it.length;Z.dataManager.setItems(K,_)},k=U?(K)=>{let _=J.sgt(),y=J.hc.getTotalSize(),L=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...K,...L],0);let u=J.hc.getTotalSize()-y;if(u>0)J.sst(_+u),J.ls=_+u}:(K)=>{let _=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...K,..._],0)},$=(K,_)=>{{let y=J.vtf();if(K<0||K>=y)console.warn(`[vlist] updateItem() index ${K} is out of range (0–${y-1}).`)}Z.dataManager.updateItem(K,_)},G=!1,p=(K)=>{let _=-1;if(typeof document<"u"){let L=document.activeElement;if(L&&Y.items.contains(L)){let R=L.dataset?.index;if(R!==void 0)_=parseInt(R,10)}}let y=Z.dataManager.removeItem(K);if(y){if(q.emit("data:change",{type:"remove",id:K}),Z.forceRender(),!G){let L=Z.dataManager;if(typeof L.ensureRange==="function")G=!0,queueMicrotask(()=>{G=!1;let R=Z.dataManager.getTotal(),{start:u,end:S}=Z.state.viewportState.renderRange;if(R===0)return;if(S>=u)L.ensureRange(u,S).catch(()=>{})})}}if(!y)console.warn(`[vlist] removeItem() could not find item with id "${K}".`);if(y&&_>=0){let L=J.vtf();if(L>0){let R=Math.min(_,L-1),u=j.get(R);if(u&&typeof u.focus==="function")u.focus()}}return y},h=(K)=>{return Z.dataManager.getItem(K)},g=(K)=>{return Z.dataManager.getIndexById?.(K)??-1},I=async(K)=>{if(Z.dataManager.reload)await Z.dataManager.reload()},H=null,a=()=>{if(H!==null)cancelAnimationFrame(H),H=null},j0=(K,_,y)=>{if(a(),Math.abs(_-K)<1){J.sst(_),J.ls=_,J.rfn();return}let L=performance.now(),R=(u)=>{let S=u-L,b=Math.min(S/y,1),x=K+(_-K)*Q2(b);if(J.sst(x),J.ls=x,J.rfn(),b<1)H=requestAnimationFrame(R);else H=null};H=requestAnimationFrame(R)},d=(K,_)=>{{let x=J.vtf();if(x>0&&(K<0||K>=x))console.warn(`[vlist] scrollToIndex(${K}) is out of range (0–${x-1}).`)}let{align:y,behavior:L,duration:R}=$0(_),u=J.vtf(),S=K;if(W&&u>0)S=(S%u+u)%u;let b=J.gsp(S,J.hc,J.ch,u,y);if(L==="smooth")j0(J.sgt(),b,R);else a(),J.sst(b)},C=()=>J.sgt(),c=(K,_)=>{return q.on(K,_)},T=(K,_)=>{q.off(K,_)},v=()=>{if(J.id)return;if(J.id=!0,Z.state.isDestroyed=!0,Y.items.removeEventListener("click",D),Y.items.removeEventListener("dblclick",E),Y.root.removeEventListener("keydown",w),J.st.removeEventListener("scroll",A),P.disconnect(),V(),J.wh)Y.viewport.removeEventListener("wheel",J.wh);M();for(let K=0;K<N.length;K++)N[K]();for(let K of B)if(K.destroy)K.destroy();a();for(let[,K]of j)K.remove(),X.release(K);j.clear(),X.clear(),q.emit("destroy",void 0),q.clear(),Y.root.remove()},z={get element(){return Y.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):F,appendItems:Q.has("appendItems")?Q.get("appendItems"):O,prependItems:Q.has("prependItems")?Q.get("prependItems"):k,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):p,reload:Q.has("reload")?Q.get("reload"):I,getItemAt:h,getIndexById:g,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):d,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):a,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):C,on:c,off:T,destroy:v};for(let[K,_]of Q){if(K.charCodeAt(0)===95||K==="setItems"||K==="appendItems"||K==="prependItems"||K==="updateItem"||K==="removeItem"||K==="reload"||K==="scrollToIndex"||K==="scrollToItem"||K==="cancelScroll"||K==="getScrollPosition")continue;z[K]=_}return z};var oJ=0,t2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let Y=J.orientation==="horizontal",q=Y?"width":"height",j=Y?"estimatedWidth":"estimatedHeight",X=Y?J.item.width:J.item.height,Q=Y?J.item.estimatedWidth:J.item.estimatedHeight;if(X==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${Y?" when orientation is 'horizontal'":""}`);if(X!=null){if(typeof X==="number"&&X<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof X!=="number"&&typeof X!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(Y&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let B=new Map,N=!1,Z={use(U){if(N)throw Error("[vlist/builder] Cannot call .use() after .build()");return B.set(U.name,U),Z},build(){if(N)throw Error("[vlist/builder] .build() can only be called once");return N=!0,nJ(J,B,Y,X,Q??null)}};return Z};function nJ(J,Y,q,j,X){let{item:Q,items:B,overscan:N=d2,classPrefix:Z=c2,ariaLabel:U,padding:W,reverse:D=!1,scroll:E}=J,w=E,A=w?.wheel??!0,P=w?.wrap??!1,V=D,M=`${Z}-${oJ++}`,F=Y.has("withGrid")||Y.has("withMasonry")?0:Q.gap??0,O=j??X,k=j==null&&X!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,G=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,p={overscan:N,classPrefix:Z,reverse:V,wrap:P,horizontal:q,ariaIdPrefix:M},h=Array.from(Y.values()).sort((r,i)=>(r.priority??50)-(i.priority??50)),g=new Set(h.map((r)=>r.name));for(let r of h)if(r.conflicts){for(let i of r.conflicts)if(g.has(i))throw Error(`[vlist/builder] ${r.name} and ${i} cannot be combined`)}if(V){if(g.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let I=v2(J.container),H=C2(I,Z,U,q);if(w?.wheel===!1)if(q)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(w?.scrollbar==="none")H.viewport.classList.add(`${Z}-viewport--no-scrollbar`);let a=b0(W),j0=r0(a,q);if(a.top||a.right||a.bottom||a.left)H.content.style.boxSizing="border-box",H.content.style.padding=`${a.top}px ${a.right}px ${a.bottom}px ${a.left}px`;let d=z2(),C=B||[],c=typeof O==="function"&&(Y.has("withGrid")||Y.has("withMasonry")),T=F>0?typeof O==="function"?(r)=>O(r)+F:O+F:O,v=k?R2(X+F,C.length):w0(T,c?0:C.length);if(F>0){let r=v.getTotalSize;v.getTotalSize=()=>{let i=r();return i>0?i-F:0}}let z=S2(),K={it:C,hc:v,ch:H.viewport.clientHeight,cw:H.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:y2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,sst:q?(r)=>{H.viewport.scrollLeft=r}:(r)=>{H.viewport.scrollTop=r},sab:(r=2)=>{let i=K.hc.getTotalSize();return K.ls+K.ch>=i-r},sic:!1,rfn:null,ffn:null,gvr:(r,i,t,Z0,M0)=>{f2(r,i,t,Z0,M0)},gsp:(r,i,t,Z0,M0)=>{return p2(r,i,t,Z0,M0,K.mp)},pef:null,at:Q.template,vre:!0,st:H.viewport,wh:null,gcw:()=>K.cw,gch:()=>K.ch,gp:F,mp:j0,sif:(r)=>r};K.vtf=()=>K.dm?K.dm.getTotal():K.it.length;let _=null,y=!1,L={start:0,end:0},R={start:0,end:0},u={start:-1,end:-1},S={viewportState:{scrollPosition:0,containerSize:q?K.cw:K.ch,totalSize:K.hc.getTotalSize(),actualSize:K.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},b=new Map,x=()=>{S0(H.items,b.keys(),(r)=>b.get(r))},l=()=>{let r=`${K.hc.getTotalSize()+j0}px`;if(q)H.content.style.width=r;else H.content.style.height=r},f=x2(K,H,q,L,u,()=>y,l,k?v:null,k,F),n={selected:!1,focused:!1},J0=`${Z}-item`,m=Q.striped,o=!!m,Q0=m==="data"||m==="even"||m==="odd",q0=`${Z}-item--odd`,Y0=[],X0=[],e=[],W0=[],B0=[],A0=[],V0=[],U0=new Map,D0=null,N0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,D0=U0.get("_getSelectedIds")??null,N0=U0.get("_getFocusedIndex")??null},n0=(r,i,t)=>{if(!i)console.warn(`[vlist] Template returned falsy value${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);else if(typeof i==="string"&&i==="")console.warn(`[vlist] Template returned empty string${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);if(typeof i==="string")r.innerHTML=i;else r.replaceChildren(i)},SJ=(r,i)=>{let t=Math.round(K.hc.getOffset(i));if(q)r.style.transform=`translateX(${t}px)`;else r.style.transform=`translateY(${t}px)`};K.pef=SJ;let fJ=(r,i)=>{let t=z.acquire();t.className=J0;let Z0=!k||f.mc&&f.mc.isMeasured(r);if(q){if(Z0)t.style.width=`${K.hc.getSize(r)-F}px`;else t.style.width="";if(G!=null)t.style.height=`${G}px`}else if(Z0)t.style.height=`${K.hc.getSize(r)-F}px`;else t.style.height="";if(t.dataset.index=String(r),t.dataset.id=String(i.id),t.ariaSelected="false",t.id=`${M}-item-${r}`,K.la=String(K.vtf()),t.setAttribute("aria-setsize",K.la),t.setAttribute("aria-posinset",String(r+1)),String(i.id).startsWith("__placeholder_"))t.classList.add(`${Z}-item--placeholder`);if(o)if(Q0){let G0=K.sif(r);if(G0<0)t.classList.remove(q0);else t.classList.toggle(q0,(G0&1)===1)}else t.classList.toggle(q0,(r&1)===1);return n0(t,K.at(i,r,n),r),K.pef(t,r),t},IJ=()=>{if(K.id)return;let r=q?K.cw:K.ch;if(r<=0)return;T0();let i=D0?D0():K.ss,t=N0?N0():K.fi,Z0=K.vtf();if(K.gvr(K.ls,r,K.hc,Z0,L),I2(L,N,Z0,R),R.start===u.start&&R.end===u.end){if(K.sic)for(let[K0,O0]of b)K.pef(O0,K0);return}let M0=String(Z0),G0=M0!==K.la;K.la=M0;for(let[K0,O0]of b)if(K0<R.start||K0>R.end)O0.remove(),z.release(O0),b.delete(K0);let _0=document.createDocumentFragment(),L0=[],k0=[];for(let K0=R.start;K0<=R.end;K0++){let O0=K.dm?K.dm.getItem(K0):K.it[K0];if(O0===void 0)continue;let E0=b.get(K0);if(E0){let H0=E0.dataset.id,h0=String(O0.id);if(H0!==h0){let xJ=H0?.startsWith("__placeholder_"),T2=h0.startsWith("__placeholder_");n0(E0,K.at(O0,K0,n),K0),E0.dataset.id=h0;let k2=!k||f.mc&&f.mc.isMeasured(K0);if(q)E0.style.width=k2?`${K.hc.getSize(K0)-F}px`:"";else E0.style.height=k2?`${K.hc.getSize(K0)-F}px`:"";if(T2)E0.classList.add(`${Z}-item--placeholder`);else E0.classList.remove(`${Z}-item--placeholder`);if(xJ&&!T2)E0.classList.add(`${Z}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${Z}-item--replaced`)},300)}K.pef(E0,K0);let d0=i.has(O0.id),gJ=K0===t;if(E0.classList.toggle(`${Z}-item--selected`,d0),E0.classList.toggle(`${Z}-item--focused`,gJ),E0.ariaSelected=d0?"true":"false",G0)E0.setAttribute("aria-setsize",K.la)}else{let H0=fJ(K0,O0);k0.push({index:K0,element:H0});let h0=i.has(O0.id),d0=K0===t;if(h0)H0.classList.add(`${Z}-item--selected`),H0.ariaSelected="true";if(d0)H0.classList.add(`${Z}-item--focused`);_0.appendChild(H0),L0.push({index:K0,element:H0})}}if(L0.length>0){H.items.appendChild(_0);for(let{index:K0,element:O0}of L0)b.set(K0,O0)}if(k&&f.ob&&f.mc&&f.ei){for(let{index:K0,element:O0}of k0)if(!f.mc.isMeasured(K0))f.ei.set(O0,K0),f.ob.observe(O0)}u.start=R.start,u.end=R.end,S.lastRenderRange.start=R.start,S.lastRenderRange.end=R.end,S.viewportState.scrollPosition=K.ls,S.viewportState.visibleRange.start=L.start,S.viewportState.visibleRange.end=L.end,S.viewportState.renderRange.start=R.start,S.viewportState.renderRange.end=R.end,d.emit("range:change",{range:{start:R.start,end:R.end}})},pJ=()=>{u.start=-1,u.end=-1,K.rfn()};K.rfn=IJ,K.ffn=pJ;let hJ=()=>{H.root.classList.remove(`${Z}--scrolling`),y=!1,K.vt.velocity=0,K.vt.sampleCount=0,d.emit("velocity:change",{velocity:0,reliable:!1}),f.fl(),x();for(let r=0;r<X0.length;r++)X0[r]();d.emit("scroll:idle",{scrollPosition:K.ls})},uJ=()=>{if(_)clearTimeout(_);_=setTimeout(hJ,w?.idleTimeout??s2)},x0=()=>{if(K.id)return;let r=K.sgt();if(r===K.ls&&y)return;let i=r>=K.ls?"down":"up";if(K.vt=P2(K.vt,r),!H.root.classList.contains(`${Z}--scrolling`))H.root.classList.add(`${Z}--scrolling`);y=!0,K.ls=r,K.rfn(),d.emit("scroll",{scrollPosition:r,direction:i}),d.emit("velocity:change",{velocity:K.vt.velocity,reliable:K.vt.sampleCount>=$2});for(let t=0;t<Y0.length;t++)Y0[t](r,i);uJ()},z0=null;if(K.st.addEventListener("scroll",x0,{passive:!0}),A&&!q&&!$)z0=(r)=>{if(S.viewportState.isCompressed)return;let i=H.viewport.scrollWidth>H.viewport.clientWidth;if(i&&Math.abs(r.deltaX)>Math.abs(r.deltaY))return;if(r.preventDefault(),i&&r.deltaX!==0)H.viewport.scrollLeft+=r.deltaX;let t=K.sgt(),Z0=H.viewport.scrollHeight-H.viewport.clientHeight,M0=Math.max(0,Math.min(t+r.deltaY,Z0));if(Math.abs(M0-t)<1)return;K.sst(M0),x0()},K.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(r)=>{if(r.deltaX)return;r.preventDefault(),H.viewport.scrollLeft+=r.deltaY},K.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});let M2=(r)=>{let i=r.target.closest("[data-index]");if(!i)return null;let t=parseInt(i.dataset.index??"-1",10);if(t<0)return null;let Z0=K.dm?.getItem(t)??K.it[t];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:t}},O2=(r)=>{let i=M2(r);if(i)d.emit("item:click",{item:i.item,index:i.index,event:r});for(let t=0;t<e.length;t++)e[t](r)},E2=(r)=>{let i=M2(r);if(i)d.emit("item:dblclick",{item:i.item,index:i.index,event:r})},A2=(r)=>{for(let i=0;i<W0.length;i++)W0[i](r)};H.items.addEventListener("click",O2),H.items.addEventListener("dblclick",E2),H.root.addEventListener("keydown",A2);let v0=null,F2=(r)=>{if(v0)clearTimeout(v0);v0=setTimeout(()=>{if(v0=null,K.id)return;let i=K.vtf(),{start:t,end:Z0}=r.range;H.liveRegion.textContent=`Showing items ${t+1} to ${Math.min(Z0+1,i)} of ${i}`},300)};d.on("range:change",F2),V0.push(()=>{if(v0)clearTimeout(v0);d.off("range:change",F2)});let i0=new ResizeObserver((r)=>{if(K.id)return;for(let i of r){let t=i.contentRect.height,Z0=i.contentRect.width,M0=q?Z0:t,G0=q?K.cw:K.ch;if(K.cw=Z0,K.ch=t,Math.abs(M0-G0)>1){if(S.viewportState.containerSize=M0,K.ii)l(),K.rfn(),d.emit("resize",{height:t,width:Z0})}if(K.ii)for(let _0=0;_0<B0.length;_0++)B0[_0](Z0,t)}});if(K.vre)i0.observe(H.viewport);let t0={dom:H,emitter:d,resolvedConfig:p,rawConfig:J,rendered:b,pool:z,itemState:n,sharedState:S,renderRange:R,isHorizontal:q,classPrefix:Z,contentSizeHandlers:A0,idleHandlers:X0,afterScroll:Y0,clickHandlers:e,keydownHandlers:W0,resizeHandlers:B0,destroyHandlers:V0,methods:U0,onScrollFrame:x0,resizeObserver:i0,applyTemplate:n0,updateContentSize:l},m0=h2(K,t0);K.dm=u2(K,t0,m0),K.sc=g2(K,t0);let L2=new Map;for(let r of h)if(r.methods)for(let i of r.methods){let t=L2.get(i);if(t)throw Error(`[vlist/builder] Method "${i}" is registered by both "${t}" and "${r.name}"`);L2.set(i,r.name)}for(let r of h)r.setup(m0);if(!U0.has("_getFocusedIndex")){let r=-1,i=`${Z}-item--focused`,t=(G0,_0)=>{let L0=K.vtf();if(_0<0||_0>=L0)return;r=_0,H.root.setAttribute("aria-activedescendant",`${M}-item-${_0}`);let k0=q?K.cw:K.ch;if(K.sst(K.gsp(_0,K.hc,k0,L0,"center")),K.ls=K.sgt(),K.rfn(),G0>=0&&G0!==_0)b.get(G0)?.classList.remove(i);b.get(_0)?.classList.add(i)},Z0=()=>{if(K.id)return;if(!H.root.matches(":focus-visible"))return;let G0=K.vtf();if(G0===0)return;t(-1,r>=0?Math.min(r,G0-1):0)};H.root.addEventListener("focusin",Z0);let M0=(G0)=>{if(K.id)return;let _0=G0.relatedTarget;if(_0&&H.root.contains(_0))return;if(r>=0)b.get(r)?.classList.remove(i);H.root.removeAttribute("aria-activedescendant")};H.root.addEventListener("focusout",M0),W0.push((G0)=>{if(K.id)return;let _0=K.vtf();if(_0===0)return;let L0=r,k0=L0;switch(G0.key){case"ArrowUp":k0=L0<=0?_0-1:L0-1;break;case"ArrowDown":k0=L0>=_0-1?0:L0+1;break;case"Home":k0=0;break;case"End":k0=_0-1;break;default:return}G0.preventDefault(),t(L0,k0)}),V0.push(()=>{H.root.removeEventListener("focusin",Z0),H.root.removeEventListener("focusout",M0)})}if(K.ii=!0,m0.state.isInitialized=!0,l(),K.rfn(),V&&K.it.length>0){let r=K.gsp(K.it.length-1,K.hc,K.ch,K.it.length,"end");K.sst(r),K.ls=r,K.rfn()}return m2(K,H,d,b,z,U0,h,V0,m0,V,P,O2,E2,A2,x0,i0,()=>{if(f.ob)f.ob.disconnect()},()=>{if(_)clearTimeout(_)})}Y2();var g0=(J,Y,q={},j="vlist",X=!1)=>{let{autoHide:Q=!0,autoHideDelay:B=1000,minThumbSize:N=30,showOnHover:Z=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,D=0,E=0,w=0,A=0,P=!1,V=!1,M=0,F=0,O=0,k=null,$=!1,G=null,p=null,h=X?"width":"height",g=X?"translateX":"translateY",I=X?(f)=>f.clientX:(f)=>f.clientY,H=X?"left":"top",a=document.createElement("div"),j0=document.createElement("div"),d=Z?document.createElement("div"):null,C=()=>{if(a.className=`${j}-scrollbar`,j0.className=`${j}-scrollbar-thumb`,X)a.classList.add(`${j}-scrollbar--horizontal`);if(a.appendChild(j0),J.appendChild(a),d){if(d.className=`${j}-scrollbar-hover`,X)d.classList.add(`${j}-scrollbar-hover--horizontal`),d.style.height=`${U}px`;else d.style.width=`${U}px`;J.appendChild(d)}},c=()=>{if(k)clearTimeout(k),k=null},T=()=>{if(!Q)return;c(),k=setTimeout(z,B)},v=()=>{if(D<=E)return;if(c(),!$)a.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!P&&!V)T()},z=()=>{if(P||V)return;a.classList.remove(`${j}-scrollbar--visible`),$=!1},K=(f,n)=>{D=f,E=n;let J0=D>E;if(a.style.display=J0?"":"none",!J0){z();return}let m=E/D;w=Math.max(N,m*E),j0.style[h]=`${w}px`,A=E-w,_(O)},_=(f)=>{if(O=f,D<=E||A<=0)return;let n=D-E,m=Math.min(1,Math.max(0,f/n))*A;j0.style.transform=`${g}(${m}px)`},y=(f)=>{if(f.target===j0)return;let n=a.getBoundingClientRect(),o=I(f)-n[H]-w/2,q0=Math.max(0,Math.min(o,A))/A,Y0=D-E,X0=q0*Y0;Y(X0),v()},L=(f)=>{f.preventDefault(),f.stopPropagation(),P=!0,M=I(f),F=O,c(),a.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",R),document.addEventListener("mouseup",u)},R=(f)=>{if(!P)return;let n=I(f)-M,J0=A>0?n/A:0,m=D-E,o=J0*m,Q0=Math.max(0,Math.min(F+o,m)),Y0=Q0/m*A;if(j0.style.transform=`${g}(${Y0}px)`,p=Q0,G===null)G=requestAnimationFrame(()=>{if(p!==null)Y(p);G=null})},u=()=>{if(P=!1,G!==null)cancelAnimationFrame(G),G=null;if(p!==null)Y(p),p=null;if(a.classList.remove(`${j}-scrollbar--dragging`),Q&&!V)T();document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",u)},S=()=>{if(W)v()},b=()=>{if(!P){if(V=!1,Q)T()}},x=()=>{V=!0,c(),v()},l=()=>{if(V=!1,!P&&Q)T()},s=()=>{if(c(),G!==null)cancelAnimationFrame(G),G=null;if(a.removeEventListener("click",y),a.removeEventListener("mouseenter",x),a.removeEventListener("mouseleave",l),j0.removeEventListener("mousedown",L),J.removeEventListener("mouseenter",S),J.removeEventListener("mouseleave",b),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",u),d){if(d.removeEventListener("mouseenter",x),d.removeEventListener("mouseleave",l),d.parentNode)d.parentNode.removeChild(d)}if(a.parentNode)a.parentNode.removeChild(a)};if(C(),a.addEventListener("click",y),a.addEventListener("mouseenter",x),a.addEventListener("mouseleave",l),j0.addEventListener("mousedown",L),J.addEventListener("mouseenter",S),J.addEventListener("mouseleave",b),d)d.addEventListener("mouseenter",x),d.addEventListener("mouseleave",l);return{show:v,hide:z,updateBounds:K,updatePosition:_,isVisible:()=>$,destroy:s}};var QJ=(J)=>{let Y=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:X}=q,{classPrefix:Q,horizontal:B}=X;if(Y=g0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,B),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let N=q.getCachedCompression();Y.updateBounds(N.virtualSize,q.state.viewportState.containerSize);let Z=Y;q.afterScroll.push((U,W)=>{Z.updatePosition(U),Z.show()}),q.resizeHandlers.push((U,W)=>{if(Z){let D=q.getCachedCompression();Z.updateBounds(D.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(Z){let U=q.getCachedCompression();Z.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(Z)Z.destroy()})},destroy(){if(Y)Y.destroy(),Y=null}}};var iJ=0.65,tJ=0.5,eJ=0.95,J4=0.1,Q4=5,j4=100,jJ=(J)=>{let Y=J?.force??!1,q=null,j=0,X=!1,Q=0,B=null,N=0,Z=0,U=null,W=[];return{name:"withScale",priority:20,setup(D){let{dom:E,config:w}=D,{classPrefix:A,horizontal:P}=w,V=()=>{let k=D.getVirtualTotal(),$=u0(k,D.sizeCache,Y);if($.isCompressed&&!X){X=!0,D.scrollController.enableCompression($);let p=P?E.viewport.scrollLeft:E.viewport.scrollTop;if(P)E.viewport.style.overflowX="hidden";else E.viewport.style.overflow="hidden";if(P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(p>0)j=p,Q=p;D.updateContentSize($.virtualSize),D.setScrollFns(()=>j,(T)=>{if(j=T,Q=T,B!==null)cancelAnimationFrame(B),B=null});let h=()=>{let T=Q-j;if(D.getVirtualTotal()===0){j=0,Q=0,B=null,D.scrollController.scrollTo(0);return}if(Math.abs(T)<tJ)j=Q,B=null;else{j+=T*iJ;let z=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize;j=Math.max(0,Math.min(j,z)),B=requestAnimationFrame(h)}D.scrollController.scrollTo(j)},g=E.viewport,I=(T)=>{T.preventDefault();let z=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize;if(Q=Math.max(0,Math.min(Q+T.deltaY,z)),B===null)B=requestAnimationFrame(h)};g.addEventListener("wheel",I,{passive:!1});let H=()=>{if(U!==null)cancelAnimationFrame(U),U=null},a=(T)=>{if(H(),B!==null)cancelAnimationFrame(B),B=null;let v=T.touches[0];if(!v)return;let z=P?v.clientX:v.clientY;N=z,Z=j,W=[{time:performance.now(),y:z}]},j0=(T)=>{T.preventDefault();let v=T.touches[0];if(!v)return;let z=P?v.clientX:v.clientY,K=performance.now();if(W.push({time:K,y:z}),W.length>Q4)W.shift();let _=N-z,L=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize,R=Math.max(0,Math.min(Z+_,L));j=R,Q=R,D.scrollController.scrollTo(R)},d=(T)=>{let v=performance.now(),z=W.filter((L)=>v-L.time<j4),K=0;if(z.length>=2){let L=z[0],R=z[z.length-1],u=R.time-L.time;if(u>0)K=(L.y-R.y)/u}if(W=[],Math.abs(K)<J4)return;let _=K*16,y=()=>{if(_*=eJ,Math.abs(_)<0.5){U=null;return}let R=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize,u=j+_;if(u=Math.max(0,Math.min(u,R)),u<=0&&_<0||u>=R&&_>0){j=u,Q=u,D.scrollController.scrollTo(u),U=null;return}j=u,Q=u,D.scrollController.scrollTo(u),U=requestAnimationFrame(y)};U=requestAnimationFrame(y)};g.addEventListener("touchstart",a,{passive:!0}),g.addEventListener("touchmove",j0,{passive:!1}),g.addEventListener("touchend",d,{passive:!0}),g.addEventListener("touchcancel",d,{passive:!0}),D.destroyHandlers.push(()=>{if(g.removeEventListener("wheel",I),g.removeEventListener("touchstart",a),g.removeEventListener("touchmove",j0),g.removeEventListener("touchend",d),g.removeEventListener("touchcancel",d),H(),B!==null)cancelAnimationFrame(B),B=null});let C=E.viewport.querySelector(`.${A}-scrollbar`),c=()=>{let T=P?E.viewport.scrollLeft:E.viewport.scrollTop;if(T!==0)if(console.warn(`[vlist/scale] native scroll drift detected: ${T}px — resetting to 0`),P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0};if(g.addEventListener("scroll",c,{passive:!0}),D.destroyHandlers.push(()=>{g.removeEventListener("scroll",c)}),!C){if(q=g0(E.viewport,(v)=>D.scrollController.scrollTo(v),{},A,P),!E.viewport.classList.contains(`${A}-viewport--custom-scrollbar`))E.viewport.classList.add(`${A}-viewport--custom-scrollbar`);q.updateBounds($.virtualSize,D.state.viewportState.containerSize);let T=q;D.afterScroll.push((v,z)=>{if(T)T.updatePosition(v),T.show()}),D.resizeHandlers.push((v,z)=>{if(T){let K=D.getCachedCompression();T.updateBounds(K.virtualSize,D.state.viewportState.containerSize)}})}}else if(!$.isCompressed&&X){if(X=!1,B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null;if(j=0,Q=0,W=[],D.setScrollFns(P?()=>E.viewport.scrollLeft:()=>E.viewport.scrollTop,P?(p)=>{E.viewport.scrollLeft=p}:(p)=>{E.viewport.scrollTop=p}),P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(D.scrollController.disableCompression(),P)E.viewport.style.overflowX="auto";else E.viewport.style.overflow="auto";if(q)q.destroy(),q=null;D.updateContentSize($.actualSize)}else if($.isCompressed)D.scrollController.updateConfig({compression:$}),D.updateContentSize($.virtualSize);if(q)q.updateBounds($.virtualSize,D.state.viewportState.containerSize);let G=D.state.viewportState;if(G.isCompressed=$.isCompressed,G.compressionRatio=$.ratio,G.totalSize=$.virtualSize,G.actualSize=$.actualSize,D.state.cachedCompression={state:$,totalItems:k},X){let p=Math.max(0,$.virtualSize-D.state.viewportState.containerSize),h=j;if(h>p)h=p;else if(h<0)h=0;if(h!==j){if(B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null;D.scrollController.scrollTo(h)}}};D.updateCompressionMode=V;let M=D.getCachedCompression.bind(D);D.getCachedCompression=()=>{if(D.state.cachedCompression)return D.state.cachedCompression.state;return M()},D.setVisibleRangeFn((k,$,G,p,h)=>{F=null,O=null;let g=u0(p,G,Y);e2(k,$,G,p,g,h)}),D.setScrollToPosFn((k,$,G,p,h)=>{let g=u0(p,$,Y);return JJ(k,$,G,p,g,h)});let F=null,O=null;D.setPositionElementFn((k,$)=>{let G=D.getVirtualTotal(),p=u0(G,D.sizeCache,Y);if(p.isCompressed){let h=D.scrollController.getScrollTop();if(F===null||$<O)O=$,F=Math.round(a0($,h,D.sizeCache,G,D.state.viewportState.containerSize,p));let g=F+D.sizeCache.getOffset($)-D.sizeCache.getOffset(O),I=D.config.horizontal;k.style.transform=I?`translateX(${g}px)`:`translateY(${g}px)`}else{let h=Math.round(D.sizeCache.getOffset($)),g=D.config.horizontal;k.style.transform=g?`translateX(${h}px)`:`translateY(${h}px)`}}),V(),D.destroyHandlers.push(()=>{if(q)q.destroy(),q=null;if(B!==null)cancelAnimationFrame(B),B=null})},destroy(){if(q)q.destroy(),q=null;if(B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null}}};var qJ=(J={})=>{let{chunkSize:Y=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:X}=J,Q=new Map,B=0,N=0,Z=(C)=>{let c=Q.get(C);if(!c)c={items:Array(Y),count:0,lastAccess:Date.now()},Q.set(C,c);else c.lastAccess=Date.now();return c},U=(C)=>{return Math.floor(C/Y)},W=(C)=>{return C%Y},D=()=>B,E=(C)=>{B=C},w=(C)=>{if(C<0||C>=B)return;let c=U(C),T=Q.get(c);if(!T)return;return T.items[W(C)]},A=(C)=>{if(C<0||C>=B)return!1;let c=U(C),T=Q.get(c);if(!T)return!1;return T.items[W(C)]!==void 0},P=(C,c)=>{let T=U(C),v=Z(T),z=W(C),K=v.items[z]===void 0;if(v.items[z]=c,K)v.count++,N++;if(C>=B)B=C+1},V=(C,c)=>{for(let T=0;T<c.length;T++){let v=c[T];if(v!==void 0)P(C+T,v)}},M=(C)=>{if(C<0||C>=B)return!1;let c=U(C),T=Q.get(c),v=W(C);if(!(T!==void 0&&T.items[v]!==void 0))return!1;let K=c,_=Array.from(Q.keys()).filter((L)=>L>=K).sort((L,R)=>L-R),y=[];for(let L of _){let R=Q.get(L),u=L*Y;for(let S=0;S<Y;S++){if(R.items[S]===void 0)continue;let b=u+S;if(b<=C)continue;y.push({oldIndex:b,item:R.items[S]})}}if(T.items[v]=void 0,T.count--,N--,T.count===0)Q.delete(c);for(let{oldIndex:L}of y){let R=U(L),u=Q.get(R);if(!u)continue;let S=W(L);if(u.items[S]!==void 0){if(u.items[S]=void 0,u.count--,N--,u.count===0)Q.delete(R)}}for(let{oldIndex:L,item:R}of y){let u=L-1,S=U(u),b=Z(S),x=W(u);b.items[x]=R,b.count++,N++}return B--,!0},F=(C,c)=>{let T=[];for(let v=C;v<=c&&v<B;v++)T.push(w(v));return T},O=(C,c)=>{for(let T=C;T<=c&&T<B;T++)if(!A(T))return!1;return!0},k=()=>{let C=[],c=null,T=Array.from(Q.keys()).sort((v,z)=>v-z);for(let v of T){let z=Q.get(v);if(!z)continue;let K=v*Y;for(let _=0;_<Y;_++){let y=K+_;if(y>=B)break;if(z.items[_]!==void 0)if(c===null)c={start:y,end:y};else if(y===c.end+1)c.end=y;else C.push(c),c={start:y,end:y};else if(c!==null)C.push(c),c=null}}if(c!==null)C.push(c);return C},$=(C,c)=>{let T=[],v=null;for(let z=C;z<=c&&z<B;z++)if(!A(z))if(v===null)v={start:z,end:z};else v.end=z;else if(v!==null)T.push(v),v=null;if(v!==null)T.push(v);return T},G=(C)=>{return Q.has(C)},p=(C)=>{let c=Q.get(C);if(c)c.lastAccess=Date.now()},h=(C,c)=>{if(C>c||Q.size===0)return;let T=Date.now(),v=U(Math.max(0,C)),z=U(Math.min(B-1,c));for(let K=v;K<=z;K++){let _=Q.get(K);if(_)_.lastAccess=T}},g=(C,c)=>{if(N<=q)return 0;let T=Math.max(0,C-j),v=Math.min(B-1,c+j),z=U(T),K=U(v),_=0,y=[];for(let[L,R]of Q)if(L<z||L>K)_+=R.count,y.push(L),N-=R.count,Q.delete(L);if(_>0&&X)X(_,y);return _},I=()=>{if(N<=q)return 0;let C=Array.from(Q.entries()).sort(([,v],[,z])=>v.lastAccess-z.lastAccess),c=0,T=[];for(let[v,z]of C){if(N<=q)break;c+=z.count,N-=z.count,T.push(v),Q.delete(v)}if(c>0&&X)X(c,T);return c},H=()=>{return{totalItems:B,cachedItems:N,cachedChunks:Q.size,chunkSize:Y,maxCachedItems:q,memoryEfficiency:B>0?1-N/B:1}},a=()=>N,j0=()=>{Q.clear(),N=0};return{chunkSize:Y,maxCachedItems:q,getTotal:D,setTotal:E,get:w,has:A,set:P,setRange:V,delete:M,getRange:F,isRangeLoaded:O,getLoadedRanges:k,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:G,touchChunk:p,touchChunksForRange:h,evictDistant:g,evictToLimit:I,getStats:H,getCachedCount:a,clear:j0,reset:()=>{j0(),B=0}}},q4=(J)=>{if(J.length===0)return[];let Y=[...J].sort((j,X)=>j.start-X.start),q=[{...Y[0]}];for(let j=1;j<Y.length;j++){let X=Y[j],Q=q[q.length-1];if(X.start<=Q.end+1)Q.end=Math.max(Q.end,X.end);else q.push({...X})}return q},YJ=(J,Y,q)=>{let j=Math.floor(J.start/q)*q,X=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:X};if(Y.length===0)return[Q];let B=[],N=q4(Y),Z=Q.start;for(let U of N){if(U.end<Z)continue;if(U.start>Q.end)break;if(U.start>Z)B.push({start:Z,end:Math.min(U.start-1,Q.end)});if(Z=U.end+1,Z>Q.end)break}if(Z<=Q.end)B.push({start:Z,end:Q.end});return B};var XJ=(J={})=>{let{maskCharacter:Y=o2,maxSampleSize:q=n2}=J,j=[],X=!1,Q=0,B=(D)=>{if(X||D.length===0)return;let E=Math.min(D.length,q);for(let w=0;w<E;w++){let A=D[w];if(!A||typeof A!=="object")continue;let P={};for(let[V,M]of Object.entries(A)){if(V.startsWith("_")||V==="id")continue;P[V]=String(M??"").length}if(Object.keys(P).length>0)j.push(P)}X=!0},N=()=>X,Z=(D)=>{let E={id:`${i2}${Q++}`,[q2]:!0,_index:D};if(j.length===0)return E.label=Y.repeat(12),E;let w=j[D%j.length];for(let[A,P]of Object.entries(w))E[A]=Y.repeat(Math.max(1,P));return E};return{analyzeStructure:B,hasAnalyzedStructure:N,generate:Z,generateRange:(D,E)=>{let w=[];for(let A=D;A<=E;A++)w.push(Z(A));return w},clear:()=>{j=[],X=!1,Q=0}}},s0=(J)=>{if(!J||typeof J!=="object")return!1;return J[q2]===!0};var Y4=50,UJ=(J={})=>{let{adapter:Y,initialItems:q,initialTotal:j,storage:X,placeholder:Q,pageSize:B=Y4,onStateChange:N,onItemsLoaded:Z,onItemsEvicted:U}=J,W=qJ({...X,onEvict:(m,o)=>{U?.(m),$()}}),D=null,E=()=>{if(!D)D=XJ(Q);return D},w=new Map,A=!1,P,V=!0,M,F=[],O=0,k=new Map,$=()=>{N?.(d())},G=()=>{w.clear();let m=W.getLoadedRanges();for(let o of m)for(let Q0=o.start;Q0<=o.end;Q0++){let q0=W.get(Q0);if(q0&&!s0(q0))w.set(q0.id,Q0)}},p=(m,o)=>{if(!s0(o))w.set(o.id,m)},h=(m)=>{w.delete(m)},g=(m,o)=>{return`${m}-${o}`},I=()=>W.getTotal(),H=()=>W.getCachedCount(),a=()=>A,j0=()=>V,d=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:F,error:P,hasMore:V,cursor:M}),C=()=>W,c=()=>E(),T=(m)=>{let o=W.get(m);if(o!==void 0)return o;if(m>=0&&m<W.getTotal())return E().generate(m);return},v=(m)=>{let o=w.get(m);if(o===void 0)return;return W.get(o)},z=(m)=>{return w.get(m)??-1},K=(m)=>{let o=W.get(m);return o!==void 0&&!s0(o)},_=(m,o)=>{let Q0=[],q0=W.getTotal(),Y0=0,X0=0;W.touchChunksForRange(m,Math.min(o,q0-1));for(let e=m;e<=o&&e<q0;e++){let W0=W.get(e);if(W0!==void 0)Q0.push(W0),Y0++;else Q0.push(E().generate(e)),X0++}return Q0},y=(m)=>{W.setTotal(m),V=W.getCachedCount()<m,$()},L=(m,o=0,Q0)=>{if(Y&&m.length>0){let q0=E();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(m)}for(let q0=0;q0<m.length;q0++){let Y0=m[q0];if(Y0!==void 0){let X0=o+q0;W.set(X0,Y0),p(X0,Y0)}}if(Q0!==void 0)W.setTotal(Q0);else if(o+m.length>W.getTotal())W.setTotal(o+m.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)V=!1;$(),Z?.(m,o,W.getTotal())},R=(m,o)=>{let Q0=w.get(m);if(Q0===void 0)return!1;let q0=W.get(Q0);if(!q0)return!1;let Y0={...q0,...o};if(W.set(Q0,Y0),o.id!==void 0&&o.id!==m)h(m),p(Q0,Y0);return $(),!0},u=(m)=>{let o=w.get(m);if(o===void 0)return!1;if(!W.delete(o))return!1;return G(),k.clear(),$(),!0},S=async(m,o)=>{if(!Y)return;let Q0=g(m,o);if(k.has(Q0))return;let q0=W.getLoadedRanges(),Y0=YJ({start:m,end:o},q0,W.chunkSize);if(Y0.length===0)return;let X0=W.chunkSize,e=[];for(let B0 of Y0){let A0=Math.floor(B0.start/X0),V0=Math.floor(B0.end/X0);for(let U0=A0;U0<=V0;U0++){let D0=U0*X0,N0=D0+X0-1,F0=g(D0,N0);if(!e.some((T0)=>T0.start===D0)&&!k.has(F0))e.push({start:D0,end:N0})}}let W0=[];for(let B0 of Y0){let A0=Math.floor(B0.start/X0),V0=Math.floor(B0.end/X0);for(let U0=A0;U0<=V0;U0++){let D0=U0*X0,N0=D0+X0-1,F0=g(D0,N0);if(k.has(F0)){let T0=k.get(F0);if(!W0.includes(T0))W0.push(T0)}}}for(let B0 of e){let A0=g(B0.start,B0.end),V0=(async()=>{F.push(B0),A=!0,P=void 0,$();try{let U0=B0.end-B0.start+1,D0={offset:B0.start,limit:U0,cursor:void 0},N0=await Y.read(D0);if(L(N0.items,B0.start,N0.total),N0.cursor)M=N0.cursor;let F0=B0.start+N0.items.length;if(F0>=O){if(O=F0,N0.hasMore!==void 0)V=N0.hasMore;else if(N0.total!==void 0)V=F0<N0.total}}catch(U0){P=U0 instanceof Error?U0:Error(String(U0))}finally{k.delete(A0),F=F.filter((U0)=>U0.start!==B0.start||U0.end!==B0.end),A=k.size>0,$()}})();k.set(A0,V0),W0.push(V0)}await Promise.all(W0)},b=async(m,o)=>{if(W.isRangeLoaded(m,o))return;await S(m,o)},x=async()=>{if(!Y)return;await S(0,B-1)},l=async()=>{if(!Y||A||!V)return!1;let m=W.getCachedCount(),o=W.getTotal(),Q0=m,q0=Math.min(Q0+B-1,o>0?o-1:Q0+B-1);if(Q0>=o&&o>0)return V=!1,!1;return await S(Q0,q0),W.getCachedCount()>m},s=async()=>{if(W.clear(),W.setTotal(0),w.clear(),D)D.clear();k.clear(),F=[],A=!1,M=void 0,V=!0,O=0,P=void 0,$()},f=(m,o)=>{if(W.evictDistant(m,o)>0)G()},n=()=>{W.clear(),w.clear(),M=void 0,P=void 0,F=[],A=!1,$()},J0=()=>{if(W.reset(),w.clear(),D)D.clear();M=void 0,V=!0,O=0,P=void 0,F=[],A=!1,$()};if(q&&q.length>0)L(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:d,getTotal:I,getCached:H,getIsLoading:a,getHasMore:j0,getStorage:C,getPlaceholders:c,getItem:T,getItemById:v,getIndexById:z,isItemLoaded:K,getItemsInRange:_,setTotal:y,setItems:L,updateItem:R,removeItem:u,loadRange:S,ensureRange:b,loadInitial:x,loadMore:l,reload:s,evictDistant:f,clear:n,reset:J0}};var KJ=(J)=>{let{adapter:Y,loading:q,storage:j,total:X,autoLoad:Q=!0}=J,B=q?.cancelThreshold??r2,N=q?.preloadThreshold??a2,Z=q?.preloadAhead??l2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,D=U.config.reverse,E=U.methods.get("_getGridLayout"),w=(I)=>{if(E){let H=E();if(H){let a=U.dataManager.getTotal();return H.getItemRange(I.start,I.end,a)}}return I},A=UJ({adapter:Y,...X!==void 0&&{initialTotal:X},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let I=U.getVirtualTotal();U.sizeCache.rebuild(I),U.updateCompressionMode();let H=U.getCachedCompression();U.state.viewportState.totalSize=H.virtualSize,U.state.viewportState.actualSize=H.actualSize,U.state.viewportState.isCompressed=H.isCompressed,U.state.viewportState.compressionRatio=H.ratio,U.updateContentSize(H.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(I,H,a)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:I,total:a,offset:H})}});U.replaceDataManager(A);let P=null,V=null,M=0,F=!1,O=null,k=120,$=(I=!1)=>{if(F=!1,V=null,I)P=null;if(O!==null)clearTimeout(O),O=null},G=()=>{if(!V)return;V=null;let{renderRange:I}=U.state.viewportState;if(I.end<I.start)return;P=null;let H=w(I);U.dataManager.ensureRange(H.start,H.end).catch((a)=>{W.emit("error",{error:a,context:"ensureRange"})})};U.afterScroll.push((I,H)=>{if(U.state.isDestroyed)return;let a=U.scrollController.getVelocity(),d=U.scrollController.isTracking()&&a<=B;if(M>B&&a<=B)F=!0;else if(F&&a>B)$();if(F&&a<0.5)$(!0);if(M=a,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(F||V))$(!0),d=!0;let c=F&&a>0.5;if(d&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(D){if(I<j2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((z)=>{W.emit("error",{error:z,context:"loadMore"})})}else if(U.state.viewportState.totalSize-I-U.state.viewportState.containerSize<j2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((K)=>{W.emit("error",{error:K,context:"loadMore"})})}let{renderRange:T}=U.state.viewportState;if(!P||T.start!==P.start||T.end!==P.end){if(P={start:T.start,end:T.end},d&&!c){if(V=null,O!==null)clearTimeout(O),O=null;let z=w(T),K=z.start,_=z.end,y=E?U.dataManager.getTotal():U.getVirtualTotal();if(a>N)if(H==="down")_=Math.min(z.end+Z,y-1);else K=Math.max(z.start-Z,0);U.dataManager.ensureRange(K,_).catch((L)=>{W.emit("error",{error:L,context:"ensureRange"})})}else if(V={start:T.start,end:T.end},c){if(O!==null)clearTimeout(O);O=setTimeout(()=>{O=null,G(),$()},k)}}});let p=200,h=null;U.afterScroll.push((I,H)=>{if(h!==null)clearTimeout(h);h=setTimeout(()=>{h=null,G(),$()},p)}),U.destroyHandlers.push(()=>{if(h!==null)clearTimeout(h),h=null;$()});let g=()=>{if(U.state.isDestroyed)return;P=null;let{renderRange:I}=U.state.viewportState;if(I.end>0){let H=w(I);U.dataManager.ensureRange(H.start,H.end).catch((a)=>{W.emit("error",{error:a,context:"ensureRange"})})}G()};if(window.addEventListener("online",g),U.destroyHandlers.push(()=>{window.removeEventListener("online",g)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{P=null,V=null,U.forceRender();let{renderRange:I}=U.state.viewportState;if(I.end>0){let H=w(I);W.emit("load:start",{offset:H.start,limit:H.end-H.start+1}),await U.dataManager.ensureRange(H.start,H.end)}}),U.methods.set("reload",async(I)=>{P=null,V=null;let H=I?.snapshot,a=H!=null&&(H.total??0)>0&&H.index>0,j0=a||I?.skipInitialLoad===!0;if(U.invalidateRendered(),await U.dataManager.reload(),!j0){W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:d}=U.state.viewportState;if(d.end>0){let C=w(d);await U.dataManager.ensureRange(C.start,C.end)}}if(a){let d=U.methods.get("restoreScroll");if(d)d(H)}}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((I)=>{W.emit("error",{error:I,context:"loadInitial"})});else if(X!==void 0)U.dataManager.setTotal(X)}}};var BJ=()=>{let J=null;return{name:"withPage",priority:5,setup(Y){let{dom:q,state:j,config:X,emitter:Q}=Y;if(q.root.style.overflow="visible",q.root.style.height="auto",X.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${X.classPrefix}-viewport--custom-scrollbar`),Y.disableViewportResize(),Y.disableWheelHandler(),Y.setScrollTarget(window),Y.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(X.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(X.horizontal){let D=W.left+window.scrollX;window.scrollTo(D+U,window.scrollY)}else{let D=W.top+window.scrollY;window.scrollTo(window.scrollX,D+U)}}),Y.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:B,innerWidth:N}=window,Z=()=>{let{innerWidth:U,innerHeight:W}=window,D=X.horizontal?U:W,E=X.horizontal?N:B;if(Math.abs(D-E)<=1)return;B=W,N=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let w=0;w<Y.resizeHandlers.length;w++)Y.resizeHandlers[w](U,W);Y.renderIfNeeded()};window.addEventListener("resize",Z,{passive:!0}),J=()=>{window.removeEventListener("resize",Z)},Y.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,Y)=>{let q=0,j=J.length-1;while(q<j){let X=q+j+1>>>1;if(J[X].headerLayoutIndex<=Y)q=X;else j=X-1}return q},ZJ=(J,Y)=>{let q=0,j=J.length-1;while(q<j){let X=q+j+1>>>1;if(J[X].firstDataIndex<=Y)q=X;else j=X-1}return q},NJ=(J,Y)=>{if(J===0)return[];let q=[],j=Y(0),X=0,Q=0;for(let B=1;B<J;B++){let N=Y(B);if(N!==j){let Z=B-X;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:X,count:Z}),Q=Q+1+Z,j=N,X=B}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:X,count:J-X}),q},U2=(J,Y)=>{if(J.length===0||Y.length===0)return[];let q=J.length+Y.length,j=Array(q),X=0;for(let Q of Y){j[X]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},X++;for(let B=0;B<Q.count;B++)j[X]=J[Q.firstDataIndex+B],X++}return j},K2=(J,Y)=>{let q=typeof Y==="number"?(j)=>Y:Y;return(j)=>{let X=J.getEntry(j);if(X.type==="header")return J.getHeaderHeight(X.group.groupIndex);return q(X.dataIndex)}},_J=(J,Y)=>{let q=NJ(J,Y.getGroupForIndex),j=J+q.length,X=Y.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 w=X2(q,E),A=q[w];if(E===A.headerLayoutIndex)return{type:"header",group:A};let P=E-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+P,group:A}},layoutToDataIndex:(E)=>{if(q.length===0)return E;let w=X2(q,E),A=q[w];if(E===A.headerLayoutIndex)return-1;let P=E-A.headerLayoutIndex-1;return A.firstDataIndex+P},dataToLayoutIndex:(E)=>{if(q.length===0)return E;let w=ZJ(q,E),A=q[w],P=E-A.firstDataIndex;return A.headerLayoutIndex+1+P},getGroupAtLayoutIndex:(E)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=X2(q,E);return q[w]},getGroupAtDataIndex:(E)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=ZJ(q,E);return q[w]},getHeaderHeight:typeof X==="number"?(E)=>X:(E)=>{let w=q[E];if(!w)return 0;return X(w.key,E)},rebuild:(E)=>{q=NJ(E,Y.getGroupForIndex),j=E+q.length}}};var WJ=(J,Y,q,j,X,Q=!1,B=0)=>{let N=document.createElement("div");if(N.className=`${X}-sticky-header`,N.setAttribute("role","presentation"),N.setAttribute("aria-hidden","true"),N.style.position="absolute",N.style.zIndex="5",N.style.pointerEvents="none",N.style.willChange="transform",N.style.overflow="hidden",Q)N.style.top="0",N.style.bottom="0",N.style.left=B?`${B}px`:"0";else N.style.top=B?`${B}px`:"0",N.style.left="0",N.style.right="0";J.insertBefore(N,J.firstChild);let Z=-1,U=!1,W=0,D=(M)=>{if(M===Z)return;Z=M;let F=Y.groups;if(M<0||M>=F.length){N.textContent="";return}let O=F[M],k=j.headerTemplate(O.key,O.groupIndex),$=Y.getHeaderHeight(M);if(Q)N.style.width=`${$}px`;else N.style.height=`${$}px`;if(typeof k==="string")N.innerHTML=k;else N.replaceChildren(k)},E=(M)=>{let F=Y.groups;if(F.length===0){A();return}let O=q.getOffset(F[0].headerLayoutIndex);if(M<O){A();return}let k=0,$=F.length-1;while(k<$){let I=k+$+1>>>1;if(q.getOffset(F[I].headerLayoutIndex)<=M)k=I;else $=I-1}let G=k;if(!U)w();D(G);let p=Y.getHeaderHeight(G),h=0,g=G+1;if(g<F.length){let H=q.getOffset(F[g].headerLayoutIndex)-M;if(H<p)h=H-p}if(h!==W)if(W=h,h===0)N.style.transform="";else{let I=Math.round(h);N.style.transform=Q?`translateX(${I}px)`:`translateY(${I}px)`}},w=()=>{if(U)return;U=!0,N.style.display=""},A=()=>{if(!U)return;U=!1,N.style.display="none",Z=-1,W=0,N.style.transform=""},P=()=>{let M=Z;if(Z=-1,M>=0)D(M)},V=()=>{N.remove(),Z=-1,U=!1};return N.style.display="none",{update:E,refresh:P,show:w,hide:A,destroy:V}};var DJ=(J,Y,q,j,X,Q)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),N=Y.getOffset(B),Z=Y.getSize(B),U=Y.getTotalSize(),W=Math.max(0,U-q),D;switch(Q){case"center":D=N-q/2+Z/2;break;case"end":D=N-q+Z;break;case"start":default:D=N;break}return Math.max(0,Math.min(D,W))};var y0=(J,Y,q,j,X="start",Q,B=DJ)=>{return B(J,Y,q,j,Q,X)};var GJ=(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 Y=null,q=null,j=[],X=[];return{name:"withGroups",priority:10,setup(Q){let{dom:B,config:N,rawConfig:Z}=Q,{classPrefix:U}=N,D=Z.item.height;j=Z.items?[...Z.items]:[];let E=j.length,w={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};Y=_J(E,w),X=U2(j,Y.groups);let A=K2(Y,D);Q.setSizeConfig(A),Q.rebuildSizeCache(X.length),Q.dataManager.setItems(X,0,X.length);let P=Z.item.template,{headerTemplate:V}=J,M=(d,C,c)=>{if(R0(d))return V(d.groupKey,d.groupIndex);return P(d,C,c)},F=Q.methods.get("_getGridLayout"),O=Q.methods.get("_replaceGridRenderer"),k=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),G=Q.methods.get("_updateTableForGroups"),p=Q.methods.get("_getTableHeaderHeight");if(F&&O){if(k)k((T)=>{let v=X[T];return!!(v&&R0(v))});let{createGridRenderer:d}=(Z2(),lJ(VJ)),C=F(),c=d(B.items,M,Q.sizeCache,C,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),N.ariaIdPrefix);O(c)}else if($&&G)G((d)=>R0(d),J.headerTemplate);else Q.replaceTemplate(M);let h=p?p():0;if(B.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=WJ(B.root,Y,Q.sizeCache,{...w,sticky:w.sticky??!1},U,N.horizontal,h);let d=q;Q.afterScroll.push((C,c)=>{d.update(C)}),q.update(Q.scrollController.getScrollTop())}let g=Z.item?.striped,I=()=>{if(g!=="data"&&g!=="even"&&g!=="odd")return;let d=new Int32Array(X.length),C=g==="odd"?1:0,c=0;for(let T=0;T<X.length;T++)if(R0(X[T])){if(d[T]=-1,g==="even"||g==="odd")c=0}else d[T]=c+++C;Q.setStripeIndexFn((T)=>{if(T<0||T>=d.length)return T;return d[T]})};I();let H=()=>{if(!Y)return;Y.rebuild(j.length),X=U2(j,Y.groups);let d=K2(Y,D);if(Q.setSizeConfig(d),Q.rebuildSizeCache(X.length),Q.dataManager.setItems(X,0,X.length),I(),q)q.refresh()};Q.methods.set("setItems",(d)=>{j=d.slice(),H()}),Q.methods.set("appendItems",(d)=>{j.push(...d),H()}),Q.methods.set("prependItems",(d)=>{j.unshift(...d),H()}),Q.methods.set("removeItem",(d)=>{j=j.filter((C)=>C.id!==d),H()});let{animateScroll:a,cancelScroll:j0}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(d,C)=>{let c=Y.dataToLayoutIndex(d),{align:T,behavior:v,duration:z}=$0(C),K=Q.dataManager.getTotal(),_=Q.adjustScrollPosition(y0(c,Q.sizeCache,Q.state.viewportState.containerSize,K,T,Q.getCachedCompression()));if(v==="smooth")a(Q.scrollController.getScrollTop(),_,z);else j0(),Q.scrollController.scrollTo(_)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(j0(),q)q.destroy(),q=null;B.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var MJ=(J)=>{let Y=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,X={row:0,col:0},Q=(A)=>{if(A<=0)return 0;if(!j)return Math.ceil(A/Y);let P=0,V=0,M=0;for(let F=0;F<A;F++)if(j(F)){if(M++,V>0)P++,V=0;P++,V=0}else if(V++,V>=Y)P++,V=0;if(V>0)P++;return P},B=(A)=>{return X.row=N(A),X.col=Z(A),X},N=(A)=>{if(!j)return Math.floor(A/Y);let P=0,V=0;for(let M=0;M<=A;M++)if(j(M)){if(V>0)P++,V=0;if(M===A)return P;P++,V=0}else{if(M===A)return P;if(V++,V>=Y)P++,V=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${P}`),P},Z=(A)=>{if(!j)return A%Y;if(j(A))return 0;let P=0;for(let V=0;V<=A;V++)if(j(V))P=0;else{if(V===A)return P;if(P++,P>=Y)P=0}return P},U=(A,P,V)=>{if(V<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,A*Y),G=Math.min(V-1,(P+1)*Y-1);return{start:$,end:G}}let M=-1,F=-1,O=0,k=0;for(let $=0;$<V;$++){if(j($)){if(k>0)O++,k=0;if(O>=A&&O<=P){if(M===-1)M=$;F=$}O++,k=0}else{if(O>=A&&O<=P){if(M===-1)M=$;F=$}if(k++,k>=Y)O++,k=0}if(O>P&&k===0)break}if(M===-1)return{start:0,end:-1};return{start:M,end:F}},W=(A,P,V)=>{if(P<0||P>=Y)return-1;let M=A*Y+P;if(M<0||M>=V)return-1;return M},D=(A)=>{let P=(Y-1)*q;return Math.max(0,(A-P)/Y)};return{get columns(){return Y},get gap(){return q},update:(A)=>{if(A.columns!==void 0)Y=Math.max(1,Math.floor(A.columns));if(A.gap!==void 0)q=A.gap;if(A.isHeaderFn!==void 0)j=A.isHeaderFn},getTotalRows:Q,getPosition:B,getRow:N,getCol:Z,getItemRange:U,getItemIndex:W,getColumnWidth:D,getColumnOffset:(A,P)=>{let V=D(P);return A*(V+q)}}};Z2();var K4=new Set,OJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let Y=null,q=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(j){let{dom:X,emitter:Q,config:B,rawConfig:N}=j,{classPrefix:Z}=B;if(B.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=B.horizontal,W=C0(b0(N.padding),U),D=()=>{return(U?X.viewport.clientHeight:j.getContainerWidth())-W},E=N.items?.some((_)=>_.__groupHeader===!0),w={columns:J.columns,gap:J.gap??0};if(E)w.isHeaderFn=(_)=>{let y=j.dataManager.getItem(_);return!!(y&&y.__groupHeader===!0)};Y=MJ(w);let A=Y.gap;j.setVirtualTotalFn(()=>{let _=j.dataManager.getTotal();return Y.getTotalRows(_)});let P=N.item,V=B.horizontal?P.width:P.height,M={containerWidth:D(),columns:Y.columns,gap:Y.gap},F={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof V==="function")j.setSizeConfig((_)=>{let y=M.containerWidth-2,L=(M.columns-1)*M.gap;return F.containerWidth=M.containerWidth,F.columns=M.columns,F.gap=M.gap,F.columnWidth=(y-L)/M.columns,F.row=Y.getRow(_),F.column=Y.getCol(_),F.totalRows=Y.getTotalRows(j.dataManager.getTotal()),F.totalColumns=M.columns,V(_,F)+M.gap});else if(A>0)j.setSizeConfig(V+A);if(j.rebuildSizeCache(),A>0){let _=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let y=_();return y>0?y-M.gap:0}}X.root.classList.add(`${Z}--grid`);let O=D(),k=N.item.template,$=()=>{q=B2(X.items,k,j.sizeCache,Y,Z,O,()=>j.dataManager.getTotal(),B.ariaIdPrefix,B.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>Y),j.methods.set("_getGridConfig",()=>w),j.methods.set("_replaceGridRenderer",(_)=>{q=_}),j.methods.set("_updateGridLayoutForGroups",(_)=>{Y.update({isHeaderFn:_});let y=j.dataManager.getTotal(),L=0;for(let R=0;R<y;R++)if(Y.getCol(R)===0){let u=j.sizeCache.getSize(R);L+=u}j.sizeCache.getTotalSize=()=>L,j.updateContentSize(L),$()}),j.methods.set("updateGrid",(_)=>{if(_.columns!==void 0){if(!Number.isInteger(_.columns)||_.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");w.columns=_.columns}if(_.gap!==void 0){if(_.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");w.gap=_.gap}if(Y)Y.update(w);let y=D();if(M.containerWidth=y,M.columns=w.columns,M.gap=w.gap??0,q)q.updateContainerWidth(y);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 G=null,p=null,h=!1,g=()=>{if(h)return;h=!0,G=j.methods.get("_getSelectedIds")??null,p=j.methods.get("_getFocusedIndex")??null},I=-1,H=-1,a=!0,j0=B.overscan,d={start:0,end:0},C={start:0,end:0},c=()=>{if(j.state.isDestroyed)return;let _=j.scrollController.getScrollTop(),y=j.state.viewportState.containerSize;if(!a&&_===I&&y===H)return;I=_,H=y,a=!1;let L=j.getVirtualTotal();if(L===0||y===0)d.start=0,d.end=0;else d.start=Math.max(0,j.sizeCache.indexAtOffset(_)),d.end=Math.min(L-1,Math.max(0,j.sizeCache.indexAtOffset(_+y-1)));C.start=Math.max(0,d.start-j0),C.end=Math.min(L-1,d.end+j0);let R=j.state.viewportState;R.scrollPosition=_,R.visibleRange.start=d.start,R.visibleRange.end=d.end,R.renderRange.start=C.start,R.renderRange.end=C.end;let u=j.state.lastRenderRange,S=R.isCompressed,b=j.dataManager.getTotal(),x=Y.getItemRange(C.start,C.end,b),l=j.dataManager.getItemsInRange(x.start,x.end),s=S?j.getCompressionContext():void 0;g();let f=G?G():K4,n=p?p():-1;if(q.render(l,x,f,n,s),u.start!==C.start||u.end!==C.end)u.start=C.start,u.end=C.end,Q.emit("range:change",{range:{start:C.start,end:C.end}})},T=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,a=!0,c()};j.setRenderFns(c,T);let v=typeof V==="function";j.resizeHandlers.push((_,y)=>{let L=(U?y:_)-W;if(Math.abs(L-M.containerWidth)<1)return;if(M.containerWidth=L,q)q.updateContainerWidth(L);if(v){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let R=0;R<j.contentSizeHandlers.length;R++)j.contentSizeHandlers[R]();if(q)q.clear();j.forceRender()}});let{animateScroll:z,cancelScroll:K}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",K),j.methods.set("scrollToIndex",(_,y)=>{let L=Math.floor(_/J.columns),{align:R,behavior:u,duration:S}=$0(y),b=j.dataManager.getState(),x=Y.getTotalRows(b.total),l=Math.max(0,Math.min(L,x-1)),s=j.adjustScrollPosition(y0(l,j.sizeCache,j.state.viewportState.containerSize,x,R,j.getCachedCompression()));if(u==="smooth")z(j.scrollController.getScrollTop(),s,S);else K(),j.scrollController.scrollTo(s)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(K(),q)q.destroy(),q=null;X.root.classList.remove(`${Z}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var EJ=(J)=>{let Y=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,X=0,Q=[],B=()=>{let V=(Y-1)*q;X=Math.max(0,(j-V)/Y),Q=Array(Y);let M=X+q;for(let F=0;F<Y;F++)Q[F]=F*M};B();let N=[],Z=0,U=[],W=(V)=>{let M=0,F=V[0];for(let O=1;O<V.length;O++){let k=V[O];if(k<F)F=k,M=O}return M},D=(V,M)=>{if(V<=0)return Z=0,N=[],[];let F=Array(Y).fill(0),O=Array(Y);for(let G=0;G<Y;G++)O[G]=[];let k=Array(V);for(let G=0;G<V;G++){let p=W(F),h=M(G),g=F[p];k[G]={index:G,x:Q[p],y:g,lane:p,size:h,crossSize:X},O[p].push(G),F[p]=g+h+q}N=O;let $=0;for(let G=0;G<Y;G++){let p=F[G],h=p>0?p-q:0;if(h>$)$=h}return Z=$,k},E=(V)=>{if(V.length===0)return Z>0?Z:0;if(Z>0)return Z;let M=Array(Y).fill(0);for(let O of V){let k=O.y+O.size,$=M[O.lane];if(k>$)M[O.lane]=k}let F=0;for(let O=0;O<Y;O++)if(M[O]>F)F=M[O];return F},w=(V,M,F)=>{if(V.length===0||F<=M)return U.length=0,U;if(N.length===0||N.length!==Y)return A(V,M,F);U.length=0;for(let O=0;O<Y;O++){let k=N[O],$=k.length;if($===0)continue;let G=0,p=$;while(G<p){let h=G+p>>>1,g=V[k[h]];if(g.y+g.size<=M)G=h+1;else p=h}for(let h=G;h<$;h++){let g=V[k[h]];if(g.y>=F)break;U.push(g)}}return U},A=(V,M,F)=>{let O=[];for(let k of V)if(k.y+k.size>M&&k.y<F)O.push(k);return O};return{get columns(){return Y},get gap(){return q},get containerSize(){return j},update:(V)=>{let M=!1;if(V.columns!==void 0){let F=Math.max(1,Math.floor(V.columns));if(F!==Y)Y=F,M=!0}if(V.gap!==void 0&&V.gap!==q)q=V.gap,M=!0;if(V.containerSize!==void 0&&V.containerSize!==j)j=V.containerSize,M=!0;if(M)B()},calculateLayout:D,getTotalSize:E,getVisibleItems:w}};var B4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Q)=>{if(Q.remove(),Y.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),Y.push(Q)},clear:()=>{Y.length=0}}},Z4=1,AJ=(J,Y,q,j=!1,X,Q)=>{let B=B4(),N=new Map,Z=new Set,U=0,W="",D=-1,E={selected:!1,focused:!1},w=(I,H)=>{return E.selected=I,E.focused=H,E},A=`${q}-item ${q}-masonry-item`,P=`${q}-item--selected`,V=`${q}-item--focused`,M=(I,H)=>{if(typeof H==="string")I.innerHTML=H;else I.replaceChildren(H)},F=(I,H,a)=>{I.classList.toggle(P,H),I.classList.toggle(V,a)},O=(I,H)=>{if(j)I.style.transform=`translate(${Math.round(H.y)}px, ${Math.round(H.x)}px)`;else I.style.transform=`translate(${Math.round(H.x)}px, ${Math.round(H.y)}px)`},k=(I,H)=>{if(j)I.style.width=`${H.size}px`,I.style.height=`${H.crossSize}px`;else I.style.width=`${H.crossSize}px`,I.style.height=`${H.size}px`},$=(I,H,a,j0,d)=>{let C=B.acquire(),c=w(j0,d);if(C.className=A,C.dataset.index=String(I),C.dataset.id=String(H.id),C.dataset.lane=String(a.lane),C.ariaSelected=String(j0),Q)C.id=`${Q}-item-${I}`;if(X){let v=X();if(v!==D)D=v,W=String(v);C.setAttribute("aria-setsize",W),C.setAttribute("aria-posinset",String(I+1))}k(C,a);let T=Y(H,I,c);return M(C,T),F(C,j0,d),O(C,a),{element:C,lastItemId:H.id,lastSelected:j0,lastFocused:d,lastY:a.y,lastX:a.x,lastSize:a.size,lastCrossSize:a.crossSize,lastSeenFrame:U}},G=(I,H,a,j0)=>{U++,Z.clear();for(let C=0;C<H.length;C++)Z.add(H[C].index);for(let[C,c]of N)if(Z.has(C))c.lastSeenFrame=U;else if(U-c.lastSeenFrame>Z4)B.release(c.element),N.delete(C);let d=null;for(let C=0;C<H.length;C++){let c=H[C],T=c.index,v=I(T);if(!v)continue;let z=a.has(v.id),K=T===j0,_=N.get(T);if(_){let y=_.lastItemId!==v.id,L=_.lastSelected!==z,R=_.lastFocused!==K,u=_.lastY!==c.y||_.lastX!==c.x,S=_.lastSize!==c.size||_.lastCrossSize!==c.crossSize;if(y||L||R){let b=w(z,K),x=Y(v,T,b);M(_.element,x),F(_.element,z,K),_.element.dataset.id=String(v.id),_.element.ariaSelected=String(z),_.lastItemId=v.id,_.lastSelected=z,_.lastFocused=K}if(S)k(_.element,c),_.lastSize=c.size,_.lastCrossSize=c.crossSize;if(u)O(_.element,c),_.lastY=c.y,_.lastX=c.x}else{let y=$(T,v,c,z,K);if(!d)d=document.createDocumentFragment();d.appendChild(y.element),N.set(T,y)}}if(d)J.appendChild(d)},p=()=>{for(let{element:I}of N.values())B.release(I);N.clear(),J.innerHTML=""};return{render:G,getElement:(I)=>N.get(I)?.element,sortDOM:()=>{S0(J,N.keys(),(I)=>N.get(I)?.element)},clear:p,destroy:()=>{p(),B.clear()}}};var N4=new Set,_4=100,FJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let Y=null,q=null,j=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(X){let{dom:Q,emitter:B,config:N,rawConfig:Z}=X,U=N.classPrefix,W=N.horizontal;if(N.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let D=b0(Z.padding),E=C0(D,W),w=r0(D,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-E},P={columns:J.columns,gap:J.gap??0,containerSize:A()};Y=EJ(P);let V=Z.item,M=W&&Z.item.width?Z.item.width:V.height,F={containerWidth:0,columns:0,gap:0,columnWidth:0},O=typeof M==="function"?(L)=>M(L,F):()=>M,k=()=>{let L=X.dataManager.getTotal(),R=Y;F.containerWidth=R.containerSize,F.columns=R.columns,F.gap=R.gap;let u=(R.columns-1)*R.gap;F.columnWidth=Math.max(0,(F.containerWidth-u)/R.columns),j=R.calculateLayout(L,O);let S=Y.getTotalSize(j);X.sizeCache.getTotalSize=()=>S,X.updateContentSize(S)},$=Z.item.template;q=AJ(Q.items,$,U,W,()=>X.dataManager.getTotal(),N.ariaIdPrefix);let G=null,p=null,h=!1,g=()=>{if(h)return;h=!0,G=X.methods.get("_getSelectedIds")??null,p=X.methods.get("_getFocusedIndex")??null},I=(L)=>X.dataManager.getItem(L),H=-1,a=-1,j0=!0,d=N.overscan*_4,C=()=>{if(X.state.isDestroyed)return;g();let L=X.scrollController.getScrollTop(),R=X.state.viewportState.containerSize;if(!j0&&L===H&&R===a)return;H=L,a=R,j0=!1;let u=Math.max(0,L-d),S=L+R+d,b=Y.getVisibleItems(j,u,S),x=G?G():N4,l=p?p():-1;if(q&&b.length>0)q.render(I,b,x,l);let s=X.state.viewportState;s.scrollPosition=L;let f=b.length,n=f>0?b[0].index:0,J0=f>0?b[f-1].index:0;s.visibleRange.start=n,s.visibleRange.end=J0,s.renderRange.start=n,s.renderRange.end=J0;let m=X.state.lastRenderRange;if(m.start!==n||m.end!==J0)m.start=n,m.end=J0,B.emit("range:change",{range:{start:n,end:J0}})},c=()=>{X.state.lastRenderRange.start=-1,X.state.lastRenderRange.end=-1,j0=!0,C()};X.setRenderFns(C,c);let T=(L,R)=>{let u=(W?R:L)-E;if(Y&&Y.containerSize!==u){if(Y.update({containerSize:u}),k(),q)q.clear();c()}};X.resizeHandlers.push(T);let v=()=>{k(),c()},z=X.dataManager,K=(L)=>{if(typeof z[L]!=="function")return;let R=z[L].bind(z);z[L]=(...u)=>{R(...u),v()}};K("setItems"),K("appendItems"),K("prependItems"),K("updateItem"),K("removeItem");let{animateScroll:_,cancelScroll:y}=f0(X.scrollController,X.renderIfNeeded);X.methods.set("cancelScroll",y),X.methods.set("scrollToIndex",(L,R)=>{let u=j[L];if(!u)return;let{align:S,behavior:b,duration:x}=$0(R),l=u.y,s=X.state.viewportState.containerSize,f=l;if(S==="center")f=l-s/2+u.size/2;else if(S==="end"){f=l-s+u.size;let n=Y.getTotalSize(j);if(L===j.length-1)f=Math.max(0,n+w-s)}if(f=Math.max(0,f),f=X.adjustScrollPosition(f),b==="smooth")_(X.scrollController.getScrollTop(),f,x);else y(),X.scrollController.scrollTo(f)}),k(),X.idleHandlers.push(()=>{if(q)q.sortDOM()}),X.destroyHandlers.push(()=>{if(y(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var LJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),N2=(J,Y,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),Y.length>0)j.add(Y[0])}else for(let X of Y)j.add(X);return{...J,selected:j}},_2=(J,Y)=>{let q=new Set(J.selected);for(let j of Y)q.delete(j);return{...J,selected:q}},o0=(J,Y,q)=>{if(q==="none")return J;if(J.selected.has(Y))return _2(J,[Y]);else return N2(J,[Y],q)},TJ=(J,Y,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Y.map((j)=>j.id))}},kJ=(J)=>({...J,selected:new Set}),W2=(J,Y)=>{return J.focusedIndex=Y,J},HJ=(J,Y,q=!1)=>{if(Y===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?Y-1:0;return J.focusedIndex=j,J},bJ=(J,Y,q=!1)=>{if(Y===0)return J;let j=J.focusedIndex+1;if(j>=Y)j=q?0:Y-1;return J.focusedIndex=j,J},$J=(J,Y)=>{if(Y===0)return J;return J.focusedIndex=0,J},yJ=(J,Y)=>{if(Y===0)return J;return J.focusedIndex=Y-1,J};var D2=(J)=>{return Array.from(J.selected)},V2=(J,Y)=>{let q=[];for(let j of J.selected){let X=Y(j);if(X)q.push(X)}return q};var PJ=(J)=>{let Y=J?.mode??"single",q=J?.initial,j=LJ(q),X=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:B,emitter:N,config:Z}=Q,{classPrefix:U,ariaIdPrefix:W}=Z;if(Y==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}B.root.classList.add(`${U}--selectable`);let D=new Map,E=()=>{D.clear();let O=Q.dataManager.getTotal(),k=Q.dataManager.getCached();if(k===0)return;if(k>=O){for(let G=0;G<O;G++){let p=Q.dataManager.getItem(G);if(p)D.set(p.id,G)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let G=$.getLoadedRanges();for(let p of G)for(let h=p.start;h<=p.end;h++){let g=Q.dataManager.getItem(h);if(g&&!g._isPlaceholder)D.set(g.id,h)}}};N.on("data:change",({type:O,id:k})=>{if(O==="remove")j.selected.delete(k),E()}),N.on("load:end",({items:O,offset:k})=>{if(!O||O.length===0)return;if(k!==void 0)for(let $=0;$<O.length;$++){let G=O[$];if(G&&G.id!==void 0)D.set(G.id,k+$)}else E()}),E(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:w}=Q.getRenderFns(),A=()=>{w();let O=(k)=>{let $=D.get(k);if($===void 0)return;return Q.dataManager.getItem($)};N.emit("selection:change",{selected:D2(j),items:V2(j,O)})};X=document.createElement("div"),X.setAttribute("aria-live","polite"),X.setAttribute("aria-atomic","true"),X.className=`${U}-live-region`,X.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",(B.root.getAttribute("role")==="grid"?B.root.parentElement??B.root:B.root).appendChild(X);let V=X;N.on("selection:change",({selected:O})=>{let k=O.length;if(k===0)V.textContent="";else if(k===1)V.textContent="1 item selected";else V.textContent=`${k} items selected`});let M=()=>{if(Q.state.isDestroyed)return;if(!B.root.matches(":focus-visible"))return;let O=Q.dataManager.getTotal();if(O===0)return;let k=j.focusedIndex>=0?Math.min(j.focusedIndex,O-1):0;j=W2(j,k),j.focusVisible=!0,B.root.setAttribute("aria-activedescendant",`${W}-item-${k}`),Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(k,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(k);if($)Q.renderer.updateItemClasses(k,j.selected.has($.id),!0)};B.root.addEventListener("focusin",M);let F=(O)=>{if(Q.state.isDestroyed)return;let k=O.relatedTarget;if(k&&B.root.contains(k))return;let $=j.focusedIndex;if(j.focusVisible=!1,B.root.removeAttribute("aria-activedescendant"),$>=0){let G=Q.dataManager.getItem($);if(G)Q.renderer.updateItemClasses($,j.selected.has(G.id),!1)}};B.root.addEventListener("focusout",F),Q.clickHandlers.push((O)=>{if(Q.state.isDestroyed)return;let $=O.target.closest("[data-index]");if(!$)return;let G=parseInt($.dataset.index??"-1",10);if(G<0)return;let p=Q.dataManager.getItem(G);if(!p)return;N.emit("item:click",{item:p,index:G,event:O}),j=W2(j,G),j.focusVisible=!1,B.root.setAttribute("aria-activedescendant",`${W}-item-${G}`),j=o0(j,p.id,Y),A()}),Q.keydownHandlers.push((O)=>{if(Q.state.isDestroyed)return;let k=Q.dataManager.getTotal(),$=j.focusedIndex,G=!1,p=!1,h=j;switch(O.key){case"ArrowUp":h=HJ(j,k,Z.wrap),h.focusVisible=!0,G=!0,p=!0;break;case"ArrowDown":h=bJ(j,k,Z.wrap),h.focusVisible=!0,G=!0,p=!0;break;case"Home":h=$J(j,k),h.focusVisible=!0,G=!0,p=!0;break;case"End":h=yJ(j,k),h.focusVisible=!0,G=!0,p=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let g=Q.dataManager.getItem(j.focusedIndex);if(g)h=o0(j,g.id,Y),h.focusVisible=!0;G=!0}break}if(G){O.preventDefault(),j=h;let g=j.focusedIndex;if(g>=0){let I=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(g,Q.sizeCache,Q.state.viewportState.containerSize,I.total,"center",Q.getCachedCompression()))),B.root.setAttribute("aria-activedescendant",`${W}-item-${g}`)}else B.root.removeAttribute("aria-activedescendant");if(p){let{selected:I}=j;if($>=0&&$!==g){let H=Q.dataManager.getItem($);if(H)Q.renderer.updateItemClasses($,I.has(H.id),!1)}if(g>=0){let H=Q.dataManager.getItem(g);if(H)Q.renderer.updateItemClasses(g,I.has(H.id),!0)}}else A()}}),Q.methods.set("select",(...O)=>{j=N2(j,O,Y),A()}),Q.methods.set("deselect",(...O)=>{j=_2(j,O),A()}),Q.methods.set("toggleSelect",(O)=>{j=o0(j,O,Y),A()}),Q.methods.set("selectAll",()=>{if(Y!=="multiple")return;let O=Q.getAllLoadedItems();j=TJ(j,O,Y),E(),A()}),Q.methods.set("clearSelection",()=>{j=kJ(j),A()}),Q.methods.set("getSelected",()=>{return D2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(k)=>{let $=D.get(k);return $===void 0?void 0:Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(V&&V.parentNode)V.remove();B.root.removeEventListener("focusin",M),B.root.removeEventListener("focusout",F)})},destroy(){if(X&&X.parentNode)X.remove();X=null}}};var wJ=(J)=>{let Y=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let X=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),B=q.getVirtualTotal(),N=q.methods.get("getSelected"),Z=N&&N().length>0?N():void 0;if(B===0){let E={index:0,offsetInItem:0,total:0};if(Z)E.selectedIds=Z;return E}let U,W;if(Q.isCompressed){let w=X/Q.virtualSize*B;U=Math.max(0,Math.min(Math.floor(w),B-1)),W=(w-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(X),W=X-q.sizeCache.getOffset(U);W=Math.max(0,W);let D={index:U,offsetInItem:W,total:B};if(Z)D.selectedIds=Z;return D});let j=(X)=>{let{index:Q,offsetInItem:B,selectedIds:N}=X,Z=q.getVirtualTotal();if(Z===0&&X.total&&X.total>0){q.dataManager.setTotal(X.total),q.sizeCache.rebuild(X.total),q.updateCompressionMode();let M=q.getCachedCompression();q.updateContentSize(M.virtualSize)}else if(Z===0)return;if(!Number.isFinite(Q)||!Number.isFinite(B))return;let U=q.getVirtualTotal();if(q.sizeCache.getTotal()!==U){q.sizeCache.rebuild(U),q.updateCompressionMode();let M=q.getCachedCompression();q.updateContentSize(M.virtualSize)}let D=q.getCachedCompression(),E=Math.max(0,Math.min(Q,U-1)),w;if(D.isCompressed){let M=q.sizeCache.getSize(E),F=M>0?B/M:0;w=(E+F)/U*D.virtualSize}else w=q.sizeCache.getOffset(E)+B;let A=q.state.viewportState.containerSize,P=Math.max(0,D.virtualSize-A);if(w=Math.max(0,Math.min(w,P)),q.scrollController.scrollTo(w),N&&N.length>0){let M=q.methods.get("select");if(M)M(...N)}let V=q.methods.get("loadVisibleRange");if(V){let F=0,O=w,k=()=>{F++;let $=q.state.viewportState.containerSize,G=q.scrollController.getScrollTop();if($>0){if(Math.abs(G-O)>1)q.scrollController.scrollTo(O);V()}else if(F<10)requestAnimationFrame(k)};requestAnimationFrame(k)}else{let M=q.methods.get("reload");if(M)requestAnimationFrame(()=>{M()})}};if(q.methods.set("restoreScroll",j),Y)queueMicrotask(()=>{j(Y)})}}};var RJ=(J,Y=50,q=1/0,j=!0)=>{let X=J,Q=[],B=0,N=()=>{Q=X.map((V,M)=>({def:V,index:M,width:0,minWidth:W4(V.minWidth??Y,1),maxWidth:V.maxWidth??q,resizable:V.resizable??j,offset:0}))},Z=(V)=>{if(Q.length===0){B=0;return}let M=0,F=0;for(let O=0;O<Q.length;O++){let k=Q[O],$=k.def;if($.width!==void 0)k.width=G2($.width,k.minWidth,k.maxWidth),M+=k.width;else F++}if(F>0){let k=Math.max(0,V-M)/F;for(let $=0;$<Q.length;$++){let G=Q[$];if(G.def.width===void 0)G.width=G2(k,G.minWidth,G.maxWidth)}}U()},U=()=>{let V=0;for(let M=0;M<Q.length;M++){let F=Q[M];F.offset=V,V+=F.width}B=V},W=(V,M)=>{if(V<0||V>=Q.length)return 0;let F=Q[V];if(!F.resizable)return F.width;let O=G2(M,F.minWidth,F.maxWidth);return F.width=O,U(),O},D=(V)=>{return Q[V]},E=(V)=>{if(Q.length===0)return;if(V<0)return Q[0];if(V>=B)return Q[Q.length-1];let M=0,F=Q.length-1;while(M<F){let O=M+F>>>1,k=Q[O];if(V<k.offset)F=O-1;else if(V>=k.offset+k.width)M=O+1;else return k}return Q[M]},w=(V)=>{if(V<0||V>=Q.length)return 0;return Q[V].offset},A=(V)=>{if(V<0||V>=Q.length)return 0;return Q[V].width},P=(V)=>{X=V,N()};return N(),{get columns(){return Q},get totalWidth(){return B},resolve:Z,updateColumns:P,resizeColumn:W,getColumn:D,getColumnAtX:E,getColumnOffset:w,getColumnWidth:A}},G2=(J,Y,q)=>Math.min(q,Math.max(Y,J)),W4=(J,Y)=>Math.max(Y,J);var zJ=(J,Y,q,j,X,Q,B)=>{let N=document.createElement("div");N.setAttribute("role","rowgroup");let Z=document.createElement("div");Z.className=`${j}-table-header`,Z.setAttribute("role","row"),Z.setAttribute("aria-rowindex","1"),Z.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),Z.appendChild(U),N.appendChild(Z),J.insertBefore(N,J.firstChild),Y.style.position="absolute",Y.style.top=`${q}px`,Y.style.left="0",Y.style.right="0",Y.style.bottom="0",Y.style.height="auto";let W=[],D=[],E=[],w=!0,A=null,P="asc",V=null,M=!1,F=-1,O=0,k=0,$=(T,v)=>{let z=document.createElement("div");z.className=`${j}-table-header-cell`,z.setAttribute("role","columnheader"),z.setAttribute("aria-colindex",String(v+1)),z.dataset.columnKey=T.def.key;let K=T.def.align;if(K==="center")z.classList.add(`${j}-table-header-cell--center`);else if(K==="right")z.classList.add(`${j}-table-header-cell--right`);let _=document.createElement("div");_.className=`${j}-table-header-content`;let y=T.def.header?T.def.header(T.def):T.def.label;if(typeof y==="string")_.textContent=y;else _.appendChild(y);if(z.appendChild(_),T.def.sortable){let L=document.createElement("span");L.className=`${j}-table-header-sort`,L.setAttribute("aria-hidden","true"),z.appendChild(L),E.push(L),z.classList.add(`${j}-table-header-cell--sortable`)}else E.push(null);if(T.resizable){let L=document.createElement("div");L.className=`${j}-table-header-resize`,L.dataset.resizeIndex=String(v),z.appendChild(L),D.push(L)}return z},G=(T)=>{V=T,U.textContent="",W=[],D=[],E=[];let v=T.columns;for(let z=0;z<v.length;z++){let K=v[z],_=$(K,z);W.push(_),U.appendChild(_)}if(p(T),A)h(A,P)},p=(T)=>{V=T;let v=T.columns;U.style.width=`${T.totalWidth}px`;for(let z=0;z<W.length&&z<v.length;z++){let K=W[z],_=v[z];K.style.width=`${_.width}px`}},h=(T,v)=>{if(A=T,P=v,!V)return;let z=V.columns;for(let K=0;K<E.length&&K<z.length;K++){let _=E[K];if(!_)continue;if(z[K].def.key===T&&T!==null)_.textContent=v==="asc"?"▲":"▼",_.style.opacity="0.7",W[K].setAttribute("aria-sort",v==="asc"?"ascending":"descending");else _.textContent="",_.style.opacity="0",W[K].removeAttribute("aria-sort")}},g=(T)=>{U.style.transform=`translateX(${-T}px)`},I=(T)=>{let v=T.target;if(!v.dataset.resizeIndex)return;if(T.preventDefault(),T.stopPropagation(),F=parseInt(v.dataset.resizeIndex,10),!V)return;let z=V.getColumn(F);if(!z||!z.resizable)return;M=!0,O=T.clientX,k=z.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",v.classList.add(`${j}-table-header-resize--active`),v.setPointerCapture(T.pointerId),v.addEventListener("pointermove",H),v.addEventListener("pointerup",a),v.addEventListener("pointercancel",a)},H=(T)=>{if(!M||!V)return;let v=T.clientX-O;if(Math.abs(v)<1)return;let z=Math.max(0,k+v);X(F,z)},a=(T)=>{if(!M)return;let v=T.target;v.removeEventListener("pointermove",H),v.removeEventListener("pointerup",a),v.removeEventListener("pointercancel",a);try{v.releasePointerCapture(T.pointerId)}catch{}v.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",M=!1,F=-1},j0=(T)=>{let v=T.target;if(v.dataset.resizeIndex!==void 0)return;if(M)return;let z=v;while(z&&!z.dataset.columnKey)if(z=z.parentElement,z===Z||z===null)return;if(!z||!z.dataset.columnKey)return;let K=z.dataset.columnKey;if(!V)return;let _=V.columns,y=-1;for(let R=0;R<_.length;R++)if(_[R].def.key===K){y=R;break}if(y===-1)return;let L=_[y];if(B)B({key:K,index:y,event:T});if(L.def.sortable&&Q){let R;if(A===K)if(P==="asc")R="desc";else R=null;else R="asc";Q({key:K,index:y,direction:R})}};return Z.addEventListener("pointerdown",I),Z.addEventListener("click",j0),{element:Z,update:p,updateSort:h,rebuild:G,show:()=>{if(w)return;w=!0,Z.style.display=""},hide:()=>{if(!w)return;w=!1,Z.style.display="none"},destroy:()=>{Z.removeEventListener("pointerdown",I),Z.removeEventListener("click",j0),Y.style.position="",Y.style.top="",Y.style.left="",Y.style.right="",Y.style.bottom="",N.remove(),W=[],D=[],E=[],V=null,w=!1},syncScroll:g}};var D4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(Y.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",Y.push(Q)},clear:()=>{Y.length=0}}},vJ=(J,Y,q,j,X,Q,B,N,Z)=>{let U=D4(),W=new Map,D=-1,E=q,w=null,A=null,P=null,V=(S,b)=>{A=S,P=b},M=(S,b)=>{if(b)S.setAttribute("aria-selected","true");else S.removeAttribute("aria-selected")},F=`${X}-item ${X}-table-row`,O=`${X}-item--selected`,k=`${X}-item--focused`,$=`${X}-table-cell`,G=`${X}-table-cell--center`,p=`${X}-table-cell--right`,h=`${X}-item--odd`,g=`${X}-item--placeholder`,I=`${X}-item--replaced`,H=`${X}-item ${X}-table-row ${X}-table-group-header`,a=`${X}-table-group-header-content`,j0=(S,b,x,l,s=!1)=>{if(x.def.cell){let f=x.def.cell(b,x.def,l);if(typeof f==="string")S.innerHTML=f;else S.replaceChildren(f)}else{let f=b[x.def.key],n=f!=null?String(f):"";if(s&&n)S.innerHTML=`<span>${n}</span>`;else S.textContent=n}},d=(S,b,x,l,s=!1)=>{let f=F;if(N){if(w){let n=w(b);if(n>=0&&(n&1)===1)f+=` ${h}`}else if((b&1)===1)f+=` ${h}`}if(s)f+=` ${g}`;if(x)f+=` ${O}`;if(l)f+=` ${k}`;S.className=f},C=(S,b)=>{let x=b.def.align;if(x==="center")S.classList.add(G),S.classList.remove(p);else if(x==="right")S.classList.add(p),S.classList.remove(G);else S.classList.remove(G,p)},c=(S,b)=>{let l=E.columns.length;if(b.length===l)return b;let s=[];for(let f=0;f<l;f++){let n;if(f<b.length)n=b[f];else n=document.createElement("div"),n.className=$,S.appendChild(n);s.push(n)}for(let f=l;f<b.length;f++)b[f].remove();return s},T=(S,b,x)=>{let l=U.acquire(),s=S;l.style.width=`${E.totalWidth}px`;let f=x.getSize(b);l.style.height=`${f}px`,l.className=H,l.setAttribute("role","presentation"),l.setAttribute("data-id",String(S.id)),l.setAttribute("data-index",String(b)),l.removeAttribute("aria-selected"),l.removeAttribute("aria-rowindex"),l.replaceChildren();let n=document.createElement("div");if(n.className=a,P){let m=P(s.groupKey,s.groupIndex);if(typeof m==="string")n.innerHTML=m;else n.appendChild(m)}l.appendChild(n);let J0=x.getOffset(b);return l.style.transform=`translateY(${J0}px)`,{element:l,cells:[],index:b,isGroupHeader:!0,lastItemId:S.id,lastSelected:!1,lastFocused:!1,lastOffset:J0,lastHeight:f}},v=(S,b,x,l,s)=>{let f=U.acquire();f.style.width=`${E.totalWidth}px`;let n=s.getSize(b);f.style.height=`${n}px`;let J0=String(S.id).startsWith("__placeholder_");d(f,b,x,l,J0),f.setAttribute("role","row"),f.setAttribute("data-id",String(S.id)),f.setAttribute("data-index",String(b)),f.id=`${Q}-${b}`,f.setAttribute("aria-rowindex",String(b+2));let m=B();if(m!==D)D=m;M(f,x);let o=c(f,[]),Q0=E.columns;for(let Y0=0;Y0<o.length&&Y0<Q0.length;Y0++){let X0=o[Y0],e=Q0[Y0];X0.style.left=`${e.offset}px`,X0.style.width=`${e.width}px`,X0.setAttribute("role","gridcell"),X0.setAttribute("aria-colindex",String(Y0+1)),C(X0,e),j0(X0,S,e,b,J0)}let q0=s.getOffset(b);return f.style.transform=`translateY(${q0}px)`,{element:f,cells:o,index:b,isGroupHeader:!1,lastItemId:S.id,lastSelected:x,lastFocused:l,lastOffset:q0,lastHeight:n}},z=(S,b,x,l)=>{for(let[m,o]of W)if(m<b.start||m>b.end)U.release(o.element),W.delete(m);let s=!1,f=B();if(f!==D)D=f,s=!0;let n=null,J0=Y();w=typeof N==="string"&&Z?Z():null;for(let m=b.start;m<=b.end;m++){let o=m-b.start,Q0=S[o];if(!Q0)continue;let q0=x.has(Q0.id),Y0=m===l,X0=A?A(Q0):!1,e=W.get(m);if(e){if(e.isGroupHeader!==X0){U.release(e.element),W.delete(m);let W0=X0?T(Q0,m,J0):v(Q0,m,q0,Y0,J0);if(W.set(m,W0),!n)n=document.createDocumentFragment();n.appendChild(W0.element);continue}if(X0){if(e.lastItemId!==Q0.id){let V0=Q0,U0=e.element.firstElementChild;if(U0&&P){let D0=P(V0.groupKey,V0.groupIndex);if(typeof D0==="string")U0.innerHTML=D0;else U0.replaceChildren(D0)}e.element.setAttribute("data-id",String(Q0.id)),e.lastItemId=Q0.id}let B0=J0.getOffset(m);if(e.lastOffset!==B0)e.lastOffset=B0,e.element.style.transform=`translateY(${B0}px)`;let A0=J0.getSize(m);if(e.lastHeight!==A0)e.lastHeight=A0,e.element.style.height=`${A0}px`}else{let W0=e.lastItemId!==Q0.id,B0=e.lastSelected!==q0,A0=e.lastFocused!==Y0;if(W0){let D0=e.lastItemId!=null&&String(e.lastItemId).startsWith("__placeholder_"),N0=String(Q0.id).startsWith("__placeholder_"),F0=E.columns;for(let T0=0;T0<e.cells.length&&T0<F0.length;T0++)j0(e.cells[T0],Q0,F0[T0],m,N0);if(d(e.element,m,q0,Y0,N0),e.element.setAttribute("data-id",String(Q0.id)),M(e.element,q0),D0&&!N0)e.element.classList.add(I),setTimeout(()=>{e.element.classList.remove(I)},300);e.lastItemId=Q0.id,e.lastSelected=q0,e.lastFocused=Y0}else if(B0||A0){let D0=String(Q0.id).startsWith("__placeholder_");d(e.element,m,q0,Y0,D0),M(e.element,q0),e.lastSelected=q0,e.lastFocused=Y0}let V0=J0.getOffset(m);if(e.lastOffset!==V0)e.lastOffset=V0,e.element.style.transform=`translateY(${V0}px)`;let U0=J0.getSize(m);if(e.lastHeight!==U0)e.lastHeight=U0,e.element.style.height=`${U0}px`;if(s)e.element.setAttribute("aria-rowindex",String(m+2))}}else{let W0=X0?T(Q0,m,J0):v(Q0,m,q0,Y0,J0);if(W.set(m,W0),!n)n=document.createDocumentFragment();n.appendChild(W0.element)}}if(n)J.appendChild(n)},K=(S,b,x,l)=>{let s=W.get(S);if(!s)return;if(s.isGroupHeader)return;let f=s.lastItemId!==b.id,n=s.lastSelected!==x,J0=s.lastFocused!==l;if(f||n||J0){if(f){let m=E.columns;for(let o=0;o<s.cells.length&&o<m.length;o++)j0(s.cells[o],b,m[o],S);s.element.setAttribute("data-id",String(b.id)),s.lastItemId=b.id}d(s.element,S,x,l),M(s.element,x),s.lastSelected=x,s.lastFocused=l}},_=(S,b,x)=>{let l=W.get(S);if(!l)return;if(l.isGroupHeader)return;let s=l.lastSelected!==b,f=l.lastFocused!==x;if(s||f)d(l.element,S,b,x),M(l.element,b),l.lastSelected=b,l.lastFocused=x},y=(S)=>{E=S;let b=S.columns;for(let[,x]of W)if(x.element.style.width=`${S.totalWidth}px`,x.cells.length>0)for(let l=0;l<x.cells.length&&l<b.length;l++){let s=x.cells[l],f=b[l];s.style.left=`${f.offset}px`,s.style.width=`${f.width}px`}},L=(S)=>{return W.get(S)?.element},R=()=>{for(let[,S]of W)U.release(S.element);W.clear(),D=-1};return{render:z,updateItem:K,updateItemClasses:_,getElement:L,updateColumnLayout:y,setGroupHeaderFn:V,clear:R,destroy:()=>{R(),U.clear()}}};var V4=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 Y=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(X){let{dom:Q,emitter:B,config:N}=X,{classPrefix:Z}=N;if(N.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(N.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,D=J.maxColumnWidth??1/0,E=J.columnBorders??!1,w=J.rowBorders??!0,A=J.rowHeight,P=C0(b0(X.rawConfig.padding),!1),V=J.headerHeight??(typeof A==="number"?A:40),M=J.sort?.key??null,F=J.sort?.direction??"asc";if(Y=RJ(J.columns,W,D,U),typeof A==="function")X.setSizeConfig(A);else if(typeof A==="number")X.setSizeConfig(A);if(X.rebuildSizeCache(),Q.root.classList.add(`${Z}--table`),w)Q.root.classList.add(`${Z}--table-row-borders`);if(E)Q.root.classList.add(`${Z}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let O=-1,k=Q.items.getAttribute("aria-label");if(k)Q.root.setAttribute("aria-label",k),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=X.getContainerWidth()-P;Y.resolve($);let G=(b,x)=>{if(!Y)return;let l=Y.getColumn(b);if(!l)return;let s=l.width,f=Y.resizeColumn(b,x);if(q)q.update(Y);if(j)j.updateColumnLayout(Y);g(),B.emit("column:resize",{key:l.def.key,index:b,previousWidth:s,width:f})},p=(b)=>{if(b.direction===null)M=null,F="asc";else M=b.key,F=b.direction;if(q)q.updateSort(M,F);B.emit("column:sort",b)},h=(b)=>{B.emit("column:click",b)};if(q=zJ(Q.root,Q.viewport,V,Z,G,p,h),q.rebuild(Y),M)q.updateSort(M,F);let g=()=>{if(!Y)return;let b=Y.totalWidth;Q.content.style.minWidth=`${b}px`,Q.items.style.minWidth=`${b}px`};g(),j=vJ(Q.items,()=>X.sizeCache,Y,J.columns,Z,N.ariaIdPrefix,()=>X.dataManager.getTotal(),X.rawConfig.item?.striped,()=>X.getStripeIndexFn());let I=null,H=null,a=!1,j0=()=>{if(a)return;a=!0,I=X.methods.get("_getSelectedIds")??null,H=X.methods.get("_getFocusedIndex")??null},d=-1,C=-1,c=-1,T=!0,v=N.overscan,z={start:0,end:0},K={start:0,end:0},_=()=>{if(X.state.isDestroyed)return;let b=X.scrollController.getScrollTop(),x=X.state.viewportState.containerSize,l=X.getVirtualTotal();if(!T&&b===d&&x===C&&l===c)return;d=b,C=x,c=l,T=!1;let s=l+1;if(s!==O)O=s,Q.root.setAttribute("aria-rowcount",String(s));if(l===0||x===0)z.start=0,z.end=0;else z.start=Math.max(0,X.sizeCache.indexAtOffset(b)),z.end=Math.min(l-1,Math.max(0,X.sizeCache.indexAtOffset(b+x-1)));K.start=Math.max(0,z.start-v),K.end=Math.min(l-1,z.end+v);let f=X.state.viewportState;f.scrollPosition=b,f.visibleRange.start=z.start,f.visibleRange.end=z.end,f.renderRange.start=K.start,f.renderRange.end=K.end;let n=X.state.lastRenderRange,J0=X.dataManager.getItemsInRange(K.start,K.end);j0();let m=I?I():V4,o=H?H():-1;if(j.render(J0,K,m,o),n.start!==K.start||n.end!==K.end)n.start=K.start,n.end=K.end,B.emit("range:change",{range:{start:K.start,end:K.end}})},y=()=>{if(X.state.isDestroyed)return;X.state.lastRenderRange.start=-1,X.state.lastRenderRange.end=-1,T=!0,_()};X.setRenderFns(_,y);let L=q,R=-1,u=()=>{let b=Q.viewport.scrollLeft;if(b!==R){if(R=b,L.syncScroll)L.syncScroll(b)}};X.afterScroll.push(()=>{u()});let S=()=>{u()};Q.viewport.addEventListener("scroll",S,{passive:!0}),X.resizeHandlers.push((b,x)=>{if(!Y)return;if(Y.resolve(b-P),q)q.update(Y);if(j)j.updateColumnLayout(Y);g()}),X.methods.set("updateColumns",(b)=>{if(!Y||!q)return;if(Y.updateColumns(b),Y.resolve(X.getContainerWidth()-P),q.rebuild(Y),M)q.updateSort(M,F);if(g(),j)j.updateColumnLayout(Y),j.clear();X.forceRender()}),X.methods.set("resizeColumn",(b,x)=>{if(!Y)return;let l;if(typeof b==="string"){let s=Y.columns;l=-1;for(let f=0;f<s.length;f++)if(s[f].def.key===b){l=f;break}if(l===-1)return}else l=b;G(l,x)}),X.methods.set("getColumnWidths",()=>{if(!Y)return{};let b={},x=Y.columns;for(let l=0;l<x.length;l++)b[x[l].def.key]=x[l].width;return b}),X.methods.set("setSort",(b,x)=>{if(M=b,F=x??"asc",q)q.updateSort(M,F)}),X.methods.set("getSort",()=>{return{key:M,direction:F}}),X.methods.set("_getTableLayout",()=>Y),X.methods.set("_replaceTableRenderer",(b)=>{j=b}),X.methods.set("_updateTableForGroups",(b,x)=>{if(j)j.setGroupHeaderFn(b,x)}),X.methods.set("_getTableHeaderHeight",()=>V),X.contentSizeHandlers.push(()=>{g()}),X.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",S),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${Z}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let b=Q.root.getAttribute("aria-label");if(b)Q.items.setAttribute("aria-label",b),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};var G4=50,M4=0.1;function O4(J){let Y=0,q=0,j=0;function X(){return j>0?q/j:0}function Q(Z){if(Y=Z,Z>M4&&Z<G4)q+=Z,j++}function B(){let Z=J.getTotal();if(Z===0)return 0;let U=J.getItemSize();if(U<=0)return 0;let W=J.getContainerSize();if(W<=0)return 0;let D=J.getScrollPosition(),E=typeof J.getColumns==="function"?J.getColumns():1,A=Math.ceil(Z/E)*U,V=Math.min(A,p0)-W,M=A-W,F=V>0?M/V:1,O=D*F,k=Math.ceil((O+W)/U);return Math.min(k*E,Z)}function N(){let Z=J.getTotal(),U=B();return{progress:Z>0?Math.min(100,Math.max(0,U/Z*100)):0,velocity:Y,velocityAvg:X(),itemCount:U,total:Z}}return{getState:N,onVelocity:Q}}export{CJ as withTable,wJ as withSnapshots,PJ as withSelection,QJ as withScrollbar,jJ as withScale,BJ as withPage,FJ as withMasonry,GJ as withGroups,OJ as withGrid,KJ as withAsync,t2 as vlist,O4 as createStats};
|
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var O2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,G=$-1;while(U<G){let _=U+G+1>>>1;if(j[_]<=K)U=_;else G=_-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},M2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var _2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var V2=(J,Q)=>{let $=Q.getTotalSize(),j=$>_2,q=j?_2:$,Y=$>0?q/$:1;return{isCompressed:j,actualSize:$,virtualSize:q,ratio:Y}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed){let Z=$.indexAtOffset(J),V=$.indexAtOffset(J+Q);if(V<j-1)V++;return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,V)),Y}let{virtualSize:K}=q,G=J/K*j,_=Math.floor(G),N=P2($,Math.max(0,_),Q,j),R=Math.ceil(G)+N,z=K-Q-J;if(z<=Q&&z>=-1){let Z=E2($,Q,j),V=Math.max(0,j-Z),X=Math.max(0,Math.min(1,1-z/Q));_=Math.floor(_+(V-_)*X),R=z<=1?j-1:Math.min(j-1,_+N)}return Y.start=Math.max(0,_),Y.end=Math.min(j-1,Math.max(0,R)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);let{virtualSize:U}=Y,G=U-q,_=G-Q;if(_<=q&&_>=-1){if(Q>=G-1){let P=$.getTotalSize()-$.getOffset(J);return q-P}let z=E2($,q,j),Z=Math.max(0,j-z),X=Q/U*j,D=Math.max(0,Math.min(1,1-_/q)),b=$.getOffset(J)-$.getOffset(Z),v=$.getOffset(J)-k2($,X,j);return v+(b-v)*D}let N=Q/U,R=$.getTotalSize(),L=N*R;return $.getOffset(J)-L},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let G=q.virtualSize-$;return Math.max(0,Math.min(K,G))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>_2;return Q.getTotalSize()>_2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(_2/J)},ZJ=(J,Q)=>{let $=V2(J,Q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,DJ=(J,Q,$,j,q,Y,K,U,G=!1)=>{let _=SJ(),N=new Map,R=Y,L=!1,z=null,Z=0,V=0,X="",D=-1,b=(T)=>{if(z&&Z===T)return z;return z=V2(T,$),Z=T,z},v={selected:!1,focused:!1},P=(T,S)=>{return v.selected=T,v.focused=S,v},p=`${q}-item ${q}-grid-item`,x=`${q}-item--selected`,l=`${q}-item--focused`,n=(T,S)=>{if(typeof S==="string")T.innerHTML=S;else T.replaceChildren(S)},J2=(T,S,O)=>{T.classList.toggle(x,S),T.classList.toggle(l,O)},g=(T,S)=>{let O=j.getRow(T);if(S){let B=S.totalItems,A=b(B);if(A.isCompressed)return L2(O,S.scrollPosition,$,B,S.containerSize,A,S.rangeStart)}return $.getOffset(O)},c=(T,S)=>{let O=L&&j.getCol(T)===0,B=O?0:j.getCol(T),A=O?0:j.getColumnOffset(B,R),E;if(L){let u=j.getRow(T),M=0,m=new Set;for(let t=0;t<T;t++){let W=j.getRow(t);if(W<u&&!m.has(W)){let C=$.getSize(t);M+=C,m.add(W)}}E=M}else E=g(T,S);if(G)return`translate(${Math.round(E)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(E)}px)`},d=(T,S)=>{T.style.transform=S},e=(T,S)=>{let O=T.dataset.id?.startsWith("__group_header"),B=O?R:j.getColumnWidth(R),A;if(L||O)A=$.getSize(S)-j.gap;else{let E=j.getRow(S);A=$.getSize(E)-j.gap}if(G)T.style.width=`${A}px`,T.style.height=`${B}px`;else T.style.width=`${B}px`,T.style.height=`${A}px`},i=(T,S,O,B,A)=>{let E=_.acquire(),u=P(O,B);if(E.className=p,E.dataset.index=String(T),E.dataset.id=String(S.id),E.dataset.row=String(j.getRow(T)),E.dataset.col=String(j.getCol(T)),E.ariaSelected=String(O),U)E.id=`${U}-item-${T}`;if(K){let m=K();if(m!==D)D=m,X=String(m);E.setAttribute("aria-setsize",X),E.setAttribute("aria-posinset",String(T+1))}e(E,T);let M=Q(S,T,u);return n(E,M),J2(E,O,B),d(E,A),{element:E,lastItemId:S.id,lastSelected:O,lastFocused:B,lastTransform:A,lastSeenFrame:V}},y=(T,S,O,B,A)=>{if(V++,S.start===0&&T.length>0)L=O2(T[0]);for(let[M,m]of N)if(M>=S.start&&M<=S.end)m.lastSeenFrame=V;else if(V-m.lastSeenFrame>fJ)_.release(m.element),N.delete(M);let E=!1;if(K){let M=K();if(M!==D)D=M,X=String(M),E=!0}let u=null;for(let M=S.start;M<=S.end;M++){let m=M-S.start,t=T[m];if(!t){console.warn(`⚠️ RENDER: Missing item at index ${M} (range: ${S.start}-${S.end}, items.length: ${T.length})`);continue}let W=O.has(t.id),C=M===B,f=N.get(M);if(f){let o=f.lastItemId!==t.id,Q2=f.lastSelected!==W,$2=f.lastFocused!==C;if(o||Q2||$2){if(o){let q2=P(W,C),j2=Q(t,M,q2);n(f.element,j2),f.element.dataset.id=String(t.id),f.element.dataset.row=String(j.getRow(M)),f.element.dataset.col=String(j.getCol(M)),e(f.element,M)}J2(f.element,W,C),f.element.ariaSelected=String(W),f.lastItemId=t.id,f.lastSelected=W,f.lastFocused=C}let h=c(M,A);if(f.lastTransform!==h)d(f.element,h),f.lastTransform=h;if(E)f.element.setAttribute("aria-setsize",X)}else{let o=c(M,A),Q2=i(M,t,W,C,o);if(!u)u=document.createDocumentFragment();u.appendChild(Q2.element),N.set(M,Q2)}}if(u)J.appendChild(u)},w=(T)=>{for(let[S,O]of N){let B=c(S,T);if(O.lastTransform!==B)d(O.element,B),O.lastTransform=B}},F=(T,S,O,B)=>{let A=N.get(T);if(!A)return;let E=A.lastItemId!==S.id,u=A.lastSelected!==O,M=A.lastFocused!==B;if(E||u||M){let m=P(O,B),t=Q(S,T,m);n(A.element,t),J2(A.element,O,B),A.element.dataset.id=String(S.id),A.element.ariaSelected=String(O),e(A.element,T),A.lastItemId=S.id,A.lastSelected=O,A.lastFocused=B}},H=(T,S,O)=>{let B=N.get(T);if(!B)return;let A=B.lastSelected!==S,E=B.lastFocused!==O;if(A||E)J2(B.element,S,O),B.lastSelected=S,B.lastFocused=O},k=(T)=>{return N.get(T)?.element},r=(T)=>{if(Math.abs(T-R)<1)return;R=T;for(let[S,O]of N){e(O.element,S);let B=c(S);d(O.element,B),O.lastTransform=B}},I=()=>{A2(J,N.keys(),(T)=>N.get(T)?.element)},a=()=>{for(let[,T]of N)_.release(T.element);N.clear()};return{render:y,updatePositions:w,updateItem:F,updateItemClasses:H,getElement:k,sortDOM:I,updateContainerWidth:r,clear:a,destroy:()=>{a(),_.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let G=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:G}),Y=Y+1+G,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(L)=>{if($.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return{type:"header",group:Z};let V=L-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+V,group:Z}},layoutToDataIndex:(L)=>{if($.length===0)return L;let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return-1;let V=L-Z.headerLayoutIndex-1;return Z.firstDataIndex+V},dataToLayoutIndex:(L)=>{if($.length===0)return L;let z=p2($,L),Z=$[z],V=L-Z.firstDataIndex;return Z.headerLayoutIndex+1+V},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=y2($,L);return $[z]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=p2($,L);return $[z]},getHeaderHeight:typeof q==="number"?(L)=>q:(L)=>{let z=$[L];if(!z)return 0;return q(z.key,L)},rebuild:(L)=>{$=x2(L,Q.getGroupForIndex),j=L+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let G=-1,_=!1,N=0,R=(D)=>{if(D===G)return;G=D;let b=Q.groups;if(D<0||D>=b.length){U.textContent="";return}let v=b[D],P=j.headerTemplate(v.key,v.groupIndex),p=Q.getHeaderHeight(D);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof P==="string")U.innerHTML=P;else U.replaceChildren(P)},L=(D)=>{let b=Q.groups;if(b.length===0){Z();return}let v=$.getOffset(b[0].headerLayoutIndex);if(D<v){Z();return}let P=0,p=b.length-1;while(P<p){let g=P+p+1>>>1;if($.getOffset(b[g].headerLayoutIndex)<=D)P=g;else p=g-1}let x=P;if(!_)z();R(x);let l=Q.getHeaderHeight(x),n=0,J2=x+1;if(J2<b.length){let c=$.getOffset(b[J2].headerLayoutIndex)-D;if(c<l)n=c-l}if(n!==N)if(N=n,n===0)U.style.transform="";else{let g=Math.round(n);U.style.transform=Y?`translateX(${g}px)`:`translateY(${g}px)`}},z=()=>{if(_)return;_=!0,U.style.display=""},Z=()=>{if(!_)return;_=!1,U.style.display="none",G=-1,N=0,U.style.transform=""},V=()=>{let D=G;if(G=-1,D>=0)R(D)},X=()=>{U.remove(),G=-1,_=!1};return U.style.display="none",{update:L,refresh:V,show:z,hide:Z,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=M2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=M2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),G=Q.getSize(K),_=Q.getTotalSize(),N=Math.max(0,_-$),R;switch(Y){case"center":R=U-$/2+G/2;break;case"end":R=U-$+G;break;case"start":default:R=U;break}return Math.max(0,Math.min(R,N))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var _J=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(Z)=>{if(Z<=0)return 0;if(!j)return Math.ceil(Z/Q);let V=0,X=0,D=0;for(let b=0;b<Z;b++)if(j(b)){if(D++,X>0)V++,X=0;V++,X=0}else if(X++,X>=Q)V++,X=0;if(X>0)V++;return V},K=(Z)=>{return q.row=U(Z),q.col=G(Z),q},U=(Z)=>{if(!j)return Math.floor(Z/Q);let V=0,X=0;for(let D=0;D<=Z;D++)if(j(D)){if(X>0)V++,X=0;if(D===Z)return V;V++,X=0}else{if(D===Z)return V;if(X++,X>=Q)V++,X=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${V}`),V},G=(Z)=>{if(!j)return Z%Q;if(j(Z))return 0;let V=0;for(let X=0;X<=Z;X++)if(j(X))V=0;else{if(X===Z)return V;if(V++,V>=Q)V=0}return V},_=(Z,V,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,Z*Q),x=Math.min(X-1,(V+1)*Q-1);return{start:p,end:x}}let D=-1,b=-1,v=0,P=0;for(let p=0;p<X;p++){if(j(p)){if(P>0)v++,P=0;if(v>=Z&&v<=V){if(D===-1)D=p;b=p}v++,P=0}else{if(v>=Z&&v<=V){if(D===-1)D=p;b=p}if(P++,P>=Q)v++,P=0}if(v>V&&P===0)break}if(D===-1)return{start:0,end:-1};return{start:D,end:b}},N=(Z,V,X)=>{if(V<0||V>=Q)return-1;let D=Z*Q+V;if(D<0||D>=X)return-1;return D},R=(Z)=>{let V=(Q-1)*$;return Math.max(0,(Z-V)/Q)};return{get columns(){return Q},get gap(){return $},update:(Z)=>{if(Z.columns!==void 0)Q=Math.max(1,Math.floor(Z.columns));if(Z.gap!==void 0)$=Z.gap;if(Z.isHeaderFn!==void 0)j=Z.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:G,getItemRange:_,getItemIndex:N,getColumnWidth:R,getColumnOffset:(Z,V)=>{let X=R(V);return Z*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,D)=>({def:X,index:D,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},G=(X)=>{if(Y.length===0){K=0;return}let D=0,b=0;for(let v=0;v<Y.length;v++){let P=Y[v],p=P.def;if(p.width!==void 0)P.width=v2(p.width,P.minWidth,P.maxWidth),D+=P.width;else b++}if(b>0){let P=Math.max(0,X-D)/b;for(let p=0;p<Y.length;p++){let x=Y[p];if(x.def.width===void 0)x.width=v2(P,x.minWidth,x.maxWidth)}}_()},_=()=>{let X=0;for(let D=0;D<Y.length;D++){let b=Y[D];b.offset=X,X+=b.width}K=X},N=(X,D)=>{if(X<0||X>=Y.length)return 0;let b=Y[X];if(!b.resizable)return b.width;let v=v2(D,b.minWidth,b.maxWidth);return b.width=v,_(),v},R=(X)=>{return Y[X]},L=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let D=0,b=Y.length-1;while(D<b){let v=D+b>>>1,P=Y[v];if(X<P.offset)b=v-1;else if(X>=P.offset+P.width)D=v+1;else return P}return Y[D]},z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},Z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},V=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:G,updateColumns:V,resizeColumn:N,getColumn:R,getColumnAtX:L,getColumnOffset:z,getColumnWidth:Z}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let G=document.createElement("div");G.className=`${j}-table-header`,G.setAttribute("role","row"),G.setAttribute("aria-rowindex","1"),G.style.height=`${$}px`;let _=document.createElement("div");_.className=`${j}-table-header-scroll`,_.setAttribute("role","presentation"),G.appendChild(_),U.appendChild(G),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let N=[],R=[],L=[],z=!0,Z=null,V="asc",X=null,D=!1,b=-1,v=0,P=0,p=(F,H)=>{let k=document.createElement("div");k.className=`${j}-table-header-cell`,k.setAttribute("role","columnheader"),k.setAttribute("aria-colindex",String(H+1)),k.dataset.columnKey=F.def.key;let r=F.def.align;if(r==="center")k.classList.add(`${j}-table-header-cell--center`);else if(r==="right")k.classList.add(`${j}-table-header-cell--right`);let I=document.createElement("div");I.className=`${j}-table-header-content`;let a=F.def.header?F.def.header(F.def):F.def.label;if(typeof a==="string")I.textContent=a;else I.appendChild(a);if(k.appendChild(I),F.def.sortable){let s=document.createElement("span");s.className=`${j}-table-header-sort`,s.setAttribute("aria-hidden","true"),k.appendChild(s),L.push(s),k.classList.add(`${j}-table-header-cell--sortable`)}else L.push(null);if(F.resizable){let s=document.createElement("div");s.className=`${j}-table-header-resize`,s.dataset.resizeIndex=String(H),k.appendChild(s),R.push(s)}return k},x=(F)=>{X=F,_.textContent="",N=[],R=[],L=[];let H=F.columns;for(let k=0;k<H.length;k++){let r=H[k],I=p(r,k);N.push(I),_.appendChild(I)}if(l(F),Z)n(Z,V)},l=(F)=>{X=F;let H=F.columns;_.style.width=`${F.totalWidth}px`;for(let k=0;k<N.length&&k<H.length;k++){let r=N[k],I=H[k];r.style.width=`${I.width}px`}},n=(F,H)=>{if(Z=F,V=H,!X)return;let k=X.columns;for(let r=0;r<L.length&&r<k.length;r++){let I=L[r];if(!I)continue;if(k[r].def.key===F&&F!==null)I.textContent=H==="asc"?"▲":"▼",I.style.opacity="0.7",N[r].setAttribute("aria-sort",H==="asc"?"ascending":"descending");else I.textContent="",I.style.opacity="0",N[r].removeAttribute("aria-sort")}},J2=(F)=>{_.style.transform=`translateX(${-F}px)`},g=(F)=>{let H=F.target;if(!H.dataset.resizeIndex)return;if(F.preventDefault(),F.stopPropagation(),b=parseInt(H.dataset.resizeIndex,10),!X)return;let k=X.getColumn(b);if(!k||!k.resizable)return;D=!0,v=F.clientX,P=k.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",H.classList.add(`${j}-table-header-resize--active`),H.setPointerCapture(F.pointerId),H.addEventListener("pointermove",c),H.addEventListener("pointerup",d),H.addEventListener("pointercancel",d)},c=(F)=>{if(!D||!X)return;let H=F.clientX-v;if(Math.abs(H)<1)return;let k=Math.max(0,P+H);q(b,k)},d=(F)=>{if(!D)return;let H=F.target;H.removeEventListener("pointermove",c),H.removeEventListener("pointerup",d),H.removeEventListener("pointercancel",d);try{H.releasePointerCapture(F.pointerId)}catch{}H.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",D=!1,b=-1},e=(F)=>{let H=F.target;if(H.dataset.resizeIndex!==void 0)return;if(D)return;let k=H;while(k&&!k.dataset.columnKey)if(k=k.parentElement,k===G||k===null)return;if(!k||!k.dataset.columnKey)return;let r=k.dataset.columnKey;if(!X)return;let I=X.columns,a=-1;for(let T=0;T<I.length;T++)if(I[T].def.key===r){a=T;break}if(a===-1)return;let s=I[a];if(K)K({key:r,index:a,event:F});if(s.def.sortable&&Y){let T;if(Z===r)if(V==="asc")T="desc";else T=null;else T="asc";Y({key:r,index:a,direction:T})}};return G.addEventListener("pointerdown",g),G.addEventListener("click",e),{element:G,update:l,updateSort:n,rebuild:x,show:()=>{if(z)return;z=!0,G.style.display=""},hide:()=>{if(!z)return;z=!1,G.style.display="none"},destroy:()=>{G.removeEventListener("pointerdown",g),G.removeEventListener("click",e),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),N=[],R=[],L=[],X=null,z=!1},syncScroll:J2}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},WJ=(J,Q,$,j,q,Y,K,U,G)=>{let _=pJ(),N=new Map,R=-1,L=$,z=null,Z=null,V=null,X=(O,B)=>{Z=O,V=B},D=(O,B)=>{if(B)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},b=`${q}-item ${q}-table-row`,v=`${q}-item--selected`,P=`${q}-item--focused`,p=`${q}-table-cell`,x=`${q}-table-cell--center`,l=`${q}-table-cell--right`,n=`${q}-item--odd`,J2=`${q}-item--placeholder`,g=`${q}-item--replaced`,c=`${q}-item ${q}-table-row ${q}-table-group-header`,d=`${q}-table-group-header-content`,e=(O,B,A,E,u=!1)=>{if(A.def.cell){let M=A.def.cell(B,A.def,E);if(typeof M==="string")O.innerHTML=M;else O.replaceChildren(M)}else{let M=B[A.def.key],m=M!=null?String(M):"";if(u&&m)O.innerHTML=`<span>${m}</span>`;else O.textContent=m}},i=(O,B,A,E,u=!1)=>{let M=b;if(U){if(z){let m=z(B);if(m>=0&&(m&1)===1)M+=` ${n}`}else if((B&1)===1)M+=` ${n}`}if(u)M+=` ${J2}`;if(A)M+=` ${v}`;if(E)M+=` ${P}`;O.className=M},y=(O,B)=>{let A=B.def.align;if(A==="center")O.classList.add(x),O.classList.remove(l);else if(A==="right")O.classList.add(l),O.classList.remove(x);else O.classList.remove(x,l)},w=(O,B)=>{let E=L.columns.length;if(B.length===E)return B;let u=[];for(let M=0;M<E;M++){let m;if(M<B.length)m=B[M];else m=document.createElement("div"),m.className=p,O.appendChild(m);u.push(m)}for(let M=E;M<B.length;M++)B[M].remove();return u},F=(O,B,A)=>{let E=_.acquire(),u=O;E.style.width=`${L.totalWidth}px`;let M=A.getSize(B);E.style.height=`${M}px`,E.className=c,E.setAttribute("role","presentation"),E.setAttribute("data-id",String(O.id)),E.setAttribute("data-index",String(B)),E.removeAttribute("aria-selected"),E.removeAttribute("aria-rowindex"),E.replaceChildren();let m=document.createElement("div");if(m.className=d,V){let W=V(u.groupKey,u.groupIndex);if(typeof W==="string")m.innerHTML=W;else m.appendChild(W)}E.appendChild(m);let t=A.getOffset(B);return E.style.transform=`translateY(${t}px)`,{element:E,cells:[],index:B,isGroupHeader:!0,lastItemId:O.id,lastSelected:!1,lastFocused:!1,lastOffset:t,lastHeight:M}},H=(O,B,A,E,u)=>{let M=_.acquire();M.style.width=`${L.totalWidth}px`;let m=u.getSize(B);M.style.height=`${m}px`;let t=String(O.id).startsWith("__placeholder_");i(M,B,A,E,t),M.setAttribute("role","row"),M.setAttribute("data-id",String(O.id)),M.setAttribute("data-index",String(B)),M.id=`${Y}-${B}`,M.setAttribute("aria-rowindex",String(B+2));let W=K();if(W!==R)R=W;D(M,A);let C=w(M,[]),f=L.columns;for(let Q2=0;Q2<C.length&&Q2<f.length;Q2++){let $2=C[Q2],h=f[Q2];$2.style.left=`${h.offset}px`,$2.style.width=`${h.width}px`,$2.setAttribute("role","gridcell"),$2.setAttribute("aria-colindex",String(Q2+1)),y($2,h),e($2,O,h,B,t)}let o=u.getOffset(B);return M.style.transform=`translateY(${o}px)`,{element:M,cells:C,index:B,isGroupHeader:!1,lastItemId:O.id,lastSelected:A,lastFocused:E,lastOffset:o,lastHeight:m}},k=(O,B,A,E)=>{for(let[W,C]of N)if(W<B.start||W>B.end)_.release(C.element),N.delete(W);let u=!1,M=K();if(M!==R)R=M,u=!0;let m=null,t=Q();z=typeof U==="string"&&G?G():null;for(let W=B.start;W<=B.end;W++){let C=W-B.start,f=O[C];if(!f)continue;let o=A.has(f.id),Q2=W===E,$2=Z?Z(f):!1,h=N.get(W);if(h){if(h.isGroupHeader!==$2){_.release(h.element),N.delete(W);let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element);continue}if($2){if(h.lastItemId!==f.id){let U2=f,Y2=h.element.firstElementChild;if(Y2&&V){let K2=V(U2.groupKey,U2.groupIndex);if(typeof K2==="string")Y2.innerHTML=K2;else Y2.replaceChildren(K2)}h.element.setAttribute("data-id",String(f.id)),h.lastItemId=f.id}let j2=t.getOffset(W);if(h.lastOffset!==j2)h.lastOffset=j2,h.element.style.transform=`translateY(${j2}px)`;let B2=t.getSize(W);if(h.lastHeight!==B2)h.lastHeight=B2,h.element.style.height=`${B2}px`}else{let q2=h.lastItemId!==f.id,j2=h.lastSelected!==o,B2=h.lastFocused!==Q2;if(q2){let K2=h.lastItemId!=null&&String(h.lastItemId).startsWith("__placeholder_"),X2=String(f.id).startsWith("__placeholder_"),N2=L.columns;for(let Z2=0;Z2<h.cells.length&&Z2<N2.length;Z2++)e(h.cells[Z2],f,N2[Z2],W,X2);if(i(h.element,W,o,Q2,X2),h.element.setAttribute("data-id",String(f.id)),D(h.element,o),K2&&!X2)h.element.classList.add(g),setTimeout(()=>{h.element.classList.remove(g)},300);h.lastItemId=f.id,h.lastSelected=o,h.lastFocused=Q2}else if(j2||B2){let K2=String(f.id).startsWith("__placeholder_");i(h.element,W,o,Q2,K2),D(h.element,o),h.lastSelected=o,h.lastFocused=Q2}let U2=t.getOffset(W);if(h.lastOffset!==U2)h.lastOffset=U2,h.element.style.transform=`translateY(${U2}px)`;let Y2=t.getSize(W);if(h.lastHeight!==Y2)h.lastHeight=Y2,h.element.style.height=`${Y2}px`;if(u)h.element.setAttribute("aria-rowindex",String(W+2))}}else{let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element)}}if(m)J.appendChild(m)},r=(O,B,A,E)=>{let u=N.get(O);if(!u)return;if(u.isGroupHeader)return;let M=u.lastItemId!==B.id,m=u.lastSelected!==A,t=u.lastFocused!==E;if(M||m||t){if(M){let W=L.columns;for(let C=0;C<u.cells.length&&C<W.length;C++)e(u.cells[C],B,W[C],O);u.element.setAttribute("data-id",String(B.id)),u.lastItemId=B.id}i(u.element,O,A,E),D(u.element,A),u.lastSelected=A,u.lastFocused=E}},I=(O,B,A)=>{let E=N.get(O);if(!E)return;if(E.isGroupHeader)return;let u=E.lastSelected!==B,M=E.lastFocused!==A;if(u||M)i(E.element,O,B,A),D(E.element,B),E.lastSelected=B,E.lastFocused=A},a=(O)=>{L=O;let B=O.columns;for(let[,A]of N)if(A.element.style.width=`${O.totalWidth}px`,A.cells.length>0)for(let E=0;E<A.cells.length&&E<B.length;E++){let u=A.cells[E],M=B[E];u.style.left=`${M.offset}px`,u.style.width=`${M.width}px`}},s=(O)=>{return N.get(O)?.element},T=()=>{for(let[,O]of N)_.release(O.element);N.clear(),R=-1};return{render:k,updateItem:r,updateItemClasses:I,getElement:s,updateColumnLayout:a,setGroupHeaderFn:X,clear:T,destroy:()=>{T(),_.clear()}}};var OJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let D=q+$;for(let b=0;b<Q;b++)Y[b]=b*D};K();let U=[],G=0,_=[],N=(X)=>{let D=0,b=X[0];for(let v=1;v<X.length;v++){let P=X[v];if(P<b)b=P,D=v}return D},R=(X,D)=>{if(X<=0)return G=0,U=[],[];let b=Array(Q).fill(0),v=Array(Q);for(let x=0;x<Q;x++)v[x]=[];let P=Array(X);for(let x=0;x<X;x++){let l=N(b),n=D(x),J2=b[l];P[x]={index:x,x:Y[l],y:J2,lane:l,size:n,crossSize:q},v[l].push(x),b[l]=J2+n+$}U=v;let p=0;for(let x=0;x<Q;x++){let l=b[x],n=l>0?l-$:0;if(n>p)p=n}return G=p,P},L=(X)=>{if(X.length===0)return G>0?G:0;if(G>0)return G;let D=Array(Q).fill(0);for(let v of X){let P=v.y+v.size,p=D[v.lane];if(P>p)D[v.lane]=P}let b=0;for(let v=0;v<Q;v++)if(D[v]>b)b=D[v];return b},z=(X,D,b)=>{if(X.length===0||b<=D)return _.length=0,_;if(U.length===0||U.length!==Q)return Z(X,D,b);_.length=0;for(let v=0;v<Q;v++){let P=U[v],p=P.length;if(p===0)continue;let x=0,l=p;while(x<l){let n=x+l>>>1,J2=X[P[n]];if(J2.y+J2.size<=D)x=n+1;else l=n}for(let n=x;n<p;n++){let J2=X[P[n]];if(J2.y>=b)break;_.push(J2)}}return _},Z=(X,D,b)=>{let v=[];for(let P of X)if(P.y+P.size>D&&P.y<b)v.push(P);return v};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let D=!1;if(X.columns!==void 0){let b=Math.max(1,Math.floor(X.columns));if(b!==Q)Q=b,D=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,D=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,D=!0;if(D)K()},calculateLayout:R,getTotalSize:L,getVisibleItems:z}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,G=new Set,_=0,N="",R=-1,L={selected:!1,focused:!1},z=(g,c)=>{return L.selected=g,L.focused=c,L},Z=`${$}-item ${$}-masonry-item`,V=`${$}-item--selected`,X=`${$}-item--focused`,D=(g,c)=>{if(typeof c==="string")g.innerHTML=c;else g.replaceChildren(c)},b=(g,c,d)=>{g.classList.toggle(V,c),g.classList.toggle(X,d)},v=(g,c)=>{if(j)g.style.transform=`translate(${Math.round(c.y)}px, ${Math.round(c.x)}px)`;else g.style.transform=`translate(${Math.round(c.x)}px, ${Math.round(c.y)}px)`},P=(g,c)=>{if(j)g.style.width=`${c.size}px`,g.style.height=`${c.crossSize}px`;else g.style.width=`${c.crossSize}px`,g.style.height=`${c.size}px`},p=(g,c,d,e,i)=>{let y=K.acquire(),w=z(e,i);if(y.className=Z,y.dataset.index=String(g),y.dataset.id=String(c.id),y.dataset.lane=String(d.lane),y.ariaSelected=String(e),Y)y.id=`${Y}-item-${g}`;if(q){let H=q();if(H!==R)R=H,N=String(H);y.setAttribute("aria-setsize",N),y.setAttribute("aria-posinset",String(g+1))}P(y,d);let F=Q(c,g,w);return D(y,F),b(y,e,i),v(y,d),{element:y,lastItemId:c.id,lastSelected:e,lastFocused:i,lastY:d.y,lastX:d.x,lastSize:d.size,lastCrossSize:d.crossSize,lastSeenFrame:_}},x=(g,c,d,e)=>{_++,G.clear();for(let y=0;y<c.length;y++)G.add(c[y].index);for(let[y,w]of U)if(G.has(y))w.lastSeenFrame=_;else if(_-w.lastSeenFrame>hJ)K.release(w.element),U.delete(y);let i=null;for(let y=0;y<c.length;y++){let w=c[y],F=w.index,H=g(F);if(!H)continue;let k=d.has(H.id),r=F===e,I=U.get(F);if(I){let a=I.lastItemId!==H.id,s=I.lastSelected!==k,T=I.lastFocused!==r,S=I.lastY!==w.y||I.lastX!==w.x,O=I.lastSize!==w.size||I.lastCrossSize!==w.crossSize;if(a||s||T){let B=z(k,r),A=Q(H,F,B);D(I.element,A),b(I.element,k,r),I.element.dataset.id=String(H.id),I.element.ariaSelected=String(k),I.lastItemId=H.id,I.lastSelected=k,I.lastFocused=r}if(O)P(I.element,w),I.lastSize=w.size,I.lastCrossSize=w.crossSize;if(S)v(I.element,w),I.lastY=w.y,I.lastX=w.x}else{let a=p(F,H,w,k,r);if(!i)i=document.createDocumentFragment();i.appendChild(a.element),U.set(F,a)}}if(i)J.appendChild(i)},l=()=>{for(let{element:g}of U.values())K.release(g);U.clear(),J.innerHTML=""};return{render:x,getElement:(g)=>U.get(g)?.element,sortDOM:()=>{A2(J,U.keys(),(g)=>U.get(g)?.element)},clear:l,destroy:()=>{l(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,G)=>{if(!J[U])J[U]=new Set;return J[U].add(G),()=>$(U,G)},$=(U,G)=>{J[U]?.delete(G)};return{on:Q,off:$,emit:(U,G)=>{J[U]?.forEach((_)=>{try{_(G)}catch(N){console.error(`[vlist] Error in event handler for "${String(U)}":`,N)}})},once:(U,G)=>{let _=(N)=>{$(U,_),G(N)};return Q(U,_)},clear:(U)=>{if(U)delete J[U];else for(let G in J)delete J[G]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,G=(y)=>{let w=Y.get(y);if(!w)w={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(y,w);else w.lastAccess=Date.now();return w},_=(y)=>{return Math.floor(y/Q)},N=(y)=>{return y%Q},R=()=>K,L=(y)=>{K=y},z=(y)=>{if(y<0||y>=K)return;let w=_(y),F=Y.get(w);if(!F)return;return F.items[N(y)]},Z=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w);if(!F)return!1;return F.items[N(y)]!==void 0},V=(y,w)=>{let F=_(y),H=G(F),k=N(y),r=H.items[k]===void 0;if(H.items[k]=w,r)H.count++,U++;if(y>=K)K=y+1},X=(y,w)=>{for(let F=0;F<w.length;F++){let H=w[F];if(H!==void 0)V(y+F,H)}},D=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w),H=N(y);if(!(F!==void 0&&F.items[H]!==void 0))return!1;let r=w,I=Array.from(Y.keys()).filter((s)=>s>=r).sort((s,T)=>s-T),a=[];for(let s of I){let T=Y.get(s),S=s*Q;for(let O=0;O<Q;O++){if(T.items[O]===void 0)continue;let B=S+O;if(B<=y)continue;a.push({oldIndex:B,item:T.items[O]})}}if(F.items[H]=void 0,F.count--,U--,F.count===0)Y.delete(w);for(let{oldIndex:s}of a){let T=_(s),S=Y.get(T);if(!S)continue;let O=N(s);if(S.items[O]!==void 0){if(S.items[O]=void 0,S.count--,U--,S.count===0)Y.delete(T)}}for(let{oldIndex:s,item:T}of a){let S=s-1,O=_(S),B=G(O),A=N(S);B.items[A]=T,B.count++,U++}return K--,!0},b=(y,w)=>{let F=[];for(let H=y;H<=w&&H<K;H++)F.push(z(H));return F},v=(y,w)=>{for(let F=y;F<=w&&F<K;F++)if(!Z(F))return!1;return!0},P=()=>{let y=[],w=null,F=Array.from(Y.keys()).sort((H,k)=>H-k);for(let H of F){let k=Y.get(H);if(!k)continue;let r=H*Q;for(let I=0;I<Q;I++){let a=r+I;if(a>=K)break;if(k.items[I]!==void 0)if(w===null)w={start:a,end:a};else if(a===w.end+1)w.end=a;else y.push(w),w={start:a,end:a};else if(w!==null)y.push(w),w=null}}if(w!==null)y.push(w);return y},p=(y,w)=>{let F=[],H=null;for(let k=y;k<=w&&k<K;k++)if(!Z(k))if(H===null)H={start:k,end:k};else H.end=k;else if(H!==null)F.push(H),H=null;if(H!==null)F.push(H);return F},x=(y)=>{return Y.has(y)},l=(y)=>{let w=Y.get(y);if(w)w.lastAccess=Date.now()},n=(y,w)=>{if(y>w||Y.size===0)return;let F=Date.now(),H=_(Math.max(0,y)),k=_(Math.min(K-1,w));for(let r=H;r<=k;r++){let I=Y.get(r);if(I)I.lastAccess=F}},J2=(y,w)=>{if(U<=$)return 0;let F=Math.max(0,y-j),H=Math.min(K-1,w+j),k=_(F),r=_(H),I=0,a=[];for(let[s,T]of Y)if(s<k||s>r)I+=T.count,a.push(s),U-=T.count,Y.delete(s);if(I>0&&q)q(I,a);return I},g=()=>{if(U<=$)return 0;let y=Array.from(Y.entries()).sort(([,H],[,k])=>H.lastAccess-k.lastAccess),w=0,F=[];for(let[H,k]of y){if(U<=$)break;w+=k.count,U-=k.count,F.push(H),Y.delete(H)}if(w>0&&q)q(w,F);return w},c=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},d=()=>U,e=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:R,setTotal:L,get:z,has:Z,set:V,setRange:X,delete:D,getRange:b,isRangeLoaded:v,getLoadedRanges:P,findUnloadedRanges:p,getChunkIndex:_,isChunkLoaded:x,touchChunk:l,touchChunksForRange:n,evictDistant:J2,evictToLimit:g,getStats:c,getCachedCount:d,clear:e,reset:()=>{e(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},W2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),G=Y.start;for(let _ of U){if(_.end<G)continue;if(_.start>Y.end)break;if(_.start>G)K.push({start:G,end:Math.min(_.start-1,Y.end)});if(G=_.end+1,G>Y.end)break}if(G<=Y.end)K.push({start:G,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(R)=>{if(q||R.length===0)return;let L=Math.min(R.length,$);for(let z=0;z<L;z++){let Z=R[z];if(!Z||typeof Z!=="object")continue;let V={};for(let[X,D]of Object.entries(Z)){if(X.startsWith("_")||X==="id")continue;V[X]=String(D??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},U=()=>q,G=(R)=>{let L={id:`${l2}${Y++}`,[z2]:!0,_index:R};if(j.length===0)return L.label=Q.repeat(12),L;let z=j[R%j.length];for(let[Z,V]of Object.entries(z))L[Z]=Q.repeat(Math.max(1,V));return L};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:G,generateRange:(R,L)=>{let z=[];for(let Z=R;Z<=L;Z++)z.push(G(Z));return z},clear:()=>{j=[],q=!1,Y=0}}},D2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!D2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:G,onItemsEvicted:_}=J,N=F2({...q,onEvict:(W,C)=>{_?.(W),p()}}),R=null,L=()=>{if(!R)R=H2(Y);return R},z=new Map,Z=!1,V,X=!0,D,b=[],v=0,P=new Map,p=()=>{U?.(i())},x=()=>{z.clear();let W=N.getLoadedRanges();for(let C of W)for(let f=C.start;f<=C.end;f++){let o=N.get(f);if(o&&!D2(o))z.set(o.id,f)}},l=(W,C)=>{if(!D2(C))z.set(C.id,W)},n=(W)=>{z.delete(W)},J2=(W,C)=>{return`${W}-${C}`},g=()=>N.getTotal(),c=()=>N.getCachedCount(),d=()=>Z,e=()=>X,i=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:Z,pendingRanges:b,error:V,hasMore:X,cursor:D}),y=()=>N,w=()=>L(),F=(W)=>{let C=N.get(W);if(C!==void 0)return C;if(W>=0&&W<N.getTotal())return L().generate(W);return},H=(W)=>{let C=z.get(W);if(C===void 0)return;return N.get(C)},k=(W)=>{return z.get(W)??-1},r=(W)=>{let C=N.get(W);return C!==void 0&&!D2(C)},I=(W,C)=>{let f=[],o=N.getTotal(),Q2=0,$2=0;N.touchChunksForRange(W,Math.min(C,o-1));for(let h=W;h<=C&&h<o;h++){let q2=N.get(h);if(q2!==void 0)f.push(q2),Q2++;else f.push(L().generate(h)),$2++}return f},a=(W)=>{N.setTotal(W),X=N.getCachedCount()<W,p()},s=(W,C=0,f)=>{if(Q&&W.length>0){let o=L();if(!o.hasAnalyzedStructure())o.analyzeStructure(W)}for(let o=0;o<W.length;o++){let Q2=W[o];if(Q2!==void 0){let $2=C+o;N.set($2,Q2),l($2,Q2)}}if(f!==void 0)N.setTotal(f);else if(C+W.length>N.getTotal())N.setTotal(C+W.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)X=!1;p(),G?.(W,C,N.getTotal())},T=(W,C)=>{let f=z.get(W);if(f===void 0)return!1;let o=N.get(f);if(!o)return!1;let Q2={...o,...C};if(N.set(f,Q2),C.id!==void 0&&C.id!==W)n(W),l(f,Q2);return p(),!0},S=(W)=>{let C=z.get(W);if(C===void 0)return!1;if(!N.delete(C))return!1;return x(),P.clear(),p(),!0},O=async(W,C)=>{if(!Q)return;let f=J2(W,C);if(P.has(f))return;let o=N.getLoadedRanges(),Q2=W2({start:W,end:C},o,N.chunkSize);if(Q2.length===0)return;let $2=N.chunkSize,h=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(!h.some((Z2)=>Z2.start===K2)&&!P.has(N2))h.push({start:K2,end:X2})}}let q2=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(P.has(N2)){let Z2=P.get(N2);if(!q2.includes(Z2))q2.push(Z2)}}}for(let j2 of h){let B2=J2(j2.start,j2.end),U2=(async()=>{b.push(j2),Z=!0,V=void 0,p();try{let Y2=j2.end-j2.start+1,K2={offset:j2.start,limit:Y2,cursor:void 0},X2=await Q.read(K2);if(s(X2.items,j2.start,X2.total),X2.cursor)D=X2.cursor;let N2=j2.start+X2.items.length;if(N2>=v){if(v=N2,X2.hasMore!==void 0)X=X2.hasMore;else if(X2.total!==void 0)X=N2<X2.total}}catch(Y2){V=Y2 instanceof Error?Y2:Error(String(Y2))}finally{P.delete(B2),b=b.filter((Y2)=>Y2.start!==j2.start||Y2.end!==j2.end),Z=P.size>0,p()}})();P.set(B2,U2),q2.push(U2)}await Promise.all(q2)},B=async(W,C)=>{if(N.isRangeLoaded(W,C))return;await O(W,C)},A=async()=>{if(!Q)return;await O(0,K-1)},E=async()=>{if(!Q||Z||!X)return!1;let W=N.getCachedCount(),C=N.getTotal(),f=W,o=Math.min(f+K-1,C>0?C-1:f+K-1);if(f>=C&&C>0)return X=!1,!1;return await O(f,o),N.getCachedCount()>W},u=async()=>{if(N.clear(),N.setTotal(0),z.clear(),R)R.clear();P.clear(),b=[],Z=!1,D=void 0,X=!0,v=0,V=void 0,p()},M=(W,C)=>{if(N.evictDistant(W,C)>0)x()},m=()=>{N.clear(),z.clear(),D=void 0,V=void 0,b=[],Z=!1,p()},t=()=>{if(N.reset(),z.clear(),R)R.clear();D=void 0,X=!0,v=0,V=void 0,b=[],Z=!1,p()};if($&&$.length>0)s($,0,j??$.length);else if(j!==void 0)N.setTotal(j),p();return{getState:i,getTotal:g,getCached:c,getIsLoading:d,getHasMore:e,getStorage:y,getPlaceholders:w,getItem:F,getItemById:H,getIndexById:k,isItemLoaded:r,getItemsInRange:I,setTotal:a,setItems:s,updateItem:T,removeItem:S,loadRange:O,ensureRange:B,loadInitial:A,loadMore:E,reload:u,evictDistant:M,clear:m,reset:t}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:G=!0,hoverZoneWidth:_=16,showOnViewportEnter:N=!0}=$,R=0,L=0,z=0,Z=0,V=!1,X=!1,D=0,b=0,v=0,P=null,p=!1,x=null,l=null,n=q?"width":"height",J2=q?"translateX":"translateY",g=q?(M)=>M.clientX:(M)=>M.clientY,c=q?"left":"top",d=document.createElement("div"),e=document.createElement("div"),i=G?document.createElement("div"):null,y=()=>{if(d.className=`${j}-scrollbar`,e.className=`${j}-scrollbar-thumb`,q)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(e),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,q)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;else i.style.width=`${_}px`;J.appendChild(i)}},w=()=>{if(P)clearTimeout(P),P=null},F=()=>{if(!Y)return;w(),P=setTimeout(k,K)},H=()=>{if(R<=L)return;if(w(),!p)d.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!V&&!X)F()},k=()=>{if(V||X)return;d.classList.remove(`${j}-scrollbar--visible`),p=!1},r=(M,m)=>{R=M,L=m;let t=R>L;if(d.style.display=t?"":"none",!t){k();return}let W=L/R;z=Math.max(U,W*L),e.style[n]=`${z}px`,Z=L-z,I(v)},I=(M)=>{if(v=M,R<=L||Z<=0)return;let m=R-L,W=Math.min(1,Math.max(0,M/m))*Z;e.style.transform=`${J2}(${W}px)`},a=(M)=>{if(M.target===e)return;let m=d.getBoundingClientRect(),C=g(M)-m[c]-z/2,o=Math.max(0,Math.min(C,Z))/Z,Q2=R-L,$2=o*Q2;Q($2),H()},s=(M)=>{M.preventDefault(),M.stopPropagation(),V=!0,D=g(M),b=v,w(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",T),document.addEventListener("mouseup",S)},T=(M)=>{if(!V)return;let m=g(M)-D,t=Z>0?m/Z:0,W=R-L,C=t*W,f=Math.max(0,Math.min(b+C,W)),Q2=f/W*Z;if(e.style.transform=`${J2}(${Q2}px)`,l=f,x===null)x=requestAnimationFrame(()=>{if(l!==null)Q(l);x=null})},S=()=>{if(V=!1,x!==null)cancelAnimationFrame(x),x=null;if(l!==null)Q(l),l=null;if(d.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)F();document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S)},O=()=>{if(N)H()},B=()=>{if(!V){if(X=!1,Y)F()}},A=()=>{X=!0,w(),H()},E=()=>{if(X=!1,!V&&Y)F()},u=()=>{if(w(),x!==null)cancelAnimationFrame(x),x=null;if(d.removeEventListener("click",a),d.removeEventListener("mouseenter",A),d.removeEventListener("mouseleave",E),e.removeEventListener("mousedown",s),J.removeEventListener("mouseenter",O),J.removeEventListener("mouseleave",B),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S),i){if(i.removeEventListener("mouseenter",A),i.removeEventListener("mouseleave",E),i.parentNode)i.parentNode.removeChild(i)}if(d.parentNode)d.parentNode.removeChild(d)};if(y(),d.addEventListener("click",a),d.addEventListener("mouseenter",A),d.addEventListener("mouseleave",E),e.addEventListener("mousedown",s),J.addEventListener("mouseenter",O),J.addEventListener("mouseleave",B),i)i.addEventListener("mouseenter",A),i.addEventListener("mouseleave",E);return{show:H,hide:k,updateBounds:r,updatePosition:I,isVisible:()=>p,destroy:u}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,G=$-K.time;J.velocity=G>0?U/G:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:G,horizontal:_=!1}=Q,N=!!G,R=0,L=0,z=N?_?window.innerWidth:window.innerHeight:_?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,V=Q.compression,X=zJ(),D=!1,b=null,P=R2(()=>{let B=_?J.scrollLeft:J.scrollTop,A=B>=R?"down":"up";if(X=T2(X,B),R=B,K)K({scrollTop:R,direction:A,velocity:X.velocity});g()}),x=R2(()=>{let B=J.getBoundingClientRect(),A=_?Math.max(0,-B.left):Math.max(0,-B.top),E=A>=R?"down":"up";if(X=T2(X,A),R=A,!D)D=!0;if(K)K({scrollTop:R,direction:E,velocity:X.velocity});g()}),l=(B)=>{B.preventDefault()},n=(B)=>{if(B.deltaX)return;B.preventDefault(),J.scrollLeft+=B.deltaY},J2=(B)=>{if(!Z)return;B.preventDefault();let A=(_?B.deltaX||B.deltaY:B.deltaY)*j,E=R+A;if(q)E=R+A*0.3;if(E=Math.max(0,Math.min(E,L)),E!==R){let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}},g=()=>{if(b)clearTimeout(b);b=setTimeout(()=>{if(D=!1,X=zJ(R),U)U()},Y)},c=(B)=>{if(Z)return;if(Z=!0,V=B,L=B.virtualSize-z,N)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",l);else if(_)J.removeEventListener("wheel",n);if(_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1});let A=_?J.scrollLeft:J.scrollTop;if(A>0){let E=_?V?.actualSize??J.scrollWidth:V?.actualSize??J.scrollHeight;R=A/E*L}if(_)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!Z)return;if(Z=!1,N){V=void 0;return}if(J.removeEventListener("wheel",J2),_)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1});if(V&&R>0){let A=R/L*(V.actualSize-z);if(_)J.scrollLeft=A;else J.scrollTop=A}V=void 0},e=()=>{if(N||Z)return R;return _?J.scrollLeft:J.scrollTop},i=(B,A=!1)=>{let E=Math.max(0,Math.min(B,L||1/0));if(N){let u=J.getBoundingClientRect();if(_){let M=u.left+window.scrollX;window.scrollTo({left:M+E,behavior:A?"smooth":"auto"})}else{let M=u.top+window.scrollY;window.scrollTo({top:M+E,behavior:A?"smooth":"auto"})}}else if(Z){if(E===R)return;let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}else if(_)J.scrollTo({left:E,behavior:A?"smooth":"auto"});else J.scrollTo({top:E,behavior:A?"smooth":"auto"})},y=(B)=>{i(e()+B)},w=()=>{return e()<=0},F=(B=0)=>{let A=e(),E=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return A>=E-B},H=()=>{let B=e(),A=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(A<=0)return 0;return Math.min(1,Math.max(0,B/A))},k=(B)=>{if(B.compression)V=B.compression,L=V.virtualSize-z},r=()=>Z,I=()=>Math.abs(X.velocity),a=()=>mJ(X),s=()=>D,T=()=>N,S=(B)=>{if(z=B,V)L=V.virtualSize-z},O=()=>{if(b)clearTimeout(b);if(N)x.cancel(),window.removeEventListener("scroll",x);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",J2),J.removeEventListener("wheel",l),J.removeEventListener("wheel",n)};if(N){if(Z&&V)L=V.virtualSize-z;window.addEventListener("scroll",x,{passive:!0})}else if(Z&&V){if(L=V.virtualSize-z,_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1})}else{if(_)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1})}return{getScrollTop:e,scrollTo:i,scrollBy:y,isAtTop:w,isAtBottom:F,getScrollPercentage:H,getVelocity:I,isTracking:a,isScrolling:s,updateConfig:k,enableCompression:c,disableCompression:d,isCompressed:r,isWindowMode:T,updateContainerHeight:S,destroy:O}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(G){if(Q=G,G>cJ&&G<dJ)$+=G,j++}function K(){let G=J.getTotal();if(G===0)return 0;let _=J.getItemSize();if(_<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let R=J.getScrollPosition(),L=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(G/L)*_,X=Math.min(Z,_2)-N,D=Z-N,b=X>0?D/X:1,v=R*b,P=Math.ceil((v+N)/_);return Math.min(P*L,G)}function U(){let G=J.getTotal(),_=K();return{progress:G>0?Math.min(100,Math.max(0,_/G*100)):0,velocity:Q,velocityAvg:q(),itemCount:_,total:G}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,D2 as isPlaceholderItem,$J as isInRange,O2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,V2 as getScaleState,ZJ as getScaleInfo,V2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,WJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,M2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,OJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,DJ as createGridRenderer,_J as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,W2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,_2 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var O2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,V=$-1;while(U<V){let Z=U+V+1>>>1;if(j[Z]<=K)U=Z;else V=Z-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},V2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var Z2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var M2=(J,Q,$)=>{let j=Q.getTotalSize(),q=$===!0||j>Z2,Y=j>Z2?Z2:j,K=j>0?Y/j:1;return{isCompressed:q,actualSize:j,virtualSize:Y,ratio:K}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed||q.ratio===1){let N=$.indexAtOffset(J),M=$.indexAtOffset(J+Q);if(M<j-1)M++;return Y.start=Math.max(0,N),Y.end=Math.min(j-1,Math.max(0,M)),Y}let{virtualSize:K}=q,V=J/K*j,Z=Math.floor(V),B=P2($,Math.max(0,Z),Q,j),H=Math.ceil(V)+B,w=K-Q-J;if(w<=Q&&w>=-1){let N=E2($,Q,j),M=Math.max(0,j-N),X=Math.max(0,Math.min(1,1-w/Q));Z=Math.floor(Z+(M-Z)*X),H=w<=1?j-1:Math.min(j-1,Z+B)}return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,H)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);if(Y.ratio===1)return $.getOffset(J)-Q;let{virtualSize:U}=Y,V=U-q,Z=V-Q;if(Z<=q&&Z>=-1){if(Q>=V-1){let z=$.getTotalSize()-$.getOffset(J);return q-z}let w=E2($,q,j),N=Math.max(0,j-w),X=Q/U*j,_=Math.max(0,Math.min(1,1-Z/q)),F=$.getOffset(J)-$.getOffset(N),C=$.getOffset(J)-k2($,X,j);return C+(F-C)*_}let B=Q/U,H=$.getTotalSize(),W=B*H;return $.getOffset(J)-W},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed&&q.ratio!==1){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let V=q.virtualSize-$;return Math.max(0,Math.min(K,V))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed&&j.ratio!==1){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>Z2;return Q.getTotalSize()>Z2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(Z2/J)},ZJ=(J,Q,$)=>{let j=M2(J,Q,$);if(!j.isCompressed)return`No compression needed (${J} items, ${(j.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(j.ratio*100).toFixed(1)}% (${J} items, ${(j.actualSize/1e6).toFixed(1)}M px → ${(j.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,_J=(J,Q,$,j,q,Y,K,U,V=!1)=>{let Z=SJ(),B=new Map,H=Y,W=!1,w=0,N="",M=-1,X={selected:!1,focused:!1},_=(D,y)=>{return X.selected=D,X.focused=y,X},F=`${q}-item ${q}-grid-item`,C=`${q}-item--selected`,z=`${q}-item--focused`,p=(D,y)=>{if(typeof y==="string")D.innerHTML=y;else D.replaceChildren(y)},x=(D,y,S)=>{D.classList.toggle(C,y),D.classList.toggle(z,S)},a=(D,y)=>{let S=j.getRow(D);if(y?.compression?.isCompressed)return L2(S,y.scrollPosition,$,y.totalItems,y.containerSize,y.compression,y.rangeStart);return $.getOffset(S)},n=(D,y)=>{let S=W&&j.getCol(D)===0,I=S?0:j.getCol(D),d=S?0:j.getColumnOffset(I,H),L;if(W){let G=j.getRow(D),A=0,R=new Set;for(let g=0;g<D;g++){let P=j.getRow(g);if(P<G&&!R.has(P)){let c=$.getSize(g);A+=c,R.add(P)}}L=A}else L=a(D,y);if(V)return`translate(${Math.round(L)}px, ${Math.round(d)}px)`;return`translate(${Math.round(d)}px, ${Math.round(L)}px)`},e=(D,y)=>{D.style.transform=y},h=(D,y)=>{let S=D.dataset.id?.startsWith("__group_header"),I=S?H:j.getColumnWidth(H),d;if(W||S)d=$.getSize(y)-j.gap;else{let L=j.getRow(y);d=$.getSize(L)-j.gap}if(V)D.style.width=`${d}px`,D.style.height=`${I}px`;else D.style.width=`${I}px`,D.style.height=`${d}px`},s=(D,y,S,I,d)=>{let L=Z.acquire(),G=_(S,I);if(L.className=F,L.dataset.index=String(D),L.dataset.id=String(y.id),L.dataset.row=String(j.getRow(D)),L.dataset.col=String(j.getCol(D)),L.ariaSelected=String(S),U)L.id=`${U}-item-${D}`;if(K){let R=K();if(R!==M)M=R,N=String(R);L.setAttribute("aria-setsize",N),L.setAttribute("aria-posinset",String(D+1))}h(L,D);let A=Q(y,D,G);return p(L,A),x(L,S,I),e(L,d),{element:L,lastItemId:y.id,lastSelected:S,lastFocused:I,lastTransform:d,lastSeenFrame:w}},r=(D,y,S,I,d)=>{if(w++,y.start===0&&D.length>0)W=O2(D[0]);for(let[A,R]of B)if(A>=y.start&&A<=y.end)R.lastSeenFrame=w;else if(w-R.lastSeenFrame>fJ)Z.release(R.element),B.delete(A);let L=!1;if(K){let A=K();if(A!==M)M=A,N=String(A),L=!0}let G=null;for(let A=y.start;A<=y.end;A++){let R=A-y.start,g=D[R];if(!g){console.warn(`⚠️ RENDER: Missing item at index ${A} (range: ${y.start}-${y.end}, items.length: ${D.length})`);continue}let P=S.has(g.id),c=A===I,o=B.get(A);if(o){let O=o.lastItemId!==g.id,f=o.lastSelected!==P,m=o.lastFocused!==c;if(O||f||m){if(O){let Q2=_(P,c),$2=Q(g,A,Q2);p(o.element,$2),o.element.dataset.id=String(g.id),o.element.dataset.row=String(j.getRow(A)),o.element.dataset.col=String(j.getCol(A)),h(o.element,A)}x(o.element,P,c),o.element.ariaSelected=String(P),o.lastItemId=g.id,o.lastSelected=P,o.lastFocused=c}let t=n(A,d);if(o.lastTransform!==t)e(o.element,t),o.lastTransform=t;if(L)o.element.setAttribute("aria-setsize",N)}else{let O=n(A,d),f=s(A,g,P,c,O);if(!G)G=document.createDocumentFragment();G.appendChild(f.element),B.set(A,f)}}if(G)J.appendChild(G)},J2=(D)=>{for(let[y,S]of B){let I=n(y,D);if(S.lastTransform!==I)e(S.element,I),S.lastTransform=I}},i=(D,y,S,I)=>{let d=B.get(D);if(!d)return;let L=d.lastItemId!==y.id,G=d.lastSelected!==S,A=d.lastFocused!==I;if(L||G||A){let R=_(S,I),g=Q(y,D,R);p(d.element,g),x(d.element,S,I),d.element.dataset.id=String(y.id),d.element.ariaSelected=String(S),h(d.element,D),d.lastItemId=y.id,d.lastSelected=S,d.lastFocused=I}},T=(D,y,S)=>{let I=B.get(D);if(!I)return;let d=I.lastSelected!==y,L=I.lastFocused!==S;if(d||L)x(I.element,y,S),I.lastSelected=y,I.lastFocused=S},v=(D)=>{return B.get(D)?.element},E=(D)=>{if(Math.abs(D-H)<1)return;H=D;for(let[y,S]of B){h(S.element,y);let I=n(y);e(S.element,I),S.lastTransform=I}},b=()=>{A2(J,B.keys(),(D)=>B.get(D)?.element)},k=()=>{for(let[,D]of B)Z.release(D.element);B.clear()};return{render:r,updatePositions:J2,updateItem:i,updateItemClasses:T,getElement:v,sortDOM:b,updateContainerWidth:E,clear:k,destroy:()=>{k(),Z.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let V=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:V}),Y=Y+1+V,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(W)=>{if($.length===0)return{type:"item",dataIndex:W,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let w=y2($,W),N=$[w];if(W===N.headerLayoutIndex)return{type:"header",group:N};let M=W-N.headerLayoutIndex-1;return{type:"item",dataIndex:N.firstDataIndex+M,group:N}},layoutToDataIndex:(W)=>{if($.length===0)return W;let w=y2($,W),N=$[w];if(W===N.headerLayoutIndex)return-1;let M=W-N.headerLayoutIndex-1;return N.firstDataIndex+M},dataToLayoutIndex:(W)=>{if($.length===0)return W;let w=p2($,W),N=$[w],M=W-N.firstDataIndex;return N.headerLayoutIndex+1+M},getGroupAtLayoutIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=y2($,W);return $[w]},getGroupAtDataIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=p2($,W);return $[w]},getHeaderHeight:typeof q==="number"?(W)=>q:(W)=>{let w=$[W];if(!w)return 0;return q(w.key,W)},rebuild:(W)=>{$=x2(W,Q.getGroupForIndex),j=W+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let V=-1,Z=!1,B=0,H=(_)=>{if(_===V)return;V=_;let F=Q.groups;if(_<0||_>=F.length){U.textContent="";return}let C=F[_],z=j.headerTemplate(C.key,C.groupIndex),p=Q.getHeaderHeight(_);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof z==="string")U.innerHTML=z;else U.replaceChildren(z)},W=(_)=>{let F=Q.groups;if(F.length===0){N();return}let C=$.getOffset(F[0].headerLayoutIndex);if(_<C){N();return}let z=0,p=F.length-1;while(z<p){let h=z+p+1>>>1;if($.getOffset(F[h].headerLayoutIndex)<=_)z=h;else p=h-1}let x=z;if(!Z)w();H(x);let a=Q.getHeaderHeight(x),n=0,e=x+1;if(e<F.length){let s=$.getOffset(F[e].headerLayoutIndex)-_;if(s<a)n=s-a}if(n!==B)if(B=n,n===0)U.style.transform="";else{let h=Math.round(n);U.style.transform=Y?`translateX(${h}px)`:`translateY(${h}px)`}},w=()=>{if(Z)return;Z=!0,U.style.display=""},N=()=>{if(!Z)return;Z=!1,U.style.display="none",V=-1,B=0,U.style.transform=""},M=()=>{let _=V;if(V=-1,_>=0)H(_)},X=()=>{U.remove(),V=-1,Z=!1};return U.style.display="none",{update:W,refresh:M,show:w,hide:N,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=V2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=V2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),V=Q.getSize(K),Z=Q.getTotalSize(),B=Math.max(0,Z-$),H;switch(Y){case"center":H=U-$/2+V/2;break;case"end":H=U-$+V;break;case"start":default:H=U;break}return Math.max(0,Math.min(H,B))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var DJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(N)=>{if(N<=0)return 0;if(!j)return Math.ceil(N/Q);let M=0,X=0,_=0;for(let F=0;F<N;F++)if(j(F)){if(_++,X>0)M++,X=0;M++,X=0}else if(X++,X>=Q)M++,X=0;if(X>0)M++;return M},K=(N)=>{return q.row=U(N),q.col=V(N),q},U=(N)=>{if(!j)return Math.floor(N/Q);let M=0,X=0;for(let _=0;_<=N;_++)if(j(_)){if(X>0)M++,X=0;if(_===N)return M;M++,X=0}else{if(_===N)return M;if(X++,X>=Q)M++,X=0}return console.warn(`⚠️ getRow(${N}) fell through - returning ${M}`),M},V=(N)=>{if(!j)return N%Q;if(j(N))return 0;let M=0;for(let X=0;X<=N;X++)if(j(X))M=0;else{if(X===N)return M;if(M++,M>=Q)M=0}return M},Z=(N,M,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,N*Q),x=Math.min(X-1,(M+1)*Q-1);return{start:p,end:x}}let _=-1,F=-1,C=0,z=0;for(let p=0;p<X;p++){if(j(p)){if(z>0)C++,z=0;if(C>=N&&C<=M){if(_===-1)_=p;F=p}C++,z=0}else{if(C>=N&&C<=M){if(_===-1)_=p;F=p}if(z++,z>=Q)C++,z=0}if(C>M&&z===0)break}if(_===-1)return{start:0,end:-1};return{start:_,end:F}},B=(N,M,X)=>{if(M<0||M>=Q)return-1;let _=N*Q+M;if(_<0||_>=X)return-1;return _},H=(N)=>{let M=(Q-1)*$;return Math.max(0,(N-M)/Q)};return{get columns(){return Q},get gap(){return $},update:(N)=>{if(N.columns!==void 0)Q=Math.max(1,Math.floor(N.columns));if(N.gap!==void 0)$=N.gap;if(N.isHeaderFn!==void 0)j=N.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:V,getItemRange:Z,getItemIndex:B,getColumnWidth:H,getColumnOffset:(N,M)=>{let X=H(M);return N*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,_)=>({def:X,index:_,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},V=(X)=>{if(Y.length===0){K=0;return}let _=0,F=0;for(let C=0;C<Y.length;C++){let z=Y[C],p=z.def;if(p.width!==void 0)z.width=v2(p.width,z.minWidth,z.maxWidth),_+=z.width;else F++}if(F>0){let z=Math.max(0,X-_)/F;for(let p=0;p<Y.length;p++){let x=Y[p];if(x.def.width===void 0)x.width=v2(z,x.minWidth,x.maxWidth)}}Z()},Z=()=>{let X=0;for(let _=0;_<Y.length;_++){let F=Y[_];F.offset=X,X+=F.width}K=X},B=(X,_)=>{if(X<0||X>=Y.length)return 0;let F=Y[X];if(!F.resizable)return F.width;let C=v2(_,F.minWidth,F.maxWidth);return F.width=C,Z(),C},H=(X)=>{return Y[X]},W=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let _=0,F=Y.length-1;while(_<F){let C=_+F>>>1,z=Y[C];if(X<z.offset)F=C-1;else if(X>=z.offset+z.width)_=C+1;else return z}return Y[_]},w=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},N=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},M=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:V,updateColumns:M,resizeColumn:B,getColumn:H,getColumnAtX:W,getColumnOffset:w,getColumnWidth:N}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let V=document.createElement("div");V.className=`${j}-table-header`,V.setAttribute("role","row"),V.setAttribute("aria-rowindex","1"),V.style.height=`${$}px`;let Z=document.createElement("div");Z.className=`${j}-table-header-scroll`,Z.setAttribute("role","presentation"),V.appendChild(Z),U.appendChild(V),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let B=[],H=[],W=[],w=!0,N=null,M="asc",X=null,_=!1,F=-1,C=0,z=0,p=(E,b)=>{let k=document.createElement("div");k.className=`${j}-table-header-cell`,k.setAttribute("role","columnheader"),k.setAttribute("aria-colindex",String(b+1)),k.dataset.columnKey=E.def.key;let l=E.def.align;if(l==="center")k.classList.add(`${j}-table-header-cell--center`);else if(l==="right")k.classList.add(`${j}-table-header-cell--right`);let D=document.createElement("div");D.className=`${j}-table-header-content`;let y=E.def.header?E.def.header(E.def):E.def.label;if(typeof y==="string")D.textContent=y;else D.appendChild(y);if(k.appendChild(D),E.def.sortable){let S=document.createElement("span");S.className=`${j}-table-header-sort`,S.setAttribute("aria-hidden","true"),k.appendChild(S),W.push(S),k.classList.add(`${j}-table-header-cell--sortable`)}else W.push(null);if(E.resizable){let S=document.createElement("div");S.className=`${j}-table-header-resize`,S.dataset.resizeIndex=String(b),k.appendChild(S),H.push(S)}return k},x=(E)=>{X=E,Z.textContent="",B=[],H=[],W=[];let b=E.columns;for(let k=0;k<b.length;k++){let l=b[k],D=p(l,k);B.push(D),Z.appendChild(D)}if(a(E),N)n(N,M)},a=(E)=>{X=E;let b=E.columns;Z.style.width=`${E.totalWidth}px`;for(let k=0;k<B.length&&k<b.length;k++){let l=B[k],D=b[k];l.style.width=`${D.width}px`}},n=(E,b)=>{if(N=E,M=b,!X)return;let k=X.columns;for(let l=0;l<W.length&&l<k.length;l++){let D=W[l];if(!D)continue;if(k[l].def.key===E&&E!==null)D.textContent=b==="asc"?"▲":"▼",D.style.opacity="0.7",B[l].setAttribute("aria-sort",b==="asc"?"ascending":"descending");else D.textContent="",D.style.opacity="0",B[l].removeAttribute("aria-sort")}},e=(E)=>{Z.style.transform=`translateX(${-E}px)`},h=(E)=>{let b=E.target;if(!b.dataset.resizeIndex)return;if(E.preventDefault(),E.stopPropagation(),F=parseInt(b.dataset.resizeIndex,10),!X)return;let k=X.getColumn(F);if(!k||!k.resizable)return;_=!0,C=E.clientX,z=k.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",b.classList.add(`${j}-table-header-resize--active`),b.setPointerCapture(E.pointerId),b.addEventListener("pointermove",s),b.addEventListener("pointerup",r),b.addEventListener("pointercancel",r)},s=(E)=>{if(!_||!X)return;let b=E.clientX-C;if(Math.abs(b)<1)return;let k=Math.max(0,z+b);q(F,k)},r=(E)=>{if(!_)return;let b=E.target;b.removeEventListener("pointermove",s),b.removeEventListener("pointerup",r),b.removeEventListener("pointercancel",r);try{b.releasePointerCapture(E.pointerId)}catch{}b.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",_=!1,F=-1},J2=(E)=>{let b=E.target;if(b.dataset.resizeIndex!==void 0)return;if(_)return;let k=b;while(k&&!k.dataset.columnKey)if(k=k.parentElement,k===V||k===null)return;if(!k||!k.dataset.columnKey)return;let l=k.dataset.columnKey;if(!X)return;let D=X.columns,y=-1;for(let I=0;I<D.length;I++)if(D[I].def.key===l){y=I;break}if(y===-1)return;let S=D[y];if(K)K({key:l,index:y,event:E});if(S.def.sortable&&Y){let I;if(N===l)if(M==="asc")I="desc";else I=null;else I="asc";Y({key:l,index:y,direction:I})}};return V.addEventListener("pointerdown",h),V.addEventListener("click",J2),{element:V,update:a,updateSort:n,rebuild:x,show:()=>{if(w)return;w=!0,V.style.display=""},hide:()=>{if(!w)return;w=!1,V.style.display="none"},destroy:()=>{V.removeEventListener("pointerdown",h),V.removeEventListener("click",J2),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),B=[],H=[],W=[],X=null,w=!1},syncScroll:e}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},WJ=(J,Q,$,j,q,Y,K,U,V)=>{let Z=pJ(),B=new Map,H=-1,W=$,w=null,N=null,M=null,X=(L,G)=>{N=L,M=G},_=(L,G)=>{if(G)L.setAttribute("aria-selected","true");else L.removeAttribute("aria-selected")},F=`${q}-item ${q}-table-row`,C=`${q}-item--selected`,z=`${q}-item--focused`,p=`${q}-table-cell`,x=`${q}-table-cell--center`,a=`${q}-table-cell--right`,n=`${q}-item--odd`,e=`${q}-item--placeholder`,h=`${q}-item--replaced`,s=`${q}-item ${q}-table-row ${q}-table-group-header`,r=`${q}-table-group-header-content`,J2=(L,G,A,R,g=!1)=>{if(A.def.cell){let P=A.def.cell(G,A.def,R);if(typeof P==="string")L.innerHTML=P;else L.replaceChildren(P)}else{let P=G[A.def.key],c=P!=null?String(P):"";if(g&&c)L.innerHTML=`<span>${c}</span>`;else L.textContent=c}},i=(L,G,A,R,g=!1)=>{let P=F;if(U){if(w){let c=w(G);if(c>=0&&(c&1)===1)P+=` ${n}`}else if((G&1)===1)P+=` ${n}`}if(g)P+=` ${e}`;if(A)P+=` ${C}`;if(R)P+=` ${z}`;L.className=P},T=(L,G)=>{let A=G.def.align;if(A==="center")L.classList.add(x),L.classList.remove(a);else if(A==="right")L.classList.add(a),L.classList.remove(x);else L.classList.remove(x,a)},v=(L,G)=>{let R=W.columns.length;if(G.length===R)return G;let g=[];for(let P=0;P<R;P++){let c;if(P<G.length)c=G[P];else c=document.createElement("div"),c.className=p,L.appendChild(c);g.push(c)}for(let P=R;P<G.length;P++)G[P].remove();return g},E=(L,G,A)=>{let R=Z.acquire(),g=L;R.style.width=`${W.totalWidth}px`;let P=A.getSize(G);R.style.height=`${P}px`,R.className=s,R.setAttribute("role","presentation"),R.setAttribute("data-id",String(L.id)),R.setAttribute("data-index",String(G)),R.removeAttribute("aria-selected"),R.removeAttribute("aria-rowindex"),R.replaceChildren();let c=document.createElement("div");if(c.className=r,M){let O=M(g.groupKey,g.groupIndex);if(typeof O==="string")c.innerHTML=O;else c.appendChild(O)}R.appendChild(c);let o=A.getOffset(G);return R.style.transform=`translateY(${o}px)`,{element:R,cells:[],index:G,isGroupHeader:!0,lastItemId:L.id,lastSelected:!1,lastFocused:!1,lastOffset:o,lastHeight:P}},b=(L,G,A,R,g)=>{let P=Z.acquire();P.style.width=`${W.totalWidth}px`;let c=g.getSize(G);P.style.height=`${c}px`;let o=String(L.id).startsWith("__placeholder_");i(P,G,A,R,o),P.setAttribute("role","row"),P.setAttribute("data-id",String(L.id)),P.setAttribute("data-index",String(G)),P.id=`${Y}-${G}`,P.setAttribute("aria-rowindex",String(G+2));let O=K();if(O!==H)H=O;_(P,A);let f=v(P,[]),m=W.columns;for(let Q2=0;Q2<f.length&&Q2<m.length;Q2++){let $2=f[Q2],u=m[Q2];$2.style.left=`${u.offset}px`,$2.style.width=`${u.width}px`,$2.setAttribute("role","gridcell"),$2.setAttribute("aria-colindex",String(Q2+1)),T($2,u),J2($2,L,u,G,o)}let t=g.getOffset(G);return P.style.transform=`translateY(${t}px)`,{element:P,cells:f,index:G,isGroupHeader:!1,lastItemId:L.id,lastSelected:A,lastFocused:R,lastOffset:t,lastHeight:c}},k=(L,G,A,R)=>{for(let[O,f]of B)if(O<G.start||O>G.end)Z.release(f.element),B.delete(O);let g=!1,P=K();if(P!==H)H=P,g=!0;let c=null,o=Q();w=typeof U==="string"&&V?V():null;for(let O=G.start;O<=G.end;O++){let f=O-G.start,m=L[f];if(!m)continue;let t=A.has(m.id),Q2=O===R,$2=N?N(m):!1,u=B.get(O);if(u){if(u.isGroupHeader!==$2){Z.release(u.element),B.delete(O);let K2=$2?E(m,O,o):b(m,O,t,Q2,o);if(B.set(O,K2),!c)c=document.createDocumentFragment();c.appendChild(K2.element);continue}if($2){if(u.lastItemId!==m.id){let U2=m,j2=u.element.firstElementChild;if(j2&&M){let X2=M(U2.groupKey,U2.groupIndex);if(typeof X2==="string")j2.innerHTML=X2;else j2.replaceChildren(X2)}u.element.setAttribute("data-id",String(m.id)),u.lastItemId=m.id}let Y2=o.getOffset(O);if(u.lastOffset!==Y2)u.lastOffset=Y2,u.element.style.transform=`translateY(${Y2}px)`;let B2=o.getSize(O);if(u.lastHeight!==B2)u.lastHeight=B2,u.element.style.height=`${B2}px`}else{let K2=u.lastItemId!==m.id,Y2=u.lastSelected!==t,B2=u.lastFocused!==Q2;if(K2){let X2=u.lastItemId!=null&&String(u.lastItemId).startsWith("__placeholder_"),q2=String(m.id).startsWith("__placeholder_"),N2=W.columns;for(let D2=0;D2<u.cells.length&&D2<N2.length;D2++)J2(u.cells[D2],m,N2[D2],O,q2);if(i(u.element,O,t,Q2,q2),u.element.setAttribute("data-id",String(m.id)),_(u.element,t),X2&&!q2)u.element.classList.add(h),setTimeout(()=>{u.element.classList.remove(h)},300);u.lastItemId=m.id,u.lastSelected=t,u.lastFocused=Q2}else if(Y2||B2){let X2=String(m.id).startsWith("__placeholder_");i(u.element,O,t,Q2,X2),_(u.element,t),u.lastSelected=t,u.lastFocused=Q2}let U2=o.getOffset(O);if(u.lastOffset!==U2)u.lastOffset=U2,u.element.style.transform=`translateY(${U2}px)`;let j2=o.getSize(O);if(u.lastHeight!==j2)u.lastHeight=j2,u.element.style.height=`${j2}px`;if(g)u.element.setAttribute("aria-rowindex",String(O+2))}}else{let K2=$2?E(m,O,o):b(m,O,t,Q2,o);if(B.set(O,K2),!c)c=document.createDocumentFragment();c.appendChild(K2.element)}}if(c)J.appendChild(c)},l=(L,G,A,R)=>{let g=B.get(L);if(!g)return;if(g.isGroupHeader)return;let P=g.lastItemId!==G.id,c=g.lastSelected!==A,o=g.lastFocused!==R;if(P||c||o){if(P){let O=W.columns;for(let f=0;f<g.cells.length&&f<O.length;f++)J2(g.cells[f],G,O[f],L);g.element.setAttribute("data-id",String(G.id)),g.lastItemId=G.id}i(g.element,L,A,R),_(g.element,A),g.lastSelected=A,g.lastFocused=R}},D=(L,G,A)=>{let R=B.get(L);if(!R)return;if(R.isGroupHeader)return;let g=R.lastSelected!==G,P=R.lastFocused!==A;if(g||P)i(R.element,L,G,A),_(R.element,G),R.lastSelected=G,R.lastFocused=A},y=(L)=>{W=L;let G=L.columns;for(let[,A]of B)if(A.element.style.width=`${L.totalWidth}px`,A.cells.length>0)for(let R=0;R<A.cells.length&&R<G.length;R++){let g=A.cells[R],P=G[R];g.style.left=`${P.offset}px`,g.style.width=`${P.width}px`}},S=(L)=>{return B.get(L)?.element},I=()=>{for(let[,L]of B)Z.release(L.element);B.clear(),H=-1};return{render:k,updateItem:l,updateItemClasses:D,getElement:S,updateColumnLayout:y,setGroupHeaderFn:X,clear:I,destroy:()=>{I(),Z.clear()}}};var OJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let _=q+$;for(let F=0;F<Q;F++)Y[F]=F*_};K();let U=[],V=0,Z=[],B=(X)=>{let _=0,F=X[0];for(let C=1;C<X.length;C++){let z=X[C];if(z<F)F=z,_=C}return _},H=(X,_)=>{if(X<=0)return V=0,U=[],[];let F=Array(Q).fill(0),C=Array(Q);for(let x=0;x<Q;x++)C[x]=[];let z=Array(X);for(let x=0;x<X;x++){let a=B(F),n=_(x),e=F[a];z[x]={index:x,x:Y[a],y:e,lane:a,size:n,crossSize:q},C[a].push(x),F[a]=e+n+$}U=C;let p=0;for(let x=0;x<Q;x++){let a=F[x],n=a>0?a-$:0;if(n>p)p=n}return V=p,z},W=(X)=>{if(X.length===0)return V>0?V:0;if(V>0)return V;let _=Array(Q).fill(0);for(let C of X){let z=C.y+C.size,p=_[C.lane];if(z>p)_[C.lane]=z}let F=0;for(let C=0;C<Q;C++)if(_[C]>F)F=_[C];return F},w=(X,_,F)=>{if(X.length===0||F<=_)return Z.length=0,Z;if(U.length===0||U.length!==Q)return N(X,_,F);Z.length=0;for(let C=0;C<Q;C++){let z=U[C],p=z.length;if(p===0)continue;let x=0,a=p;while(x<a){let n=x+a>>>1,e=X[z[n]];if(e.y+e.size<=_)x=n+1;else a=n}for(let n=x;n<p;n++){let e=X[z[n]];if(e.y>=F)break;Z.push(e)}}return Z},N=(X,_,F)=>{let C=[];for(let z of X)if(z.y+z.size>_&&z.y<F)C.push(z);return C};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let _=!1;if(X.columns!==void 0){let F=Math.max(1,Math.floor(X.columns));if(F!==Q)Q=F,_=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,_=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,_=!0;if(_)K()},calculateLayout:H,getTotalSize:W,getVisibleItems:w}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,V=new Set,Z=0,B="",H=-1,W={selected:!1,focused:!1},w=(h,s)=>{return W.selected=h,W.focused=s,W},N=`${$}-item ${$}-masonry-item`,M=`${$}-item--selected`,X=`${$}-item--focused`,_=(h,s)=>{if(typeof s==="string")h.innerHTML=s;else h.replaceChildren(s)},F=(h,s,r)=>{h.classList.toggle(M,s),h.classList.toggle(X,r)},C=(h,s)=>{if(j)h.style.transform=`translate(${Math.round(s.y)}px, ${Math.round(s.x)}px)`;else h.style.transform=`translate(${Math.round(s.x)}px, ${Math.round(s.y)}px)`},z=(h,s)=>{if(j)h.style.width=`${s.size}px`,h.style.height=`${s.crossSize}px`;else h.style.width=`${s.crossSize}px`,h.style.height=`${s.size}px`},p=(h,s,r,J2,i)=>{let T=K.acquire(),v=w(J2,i);if(T.className=N,T.dataset.index=String(h),T.dataset.id=String(s.id),T.dataset.lane=String(r.lane),T.ariaSelected=String(J2),Y)T.id=`${Y}-item-${h}`;if(q){let b=q();if(b!==H)H=b,B=String(b);T.setAttribute("aria-setsize",B),T.setAttribute("aria-posinset",String(h+1))}z(T,r);let E=Q(s,h,v);return _(T,E),F(T,J2,i),C(T,r),{element:T,lastItemId:s.id,lastSelected:J2,lastFocused:i,lastY:r.y,lastX:r.x,lastSize:r.size,lastCrossSize:r.crossSize,lastSeenFrame:Z}},x=(h,s,r,J2)=>{Z++,V.clear();for(let T=0;T<s.length;T++)V.add(s[T].index);for(let[T,v]of U)if(V.has(T))v.lastSeenFrame=Z;else if(Z-v.lastSeenFrame>hJ)K.release(v.element),U.delete(T);let i=null;for(let T=0;T<s.length;T++){let v=s[T],E=v.index,b=h(E);if(!b)continue;let k=r.has(b.id),l=E===J2,D=U.get(E);if(D){let y=D.lastItemId!==b.id,S=D.lastSelected!==k,I=D.lastFocused!==l,d=D.lastY!==v.y||D.lastX!==v.x,L=D.lastSize!==v.size||D.lastCrossSize!==v.crossSize;if(y||S||I){let G=w(k,l),A=Q(b,E,G);_(D.element,A),F(D.element,k,l),D.element.dataset.id=String(b.id),D.element.ariaSelected=String(k),D.lastItemId=b.id,D.lastSelected=k,D.lastFocused=l}if(L)z(D.element,v),D.lastSize=v.size,D.lastCrossSize=v.crossSize;if(d)C(D.element,v),D.lastY=v.y,D.lastX=v.x}else{let y=p(E,b,v,k,l);if(!i)i=document.createDocumentFragment();i.appendChild(y.element),U.set(E,y)}}if(i)J.appendChild(i)},a=()=>{for(let{element:h}of U.values())K.release(h);U.clear(),J.innerHTML=""};return{render:x,getElement:(h)=>U.get(h)?.element,sortDOM:()=>{A2(J,U.keys(),(h)=>U.get(h)?.element)},clear:a,destroy:()=>{a(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,V)=>{if(!J[U])J[U]=new Set;return J[U].add(V),()=>$(U,V)},$=(U,V)=>{J[U]?.delete(V)};return{on:Q,off:$,emit:(U,V)=>{J[U]?.forEach((Z)=>{try{Z(V)}catch(B){console.error(`[vlist] Error in event handler for "${String(U)}":`,B)}})},once:(U,V)=>{let Z=(B)=>{$(U,Z),V(B)};return Q(U,Z)},clear:(U)=>{if(U)delete J[U];else for(let V in J)delete J[V]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,V=(T)=>{let v=Y.get(T);if(!v)v={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(T,v);else v.lastAccess=Date.now();return v},Z=(T)=>{return Math.floor(T/Q)},B=(T)=>{return T%Q},H=()=>K,W=(T)=>{K=T},w=(T)=>{if(T<0||T>=K)return;let v=Z(T),E=Y.get(v);if(!E)return;return E.items[B(T)]},N=(T)=>{if(T<0||T>=K)return!1;let v=Z(T),E=Y.get(v);if(!E)return!1;return E.items[B(T)]!==void 0},M=(T,v)=>{let E=Z(T),b=V(E),k=B(T),l=b.items[k]===void 0;if(b.items[k]=v,l)b.count++,U++;if(T>=K)K=T+1},X=(T,v)=>{for(let E=0;E<v.length;E++){let b=v[E];if(b!==void 0)M(T+E,b)}},_=(T)=>{if(T<0||T>=K)return!1;let v=Z(T),E=Y.get(v),b=B(T);if(!(E!==void 0&&E.items[b]!==void 0))return!1;let l=v,D=Array.from(Y.keys()).filter((S)=>S>=l).sort((S,I)=>S-I),y=[];for(let S of D){let I=Y.get(S),d=S*Q;for(let L=0;L<Q;L++){if(I.items[L]===void 0)continue;let G=d+L;if(G<=T)continue;y.push({oldIndex:G,item:I.items[L]})}}if(E.items[b]=void 0,E.count--,U--,E.count===0)Y.delete(v);for(let{oldIndex:S}of y){let I=Z(S),d=Y.get(I);if(!d)continue;let L=B(S);if(d.items[L]!==void 0){if(d.items[L]=void 0,d.count--,U--,d.count===0)Y.delete(I)}}for(let{oldIndex:S,item:I}of y){let d=S-1,L=Z(d),G=V(L),A=B(d);G.items[A]=I,G.count++,U++}return K--,!0},F=(T,v)=>{let E=[];for(let b=T;b<=v&&b<K;b++)E.push(w(b));return E},C=(T,v)=>{for(let E=T;E<=v&&E<K;E++)if(!N(E))return!1;return!0},z=()=>{let T=[],v=null,E=Array.from(Y.keys()).sort((b,k)=>b-k);for(let b of E){let k=Y.get(b);if(!k)continue;let l=b*Q;for(let D=0;D<Q;D++){let y=l+D;if(y>=K)break;if(k.items[D]!==void 0)if(v===null)v={start:y,end:y};else if(y===v.end+1)v.end=y;else T.push(v),v={start:y,end:y};else if(v!==null)T.push(v),v=null}}if(v!==null)T.push(v);return T},p=(T,v)=>{let E=[],b=null;for(let k=T;k<=v&&k<K;k++)if(!N(k))if(b===null)b={start:k,end:k};else b.end=k;else if(b!==null)E.push(b),b=null;if(b!==null)E.push(b);return E},x=(T)=>{return Y.has(T)},a=(T)=>{let v=Y.get(T);if(v)v.lastAccess=Date.now()},n=(T,v)=>{if(T>v||Y.size===0)return;let E=Date.now(),b=Z(Math.max(0,T)),k=Z(Math.min(K-1,v));for(let l=b;l<=k;l++){let D=Y.get(l);if(D)D.lastAccess=E}},e=(T,v)=>{if(U<=$)return 0;let E=Math.max(0,T-j),b=Math.min(K-1,v+j),k=Z(E),l=Z(b),D=0,y=[];for(let[S,I]of Y)if(S<k||S>l)D+=I.count,y.push(S),U-=I.count,Y.delete(S);if(D>0&&q)q(D,y);return D},h=()=>{if(U<=$)return 0;let T=Array.from(Y.entries()).sort(([,b],[,k])=>b.lastAccess-k.lastAccess),v=0,E=[];for(let[b,k]of T){if(U<=$)break;v+=k.count,U-=k.count,E.push(b),Y.delete(b)}if(v>0&&q)q(v,E);return v},s=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},r=()=>U,J2=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:H,setTotal:W,get:w,has:N,set:M,setRange:X,delete:_,getRange:F,isRangeLoaded:C,getLoadedRanges:z,findUnloadedRanges:p,getChunkIndex:Z,isChunkLoaded:x,touchChunk:a,touchChunksForRange:n,evictDistant:e,evictToLimit:h,getStats:s,getCachedCount:r,clear:J2,reset:()=>{J2(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},W2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),V=Y.start;for(let Z of U){if(Z.end<V)continue;if(Z.start>Y.end)break;if(Z.start>V)K.push({start:V,end:Math.min(Z.start-1,Y.end)});if(V=Z.end+1,V>Y.end)break}if(V<=Y.end)K.push({start:V,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(H)=>{if(q||H.length===0)return;let W=Math.min(H.length,$);for(let w=0;w<W;w++){let N=H[w];if(!N||typeof N!=="object")continue;let M={};for(let[X,_]of Object.entries(N)){if(X.startsWith("_")||X==="id")continue;M[X]=String(_??"").length}if(Object.keys(M).length>0)j.push(M)}q=!0},U=()=>q,V=(H)=>{let W={id:`${l2}${Y++}`,[z2]:!0,_index:H};if(j.length===0)return W.label=Q.repeat(12),W;let w=j[H%j.length];for(let[N,M]of Object.entries(w))W[N]=Q.repeat(Math.max(1,M));return W};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:V,generateRange:(H,W)=>{let w=[];for(let N=H;N<=W;N++)w.push(V(N));return w},clear:()=>{j=[],q=!1,Y=0}}},_2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!_2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:V,onItemsEvicted:Z}=J,B=F2({...q,onEvict:(O,f)=>{Z?.(O),p()}}),H=null,W=()=>{if(!H)H=H2(Y);return H},w=new Map,N=!1,M,X=!0,_,F=[],C=0,z=new Map,p=()=>{U?.(i())},x=()=>{w.clear();let O=B.getLoadedRanges();for(let f of O)for(let m=f.start;m<=f.end;m++){let t=B.get(m);if(t&&!_2(t))w.set(t.id,m)}},a=(O,f)=>{if(!_2(f))w.set(f.id,O)},n=(O)=>{w.delete(O)},e=(O,f)=>{return`${O}-${f}`},h=()=>B.getTotal(),s=()=>B.getCachedCount(),r=()=>N,J2=()=>X,i=()=>({total:B.getTotal(),cached:B.getCachedCount(),isLoading:N,pendingRanges:F,error:M,hasMore:X,cursor:_}),T=()=>B,v=()=>W(),E=(O)=>{let f=B.get(O);if(f!==void 0)return f;if(O>=0&&O<B.getTotal())return W().generate(O);return},b=(O)=>{let f=w.get(O);if(f===void 0)return;return B.get(f)},k=(O)=>{return w.get(O)??-1},l=(O)=>{let f=B.get(O);return f!==void 0&&!_2(f)},D=(O,f)=>{let m=[],t=B.getTotal(),Q2=0,$2=0;B.touchChunksForRange(O,Math.min(f,t-1));for(let u=O;u<=f&&u<t;u++){let K2=B.get(u);if(K2!==void 0)m.push(K2),Q2++;else m.push(W().generate(u)),$2++}return m},y=(O)=>{B.setTotal(O),X=B.getCachedCount()<O,p()},S=(O,f=0,m)=>{if(Q&&O.length>0){let t=W();if(!t.hasAnalyzedStructure())t.analyzeStructure(O)}for(let t=0;t<O.length;t++){let Q2=O[t];if(Q2!==void 0){let $2=f+t;B.set($2,Q2),a($2,Q2)}}if(m!==void 0)B.setTotal(m);else if(f+O.length>B.getTotal())B.setTotal(f+O.length);if(B.getCachedCount()>=B.getTotal()&&B.getTotal()>0)X=!1;p(),V?.(O,f,B.getTotal())},I=(O,f)=>{let m=w.get(O);if(m===void 0)return!1;let t=B.get(m);if(!t)return!1;let Q2={...t,...f};if(B.set(m,Q2),f.id!==void 0&&f.id!==O)n(O),a(m,Q2);return p(),!0},d=(O)=>{let f=w.get(O);if(f===void 0)return!1;if(!B.delete(f))return!1;return x(),z.clear(),p(),!0},L=async(O,f)=>{if(!Q)return;let m=e(O,f);if(z.has(m))return;let t=B.getLoadedRanges(),Q2=W2({start:O,end:f},t,B.chunkSize);if(Q2.length===0)return;let $2=B.chunkSize,u=[];for(let Y2 of Q2){let B2=Math.floor(Y2.start/$2),U2=Math.floor(Y2.end/$2);for(let j2=B2;j2<=U2;j2++){let X2=j2*$2,q2=X2+$2-1,N2=e(X2,q2);if(!u.some((D2)=>D2.start===X2)&&!z.has(N2))u.push({start:X2,end:q2})}}let K2=[];for(let Y2 of Q2){let B2=Math.floor(Y2.start/$2),U2=Math.floor(Y2.end/$2);for(let j2=B2;j2<=U2;j2++){let X2=j2*$2,q2=X2+$2-1,N2=e(X2,q2);if(z.has(N2)){let D2=z.get(N2);if(!K2.includes(D2))K2.push(D2)}}}for(let Y2 of u){let B2=e(Y2.start,Y2.end),U2=(async()=>{F.push(Y2),N=!0,M=void 0,p();try{let j2=Y2.end-Y2.start+1,X2={offset:Y2.start,limit:j2,cursor:void 0},q2=await Q.read(X2);if(S(q2.items,Y2.start,q2.total),q2.cursor)_=q2.cursor;let N2=Y2.start+q2.items.length;if(N2>=C){if(C=N2,q2.hasMore!==void 0)X=q2.hasMore;else if(q2.total!==void 0)X=N2<q2.total}}catch(j2){M=j2 instanceof Error?j2:Error(String(j2))}finally{z.delete(B2),F=F.filter((j2)=>j2.start!==Y2.start||j2.end!==Y2.end),N=z.size>0,p()}})();z.set(B2,U2),K2.push(U2)}await Promise.all(K2)},G=async(O,f)=>{if(B.isRangeLoaded(O,f))return;await L(O,f)},A=async()=>{if(!Q)return;await L(0,K-1)},R=async()=>{if(!Q||N||!X)return!1;let O=B.getCachedCount(),f=B.getTotal(),m=O,t=Math.min(m+K-1,f>0?f-1:m+K-1);if(m>=f&&f>0)return X=!1,!1;return await L(m,t),B.getCachedCount()>O},g=async()=>{if(B.clear(),B.setTotal(0),w.clear(),H)H.clear();z.clear(),F=[],N=!1,_=void 0,X=!0,C=0,M=void 0,p()},P=(O,f)=>{if(B.evictDistant(O,f)>0)x()},c=()=>{B.clear(),w.clear(),_=void 0,M=void 0,F=[],N=!1,p()},o=()=>{if(B.reset(),w.clear(),H)H.clear();_=void 0,X=!0,C=0,M=void 0,F=[],N=!1,p()};if($&&$.length>0)S($,0,j??$.length);else if(j!==void 0)B.setTotal(j),p();return{getState:i,getTotal:h,getCached:s,getIsLoading:r,getHasMore:J2,getStorage:T,getPlaceholders:v,getItem:E,getItemById:b,getIndexById:k,isItemLoaded:l,getItemsInRange:D,setTotal:y,setItems:S,updateItem:I,removeItem:d,loadRange:L,ensureRange:G,loadInitial:A,loadMore:R,reload:g,evictDistant:P,clear:c,reset:o}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:V=!0,hoverZoneWidth:Z=16,showOnViewportEnter:B=!0}=$,H=0,W=0,w=0,N=0,M=!1,X=!1,_=0,F=0,C=0,z=null,p=!1,x=null,a=null,n=q?"width":"height",e=q?"translateX":"translateY",h=q?(P)=>P.clientX:(P)=>P.clientY,s=q?"left":"top",r=document.createElement("div"),J2=document.createElement("div"),i=V?document.createElement("div"):null,T=()=>{if(r.className=`${j}-scrollbar`,J2.className=`${j}-scrollbar-thumb`,q)r.classList.add(`${j}-scrollbar--horizontal`);if(r.appendChild(J2),J.appendChild(r),i){if(i.className=`${j}-scrollbar-hover`,q)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${Z}px`;else i.style.width=`${Z}px`;J.appendChild(i)}},v=()=>{if(z)clearTimeout(z),z=null},E=()=>{if(!Y)return;v(),z=setTimeout(k,K)},b=()=>{if(H<=W)return;if(v(),!p)r.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!M&&!X)E()},k=()=>{if(M||X)return;r.classList.remove(`${j}-scrollbar--visible`),p=!1},l=(P,c)=>{H=P,W=c;let o=H>W;if(r.style.display=o?"":"none",!o){k();return}let O=W/H;w=Math.max(U,O*W),J2.style[n]=`${w}px`,N=W-w,D(C)},D=(P)=>{if(C=P,H<=W||N<=0)return;let c=H-W,O=Math.min(1,Math.max(0,P/c))*N;J2.style.transform=`${e}(${O}px)`},y=(P)=>{if(P.target===J2)return;let c=r.getBoundingClientRect(),f=h(P)-c[s]-w/2,t=Math.max(0,Math.min(f,N))/N,Q2=H-W,$2=t*Q2;Q($2),b()},S=(P)=>{P.preventDefault(),P.stopPropagation(),M=!0,_=h(P),F=C,v(),r.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",I),document.addEventListener("mouseup",d)},I=(P)=>{if(!M)return;let c=h(P)-_,o=N>0?c/N:0,O=H-W,f=o*O,m=Math.max(0,Math.min(F+f,O)),Q2=m/O*N;if(J2.style.transform=`${e}(${Q2}px)`,a=m,x===null)x=requestAnimationFrame(()=>{if(a!==null)Q(a);x=null})},d=()=>{if(M=!1,x!==null)cancelAnimationFrame(x),x=null;if(a!==null)Q(a),a=null;if(r.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)E();document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",d)},L=()=>{if(B)b()},G=()=>{if(!M){if(X=!1,Y)E()}},A=()=>{X=!0,v(),b()},R=()=>{if(X=!1,!M&&Y)E()},g=()=>{if(v(),x!==null)cancelAnimationFrame(x),x=null;if(r.removeEventListener("click",y),r.removeEventListener("mouseenter",A),r.removeEventListener("mouseleave",R),J2.removeEventListener("mousedown",S),J.removeEventListener("mouseenter",L),J.removeEventListener("mouseleave",G),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",d),i){if(i.removeEventListener("mouseenter",A),i.removeEventListener("mouseleave",R),i.parentNode)i.parentNode.removeChild(i)}if(r.parentNode)r.parentNode.removeChild(r)};if(T(),r.addEventListener("click",y),r.addEventListener("mouseenter",A),r.addEventListener("mouseleave",R),J2.addEventListener("mousedown",S),J.addEventListener("mouseenter",L),J.addEventListener("mouseleave",G),i)i.addEventListener("mouseenter",A),i.addEventListener("mouseleave",R);return{show:b,hide:k,updateBounds:l,updatePosition:D,isVisible:()=>p,destroy:g}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,V=$-K.time;J.velocity=V>0?U/V:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:V,horizontal:Z=!1}=Q,B=!!V,H=0,W=0,w=B?Z?window.innerWidth:window.innerHeight:Z?J.clientWidth:J.clientHeight,N=Q.compressed??!1,M=Q.compression,X=zJ(),_=!1,F=null,z=R2(()=>{let G=Z?J.scrollLeft:J.scrollTop,A=G>=H?"down":"up";if(X=T2(X,G),H=G,K)K({scrollTop:H,direction:A,velocity:X.velocity});h()}),x=R2(()=>{let G=J.getBoundingClientRect(),A=Z?Math.max(0,-G.left):Math.max(0,-G.top),R=A>=H?"down":"up";if(X=T2(X,A),H=A,!_)_=!0;if(K)K({scrollTop:H,direction:R,velocity:X.velocity});h()}),a=(G)=>{G.preventDefault()},n=(G)=>{if(G.deltaX)return;G.preventDefault(),J.scrollLeft+=G.deltaY},e=(G)=>{if(!N)return;G.preventDefault();let A=(Z?G.deltaX||G.deltaY:G.deltaY)*j,R=H+A;if(q)R=H+A*0.3;if(R=Math.max(0,Math.min(R,W)),R!==H){let P=R>=H?"down":"up";if(X=T2(X,R),H=R,!_)_=!0;if(K)K({scrollTop:H,direction:P,velocity:X.velocity});h()}},h=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(_=!1,X=zJ(H),U)U()},Y)},s=(G)=>{if(N)return;if(N=!0,M=G,W=G.virtualSize-w,B)return;if(z.cancel(),J.removeEventListener("scroll",z),!$)J.removeEventListener("wheel",a);else if(Z)J.removeEventListener("wheel",n);if(Z)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",e,{passive:!1});let A=Z?J.scrollLeft:J.scrollTop;if(A>0){let R=Z?M?.actualSize??J.scrollWidth:M?.actualSize??J.scrollHeight;H=A/R*W}if(Z)J.scrollLeft=0;else J.scrollTop=0},r=()=>{if(!N)return;if(N=!1,B){M=void 0;return}if(J.removeEventListener("wheel",e),Z)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",a,{passive:!1});else if(Z)J.addEventListener("wheel",n,{passive:!1});if(M&&H>0){let A=H/W*(M.actualSize-w);if(Z)J.scrollLeft=A;else J.scrollTop=A}M=void 0},J2=()=>{if(B||N)return H;return Z?J.scrollLeft:J.scrollTop},i=(G,A=!1)=>{let R=Math.max(0,Math.min(G,W||1/0));if(B){let g=J.getBoundingClientRect();if(Z){let P=g.left+window.scrollX;window.scrollTo({left:P+R,behavior:A?"smooth":"auto"})}else{let P=g.top+window.scrollY;window.scrollTo({top:P+R,behavior:A?"smooth":"auto"})}}else if(N){if(R===H)return;let P=R>=H?"down":"up";if(X=T2(X,R),H=R,!_)_=!0;if(K)K({scrollTop:H,direction:P,velocity:X.velocity});h()}else if(Z)J.scrollTo({left:R,behavior:A?"smooth":"auto"});else J.scrollTo({top:R,behavior:A?"smooth":"auto"})},T=(G)=>{i(J2()+G)},v=()=>{return J2()<=0},E=(G=0)=>{let A=J2(),R=B||N?W:Z?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return A>=R-G},b=()=>{let G=J2(),A=B||N?W:Z?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(A<=0)return 0;return Math.min(1,Math.max(0,G/A))},k=(G)=>{if(G.compression)M=G.compression,W=M.virtualSize-w},l=()=>N,D=()=>Math.abs(X.velocity),y=()=>mJ(X),S=()=>_,I=()=>B,d=(G)=>{if(w=G,M)W=M.virtualSize-w},L=()=>{if(F)clearTimeout(F);if(B)x.cancel(),window.removeEventListener("scroll",x);else z.cancel(),J.removeEventListener("scroll",z),J.removeEventListener("wheel",e),J.removeEventListener("wheel",a),J.removeEventListener("wheel",n)};if(B){if(N&&M)W=M.virtualSize-w;window.addEventListener("scroll",x,{passive:!0})}else if(N&&M){if(W=M.virtualSize-w,Z)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",e,{passive:!1})}else{if(Z)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",a,{passive:!1});else if(Z)J.addEventListener("wheel",n,{passive:!1})}return{getScrollTop:J2,scrollTo:i,scrollBy:T,isAtTop:v,isAtBottom:E,getScrollPercentage:b,getVelocity:D,isTracking:y,isScrolling:S,updateConfig:k,enableCompression:s,disableCompression:r,isCompressed:l,isWindowMode:I,updateContainerHeight:d,destroy:L}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(V){if(Q=V,V>cJ&&V<dJ)$+=V,j++}function K(){let V=J.getTotal();if(V===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let B=J.getContainerSize();if(B<=0)return 0;let H=J.getScrollPosition(),W=typeof J.getColumns==="function"?J.getColumns():1,N=Math.ceil(V/W)*Z,X=Math.min(N,Z2)-B,_=N-B,F=X>0?_/X:1,C=H*F,z=Math.ceil((C+B)/Z);return Math.min(z*W,V)}function U(){let V=J.getTotal(),Z=K();return{progress:V>0?Math.min(100,Math.max(0,Z/V*100)):0,velocity:Q,velocityAvg:q(),itemCount:Z,total:V}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,_2 as isPlaceholderItem,$J as isInRange,O2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,M2 as getScaleState,ZJ as getScaleInfo,M2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,WJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,V2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,OJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,_J as createGridRenderer,DJ as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,W2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,Z2 as MAX_VIRTUAL_SIZE};
|
|
@@ -39,6 +39,8 @@ export interface CompressionContext {
|
|
|
39
39
|
totalItems: number;
|
|
40
40
|
containerSize: number;
|
|
41
41
|
rangeStart: number;
|
|
42
|
+
/** Pre-computed compression state (includes force flag) */
|
|
43
|
+
compression?: CompressionState;
|
|
42
44
|
}
|
|
43
45
|
/** DOM structure created by createDOMStructure */
|
|
44
46
|
export interface DOMStructure {
|
|
@@ -33,8 +33,14 @@ export interface CompressionState {
|
|
|
33
33
|
/**
|
|
34
34
|
* Calculate compression state for a list
|
|
35
35
|
* Pure function - no side effects
|
|
36
|
+
*
|
|
37
|
+
* @param _totalItems - Total number of items
|
|
38
|
+
* @param sizeCache - Size cache for item sizes/offsets
|
|
39
|
+
* @param force - When true, enables compressed mode even if total size is under the limit.
|
|
40
|
+
* Useful for testing, consistent UX, or preemptively enabling compression
|
|
41
|
+
* before the list grows past the browser limit.
|
|
36
42
|
*/
|
|
37
|
-
export declare const getCompressionState: (_totalItems: number, sizeCache: SizeCache) => CompressionState;
|
|
43
|
+
export declare const getCompressionState: (_totalItems: number, sizeCache: SizeCache, force?: boolean) => CompressionState;
|
|
38
44
|
/**
|
|
39
45
|
* Calculate visible range with compression support
|
|
40
46
|
* Pure function - no side effects
|
|
@@ -111,5 +117,5 @@ export declare const getMaxItemsWithoutCompression: (itemSize: number) => number
|
|
|
111
117
|
* Get human-readable compression info for debugging
|
|
112
118
|
* Pure function - no side effects
|
|
113
119
|
*/
|
|
114
|
-
export declare const getCompressionInfo: (totalItems: number, sizeCache: SizeCache) => string;
|
|
120
|
+
export declare const getCompressionInfo: (totalItems: number, sizeCache: SizeCache, force?: boolean) => string;
|
|
115
121
|
//# sourceMappingURL=scale.d.ts.map
|