@floor/vlist 1.3.3 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -11
- package/dist/builder/materialize.d.ts +2 -0
- package/dist/builder/types.d.ts +14 -0
- package/dist/features/table/renderer.d.ts +1 -1
- package/dist/index.d.ts +3 -10
- package/dist/index.js +1 -1
- package/dist/internals.d.ts +21 -0
- package/dist/internals.js +1 -0
- package/dist/rendering/renderer.d.ts +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/vlist.css +1 -1
- package/package.json +7 -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.5** — [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.4 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,15 +89,15 @@ const list = vlist({
|
|
|
89
89
|
|
|
90
90
|
| Feature | Size | Description |
|
|
91
91
|
|---------|------|-------------|
|
|
92
|
-
| **Base** | 9.
|
|
92
|
+
| **Base** | 9.4 KB | Core virtualization, gap & padding |
|
|
93
93
|
| `withGrid()` | +4.0 KB | 2D grid layout with context injection |
|
|
94
94
|
| `withMasonry()` | +2.7 KB | Pinterest-style masonry layout |
|
|
95
|
-
| `withGroups()` | +4.
|
|
95
|
+
| `withGroups()` | +4.3 KB | Grouped lists with sticky/inline headers |
|
|
96
96
|
| `withAsync()` | +4.0 KB | Lazy loading with adapters |
|
|
97
97
|
| `withSelection()` | +1.7 KB | Single/multiple selection + keyboard nav |
|
|
98
98
|
| `withScale()` | +2.6 KB | 1M+ items via scroll compression |
|
|
99
99
|
| `withScrollbar()` | +1.2 KB | Custom scrollbar UI |
|
|
100
|
-
| `withTable()` | +
|
|
100
|
+
| `withTable()` | +5.0 KB | Data table with columns, resize, sort, groups |
|
|
101
101
|
| `withPage()` | +0.4 KB | Document-level scrolling |
|
|
102
102
|
| `withSnapshots()` | +0.5 KB | Scroll save/restore |
|
|
103
103
|
|
|
@@ -223,7 +223,7 @@ const list = vlist({
|
|
|
223
223
|
| **1M+ items** | `withScale()` — auto-compresses scroll space |
|
|
224
224
|
| **Wrap navigation** | `scroll: { wrap: true }` |
|
|
225
225
|
| **Variable heights** | `item: { height: (index) => heights[index] }` |
|
|
226
|
-
| **Zebra striping** | `item: { striped: true }`
|
|
226
|
+
| **Zebra striping** | `item: { striped: true }` or `striped: 'even'` / `'odd'` / `'data'` (group-aware) |
|
|
227
227
|
|
|
228
228
|
See **[vlist.dev](https://vlist.dev)** for live demos of each.
|
|
229
229
|
|
|
@@ -366,6 +366,18 @@ import '@floor/vlist/styles/extras' // optional enhancements
|
|
|
366
366
|
|
|
367
367
|
Override with your own CSS using the `.vlist`, `.vlist-item`, `.vlist-item--selected`, `.vlist-scrollbar` selectors. See [vlist.dev](https://vlist.dev) for theming examples.
|
|
368
368
|
|
|
369
|
+
### Dark Mode
|
|
370
|
+
|
|
371
|
+
Dark mode is supported out of the box via three mechanisms (no extra imports needed):
|
|
372
|
+
|
|
373
|
+
| Method | How it works |
|
|
374
|
+
|--------|-------------|
|
|
375
|
+
| **OS preference** | `prefers-color-scheme: dark` — automatic |
|
|
376
|
+
| **Tailwind `.dark` class** | Add `.dark` to any ancestor element |
|
|
377
|
+
| **`data-theme-mode`** | Set `data-theme-mode="dark"` on `<html>` for explicit control |
|
|
378
|
+
|
|
379
|
+
To force light mode when `prefers-color-scheme` would otherwise activate dark, set `data-theme-mode="light"` on the root element. All dark mode CSS variables and `color-scheme` declarations are handled automatically.
|
|
380
|
+
|
|
369
381
|
## Architecture
|
|
370
382
|
|
|
371
383
|
### Dimension-Agnostic Design (v0.9.0)
|
|
@@ -393,11 +405,11 @@ This makes the codebase clearer and eliminates semantic confusion when working w
|
|
|
393
405
|
|
|
394
406
|
| Configuration | Gzipped |
|
|
395
407
|
|---------------|---------|
|
|
396
|
-
| Base only | 9.
|
|
408
|
+
| Base only | 9.4 KB |
|
|
397
409
|
| + Grid | 13.3 KB |
|
|
398
|
-
| + Groups | 13.
|
|
399
|
-
| + Async | 13.
|
|
400
|
-
| + Table | 14.
|
|
410
|
+
| + Groups | 13.7 KB |
|
|
411
|
+
| + Async | 13.4 KB |
|
|
412
|
+
| + Table | 14.3 KB |
|
|
401
413
|
|
|
402
414
|
### Memory Efficiency
|
|
403
415
|
|
|
@@ -448,7 +460,7 @@ const list: VList<Photo> = vlist<Photo>({
|
|
|
448
460
|
## Contributing
|
|
449
461
|
|
|
450
462
|
1. Fork → branch → make changes → add tests → pull request
|
|
451
|
-
2. Run `bun test`
|
|
463
|
+
2. Run `bun test` and `bun run build` before submitting
|
|
452
464
|
|
|
453
465
|
## License
|
|
454
466
|
|
|
@@ -120,6 +120,8 @@ export interface MRefs<T extends VListItem = VListItem> {
|
|
|
120
120
|
gp: number;
|
|
121
121
|
/** mainAxisPadding — sum of CSS padding along scroll axis (0 = none) */
|
|
122
122
|
mp: number;
|
|
123
|
+
/** stripeIndexFn — maps layout index to stripe index (-1 = skip) */
|
|
124
|
+
sif: (index: number) => number;
|
|
123
125
|
}
|
|
124
126
|
/** Immutable dependencies the context factory needs from materialize(). */
|
|
125
127
|
export interface MDeps<T extends VListItem = VListItem> {
|
package/dist/builder/types.d.ts
CHANGED
|
@@ -284,6 +284,20 @@ export interface BuilderContext<T extends VListItem = VListItem> {
|
|
|
284
284
|
* window scrolling instead of manual scroll position updates.
|
|
285
285
|
*/
|
|
286
286
|
disableWheelHandler(): void;
|
|
287
|
+
/**
|
|
288
|
+
* Get the current stripe-index function.
|
|
289
|
+
* Maps a layout index to the index used for even/odd striping.
|
|
290
|
+
* Default: identity (returns the index as-is).
|
|
291
|
+
* When groups override this, group headers return -1 (skip striping)
|
|
292
|
+
* and data items return a contiguous data-only index.
|
|
293
|
+
*/
|
|
294
|
+
getStripeIndexFn(): (index: number) => number;
|
|
295
|
+
/**
|
|
296
|
+
* Replace the stripe-index function.
|
|
297
|
+
* Used by the groups feature when `striped: "data"` to exclude
|
|
298
|
+
* group headers from the even/odd alternation.
|
|
299
|
+
*/
|
|
300
|
+
setStripeIndexFn(fn: (index: number) => number): void;
|
|
287
301
|
}
|
|
288
302
|
/**
|
|
289
303
|
* VListFeature — the interface for builder features.
|
|
@@ -65,5 +65,5 @@ export interface TableRendererInstance<T extends VListItem = VListItem> {
|
|
|
65
65
|
* @param getTotalItems - Function to get total item count (for ARIA)
|
|
66
66
|
* @returns TableRendererInstance
|
|
67
67
|
*/
|
|
68
|
-
export declare const createTableRenderer: <T extends VListItem = VListItem>(container: HTMLElement, getSizeCache: () => SizeCache, layout: TableLayout<T>, _columns: TableColumn<T>[], classPrefix: string, ariaIdPrefix: string, getTotalItems: () => number, striped?: boolean) => TableRendererInstance<T>;
|
|
68
|
+
export declare const createTableRenderer: <T extends VListItem = VListItem>(container: HTMLElement, getSizeCache: () => SizeCache, layout: TableLayout<T>, _columns: TableColumn<T>[], classPrefix: string, ariaIdPrefix: string, getTotalItems: () => number, striped?: boolean | "data" | "even" | "odd", stripeIndexFn?: () => (index: number) => number) => TableRendererInstance<T>;
|
|
69
69
|
//# sourceMappingURL=renderer.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* High-performance virtual scrolling with zero dependencies
|
|
4
4
|
* Builder-only API for optimal tree-shaking
|
|
5
5
|
*
|
|
6
|
+
* For low-level internals (size cache, renderers, selection state, etc.),
|
|
7
|
+
* import from '@floor/vlist/internals' instead.
|
|
8
|
+
*
|
|
6
9
|
* @packageDocumentation
|
|
7
10
|
*/
|
|
8
11
|
export { vlist } from "./builder";
|
|
@@ -18,14 +21,4 @@ export { withSnapshots } from "./features/snapshots";
|
|
|
18
21
|
export { withTable } from "./features/table";
|
|
19
22
|
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";
|
|
20
23
|
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, } from "./builder";
|
|
21
|
-
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, type GroupsConfig, type GroupBoundary, type LayoutEntry, type GroupHeaderItem, type GroupLayout, type StickyHeader, } from "./features/groups";
|
|
22
|
-
export { createGridLayout, createGridRenderer, type GridConfig, type GridLayout, type GridPosition, type GridRenderer, type ItemRange, } from "./features/grid";
|
|
23
|
-
export { createTableLayout, createTableHeader, createTableRenderer, type TableConfig, type TableColumn, type TableLayout, type TableHeader, type TableRenderer, type TableRendererInstance, type ResolvedColumn, type ColumnResizeEvent, type ColumnSortEvent, type ColumnClickEvent, } from "./features/table";
|
|
24
|
-
export { createMasonryLayout, createMasonryRenderer, type MasonryConfig, type MasonryLayout, type MasonryRenderer, type GetItemFn, type ItemPlacement, } from "./features/masonry";
|
|
25
|
-
export { createSizeCache, type SizeCache, createMeasuredSizeCache, type MeasuredSizeCache, simpleVisibleRange, calculateRenderRange, calculateTotalSize, calculateActualSize, calculateItemOffset, calculateScrollToIndex, clampScrollPosition, rangesEqual, isInRange, getRangeCount, diffRanges, MAX_VIRTUAL_SIZE, getCompressionState as getScaleState, getCompression as getScale, needsCompression as needsScaling, getMaxItemsWithoutCompression as getMaxItemsWithoutScaling, getCompressionInfo as getScaleInfo, calculateCompressedVisibleRange as calculateScaledVisibleRange, calculateCompressedRenderRange as calculateScaledRenderRange, calculateCompressedItemPosition as calculateScaledItemPosition, calculateCompressedScrollToIndex as calculateScaledScrollToIndex, calculateIndexFromScrollPosition, type CompressionState as ScaleState, } from "./rendering";
|
|
26
|
-
export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds, getSelectedItems, } from "./features/selection";
|
|
27
|
-
export { createEmitter, type Emitter } from "./events";
|
|
28
|
-
export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, type DataManager as AsyncManager, type SparseStorage, type PlaceholderManager, } from "./features/async";
|
|
29
|
-
export { createScrollController, createScrollbar, rafThrottle, type ScrollController, type Scrollbar, } from "./features/scrollbar";
|
|
30
|
-
export { createStats, type StatsConfig, type StatsState, type Stats, } from "./utils/stats";
|
|
31
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var{defineProperty:z2,getOwnPropertyNames:U1,getOwnPropertyDescriptor:K1}=Object,B1=Object.prototype.hasOwnProperty;var n2=new WeakMap,Z1=(J)=>{var q=n2.get(J),Q;if(q)return q;if(q=z2({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")U1(J).map((j)=>!B1.call(q,j)&&z2(q,j,{get:()=>J[j],enumerable:!(Q=K1(J,j))||Q.enumerable}));return n2.set(J,q),q};var N1=(J,q)=>{for(var Q in q)z2(J,Q,{get:q[Q],enumerable:!0,configurable:!0,set:(j)=>q[Q]=()=>j})};var o2=(J,q)=>()=>(J&&(q=J(J=0)),q);var _1=(J,q)=>{let Q=q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(Q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),Q-1))},getTotalSize:()=>Q*J,getTotal:()=>Q,rebuild:(j)=>{Q=j},isVariable:()=>!1}},D1=(J,q)=>{let Q=q,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(q);let X=(K)=>{if(Q===0)return 0;if(K<=0)return 0;if(K>=j[Q])return Q-1;let B=0,Z=Q-1;while(B<Z){let U=B+Z+1>>>1;if(j[U]<=K)B=U;else Z=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)=>X(K),getTotalSize:()=>j[Q]??0,getTotal:()=>Q,rebuild:(K)=>Y(K),isVariable:()=>!0}},k0=(J,q)=>{if(typeof J==="number")return _1(J,q);return D1(J,q)},m0=(J,q,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getSize(0));let Y=0,X=0,K=q;while(K<j&&X<Q)X+=J.getSize(K),Y++,K++;return Math.max(1,Y)},J2=(J,q,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(q/J.getSize(0));let j=0,Y=0;for(let X=Q-1;X>=0;X--){let K=J.getSize(X);if(Y+K>q)break;Y+=K,j++}return Math.max(j,1)},C2=(J,q,Q)=>{if(Q===0)return 0;let j=Math.floor(q),Y=q-j,X=Math.max(0,Math.min(j,Q-1));return J.getOffset(X)+Y*J.getSize(X)};var f0=(J,q,Q)=>{let j=Array.from(q).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 X=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===X)X=X.nextSibling;else J.insertBefore(B,X)}};var _J=3,DJ="vlist",v2=200,p0=50,WJ=50,VJ=5,GJ=2,H0=16000000,MJ=150,OJ="x",EJ=20,S2="_isPlaceholder",AJ="__placeholder_";var L0=(J,q)=>{let Q=q.getTotalSize(),j=Q>H0,Y=j?H0:Q,X=Q>0?Y/Q:1;return{isCompressed:j,actualSize:Q,virtualSize:Y,ratio:X}},U2=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;if(!Y.isCompressed){let O=Q.indexAtOffset(J),y=Q.indexAtOffset(J+q);if(y<j-1)y++;return X.start=Math.max(0,O),X.end=Math.min(j-1,Math.max(0,y)),X}let{virtualSize:K}=Y,Z=J/K*j,U=Math.floor(Z),_=m0(Q,Math.max(0,U),q,j),F=Math.ceil(Z)+_,k=K-q-J;if(k<=q&&k>=-1){let O=J2(Q,q,j),y=Math.max(0,j-O),N=Math.max(0,Math.min(1,1-k/q));U=Math.floor(U+(y-U)*N),F=k<=1?j-1:Math.min(j-1,U+_)}return X.start=Math.max(0,U),X.end=Math.min(j-1,Math.max(0,F)),X},LJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},h0=(J,q,Q,j,Y,X,K)=>{if(!X.isCompressed||j===0)return Q.getOffset(J);let{virtualSize:B}=X,Z=B-Y,U=Z-q;if(U<=Y&&U>=-1){if(q>=Z-1){let L=Q.getTotalSize()-Q.getOffset(J);return Y-L}let k=J2(Q,Y,j),O=Math.max(0,j-k),N=q/B*j,G=Math.max(0,Math.min(1,1-U/Y)),b=Q.getOffset(J)-Q.getOffset(O),M=Q.getOffset(J)-C2(Q,N,j);return M+(b-M)*G}let _=q/B,F=Q.getTotalSize(),$=_*F;return Q.getOffset(J)-$},K2=(J,q,Q,j,Y,X="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(X==="end"&&J===j-1)return Math.max(0,Y.virtualSize-Q);K=J/j*Y.virtualSize}else K=q.getOffset(J);let B=q.getSize(J);switch(X){case"center":K-=(Q-B)/2;break;case"end":K-=Q-B;break}let Z=Y.virtualSize-Q;return Math.max(0,Math.min(K,Z))},TJ=(J,q,Q,j)=>{if(Q===0)return 0;if(j.isCompressed){let Y=J/j.virtualSize;return Math.floor(Y*Q)}return q.indexAtOffset(J)},bJ=(J,q)=>{if(typeof q==="number")return J*q>H0;return q.getTotalSize()>H0},HJ=(J)=>{if(J<=0)return 0;return Math.floor(H0/J)},$J=(J,q)=>{let Q=L0(J,q);if(!Q.isCompressed)return`No compression needed (${J} items, ${(Q.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Q.ratio*100).toFixed(1)}% (${J} items, ${(Q.actualSize/1e6).toFixed(1)}M px → ${(Q.virtualSize/1e6).toFixed(1)}M px virtual)`};var B2=()=>{};var z0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var lJ={};N1(lJ,{createGridRenderer:()=>r0});var H1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-row"),X.removeAttribute("data-col"),q.push(X)},clear:()=>{q.length=0}}},$1=1,r0=(J,q,Q,j,Y,X,K,B,Z=!1)=>{let U=H1(),_=new Map,F=X,$=!1,k=null,O=0,y=0,N="",G=-1,b=(E)=>{if(k&&O===E)return k;return k=L0(E,Q),O=E,k},M={selected:!1,focused:!1},L=(E,V)=>{return M.selected=E,M.focused=V,M},z=`${Y}-item ${Y}-grid-item`,W=`${Y}-item--selected`,h=`${Y}-item--focused`,P=(E,V)=>{if(typeof V==="string")E.innerHTML=V;else E.replaceChildren(V)},x=(E,V,w)=>{E.classList.toggle(W,V),E.classList.toggle(h,w)},m=(E,V)=>{let w=j.getRow(E);if(V){let H=V.totalItems,u=b(H);if(u.isCompressed)return h0(w,V.scrollPosition,Q,H,V.containerSize,u,V.rangeStart)}return Q.getOffset(w)},p=(E,V)=>{let w=$&&j.getCol(E)===0,H=w?0:j.getCol(E),u=w?0:j.getColumnOffset(H,F),d;if($){let o=j.getRow(E),c=0,t=new Set;for(let Q0=0;Q0<E;Q0++){let r=j.getRow(Q0);if(r<o&&!t.has(r)){let i=Q.getSize(Q0);c+=i,t.add(r)}}d=c}else d=m(E,V);if(Z)return`translate(${Math.round(d)}px, ${Math.round(u)}px)`;return`translate(${Math.round(u)}px, ${Math.round(d)}px)`},f=(E,V)=>{E.style.transform=V},n=(E,V)=>{let w=E.dataset.id?.startsWith("__group_header"),H=w?F:j.getColumnWidth(F),u;if($||w)u=Q.getSize(V)-j.gap;else{let d=j.getRow(V);u=Q.getSize(d)-j.gap}if(Z)E.style.width=`${u}px`,E.style.height=`${H}px`;else E.style.width=`${H}px`,E.style.height=`${u}px`},a=(E,V,w,H,u)=>{let d=U.acquire(),o=L(w,H);if(d.className=z,d.dataset.index=String(E),d.dataset.id=String(V.id),d.dataset.row=String(j.getRow(E)),d.dataset.col=String(j.getCol(E)),d.ariaSelected=String(w),B)d.id=`${B}-item-${E}`;if(K){let t=K();if(t!==G)G=t,N=String(t);d.setAttribute("aria-setsize",N),d.setAttribute("aria-posinset",String(E+1))}n(d,E);let c=q(V,E,o);return P(d,c),x(d,w,H),f(d,u),{element:d,lastItemId:V.id,lastSelected:w,lastFocused:H,lastTransform:u,lastSeenFrame:y}},R=(E,V,w,H,u)=>{if(y++,V.start===0&&E.length>0)$=z0(E[0]);for(let[c,t]of _)if(c>=V.start&&c<=V.end)t.lastSeenFrame=y;else if(y-t.lastSeenFrame>$1)U.release(t.element),_.delete(c);let d=!1;if(K){let c=K();if(c!==G)G=c,N=String(c),d=!0}let o=null;for(let c=V.start;c<=V.end;c++){let t=c-V.start,Q0=E[t];if(!Q0){console.warn(`⚠️ RENDER: Missing item at index ${c} (range: ${V.start}-${V.end}, items.length: ${E.length})`);continue}let r=w.has(Q0.id),i=c===H,s=_.get(c);if(s){let j0=s.lastItemId!==Q0.id,q0=s.lastSelected!==r,Y0=s.lastFocused!==i;if(j0||q0||Y0){if(j0){let _0=L(r,i),X0=q(Q0,c,_0);P(s.element,X0),s.element.dataset.id=String(Q0.id),s.element.dataset.row=String(j.getRow(c)),s.element.dataset.col=String(j.getCol(c)),n(s.element,c)}x(s.element,r,i),s.element.ariaSelected=String(r),s.lastItemId=Q0.id,s.lastSelected=r,s.lastFocused=i}let K0=p(c,u);if(s.lastTransform!==K0)f(s.element,K0),s.lastTransform=K0;if(d)s.element.setAttribute("aria-setsize",N)}else{let j0=p(c,u),q0=a(c,Q0,r,i,j0);if(!o)o=document.createDocumentFragment();o.appendChild(q0.element),_.set(c,q0)}}if(o)J.appendChild(o)},g=(E)=>{for(let[V,w]of _){let H=p(V,E);if(w.lastTransform!==H)f(w.element,H),w.lastTransform=H}},A=(E,V,w,H)=>{let u=_.get(E);if(!u)return;let d=u.lastItemId!==V.id,o=u.lastSelected!==w,c=u.lastFocused!==H;if(d||o||c){let t=L(w,H),Q0=q(V,E,t);P(u.element,Q0),x(u.element,w,H),u.element.dataset.id=String(V.id),u.element.ariaSelected=String(w),n(u.element,E),u.lastItemId=V.id,u.lastSelected=w,u.lastFocused=H}},T=(E,V,w)=>{let H=_.get(E);if(!H)return;let u=H.lastSelected!==V,d=H.lastFocused!==w;if(u||d)x(H.element,V,w),H.lastSelected=V,H.lastFocused=w},S=(E)=>{return _.get(E)?.element},D=(E)=>{if(Math.abs(E-F)<1)return;F=E;for(let[V,w]of _){n(w.element,V);let H=p(V);f(w.element,H),w.lastTransform=H}},I=()=>{f0(J,_.keys(),(E)=>_.get(E)?.element)},v=()=>{for(let[,E]of _)U.release(E.element);_.clear()};return{render:R,updatePositions:g,updateItem:A,updateItemClasses:T,getElement:S,sortDOM:I,updateContainerWidth:D,clear:v,destroy:()=>{v(),U.clear()}}};var O2=o2(()=>{B2()});var i2=2,t2=(J=0)=>{let q=[,,,,,];for(let Q=0;Q<5;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},e2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[X],B=q-K.position,Z=Q-K.time;J.velocity=Z>0?Math.abs(B)/Z:0}return J.lastPosition=q,J.lastTime=Q,J};var Q2=(J,q)=>{let Q=new Map,j=(X)=>{let K=Q.get(X);return K!==void 0?K:J},Y=k0(j,q);return{getOffset(X){return Y.getOffset(X)},getSize(X){return j(X)},indexAtOffset(X){return Y.indexAtOffset(X)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(X){if(X<Y.getTotal()){for(let K of Q.keys())if(K>=X)Q.delete(K)}Y=k0(j,X)},isVariable(){return!0},setMeasuredSize(X,K){Q.set(X,K)},isMeasured(X){return Q.has(X)},getEstimatedSize(){return J},measuredCount(){return Q.size}}};var j2=()=>{let J={},q=(B,Z)=>{if(!J[B])J[B]=new Set;return J[B].add(Z),()=>Q(B,Z)},Q=(B,Z)=>{J[B]?.delete(Z)};return{on:q,off:Q,emit:(B,Z)=>{J[B]?.forEach((U)=>{try{U(Z)}catch(_){console.error(`[vlist] Error in event handler for "${String(B)}":`,_)}})},once:(B,Z)=>{let U=(_)=>{Q(B,U),Z(_)};return q(B,U)},clear:(B)=>{if(B)delete J[B];else for(let Z in J)delete J[Z]},listenerCount:(B)=>{return J[B]?.size??0}}};var JJ=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist/builder] Container not found: ${J}`);return q}return J},QJ=(J,q,Q,j)=>{let Y=document.createElement("div");if(Y.className=q,j)Y.classList.add(`${q}--horizontal`);Y.setAttribute("tabindex","0");let X=document.createElement("div");if(X.className=`${q}-viewport`,X.setAttribute("tabindex","-1"),j)X.style.overflowX="auto",X.style.overflowY="hidden";else X.style.overflow="auto";X.style.height="100%",X.style.width="100%";let K=document.createElement("div");if(K.className=`${q}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${q}-items`,B.setAttribute("role","listbox"),Q)B.setAttribute("aria-label",Q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";return K.appendChild(B),X.appendChild(K),Y.appendChild(X),J.appendChild(Y),{root:Y,viewport:X,content:K,items:B}};var jJ=(J=100)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(q.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),q.push(Q)},clear:()=>{q.length=0}}};var qJ=(J,q,Q,j,Y)=>{if(j===0||q===0){Y.start=0,Y.end=0;return}let X=Q.indexAtOffset(J),K=m0(Q,X,q,j),B=X+K;Y.start=Math.max(0,X),Y.end=Math.min(j-1,Math.max(0,B))},XJ=(J,q,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q)},YJ=(J,q,Q,j,Y,X=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=q.getOffset(K),Z=q.getSize(K),U=q.getTotalSize(),_=Math.max(0,U+X-Q),F;switch(Y){case"center":F=B-(Q-Z)/2;break;case"end":F=X>0&&B+Z>=U?_:B-Q+Z;break;default:F=B}return Math.max(0,Math.min(F,_))};var q2={top:0,right:0,bottom:0,left:0},S0=(J)=>{if(J==null)return q2;if(typeof J==="number")return J===0?q2:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[X,K]=J;return X===0&&K===0?q2:{top:X,right:K,bottom:X,left:K}}let[q,Q,j,Y]=J;return q===0&&Q===0&&j===0&&Y===0?q2:{top:q,right:Q,bottom:j,left:Y}},X2=(J,q)=>q?J.left+J.right:J.top+J.bottom,Y2=(J,q)=>q?J.top+J.bottom:J.left+J.right;var UJ=(J,q)=>{let{dom:Q,emitter:j,resolvedConfig:Y,rawConfig:X,rendered:K,pool:B,sharedState:Z,isHorizontal:U,classPrefix:_,contentSizeHandlers:F,idleHandlers:$,afterScroll:k,clickHandlers:O,keydownHandlers:y,resizeHandlers:N,destroyHandlers:G,methods:b,onScrollFrame:M,resizeObserver:L,renderRange:z}=q;return{get dom(){return Q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return X},adjustScrollPosition(W){if(J.mp===0)return W;let h=U?J.cw:J.ch,P=J.hc.getTotalSize(),x=Math.max(0,P-h),m=Math.max(0,P+J.mp-h);if(W>=x)return m;return Math.min(W,m)},get renderer(){return{render:(W,h,P,x,m)=>{J.ss=P,J.fi=x,J.ffn()},updateItemClasses:(W,h,P)=>{let x=K.get(W);if(!x)return;x.classList.toggle(`${_}-item--selected`,h),x.classList.toggle(`${_}-item--focused`,P),x.ariaSelected=h?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(W)=>K.get(W)??null,clear:()=>{},destroy:()=>{}}},set renderer(W){},get dataManager(){return J.dm},set dataManager(W){J.dm=W},get scrollController(){return J.sc},set scrollController(W){J.sc=W},state:Z,getContainerWidth(){return J.cw},afterScroll:k,idleHandlers:$,clickHandlers:O,keydownHandlers:y,resizeHandlers:N,contentSizeHandlers:F,destroyHandlers:G,methods:b,replaceTemplate(W){J.at=W},replaceRenderer(W){},replaceDataManager(W){J.dm=W},replaceScrollController(W){J.sc=W},getItemsForRange(W){let{dm:h,it:P}=J,x=[];for(let m=W.start;m<=W.end;m++){let p=h?h.getItem(m):P[m];if(p)x.push(p)}return x},getAllLoadedItems(){let W=J.dm;if(W){let h=W.getTotal(),P=[];for(let x=0;x<h;x++){let m=W.getItem(x);if(m)P.push(m)}return P}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let W=J.hc;return{isCompressed:!1,actualSize:W.getTotalSize(),virtualSize:W.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:z.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,W]of K)W.remove(),B.release(W);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(W,h){J.rfn=W,J.ffn=h},setVirtualTotalFn(W){J.vtf=W},rebuildSizeCache(W){J.hc.rebuild(W??J.vtf())},setSizeConfig(W){if(J.hc=k0(W,J.vtf()),J.gp>0){let h=J.hc.getTotalSize,P=J.gp;J.hc.getTotalSize=()=>{let x=h();return x>0?x-P:0}}},updateContentSize(W){let h=`${W+J.mp}px`;if(U)Q.content.style.width=h;else Q.content.style.height=h},updateCompressionMode(){},setVisibleRangeFn(W){J.gvr=W},setScrollToPosFn(W){J.gsp=W},setPositionElementFn(W){J.pef=W},setScrollFns(W,h){J.sgt=W,J.sst=(P)=>{h(P),M()}},setScrollTarget(W){J.st.removeEventListener("scroll",M),J.st=W,J.st.addEventListener("scroll",M,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(W){J.gcw=W.width,J.gch=W.height,J.cw=W.width(),J.ch=W.height(),Z.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,L.unobserve(Q.viewport)},disableWheelHandler(){if(J.wh)Q.viewport.removeEventListener("wheel",J.wh),J.wh=null}}},KJ=(J,q,Q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:X,applyTemplate:K,updateContentSize:B}=q,Z=()=>{J.hc.rebuild(J.vtf()),B(),Q.updateCompressionMode();for(let U=0;U<X.length;U++)X[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,_)=>{let F=J.it,$=[],k=Math.max(0,U),O=Math.min(_,F.length-1);for(let y=k;y<=O;y++)$.push(F[y]);return $},setTotal:(U)=>{},setItems:(U,_=0,F)=>{let $=J.it;if(_===0&&(F!==void 0||$.length===0))J.it=U;else{let k=_+U.length;if($.length<k)$.length=k;for(let O=0;O<U.length;O++)$[_+O]=U[O]}if(J.ii)Z()},updateItem:(U,_)=>{let F=J.it;if(U<0||U>=F.length)return!1;let $=F[U];if(!$)return!1;F[U]={...$,..._};let k=j.get(U);if(k)K(k,J.at(F[U],U,Y)),k.dataset.id=String(F[U].id);return!0},removeItem:(U)=>{if(U<0||U>=J.it.length)return!1;if(J.it.splice(U,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),B(),J.ffn()}}},BJ=(J,q)=>{let{dom:Q,classPrefix:j}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let X=J.sgt()+Y;J.sst(X),J.ls=X,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),X=Math.max(0,Y-J.ch);return X>0?J.ls/X:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>Q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var ZJ=(J,q,Q,j,Y,X,K,B,Z,U=0)=>{let _=(N,G=!1)=>{let b=Q?q.viewport.scrollWidth-q.viewport.clientWidth:q.viewport.scrollHeight-q.viewport.clientHeight;if(b<=0||N<b-2)return!1;let M=Math.max(0,J.hc.getTotalSize()-(Q?J.cw:J.ch));if(M>N){if(J.sst(M),J.ls=M,G)J.rfn();return!0}return!1};if(!Z||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:_};let F=new WeakMap,$=0,k=!1,O=null,y=()=>{if(k){let N=J.sgt();K(),k=!1,_(N,!0)}};return O=new ResizeObserver((N)=>{if(J.id)return;let G=!1,b=j.start;for(let M of N){let L=F.get(M.target);if(L===void 0)continue;let z=Q?M.borderBoxSize[0].inlineSize:M.borderBoxSize[0].blockSize;if(!B.isMeasured(L)){let W=z+U,h=B.getSize(L);if(B.setMeasuredSize(L,W),G=!0,L<b&&W!==h)$+=W-h;O.unobserve(M.target);let P=M.target;if(Q)P.style.width=`${z}px`;else P.style.height=`${z}px`}}if(!G)return;if(B.rebuild(J.vtf()),J.hc=B,$!==0){let M=J.sgt();J.sst(M+$),J.ls=M+$,$=0}if(X())k=!0;else{let M=J.sgt();K(),k=!1,_(M)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:O,ei:F,mc:B,fl:y,se:_}};var w2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,P0=(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,q)=>{let Q=null,j=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null};return{animateScroll:(X,K,B)=>{if(j(),Math.abs(K-X)<1){J.scrollTo(K);return}let Z=performance.now(),U=(_)=>{let F=_-Z,$=Math.min(F/B,1),k=X+(K-X)*w2($);if(J.scrollTo(k),q(),$<1)Q=requestAnimationFrame(U);else Q=null};Q=requestAnimationFrame(U)},cancelScroll:j}};var NJ=(J,q,Q,j,Y,X,K,B,Z,U,_,F,$,k,O,y,N,G)=>{let b=(A)=>{Z.dataManager.setItems(A,0,A.length)},M=U?(A)=>{let T=J.sab(2),S=J.it.length;if(Z.dataManager.setItems(A,S),T&&J.it.length>0){let D=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(D),J.ls=D,J.rfn()}}:(A)=>{let T=J.it.length;Z.dataManager.setItems(A,T)},L=U?(A)=>{let T=J.sgt(),S=J.hc.getTotalSize(),D=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...A,...D],0);let v=J.hc.getTotalSize()-S;if(v>0)J.sst(T+v),J.ls=T+v}:(A)=>{let T=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...A,...T],0)},z=(A,T)=>{Z.dataManager.updateItem(A,T)},W=(A)=>{Z.dataManager.removeItem(A)},h=async()=>{if(Z.dataManager.reload)await Z.dataManager.reload()},P=null,x=()=>{if(P!==null)cancelAnimationFrame(P),P=null},m=(A,T,S)=>{if(x(),Math.abs(T-A)<1){J.sst(T),J.ls=T,J.rfn();return}let D=performance.now(),I=(v)=>{let C=v-D,E=Math.min(C/S,1),V=A+(T-A)*w2(E);if(J.sst(V),J.ls=V,J.rfn(),E<1)P=requestAnimationFrame(I);else P=null};P=requestAnimationFrame(I)},p=(A,T)=>{let{align:S,behavior:D,duration:I}=P0(T),v=J.vtf(),C=A;if(_&&v>0)C=(C%v+v)%v;let E=J.gsp(C,J.hc,J.ch,v,S);if(D==="smooth")m(J.sgt(),E,I);else x(),J.sst(E)},f=()=>J.sgt(),n=(A,T)=>{return Q.on(A,T)},a=(A,T)=>{Q.off(A,T)},R=()=>{if(J.id)return;if(J.id=!0,Z.state.isDestroyed=!0,q.items.removeEventListener("click",F),q.items.removeEventListener("dblclick",$),q.root.removeEventListener("keydown",k),J.st.removeEventListener("scroll",O),y.disconnect(),N(),J.wh)q.viewport.removeEventListener("wheel",J.wh);G();for(let A=0;A<B.length;A++)B[A]();for(let A of K)if(A.destroy)A.destroy();x();for(let[,A]of j)A.remove(),Y.release(A);j.clear(),Y.clear(),Q.emit("destroy",void 0),Q.clear(),q.root.remove()},g={get element(){return q.root},get items(){if(X.has("_getItems"))return X.get("_getItems")();return J.it},get total(){if(X.has("_getTotal"))return X.get("_getTotal")();return J.vtf()},setItems:X.has("setItems")?X.get("setItems"):b,appendItems:X.has("appendItems")?X.get("appendItems"):M,prependItems:X.has("prependItems")?X.get("prependItems"):L,updateItem:X.has("updateItem")?X.get("updateItem"):z,removeItem:X.has("removeItem")?X.get("removeItem"):W,reload:X.has("reload")?X.get("reload"):h,scrollToIndex:X.has("scrollToIndex")?X.get("scrollToIndex"):p,cancelScroll:X.has("cancelScroll")?X.get("cancelScroll"):x,getScrollPosition:X.has("getScrollPosition")?X.get("getScrollPosition"):f,on:n,off:a,destroy:R};for(let[A,T]of X){if(A.charCodeAt(0)===95||A==="setItems"||A==="appendItems"||A==="prependItems"||A==="updateItem"||A==="removeItem"||A==="reload"||A==="scrollToIndex"||A==="scrollToItem"||A==="cancelScroll"||A==="getScrollPosition")continue;g[A]=T}return g};var W1=0,FJ=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let q=J.orientation==="horizontal",Q=q?"width":"height",j=q?"estimatedWidth":"estimatedHeight",Y=q?J.item.width:J.item.height,X=q?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&X==null)throw Error(`[vlist/builder] item.${Q} or item.${j} is required${q?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`)}else if(X!=null){if(typeof X!=="number"||X<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(q&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,Z={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),Z},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,V1(J,K,q,Y,X??null)}};return Z};function V1(J,q,Q,j,Y){let{item:X,items:K,overscan:B=_J,classPrefix:Z=DJ,ariaLabel:U,padding:_,reverse:F=!1,scroll:$}=J,k=$,O=k?.wheel??!0,y=k?.wrap??!1,N=F,G=`${Z}-${W1++}`,b=q.has("withGrid")||q.has("withMasonry")?0:X.gap??0,M=j??Y,L=j==null&&Y!=null,z=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,W=Q?typeof X.height==="number"?X.height:void 0:typeof X.width==="number"?X.width:void 0,h={overscan:B,classPrefix:Z,reverse:N,wrap:y,horizontal:Q,ariaIdPrefix:G},P=Array.from(q.values()).sort((l,e)=>(l.priority??50)-(e.priority??50)),x=new Set(P.map((l)=>l.name));for(let l of P)if(l.conflicts){for(let e of l.conflicts)if(x.has(e))throw Error(`[vlist/builder] ${l.name} and ${e} cannot be combined`)}if(N){if(x.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let m=JJ(J.container),p=QJ(m,Z,U,Q);if(k?.wheel===!1)if(Q)p.viewport.style.overflowX="hidden";else p.viewport.style.overflow="hidden";if(k?.scrollbar==="none")p.viewport.classList.add(`${Z}-viewport--no-scrollbar`);let f=S0(_),n=X2(f,Q);if(f.top||f.right||f.bottom||f.left)p.content.style.boxSizing="border-box",p.content.style.padding=`${f.top}px ${f.right}px ${f.bottom}px ${f.left}px`;let a=j2(),R=K||[],g=typeof M==="function"&&(q.has("withGrid")||q.has("withMasonry")),A=b>0?typeof M==="function"?(l)=>M(l)+b:M+b:M,T=L?Q2(Y+b,R.length):k0(A,g?0:R.length);if(b>0){let l=T.getTotalSize;T.getTotalSize=()=>{let e=l();return e>0?e-b:0}}let S=jJ(),D={it:R,hc:T,ch:p.viewport.clientHeight,cw:p.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:t2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Q?()=>p.viewport.scrollLeft:()=>p.viewport.scrollTop,sst:Q?(l)=>{p.viewport.scrollLeft=l}:(l)=>{p.viewport.scrollTop=l},sab:(l=2)=>{let e=D.hc.getTotalSize();return D.ls+D.ch>=e-l},sic:!1,rfn:null,ffn:null,gvr:(l,e,J0,B0,V0)=>{qJ(l,e,J0,B0,V0)},gsp:(l,e,J0,B0,V0)=>{return YJ(l,e,J0,B0,V0,D.mp)},pef:null,at:X.template,vre:!0,st:p.viewport,wh:null,gcw:()=>D.cw,gch:()=>D.ch,gp:b,mp:n};D.vtf=()=>D.dm?D.dm.getTotal():D.it.length;let I=null,v=!1,C={start:0,end:0},E={start:0,end:0},V={start:-1,end:-1},w={viewportState:{scrollPosition:0,containerSize:Q?D.cw:D.ch,totalSize:D.hc.getTotalSize(),actualSize:D.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},H=new Map,u=()=>{f0(p.items,H.keys(),(l)=>H.get(l))},d=()=>{let l=`${D.hc.getTotalSize()+n}px`;if(Q)p.content.style.width=l;else p.content.style.height=l},c=ZJ(D,p,Q,C,V,()=>v,d,L?T:null,L,b),t={selected:!1,focused:!1},Q0=`${Z}-item`,r=X.striped===!0,i=`${Z}-item--odd`,s=[],j0=[],q0=[],Y0=[],K0=[],_0=[],X0=[],D0=new Map,T0=null,N0=null,A0=!1,W0=()=>{if(A0)return;A0=!0,T0=D0.get("_getSelectedIds")??null,N0=D0.get("_getFocusedIndex")??null},F0=(l,e)=>{if(typeof e==="string")l.innerHTML=e;else l.replaceChildren(e)},w0=(l,e)=>{let J0=Math.round(D.hc.getOffset(e));if(Q)l.style.transform=`translateX(${J0}px)`;else l.style.transform=`translateY(${J0}px)`};D.pef=w0;let eJ=(l,e)=>{let J0=S.acquire();J0.className=Q0;let B0=!L||c.mc&&c.mc.isMeasured(l);if(Q){if(B0)J0.style.width=`${D.hc.getSize(l)-b}px`;else J0.style.width="";if(W!=null)J0.style.height=`${W}px`}else if(B0)J0.style.height=`${D.hc.getSize(l)-b}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}`,D.la=String(D.vtf()),J0.setAttribute("aria-setsize",D.la),J0.setAttribute("aria-posinset",String(l+1)),String(e.id).startsWith("__placeholder_"))J0.classList.add(`${Z}-item--placeholder`);if(r)J0.classList.toggle(i,(l&1)===1);return F0(J0,D.at(e,l,t)),D.pef(J0,l),J0},J1=()=>{if(D.id)return;W0();let l=T0?T0():D.ss,e=N0?N0():D.fi,J0=D.vtf(),B0=Q?D.cw:D.ch;if(D.gvr(D.ls,B0,D.hc,J0,C),XJ(C,B,J0,E),E.start===V.start&&E.end===V.end){if(D.sic)for(let[U0,G0]of H)D.pef(G0,U0);return}let V0=String(J0),M0=V0!==D.la;D.la=V0;for(let[U0,G0]of H)if(U0<E.start||U0>E.end)G0.remove(),S.release(G0),H.delete(U0);let Z0=document.createDocumentFragment(),E0=[],b0=[];for(let U0=E.start;U0<=E.end;U0++){let G0=D.dm?D.dm.getItem(U0):D.it[U0];if(G0===void 0)continue;let O0=H.get(U0);if(O0){let $0=O0.dataset.id,x0=String(G0.id);if($0!==x0){let Y1=$0?.startsWith("__placeholder_"),a2=x0.startsWith("__placeholder_");F0(O0,D.at(G0,U0,t)),O0.dataset.id=x0;let s2=!L||c.mc&&c.mc.isMeasured(U0);if(Q)O0.style.width=s2?`${D.hc.getSize(U0)-b}px`:"";else O0.style.height=s2?`${D.hc.getSize(U0)-b}px`:"";if(a2)O0.classList.add(`${Z}-item--placeholder`);else O0.classList.remove(`${Z}-item--placeholder`);if(Y1&&!a2)O0.classList.add(`${Z}-item--replaced`),setTimeout(()=>{O0.classList.remove(`${Z}-item--replaced`)},300)}D.pef(O0,U0);let e0=l.has(G0.id),X1=U0===e;if(O0.classList.toggle(`${Z}-item--selected`,e0),O0.classList.toggle(`${Z}-item--focused`,X1),O0.ariaSelected=e0?"true":"false",M0)O0.setAttribute("aria-setsize",D.la)}else{let $0=eJ(U0,G0);b0.push({index:U0,element:$0});let x0=l.has(G0.id),e0=U0===e;if(x0)$0.classList.add(`${Z}-item--selected`),$0.ariaSelected="true";if(e0)$0.classList.add(`${Z}-item--focused`);Z0.appendChild($0),E0.push({index:U0,element:$0})}}if(E0.length>0){p.items.appendChild(Z0);for(let{index:U0,element:G0}of E0)H.set(U0,G0)}if(L&&c.ob&&c.mc&&c.ei){for(let{index:U0,element:G0}of b0)if(!c.mc.isMeasured(U0))c.ei.set(G0,U0),c.ob.observe(G0)}V.start=E.start,V.end=E.end,w.lastRenderRange.start=E.start,w.lastRenderRange.end=E.end,w.viewportState.scrollPosition=D.ls,w.viewportState.visibleRange.start=C.start,w.viewportState.visibleRange.end=C.end,w.viewportState.renderRange.start=E.start,w.viewportState.renderRange.end=E.end,a.emit("range:change",{range:{start:E.start,end:E.end}})},Q1=()=>{V.start=-1,V.end=-1,D.rfn()};D.rfn=J1,D.ffn=Q1;let j1=()=>{p.root.classList.remove(`${Z}--scrolling`),v=!1,D.vt.velocity=0,D.vt.sampleCount=0,a.emit("velocity:change",{velocity:0,reliable:!1}),c.fl(),u();for(let l=0;l<j0.length;l++)j0[l]();a.emit("scroll:idle",{scrollPosition:D.ls})},q1=()=>{if(I)clearTimeout(I);I=setTimeout(j1,k?.idleTimeout??MJ)},i0=()=>{if(D.id)return;let l=D.sgt();if(l===D.ls&&v)return;let e=l>=D.ls?"down":"up";if(D.vt=e2(D.vt,l),!p.root.classList.contains(`${Z}--scrolling`))p.root.classList.add(`${Z}--scrolling`);v=!0,D.ls=l,D.rfn(),a.emit("scroll",{scrollPosition:l,direction:e}),a.emit("velocity:change",{velocity:D.vt.velocity,reliable:D.vt.sampleCount>=i2});for(let J0=0;J0<s.length;J0++)s[J0](l,e);q1()},v0=null;if(D.st.addEventListener("scroll",i0,{passive:!0}),O&&!Q&&!z)v0=(l)=>{if(w.viewportState.isCompressed)return;let e=p.viewport.scrollWidth>p.viewport.clientWidth;if(e&&Math.abs(l.deltaX)>Math.abs(l.deltaY))return;if(l.preventDefault(),e&&l.deltaX!==0)p.viewport.scrollLeft+=l.deltaX;let J0=D.sgt(),B0=p.viewport.scrollHeight-p.viewport.clientHeight,V0=Math.max(0,Math.min(J0+l.deltaY,B0));if(Math.abs(V0-J0)<1)return;D.sst(V0),i0()},D.wh=v0,p.viewport.addEventListener("wheel",v0,{passive:!1});else if(Q&&O)v0=(l)=>{if(l.deltaX)return;l.preventDefault(),p.viewport.scrollLeft+=l.deltaY},D.wh=v0,p.viewport.addEventListener("wheel",v0,{passive:!1});let m2=(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 B0=D.dm?.getItem(J0)??D.it[J0];if(!B0||B0.__groupHeader)return null;return{item:B0,index:J0}},d2=(l)=>{let e=m2(l);if(e)a.emit("item:click",{item:e.item,index:e.index,event:l});for(let J0=0;J0<q0.length;J0++)q0[J0](l)},c2=(l)=>{let e=m2(l);if(e)a.emit("item:dblclick",{item:e.item,index:e.index,event:l})},l2=(l)=>{for(let e=0;e<Y0.length;e++)Y0[e](l)};p.items.addEventListener("click",d2),p.items.addEventListener("dblclick",c2),p.root.addEventListener("keydown",l2);let P2=new ResizeObserver((l)=>{if(D.id)return;for(let e of l){let J0=e.contentRect.height,B0=e.contentRect.width,V0=Q?B0:J0,M0=Q?D.cw:D.ch;if(D.cw=B0,D.ch=J0,Math.abs(V0-M0)>1){if(w.viewportState.containerSize=V0,D.ii)d(),D.rfn(),a.emit("resize",{height:J0,width:B0})}if(D.ii)for(let Z0=0;Z0<K0.length;Z0++)K0[Z0](B0,J0)}});if(D.vre)P2.observe(p.viewport);let R2={dom:p,emitter:a,resolvedConfig:h,rawConfig:J,rendered:H,pool:S,itemState:t,sharedState:w,renderRange:E,isHorizontal:Q,classPrefix:Z,contentSizeHandlers:_0,idleHandlers:j0,afterScroll:s,clickHandlers:q0,keydownHandlers:Y0,resizeHandlers:K0,destroyHandlers:X0,methods:D0,onScrollFrame:i0,resizeObserver:P2,applyTemplate:F0,updateContentSize:d},t0=UJ(D,R2);D.dm=KJ(D,R2,t0),D.sc=BJ(D,R2);let r2=new Map;for(let l of P)if(l.methods)for(let e of l.methods){let J0=r2.get(e);if(J0)throw Error(`[vlist/builder] Method "${e}" is registered by both "${J0}" and "${l.name}"`);r2.set(e,l.name)}for(let l of P)l.setup(t0);if(!D0.has("_getFocusedIndex")){let l=-1,e=`${Z}-item--focused`,J0=(M0,Z0)=>{let E0=D.vtf();if(Z0<0||Z0>=E0)return;l=Z0,p.root.setAttribute("aria-activedescendant",`${G}-item-${Z0}`);let b0=Q?D.cw:D.ch;if(D.sst(D.gsp(Z0,D.hc,b0,E0,"center")),D.ls=D.sgt(),D.rfn(),M0>=0&&M0!==Z0)H.get(M0)?.classList.remove(e);H.get(Z0)?.classList.add(e)},B0=()=>{if(D.id)return;if(!p.root.matches(":focus-visible"))return;let M0=D.vtf();if(M0===0)return;J0(-1,l>=0?Math.min(l,M0-1):0)};p.root.addEventListener("focusin",B0);let V0=(M0)=>{if(D.id)return;let Z0=M0.relatedTarget;if(Z0&&p.root.contains(Z0))return;if(l>=0)H.get(l)?.classList.remove(e);p.root.removeAttribute("aria-activedescendant")};p.root.addEventListener("focusout",V0),Y0.push((M0)=>{if(D.id)return;let Z0=D.vtf();if(Z0===0)return;let E0=l,b0=E0;switch(M0.key){case"ArrowUp":b0=E0<=0?Z0-1:E0-1;break;case"ArrowDown":b0=E0>=Z0-1?0:E0+1;break;case"Home":b0=0;break;case"End":b0=Z0-1;break;default:return}M0.preventDefault(),J0(E0,b0)}),X0.push(()=>{p.root.removeEventListener("focusin",B0),p.root.removeEventListener("focusout",V0)})}if(D.ii=!0,t0.state.isInitialized=!0,d(),D.rfn(),N&&D.it.length>0){let l=D.gsp(D.it.length-1,D.hc,D.ch,D.it.length,"end");D.sst(l),D.ls=l,D.rfn()}return NJ(D,p,a,H,S,D0,P,X0,t0,N,y,d2,c2,l2,i0,P2,()=>{if(c.ob)c.ob.disconnect()},()=>{if(I)clearTimeout(I)})}B2();var u0=(J,q,Q={},j="vlist",Y=!1)=>{let{autoHide:X=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:Z=!0,hoverZoneWidth:U=16,showOnViewportEnter:_=!0}=Q,F=0,$=0,k=0,O=0,y=!1,N=!1,G=0,b=0,M=0,L=null,z=!1,W=null,h=null,P=Y?"width":"height",x=Y?"translateX":"translateY",m=Y?(c)=>c.clientX:(c)=>c.clientY,p=Y?"left":"top",f=document.createElement("div"),n=document.createElement("div"),a=Z?document.createElement("div"):null,R=()=>{if(f.className=`${j}-scrollbar`,n.className=`${j}-scrollbar-thumb`,Y)f.classList.add(`${j}-scrollbar--horizontal`);if(f.appendChild(n),J.appendChild(f),a){if(a.className=`${j}-scrollbar-hover`,Y)a.classList.add(`${j}-scrollbar-hover--horizontal`),a.style.height=`${U}px`;else a.style.width=`${U}px`;J.appendChild(a)}},g=()=>{if(L)clearTimeout(L),L=null},A=()=>{if(!X)return;g(),L=setTimeout(S,K)},T=()=>{if(F<=$)return;if(g(),!z)f.classList.add(`${j}-scrollbar--visible`),z=!0;if(X&&!y&&!N)A()},S=()=>{if(y||N)return;f.classList.remove(`${j}-scrollbar--visible`),z=!1},D=(c,t)=>{F=c,$=t;let Q0=F>$;if(f.style.display=Q0?"":"none",!Q0){S();return}let r=$/F;k=Math.max(B,r*$),n.style[P]=`${k}px`,O=$-k,I(M)},I=(c)=>{if(M=c,F<=$||O<=0)return;let t=F-$,r=Math.min(1,Math.max(0,c/t))*O;n.style.transform=`${x}(${r}px)`},v=(c)=>{if(c.target===n)return;let t=f.getBoundingClientRect(),i=m(c)-t[p]-k/2,j0=Math.max(0,Math.min(i,O))/O,q0=F-$,Y0=j0*q0;q(Y0),T()},C=(c)=>{c.preventDefault(),c.stopPropagation(),y=!0,G=m(c),b=M,g(),f.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",E),document.addEventListener("mouseup",V)},E=(c)=>{if(!y)return;let t=m(c)-G,Q0=O>0?t/O:0,r=F-$,i=Q0*r,s=Math.max(0,Math.min(b+i,r)),q0=s/r*O;if(n.style.transform=`${x}(${q0}px)`,h=s,W===null)W=requestAnimationFrame(()=>{if(h!==null)q(h);W=null})},V=()=>{if(y=!1,W!==null)cancelAnimationFrame(W),W=null;if(h!==null)q(h),h=null;if(f.classList.remove(`${j}-scrollbar--dragging`),X&&!N)A();document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",V)},w=()=>{if(_)T()},H=()=>{if(!y){if(N=!1,X)A()}},u=()=>{N=!0,g(),T()},d=()=>{if(N=!1,!y&&X)A()},o=()=>{if(g(),W!==null)cancelAnimationFrame(W),W=null;if(f.removeEventListener("click",v),f.removeEventListener("mouseenter",u),f.removeEventListener("mouseleave",d),n.removeEventListener("mousedown",C),J.removeEventListener("mouseenter",w),J.removeEventListener("mouseleave",H),document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",V),a){if(a.removeEventListener("mouseenter",u),a.removeEventListener("mouseleave",d),a.parentNode)a.parentNode.removeChild(a)}if(f.parentNode)f.parentNode.removeChild(f)};if(R(),f.addEventListener("click",v),f.addEventListener("mouseenter",u),f.addEventListener("mouseleave",d),n.addEventListener("mousedown",C),J.addEventListener("mouseenter",w),J.addEventListener("mouseleave",H),a)a.addEventListener("mouseenter",u),a.addEventListener("mouseleave",d);return{show:T,hide:S,updateBounds:D,updatePosition:I,isVisible:()=>z,destroy:o}};var kJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:X,horizontal:K}=Y;if(q=u0(j.viewport,(U)=>Q.scrollController.scrollTo(U),J??{},X,K),!j.viewport.classList.contains(`${X}-viewport--custom-scrollbar`))j.viewport.classList.add(`${X}-viewport--custom-scrollbar`);let B=Q.getCachedCompression();q.updateBounds(B.virtualSize,Q.state.viewportState.containerSize);let Z=q;Q.afterScroll.push((U,_)=>{Z.updatePosition(U),Z.show()}),Q.resizeHandlers.push((U,_)=>{if(Z){let F=Q.getCachedCompression();Z.updateBounds(F.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(q)q.destroy(),q=null}}};var yJ=(J=0)=>{let q=[,,,,,,,,];for(let Q=0;Q<8;Q++)q[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:q,sampleIndex:0,sampleCount:0}},Z2=(J,q)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let X=J.samples[0];return X.position=q,X.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=q,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=q,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let X=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[X],B=q-K.position,Z=Q-K.time;J.velocity=Z>0?B/Z:0}return J.lastPosition=q,J.lastTime=Q,J},G1=(J)=>J.sampleCount>=3,PJ=(J,q={})=>{let{wheel:Q=!0,sensitivity:j=1,smoothing:Y=!1,idleTimeout:X=150,onScroll:K,onIdle:B,scrollElement:Z,horizontal:U=!1}=q,_=!!Z,F=0,$=0,k=_?U?window.innerWidth:window.innerHeight:U?J.clientWidth:J.clientHeight,O=q.compressed??!1,y=q.compression,N=yJ(),G=!1,b=null,L=N2(()=>{let H=U?J.scrollLeft:J.scrollTop,u=H>=F?"down":"up";if(N=Z2(N,H),F=H,K)K({scrollTop:F,direction:u,velocity:N.velocity});m()}),W=N2(()=>{let H=J.getBoundingClientRect(),u=U?Math.max(0,-H.left):Math.max(0,-H.top),d=u>=F?"down":"up";if(N=Z2(N,u),F=u,!G)G=!0;if(K)K({scrollTop:F,direction:d,velocity:N.velocity});m()}),h=(H)=>{H.preventDefault()},P=(H)=>{if(H.deltaX)return;H.preventDefault(),J.scrollLeft+=H.deltaY},x=(H)=>{if(!O)return;H.preventDefault();let u=(U?H.deltaX||H.deltaY:H.deltaY)*j,d=F+u;if(Y)d=F+u*0.3;if(d=Math.max(0,Math.min(d,$)),d!==F){let c=d>=F?"down":"up";if(N=Z2(N,d),F=d,!G)G=!0;if(K)K({scrollTop:F,direction:c,velocity:N.velocity});m()}},m=()=>{if(b)clearTimeout(b);b=setTimeout(()=>{if(G=!1,N=yJ(F),B)B()},X)},p=(H)=>{if(O)return;if(O=!0,y=H,$=H.virtualSize-k,_)return;if(L.cancel(),J.removeEventListener("scroll",L),!Q)J.removeEventListener("wheel",h);else if(U)J.removeEventListener("wheel",P);if(U)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",x,{passive:!1});let u=U?J.scrollLeft:J.scrollTop;if(u>0){let d=U?y?.actualSize??J.scrollWidth:y?.actualSize??J.scrollHeight;F=u/d*$}if(U)J.scrollLeft=0;else J.scrollTop=0},f=()=>{if(!O)return;if(O=!1,_){y=void 0;return}if(J.removeEventListener("wheel",x),U)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",L,{passive:!0}),!Q)J.addEventListener("wheel",h,{passive:!1});else if(U)J.addEventListener("wheel",P,{passive:!1});if(y&&F>0){let u=F/$*(y.actualSize-k);if(U)J.scrollLeft=u;else J.scrollTop=u}y=void 0},n=()=>{if(_||O)return F;return U?J.scrollLeft:J.scrollTop},a=(H,u=!1)=>{let d=Math.max(0,Math.min(H,$||1/0));if(_){let o=J.getBoundingClientRect();if(U){let c=o.left+window.scrollX;window.scrollTo({left:c+d,behavior:u?"smooth":"auto"})}else{let c=o.top+window.scrollY;window.scrollTo({top:c+d,behavior:u?"smooth":"auto"})}}else if(O){if(d===F)return;let c=d>=F?"down":"up";if(N=Z2(N,d),F=d,!G)G=!0;if(K)K({scrollTop:F,direction:c,velocity:N.velocity});m()}else if(U)J.scrollTo({left:d,behavior:u?"smooth":"auto"});else J.scrollTo({top:d,behavior:u?"smooth":"auto"})},R=(H)=>{a(n()+H)},g=()=>{return n()<=0},A=(H=0)=>{let u=n(),d=_||O?$:U?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return u>=d-H},T=()=>{let H=n(),u=_||O?$:U?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(u<=0)return 0;return Math.min(1,Math.max(0,H/u))},S=(H)=>{if(H.compression)y=H.compression,$=y.virtualSize-k},D=()=>O,I=()=>Math.abs(N.velocity),v=()=>G1(N),C=()=>G,E=()=>_,V=(H)=>{if(k=H,y)$=y.virtualSize-k},w=()=>{if(b)clearTimeout(b);if(_)W.cancel(),window.removeEventListener("scroll",W);else L.cancel(),J.removeEventListener("scroll",L),J.removeEventListener("wheel",x),J.removeEventListener("wheel",h),J.removeEventListener("wheel",P)};if(_){if(O&&y)$=y.virtualSize-k;window.addEventListener("scroll",W,{passive:!0})}else if(O&&y){if($=y.virtualSize-k,U)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Q)J.addEventListener("wheel",x,{passive:!1})}else{if(U)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",L,{passive:!0}),!Q)J.addEventListener("wheel",h,{passive:!1});else if(U)J.addEventListener("wheel",P,{passive:!1})}return{getScrollTop:n,scrollTo:a,scrollBy:R,isAtTop:g,isAtBottom:A,getScrollPercentage:T,getVelocity:I,isTracking:v,isScrolling:C,updateConfig:S,enableCompression:p,disableCompression:f,isCompressed:D,isWindowMode:E,updateContainerHeight:V,destroy:w}},N2=(J)=>{let q=null,Q=null,j=(...Y)=>{if(Q=Y,q===null)q=requestAnimationFrame(()=>{if(q=null,Q)J(...Q)})};return j.cancel=()=>{if(q!==null)cancelAnimationFrame(q),q=null},j};var M1=0.65,O1=0.5,E1=0.95,A1=0.1,F1=5,L1=100,RJ=()=>{let J=null,q=0,Q=!1,j=0,Y=null,X=0,K=0,B=null,Z=[];return{name:"withScale",priority:20,setup(U){let{dom:_,config:F}=U,{classPrefix:$,horizontal:k}=F,O=()=>{let b=U.getVirtualTotal(),M=L0(b,U.sizeCache);if(M.isCompressed&&!Q){Q=!0,U.scrollController.enableCompression(M),U.updateContentSize(M.virtualSize),U.setScrollFns(()=>q,(f)=>{if(q=f,j=f,Y!==null)cancelAnimationFrame(Y),Y=null});let L=()=>{let f=j-q;if(Math.abs(f)<O1)q=j,Y=null;else{q+=f*M1;let a=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;q=Math.max(0,Math.min(q,a)),Y=requestAnimationFrame(L)}U.scrollController.scrollTo(q)},z=_.viewport,W=(f)=>{f.preventDefault();let a=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+f.deltaY,a)),Y===null)Y=requestAnimationFrame(L)};z.addEventListener("wheel",W,{passive:!1});let h=()=>{if(B!==null)cancelAnimationFrame(B),B=null},P=(f)=>{if(h(),Y!==null)cancelAnimationFrame(Y),Y=null;let n=f.touches[0];if(!n)return;let a=k?n.clientX:n.clientY;X=a,K=q,Z=[{time:performance.now(),y:a}]},x=(f)=>{f.preventDefault();let n=f.touches[0];if(!n)return;let a=k?n.clientX:n.clientY,R=performance.now();if(Z.push({time:R,y:a}),Z.length>F1)Z.shift();let g=X-a,T=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,S=Math.max(0,Math.min(K+g,T));q=S,j=S,U.scrollController.scrollTo(S)},m=(f)=>{let n=performance.now(),a=Z.filter((T)=>n-T.time<L1),R=0;if(a.length>=2){let T=a[0],S=a[a.length-1],D=S.time-T.time;if(D>0)R=(T.y-S.y)/D}if(Z=[],Math.abs(R)<A1)return;let g=R*16,A=()=>{if(g*=E1,Math.abs(g)<0.5){B=null;return}let S=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,D=q+g;if(D=Math.max(0,Math.min(D,S)),D<=0&&g<0||D>=S&&g>0){q=D,j=D,U.scrollController.scrollTo(D),B=null;return}q=D,j=D,U.scrollController.scrollTo(D),B=requestAnimationFrame(A)};B=requestAnimationFrame(A)};if(z.addEventListener("touchstart",P,{passive:!0}),z.addEventListener("touchmove",x,{passive:!1}),z.addEventListener("touchend",m,{passive:!0}),z.addEventListener("touchcancel",m,{passive:!0}),U.destroyHandlers.push(()=>{if(z.removeEventListener("wheel",W),z.removeEventListener("touchstart",P),z.removeEventListener("touchmove",x),z.removeEventListener("touchend",m),z.removeEventListener("touchcancel",m),h(),Y!==null)cancelAnimationFrame(Y),Y=null}),!_.viewport.querySelector(`.${$}-scrollbar`)){if(J=u0(_.viewport,(n)=>U.scrollController.scrollTo(n),{},$,k),!_.viewport.classList.contains(`${$}-viewport--custom-scrollbar`))_.viewport.classList.add(`${$}-viewport--custom-scrollbar`);J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);let f=J;U.afterScroll.push((n,a)=>{if(f)f.updatePosition(n),f.show()}),U.resizeHandlers.push((n,a)=>{if(f){let R=U.getCachedCompression();f.updateBounds(R.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:b}};U.updateCompressionMode=O;let y=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return y()},U.setVisibleRangeFn((b,M,L,z,W)=>{N=null,G=null;let h=L0(z,L);U2(b,M,L,z,h,W)}),U.setScrollToPosFn((b,M,L,z,W)=>{let h=L0(z,M);return K2(b,M,L,z,h,W)});let N=null,G=null;U.setPositionElementFn((b,M)=>{let L=U.getVirtualTotal(),z=L0(L,U.sizeCache);if(z.isCompressed){let W=U.scrollController.getScrollTop();if(N===null||M<G)G=M,N=Math.round(h0(M,W,U.sizeCache,L,U.state.viewportState.containerSize,z));let h=N+U.sizeCache.getOffset(M)-U.sizeCache.getOffset(G),P=U.config.horizontal;b.style.transform=P?`translateX(${h}px)`:`translateY(${h}px)`}else{let W=Math.round(U.sizeCache.getOffset(M)),h=U.config.horizontal;b.style.transform=h?`translateX(${W}px)`:`translateY(${W}px)`}}),O(),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 _2=(J={})=>{let{chunkSize:q=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,X=new Map,K=0,B=0,Z=(R)=>{let g=X.get(R);if(!g)g={items:Array(q),count:0,lastAccess:Date.now()},X.set(R,g);else g.lastAccess=Date.now();return g},U=(R)=>{return Math.floor(R/q)},_=(R)=>{return R%q},F=()=>K,$=(R)=>{K=R},k=(R)=>{if(R<0||R>=K)return;let g=U(R),A=X.get(g);if(!A)return;return A.items[_(R)]},O=(R)=>{if(R<0||R>=K)return!1;let g=U(R),A=X.get(g);if(!A)return!1;return A.items[_(R)]!==void 0},y=(R,g)=>{let A=U(R),T=Z(A),S=_(R),D=T.items[S]===void 0;if(T.items[S]=g,D)T.count++,B++;if(R>=K)K=R+1},N=(R,g)=>{for(let A=0;A<g.length;A++){let T=g[A];if(T!==void 0)y(R+A,T)}},G=(R)=>{if(R<0||R>=K)return!1;let g=U(R),A=X.get(g);if(!A)return!1;let T=_(R);if(A.items[T]===void 0)return!1;if(A.items[T]=void 0,A.count--,B--,A.count===0)X.delete(g);return!0},b=(R,g)=>{let A=[];for(let T=R;T<=g&&T<K;T++)A.push(k(T));return A},M=(R,g)=>{for(let A=R;A<=g&&A<K;A++)if(!O(A))return!1;return!0},L=()=>{let R=[],g=null,A=Array.from(X.keys()).sort((T,S)=>T-S);for(let T of A){let S=X.get(T);if(!S)continue;let D=T*q;for(let I=0;I<q;I++){let v=D+I;if(v>=K)break;if(S.items[I]!==void 0)if(g===null)g={start:v,end:v};else if(v===g.end+1)g.end=v;else R.push(g),g={start:v,end:v};else if(g!==null)R.push(g),g=null}}if(g!==null)R.push(g);return R},z=(R,g)=>{let A=[],T=null;for(let S=R;S<=g&&S<K;S++)if(!O(S))if(T===null)T={start:S,end:S};else T.end=S;else if(T!==null)A.push(T),T=null;if(T!==null)A.push(T);return A},W=(R)=>{return X.has(R)},h=(R)=>{let g=X.get(R);if(g)g.lastAccess=Date.now()},P=(R,g)=>{if(R>g||X.size===0)return;let A=Date.now(),T=U(Math.max(0,R)),S=U(Math.min(K-1,g));for(let D=T;D<=S;D++){let I=X.get(D);if(I)I.lastAccess=A}},x=(R,g)=>{if(B<=Q)return 0;let A=Math.max(0,R-j),T=Math.min(K-1,g+j),S=U(A),D=U(T),I=0,v=[];for(let[C,E]of X)if(C<S||C>D)I+=E.count,v.push(C),B-=E.count,X.delete(C);if(I>0&&Y)Y(I,v);return I},m=()=>{if(B<=Q)return 0;let R=Array.from(X.entries()).sort(([,T],[,S])=>T.lastAccess-S.lastAccess),g=0,A=[];for(let[T,S]of R){if(B<=Q)break;g+=S.count,B-=S.count,A.push(T),X.delete(T)}if(g>0&&Y)Y(g,A);return g},p=()=>{return{totalItems:K,cachedItems:B,cachedChunks:X.size,chunkSize:q,maxCachedItems:Q,memoryEfficiency:K>0?1-B/K:1}},f=()=>B,n=()=>{X.clear(),B=0};return{chunkSize:q,maxCachedItems:Q,getTotal:F,setTotal:$,get:k,has:O,set:y,setRange:N,delete:G,getRange:b,isRangeLoaded:M,getLoadedRanges:L,findUnloadedRanges:z,getChunkIndex:U,isChunkLoaded:W,touchChunk:h,touchChunksForRange:P,evictDistant:x,evictToLimit:m,getStats:p,getCachedCount:f,clear:n,reset:()=>{n(),K=0}}},D2=(J)=>{if(J.length===0)return[];let q=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...q[0]}];for(let j=1;j<q.length;j++){let Y=q[j],X=Q[Q.length-1];if(Y.start<=X.end+1)X.end=Math.max(X.end,Y.end);else Q.push({...Y})}return Q},d0=(J,q,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,X={start:j,end:Y};if(q.length===0)return[X];let K=[],B=D2(q),Z=X.start;for(let U of B){if(U.end<Z)continue;if(U.start>X.end)break;if(U.start>Z)K.push({start:Z,end:Math.min(U.start-1,X.end)});if(Z=U.end+1,Z>X.end)break}if(Z<=X.end)K.push({start:Z,end:X.end});return K};var W2=(J={})=>{let{maskCharacter:q=OJ,maxSampleSize:Q=EJ}=J,j=[],Y=!1,X=0,K=(F)=>{if(Y||F.length===0)return;let $=Math.min(F.length,Q);for(let k=0;k<$;k++){let O=F[k];if(!O||typeof O!=="object")continue;let y={};for(let[N,G]of Object.entries(O)){if(N.startsWith("_")||N==="id")continue;y[N]=String(G??"").length}if(Object.keys(y).length>0)j.push(y)}Y=!0},B=()=>Y,Z=(F)=>{let $={id:`${AJ}${X++}`,[S2]:!0,_index:F};if(j.length===0)return $.label=q.repeat(12),$;let k=j[F%j.length];for(let[O,y]of Object.entries(k))$[O]=q.repeat(Math.max(1,y));return $};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:Z,generateRange:(F,$)=>{let k=[];for(let O=F;O<=$;O++)k.push(Z(O));return k},clear:()=>{j=[],Y=!1,X=0}}},R0=(J)=>{if(!J||typeof J!=="object")return!1;return J[S2]===!0},f2=(J)=>{return J.filter((q)=>!R0(q))};var b1=50,V2=(J={})=>{let{adapter:q,initialItems:Q,initialTotal:j,storage:Y,placeholder:X,pageSize:K=b1,onStateChange:B,onItemsLoaded:Z,onItemsEvicted:U}=J,_=_2({...Y,onEvict:(r,i)=>{U?.(r),z()}}),F=null,$=()=>{if(!F)F=W2(X);return F},k=new Map,O=!1,y,N=!0,G,b=[],M=0,L=new Map,z=()=>{B?.(a())},W=()=>{k.clear();let r=_.getLoadedRanges();for(let i of r)for(let s=i.start;s<=i.end;s++){let j0=_.get(s);if(j0&&!R0(j0))k.set(j0.id,s)}},h=(r,i)=>{if(!R0(i))k.set(i.id,r)},P=(r)=>{k.delete(r)},x=(r,i)=>{return`${r}-${i}`},m=()=>_.getTotal(),p=()=>_.getCachedCount(),f=()=>O,n=()=>N,a=()=>({total:_.getTotal(),cached:_.getCachedCount(),isLoading:O,pendingRanges:b,error:y,hasMore:N,cursor:G}),R=()=>_,g=()=>$(),A=(r)=>{let i=_.get(r);if(i!==void 0)return i;if(r>=0&&r<_.getTotal())return $().generate(r);return},T=(r)=>{let i=k.get(r);if(i===void 0)return;return _.get(i)},S=(r)=>{return k.get(r)??-1},D=(r)=>{let i=_.get(r);return i!==void 0&&!R0(i)},I=(r,i)=>{let s=[],j0=_.getTotal(),q0=0,Y0=0;_.touchChunksForRange(r,Math.min(i,j0-1));for(let K0=r;K0<=i&&K0<j0;K0++){let _0=_.get(K0);if(_0!==void 0)s.push(_0),q0++;else s.push($().generate(K0)),Y0++}return s},v=(r)=>{_.setTotal(r),N=_.getCachedCount()<r,z()},C=(r,i=0,s)=>{if(F&&!F.hasAnalyzedStructure()&&r.length>0)F.analyzeStructure(r);for(let j0=0;j0<r.length;j0++){let q0=r[j0];if(q0!==void 0){let Y0=i+j0;_.set(Y0,q0),h(Y0,q0)}}if(s!==void 0)_.setTotal(s);else if(i+r.length>_.getTotal())_.setTotal(i+r.length);if(_.getCachedCount()>=_.getTotal()&&_.getTotal()>0)N=!1;Z?.(r,i,_.getTotal()),z()},E=(r,i)=>{let s=k.get(r);if(s===void 0)return!1;let j0=_.get(s);if(!j0)return!1;let q0={...j0,...i};if(_.set(s,q0),i.id!==void 0&&i.id!==r)P(r),h(s,q0);return z(),!0},V=(r)=>{let i=k.get(r);if(i===void 0)return!1;_.delete(i),P(r);let s=_.getTotal();if(s>0)_.setTotal(s-1);return z(),!0},w=async(r,i)=>{if(!q)return;let s=x(r,i);if(L.has(s))return;let j0=_.getLoadedRanges(),q0=d0({start:r,end:i},j0,_.chunkSize);if(q0.length===0)return;let Y0=_.chunkSize,K0=[];for(let X0 of q0){let D0=Math.floor(X0.start/Y0),T0=Math.floor(X0.end/Y0);for(let N0=D0;N0<=T0;N0++){let A0=N0*Y0,W0=A0+Y0-1,F0=x(A0,W0);if(!K0.some((w0)=>w0.start===A0)&&!L.has(F0))K0.push({start:A0,end:W0})}}let _0=[];for(let X0 of q0){let D0=Math.floor(X0.start/Y0),T0=Math.floor(X0.end/Y0);for(let N0=D0;N0<=T0;N0++){let A0=N0*Y0,W0=A0+Y0-1,F0=x(A0,W0);if(L.has(F0)){let w0=L.get(F0);if(!_0.includes(w0))_0.push(w0)}}}for(let X0 of K0){let D0=x(X0.start,X0.end),T0=(async()=>{b.push(X0),O=!0,y=void 0,z();try{let N0=X0.end-X0.start+1,A0={offset:X0.start,limit:N0,cursor:void 0},W0=await q.read(A0);if(C(W0.items,X0.start,W0.total),W0.cursor)G=W0.cursor;let F0=X0.start+W0.items.length;if(F0>=M){if(M=F0,W0.hasMore!==void 0)N=W0.hasMore;else if(W0.total!==void 0)N=F0<W0.total}}catch(N0){y=N0 instanceof Error?N0:Error(String(N0))}finally{L.delete(D0),b=b.filter((N0)=>N0.start!==X0.start||N0.end!==X0.end),O=L.size>0,z()}})();L.set(D0,T0),_0.push(T0)}await Promise.all(_0)},H=async(r,i)=>{if(_.isRangeLoaded(r,i))return;await w(r,i)},u=async()=>{if(!q)return;await w(0,K-1)},d=async()=>{if(!q||O||!N)return!1;let r=_.getCachedCount(),i=_.getTotal(),s=r,j0=Math.min(s+K-1,i>0?i-1:s+K-1);if(s>=i&&i>0)return N=!1,!1;return await w(s,j0),_.getCachedCount()>r},o=async()=>{if(_.clear(),_.setTotal(0),k.clear(),F)F.clear();L.clear(),b=[],O=!1,G=void 0,N=!0,M=0,y=void 0,z()},c=(r,i)=>{if(_.evictDistant(r,i)>0)W()},t=()=>{_.clear(),k.clear(),G=void 0,y=void 0,b=[],O=!1,z()},Q0=()=>{if(_.reset(),k.clear(),F)F.clear();G=void 0,N=!0,M=0,y=void 0,b=[],O=!1,z()};if(Q&&Q.length>0)C(Q,0,j??Q.length);else if(j!==void 0)_.setTotal(j),z();return{getState:a,getTotal:m,getCached:p,getIsLoading:f,getHasMore:n,getStorage:R,getPlaceholders:g,getItem:A,getItemById:T,getIndexById:S,isItemLoaded:D,getItemsInRange:I,setTotal:v,setItems:C,updateItem:E,removeItem:V,loadRange:w,ensureRange:H,loadInitial:u,loadMore:d,reload:o,evictDistant:c,clear:t,reset:Q0}};var zJ=(J)=>{let{adapter:q,loading:Q,storage:j,total:Y,autoLoad:X=!0}=J,K=Q?.cancelThreshold??VJ,B=Q?.preloadThreshold??GJ,Z=Q?.preloadAhead??WJ;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:_}=U,F=U.config.reverse,$=V2({adapter:q,...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 P=U.getVirtualTotal();U.sizeCache.rebuild(P),U.updateCompressionMode();let x=U.getCachedCompression();U.state.viewportState.totalSize=x.virtualSize,U.state.viewportState.actualSize=x.actualSize,U.state.viewportState.isCompressed=x.isCompressed,U.state.viewportState.compressionRatio=x.ratio,U.updateContentSize(x.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(P,x,m)=>{if(U.state.isInitialized)U.forceRender(),_.emit("load:end",{items:P,total:m,offset:x})}});U.replaceDataManager($);let k=null,O=null,y=0,N=!1,G=null,b=120,M=(P=!1)=>{if(N=!1,O=null,P)k=null;if(G!==null)clearTimeout(G),G=null},L=()=>{if(O){let P=O;O=null,U.dataManager.ensureRange(P.start,P.end).catch((x)=>{_.emit("error",{error:x,context:"ensureRange"})})}};U.afterScroll.push((P,x)=>{if(U.state.isDestroyed)return;let m=U.scrollController.getVelocity(),f=U.scrollController.isTracking()&&m<=K;if(y>K&&m<=K)N=!0;else if(N&&m>K)M();if(N&&m<0.5)M(!0);if(y=m,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(N||O))M(!0),f=!0;let a=N&&m>0.5;if(f&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(F){if(P<v2)_.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((A)=>{_.emit("error",{error:A,context:"loadMore"})})}else if(U.state.viewportState.totalSize-P-U.state.viewportState.containerSize<v2)_.emit("load:start",{offset:U.dataManager.getCached(),limit:p0}),U.dataManager.loadMore().catch((T)=>{_.emit("error",{error:T,context:"loadMore"})})}let{renderRange:R}=U.state.viewportState;if(!k||R.start!==k.start||R.end!==k.end){if(k={start:R.start,end:R.end},f&&!a){if(O=null,G!==null)clearTimeout(G),G=null;let{start:A,end:T}=R,S=U.getVirtualTotal();if(m>B)if(x==="down")T=Math.min(R.end+Z,S-1);else A=Math.max(R.start-Z,0);U.dataManager.ensureRange(A,T).catch((D)=>{_.emit("error",{error:D,context:"ensureRange"})})}else if(O={start:R.start,end:R.end},a){if(G!==null)clearTimeout(G);G=setTimeout(()=>{G=null,L(),M()},b)}}});let z=200,W=null;U.afterScroll.push((P,x)=>{if(W!==null)clearTimeout(W);W=setTimeout(()=>{W=null,L(),M()},z)}),U.destroyHandlers.push(()=>{if(W!==null)clearTimeout(W),W=null;M()});let h=()=>{if(U.state.isDestroyed)return;k=null;let{renderRange:P}=U.state.viewportState;if(P.end>0)U.dataManager.ensureRange(P.start,P.end).catch((x)=>{_.emit("error",{error:x,context:"ensureRange"})});L()};if(window.addEventListener("online",h),U.destroyHandlers.push(()=>{window.removeEventListener("online",h)}),_.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),_.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{k=null,O=null,U.forceRender();let{renderRange:P}=U.state.viewportState;if(P.end>0)_.emit("load:start",{offset:P.start,limit:P.end-P.start+1}),await U.dataManager.ensureRange(P.start,P.end)}),U.methods.set("reload",async()=>{k=null,O=null,U.invalidateRendered(),await U.dataManager.reload(),_.emit("load:start",{offset:0,limit:p0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:P}=U.state.viewportState;if(P.end>0)await U.dataManager.ensureRange(P.start,P.end)}),X)_.emit("load:start",{offset:0,limit:p0}),U.dataManager.loadInitial().catch((P)=>{_.emit("error",{error:P,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var CJ=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Q,state:j,config:Y,emitter:X}=q;if(Q.root.style.overflow="visible",Q.root.style.height="auto",Y.horizontal)Q.viewport.style.overflowX="visible",Q.viewport.style.overflowY="visible";else Q.viewport.style.overflow="visible";Q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let U=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let _=Q.viewport.getBoundingClientRect();if(Y.horizontal){let F=_.left+window.scrollX;window.scrollTo(F+U,window.scrollY)}else{let F=_.top+window.scrollY;window.scrollTo(window.scrollX,F+U)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,Z=()=>{let{innerWidth:U,innerHeight:_}=window,F=Y.horizontal?U:_,$=Y.horizontal?B:K;if(Math.abs(F-$)<=1)return;K=_,B=U,j.viewportState.containerSize=_,X.emit("resize",{width:U,height:_});for(let k=0;k<q.resizeHandlers.length;k++)q.resizeHandlers[k](U,_);q.renderIfNeeded()};window.addEventListener("resize",Z,{passive:!0}),J=()=>{window.removeEventListener("resize",Z)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var I2=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=q)Q=Y;else j=Y-1}return Q},wJ=(J,q)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=q)Q=Y;else j=Y-1}return Q},vJ=(J,q)=>{if(J===0)return[];let Q=[],j=q(0),Y=0,X=0;for(let K=1;K<J;K++){let B=q(K);if(B!==j){let Z=K-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:Z}),X=X+1+Z,j=B,Y=K}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:X,firstDataIndex:Y,count:J-Y}),Q},c0=(J,q)=>{if(J.length===0||q.length===0)return[];let Q=J.length+q.length,j=Array(Q),Y=0;for(let X of q){j[Y]={id:`__group_header_${X.groupIndex}`,__groupHeader:!0,groupKey:X.key,groupIndex:X.groupIndex},Y++;for(let K=0;K<X.count;K++)j[Y]=J[X.firstDataIndex+K],Y++}return j},l0=(J,q)=>{let Q=typeof q==="number"?(j)=>q:q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},G2=(J,q)=>{let Q=vJ(J,q.getGroupForIndex),j=J+Q.length,Y=q.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:($)=>{if(Q.length===0)return{type:"item",dataIndex:$,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let k=I2(Q,$),O=Q[k];if($===O.headerLayoutIndex)return{type:"header",group:O};let y=$-O.headerLayoutIndex-1;return{type:"item",dataIndex:O.firstDataIndex+y,group:O}},layoutToDataIndex:($)=>{if(Q.length===0)return $;let k=I2(Q,$),O=Q[k];if($===O.headerLayoutIndex)return-1;let y=$-O.headerLayoutIndex-1;return O.firstDataIndex+y},dataToLayoutIndex:($)=>{if(Q.length===0)return $;let k=wJ(Q,$),O=Q[k],y=$-O.firstDataIndex;return O.headerLayoutIndex+1+y},getGroupAtLayoutIndex:($)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=I2(Q,$);return Q[k]},getGroupAtDataIndex:($)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=wJ(Q,$);return Q[k]},getHeaderHeight:typeof Y==="number"?($)=>Y:($)=>{let k=Q[$];if(!k)return 0;return Y(k.key,$)},rebuild:($)=>{Q=vJ($,q.getGroupForIndex),j=$+Q.length}}};var M2=(J,q,Q,j,Y,X=!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",X)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 Z=-1,U=!1,_=0,F=(G)=>{if(G===Z)return;Z=G;let b=q.groups;if(G<0||G>=b.length){B.textContent="";return}let M=b[G],L=j.headerTemplate(M.key,M.groupIndex),z=q.getHeaderHeight(G);if(X)B.style.width=`${z}px`;else B.style.height=`${z}px`;if(typeof L==="string")B.innerHTML=L;else B.replaceChildren(L)},$=(G)=>{let b=q.groups;if(b.length===0){O();return}let M=Q.getOffset(b[0].headerLayoutIndex);if(G<M){O();return}let L=0,z=b.length-1;while(L<z){let m=L+z+1>>>1;if(Q.getOffset(b[m].headerLayoutIndex)<=G)L=m;else z=m-1}let W=L;if(!U)k();F(W);let h=q.getHeaderHeight(W),P=0,x=W+1;if(x<b.length){let p=Q.getOffset(b[x].headerLayoutIndex)-G;if(p<h)P=p-h}if(P!==_)if(_=P,P===0)B.style.transform="";else{let m=Math.round(P);B.style.transform=X?`translateX(${m}px)`:`translateY(${m}px)`}},k=()=>{if(U)return;U=!0,B.style.display=""},O=()=>{if(!U)return;U=!1,B.style.display="none",Z=-1,_=0,B.style.transform=""},y=()=>{let G=Z;if(Z=-1,G>=0)F(G)},N=()=>{B.remove(),Z=-1,U=!1};return B.style.display="none",{update:$,refresh:y,show:k,hide:O,destroy:N}};var SJ=(J,q,Q,j,Y,X)=>{if(j===0||q===0)return X.start=0,X.end=-1,X;let K=Q.indexAtOffset(J),B=Q.indexAtOffset(J+q);if(B<j-1)B++;return X.start=Math.max(0,K),X.end=Math.min(j-1,Math.max(0,B)),X},fJ=(J,q,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-q),j.end=Math.min(Q-1,J.end+q),j},IJ=(J,q,Q,j,Y,X)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=q.getOffset(K),Z=q.getSize(K),U=q.getTotalSize(),_=Math.max(0,U-Q),F;switch(X){case"center":F=B-Q/2+Z/2;break;case"end":F=B-Q+Z;break;case"start":default:F=B;break}return Math.max(0,Math.min(F,_))},pJ=(J,q,Q)=>{if(Q&&Q.isCompressed)return Q.virtualSize;return q.getTotalSize()},hJ=(J,q)=>{return q.getTotalSize()},uJ=(J,q)=>{return q.getOffset(J)},gJ=(J,q,Q)=>{let j=Math.max(0,q-Q);return Math.max(0,Math.min(J,j))};var y0=(J,q,Q,j,Y="start",X,K=IJ)=>{return K(J,q,Q,j,X,Y)},xJ=(J,q)=>{return J.start===q.start&&J.end===q.end},mJ=(J,q)=>{return J>=q.start&&J<=q.end},dJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var cJ=(J,q)=>{let Q=[],j=[];for(let Y=J.start;Y<=J.end;Y++)if(Y<q.start||Y>q.end)j.push(Y);for(let Y=q.start;Y<=q.end;Y++)if(Y<J.start||Y>J.end)Q.push(Y);return{add:Q,remove:j}};B2();var rJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let q=null,Q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(X){let{dom:K,config:B,rawConfig:Z}=X,{classPrefix:U}=B,F=Z.item.height;j=Z.items?[...Z.items]:[];let $=j.length,k={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};q=G2($,k),Y=c0(j,q.groups);let O=l0(q,F);X.setSizeConfig(O),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length);let y=Z.item.template,{headerTemplate:N}=J,G=(f,n,a)=>{if(z0(f))return N(f.groupKey,f.groupIndex);return y(f,n,a)},b=X.methods.get("_getGridLayout"),M=X.methods.get("_replaceGridRenderer"),L=X.methods.get("_updateGridLayoutForGroups"),z=X.methods.get("_getTableLayout"),W=X.methods.get("_updateTableForGroups"),h=X.methods.get("_getTableHeaderHeight");if(b&&M){if(L)L((R)=>{let g=Y[R];return!!(g&&z0(g))});let{createGridRenderer:f}=(O2(),Z1(lJ)),n=b(),a=f(K.items,G,X.sizeCache,n,U,X.getContainerWidth(),()=>X.dataManager.getTotal(),B.ariaIdPrefix);M(a)}else if(z&&W)W((f)=>z0(f),J.headerTemplate);else X.replaceTemplate(G);let P=h?h():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){Q=M2(K.root,q,X.sizeCache,{...k,sticky:k.sticky??!1},U,B.horizontal,P);let f=Q;X.afterScroll.push((n,a)=>{f.update(n)}),Q.update(X.scrollController.getScrollTop())}let x=()=>{if(!q)return;q.rebuild(j.length),Y=c0(j,q.groups);let f=l0(q,F);if(X.setSizeConfig(f),X.rebuildSizeCache(Y.length),X.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};X.methods.set("setItems",(f)=>{j=f.slice(),x()}),X.methods.set("appendItems",(f)=>{j.push(...f),x()}),X.methods.set("prependItems",(f)=>{j.unshift(...f),x()}),X.methods.set("removeItem",(f)=>{j=j.filter((n)=>n.id!==f),x()});let{animateScroll:m,cancelScroll:p}=I0(X.scrollController,X.renderIfNeeded);X.methods.set("scrollToIndex",(f,n)=>{let a=q.dataToLayoutIndex(f),{align:R,behavior:g,duration:A}=P0(n),T=X.dataManager.getTotal(),S=X.adjustScrollPosition(y0(a,X.sizeCache,X.state.viewportState.containerSize,T,R,X.getCachedCompression()));if(g==="smooth")m(X.scrollController.getScrollTop(),S,A);else p(),X.scrollController.scrollTo(S)}),X.methods.set("_getItems",()=>j),X.methods.set("_getTotal",()=>j.length),X.destroyHandlers.push(()=>{if(p(),Q)Q.destroy(),Q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}};var E2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},X=(O)=>{if(O<=0)return 0;if(!j)return Math.ceil(O/q);let y=0,N=0,G=0;for(let b=0;b<O;b++)if(j(b)){if(G++,N>0)y++,N=0;y++,N=0}else if(N++,N>=q)y++,N=0;if(N>0)y++;return y},K=(O)=>{return Y.row=B(O),Y.col=Z(O),Y},B=(O)=>{if(!j)return Math.floor(O/q);let y=0,N=0;for(let G=0;G<=O;G++)if(j(G)){if(N>0)y++,N=0;if(G===O)return y;y++,N=0}else{if(G===O)return y;if(N++,N>=q)y++,N=0}return console.warn(`⚠️ getRow(${O}) fell through - returning ${y}`),y},Z=(O)=>{if(!j)return O%q;if(j(O))return 0;let y=0;for(let N=0;N<=O;N++)if(j(N))y=0;else{if(N===O)return y;if(y++,y>=q)y=0}return y},U=(O,y,N)=>{if(N<=0)return{start:0,end:-1};if(!j){let z=Math.max(0,O*q),W=Math.min(N-1,(y+1)*q-1);return{start:z,end:W}}let G=-1,b=-1,M=0,L=0;for(let z=0;z<N;z++){if(j(z)){if(L>0)M++,L=0;if(M>=O&&M<=y){if(G===-1)G=z;b=z}M++,L=0}else{if(M>=O&&M<=y){if(G===-1)G=z;b=z}if(L++,L>=q)M++,L=0}if(M>y&&L===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:b}},_=(O,y,N)=>{if(y<0||y>=q)return-1;let G=O*q+y;if(G<0||G>=N)return-1;return G},F=(O)=>{let y=(q-1)*Q;return Math.max(0,(O-y)/q)};return{get columns(){return q},get gap(){return Q},update:(O)=>{if(O.columns!==void 0)q=Math.max(1,Math.floor(O.columns));if(O.gap!==void 0)Q=O.gap;if(O.isHeaderFn!==void 0)j=O.isHeaderFn},getTotalRows:X,getPosition:K,getRow:B,getCol:Z,getItemRange:U,getItemIndex:_,getColumnWidth:F,getColumnOffset:(O,y)=>{let N=F(y);return O*(N+Q)}}};O2();var k1=new Set,aJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:X,config:K,rawConfig:B}=j,{classPrefix:Z}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,_=Y2(S0(B.padding),U),F=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-_},$=B.items?.some((I)=>I.__groupHeader===!0),k={columns:J.columns,gap:J.gap??0};if($)k.isHeaderFn=(I)=>{let v=j.dataManager.getItem(I);return!!(v&&v.__groupHeader===!0)};q=E2(k);let O=q.gap;j.setVirtualTotalFn(()=>{let I=j.dataManager.getTotal();return q.getTotalRows(I)});let y=B.item,N=K.horizontal?y.width:y.height,G={containerWidth:F(),columns:q.columns,gap:q.gap},b={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof N==="function")j.setSizeConfig((I)=>{let v=G.containerWidth-2,C=(G.columns-1)*G.gap;return b.containerWidth=G.containerWidth,b.columns=G.columns,b.gap=G.gap,b.columnWidth=(v-C)/G.columns,b.row=q.getRow(I),b.column=q.getCol(I),b.totalRows=q.getTotalRows(j.dataManager.getTotal()),b.totalColumns=G.columns,N(I,b)+G.gap});else if(O>0)j.setSizeConfig(N+O);if(j.rebuildSizeCache(),O>0){let I=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let v=I();return v>0?v-G.gap:0}}Y.root.classList.add(`${Z}--grid`);let M=F(),L=B.item.template,z=()=>{Q=r0(Y.items,L,j.sizeCache,q,Z,M,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(Q)};z(),j.methods.set("_getGridLayout",()=>q),j.methods.set("_getGridConfig",()=>k),j.methods.set("_replaceGridRenderer",(I)=>{Q=I}),j.methods.set("_updateGridLayoutForGroups",(I)=>{q.update({isHeaderFn:I});let v=j.dataManager.getTotal(),C=0;for(let E=0;E<v;E++)if(q.getCol(E)===0){let V=j.sizeCache.getSize(E);C+=V}j.sizeCache.getTotalSize=()=>C,j.updateContentSize(C),z()}),j.methods.set("updateGrid",(I)=>{if(I.columns!==void 0){if(!Number.isInteger(I.columns)||I.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");k.columns=I.columns}if(I.gap!==void 0){if(I.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");k.gap=I.gap}if(q)q.update(k);let v=F();if(G.containerWidth=v,G.columns=k.columns,G.gap=k.gap??0,Q)Q.updateContainerWidth(v);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let C=0;C<j.contentSizeHandlers.length;C++)j.contentSizeHandlers[C]();if(Q)Q.clear();j.forceRender()});let W=null,h=null,P=!1,x=()=>{if(P)return;P=!0,W=j.methods.get("_getSelectedIds")??null,h=j.methods.get("_getFocusedIndex")??null},m=-1,p=-1,f=!0,n=K.overscan,a={start:0,end:0},R={start:0,end:0},g=()=>{if(j.state.isDestroyed)return;let I=j.scrollController.getScrollTop(),v=j.state.viewportState.containerSize;if(!f&&I===m&&v===p)return;m=I,p=v,f=!1;let C=j.getVirtualTotal();if(C===0||v===0)a.start=0,a.end=0;else a.start=Math.max(0,j.sizeCache.indexAtOffset(I)),a.end=Math.min(C-1,Math.max(0,j.sizeCache.indexAtOffset(I+v-1)));R.start=Math.max(0,a.start-n),R.end=Math.min(C-1,a.end+n);let E=j.state.viewportState;E.scrollPosition=I,E.visibleRange.start=a.start,E.visibleRange.end=a.end,E.renderRange.start=R.start,E.renderRange.end=R.end;let V=j.state.lastRenderRange,w=E.isCompressed,H=j.dataManager.getTotal(),u=q.getItemRange(R.start,R.end,H),d=j.dataManager.getItemsInRange(u.start,u.end),o=w?j.getCompressionContext():void 0;x();let c=W?W():k1,t=h?h():-1;if(Q.render(d,u,c,t,o),V.start!==R.start||V.end!==R.end)V.start=R.start,V.end=R.end,X.emit("range:change",{range:{start:R.start,end:R.end}})},A=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,f=!0,g()};j.setRenderFns(g,A);let T=typeof N==="function";j.resizeHandlers.push((I,v)=>{let C=(U?v:I)-_;if(G.containerWidth=C,Q)Q.updateContainerWidth(C);if(T){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let E=0;E<j.contentSizeHandlers.length;E++)j.contentSizeHandlers[E]();if(Q)Q.clear();j.forceRender()}});let{animateScroll:S,cancelScroll:D}=I0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",D),j.methods.set("scrollToIndex",(I,v)=>{let C=Math.floor(I/J.columns),{align:E,behavior:V,duration:w}=P0(v),H=j.dataManager.getState(),u=q.getTotalRows(H.total),d=Math.max(0,Math.min(C,u-1)),o=j.adjustScrollPosition(y0(d,j.sizeCache,j.state.viewportState.containerSize,u,E,j.getCachedCompression()));if(V==="smooth")S(j.scrollController.getScrollTop(),o,w);else D(),j.scrollController.scrollTo(o)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),j.destroyHandlers.push(()=>{if(D(),Q)Q.destroy(),Q=null;Y.root.classList.remove(`${Z}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}};O2();var A2=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.containerSize,Y=0,X=[],K=()=>{let N=(q-1)*Q;Y=Math.max(0,(j-N)/q),X=Array(q);let G=Y+Q;for(let b=0;b<q;b++)X[b]=b*G};K();let B=[],Z=0,U=[],_=(N)=>{let G=0,b=N[0];for(let M=1;M<N.length;M++){let L=N[M];if(L<b)b=L,G=M}return G},F=(N,G)=>{if(N<=0)return Z=0,B=[],[];let b=Array(q).fill(0),M=Array(q);for(let W=0;W<q;W++)M[W]=[];let L=Array(N);for(let W=0;W<N;W++){let h=_(b),P=G(W),x=b[h];L[W]={index:W,x:X[h],y:x,lane:h,size:P,crossSize:Y},M[h].push(W),b[h]=x+P+Q}B=M;let z=0;for(let W=0;W<q;W++){let h=b[W],P=h>0?h-Q:0;if(P>z)z=P}return Z=z,L},$=(N)=>{if(N.length===0)return Z>0?Z:0;if(Z>0)return Z;let G=Array(q).fill(0);for(let M of N){let L=M.y+M.size,z=G[M.lane];if(L>z)G[M.lane]=L}let b=0;for(let M=0;M<q;M++)if(G[M]>b)b=G[M];return b},k=(N,G,b)=>{if(N.length===0||b<=G)return U.length=0,U;if(B.length===0||B.length!==q)return O(N,G,b);U.length=0;for(let M=0;M<q;M++){let L=B[M],z=L.length;if(z===0)continue;let W=0,h=z;while(W<h){let P=W+h>>>1,x=N[L[P]];if(x.y+x.size<=G)W=P+1;else h=P}for(let P=W;P<z;P++){let x=N[L[P]];if(x.y>=b)break;U.push(x)}}return U},O=(N,G,b)=>{let M=[];for(let L of N)if(L.y+L.size>G&&L.y<b)M.push(L);return M};return{get columns(){return q},get gap(){return Q},get containerSize(){return j},update:(N)=>{let G=!1;if(N.columns!==void 0){let b=Math.max(1,Math.floor(N.columns));if(b!==q)q=b,G=!0}if(N.gap!==void 0&&N.gap!==Q)Q=N.gap,G=!0;if(N.containerSize!==void 0&&N.containerSize!==j)j=N.containerSize,G=!0;if(G)K()},calculateLayout:F,getTotalSize:$,getVisibleItems:k}};var y1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(X)=>{if(X.remove(),q.length<J)X.className="",X.textContent="",X.removeAttribute("style"),X.removeAttribute("data-index"),X.removeAttribute("data-id"),X.removeAttribute("data-lane"),q.push(X)},clear:()=>{q.length=0}}},P1=1,F2=(J,q,Q,j=!1,Y,X)=>{let K=y1(),B=new Map,Z=new Set,U=0,_="",F=-1,$={selected:!1,focused:!1},k=(m,p)=>{return $.selected=m,$.focused=p,$},O=`${Q}-item ${Q}-masonry-item`,y=`${Q}-item--selected`,N=`${Q}-item--focused`,G=(m,p)=>{if(typeof p==="string")m.innerHTML=p;else m.replaceChildren(p)},b=(m,p,f)=>{m.classList.toggle(y,p),m.classList.toggle(N,f)},M=(m,p)=>{if(j)m.style.transform=`translate(${Math.round(p.y)}px, ${Math.round(p.x)}px)`;else m.style.transform=`translate(${Math.round(p.x)}px, ${Math.round(p.y)}px)`},L=(m,p)=>{if(j)m.style.width=`${p.size}px`,m.style.height=`${p.crossSize}px`;else m.style.width=`${p.crossSize}px`,m.style.height=`${p.size}px`},z=(m,p,f,n,a)=>{let R=K.acquire(),g=k(n,a);if(R.className=O,R.dataset.index=String(m),R.dataset.id=String(p.id),R.dataset.lane=String(f.lane),R.ariaSelected=String(n),X)R.id=`${X}-item-${m}`;if(Y){let T=Y();if(T!==F)F=T,_=String(T);R.setAttribute("aria-setsize",_),R.setAttribute("aria-posinset",String(m+1))}L(R,f);let A=q(p,m,g);return G(R,A),b(R,n,a),M(R,f),{element:R,lastItemId:p.id,lastSelected:n,lastFocused:a,lastY:f.y,lastX:f.x,lastSize:f.size,lastCrossSize:f.crossSize,lastSeenFrame:U}},W=(m,p,f,n)=>{U++,Z.clear();for(let R=0;R<p.length;R++)Z.add(p[R].index);for(let[R,g]of B)if(Z.has(R))g.lastSeenFrame=U;else if(U-g.lastSeenFrame>P1)K.release(g.element),B.delete(R);let a=null;for(let R=0;R<p.length;R++){let g=p[R],A=g.index,T=m(A);if(!T)continue;let S=f.has(T.id),D=A===n,I=B.get(A);if(I){let v=I.lastItemId!==T.id,C=I.lastSelected!==S,E=I.lastFocused!==D,V=I.lastY!==g.y||I.lastX!==g.x,w=I.lastSize!==g.size||I.lastCrossSize!==g.crossSize;if(v||C||E){let H=k(S,D),u=q(T,A,H);G(I.element,u),b(I.element,S,D),I.element.dataset.id=String(T.id),I.element.ariaSelected=String(S),I.lastItemId=T.id,I.lastSelected=S,I.lastFocused=D}if(w)L(I.element,g),I.lastSize=g.size,I.lastCrossSize=g.crossSize;if(V)M(I.element,g),I.lastY=g.y,I.lastX=g.x}else{let v=z(A,T,g,S,D);if(!a)a=document.createDocumentFragment();a.appendChild(v.element),B.set(A,v)}}if(a)J.appendChild(a)},h=()=>{for(let{element:m}of B.values())K.release(m);B.clear(),J.innerHTML=""};return{render:W,getElement:(m)=>B.get(m)?.element,sortDOM:()=>{f0(J,B.keys(),(m)=>B.get(m)?.element)},clear:h,destroy:()=>{h(),K.clear()}}};var R1=new Set,z1=100,sJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:X,emitter:K,config:B,rawConfig:Z}=Y,U=B.classPrefix,_=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");X.root.classList.add(`${U}--masonry`);let F=S0(Z.padding),$=Y2(F,_),k=X2(F,_),O=()=>{return(_?X.viewport.clientHeight:X.viewport.clientWidth)-$},y={columns:J.columns,gap:J.gap??0,containerSize:O()};q=A2(y);let N=Z.item,G=_&&Z.item.width?Z.item.width:N.height,b={containerWidth:0,columns:0,gap:0,columnWidth:0},M=typeof G==="function"?(C)=>G(C,b):()=>G,L=()=>{let C=Y.dataManager.getTotal(),E=q;b.containerWidth=E.containerSize,b.columns=E.columns,b.gap=E.gap;let V=(E.columns-1)*E.gap;b.columnWidth=Math.max(0,(b.containerWidth-V)/E.columns),j=E.calculateLayout(C,M);let w=q.getTotalSize(j);Y.sizeCache.getTotalSize=()=>w,Y.updateContentSize(w)},z=Z.item.template;Q=F2(X.items,z,U,_,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let W=null,h=null,P=!1,x=()=>{if(P)return;P=!0,W=Y.methods.get("_getSelectedIds")??null,h=Y.methods.get("_getFocusedIndex")??null},m=(C)=>Y.dataManager.getItem(C),p=-1,f=-1,n=!0,a=B.overscan*z1,R=()=>{if(Y.state.isDestroyed)return;x();let C=Y.scrollController.getScrollTop(),E=Y.state.viewportState.containerSize;if(!n&&C===p&&E===f)return;p=C,f=E,n=!1;let V=Math.max(0,C-a),w=C+E+a,H=q.getVisibleItems(j,V,w),u=W?W():R1,d=h?h():-1;if(Q&&H.length>0)Q.render(m,H,u,d);let o=Y.state.viewportState;o.scrollPosition=C;let c=H.length,t=c>0?H[0].index:0,Q0=c>0?H[c-1].index:0;o.visibleRange.start=t,o.visibleRange.end=Q0,o.renderRange.start=t,o.renderRange.end=Q0;let r=Y.state.lastRenderRange;if(r.start!==t||r.end!==Q0)r.start=t,r.end=Q0,K.emit("range:change",{range:{start:t,end:Q0}})},g=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,n=!0,R()};Y.setRenderFns(R,g);let A=(C,E)=>{let V=(_?E:C)-$;if(q&&q.containerSize!==V){if(q.update({containerSize:V}),L(),Q)Q.clear();g()}};Y.resizeHandlers.push(A);let T=()=>{L(),g()},S=Y.dataManager,D=(C)=>{if(typeof S[C]!=="function")return;let E=S[C].bind(S);S[C]=(...V)=>{E(...V),T()}};D("setItems"),D("appendItems"),D("prependItems"),D("updateItem"),D("removeItem");let{animateScroll:I,cancelScroll:v}=I0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",v),Y.methods.set("scrollToIndex",(C,E)=>{let V=j[C];if(!V)return;let{align:w,behavior:H,duration:u}=P0(E),d=V.y,o=Y.state.viewportState.containerSize,c=d;if(w==="center")c=d-o/2+V.size/2;else if(w==="end"){c=d-o+V.size;let t=q.getTotalSize(j);if(C===j.length-1)c=Math.max(0,t+k-o)}if(c=Math.max(0,c),c=Y.adjustScrollPosition(c),H==="smooth")I(Y.scrollController.getScrollTop(),c,u);else v(),Y.scrollController.scrollTo(c)}),L(),Y.idleHandlers.push(()=>{if(Q)Q.sortDOM()}),Y.destroyHandlers.push(()=>{if(v(),Q)Q.destroy();X.root.classList.remove(`${U}--masonry`)})}}};var L2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),a0=(J,q,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),q.length>0)j.add(q[0])}else for(let Y of q)j.add(Y);return{...J,selected:j}},s0=(J,q)=>{let Q=new Set(J.selected);for(let j of q)Q.delete(j);return{...J,selected:Q}},g0=(J,q,Q)=>{if(Q==="none")return J;if(J.selected.has(q))return s0(J,[q]);else return a0(J,[q],Q)},T2=(J,q,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(q.map((j)=>j.id))}},b2=(J)=>({...J,selected:new Set}),H2=(J,q)=>{return J.focusedIndex=q,J},p2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?q-1:0;return J.focusedIndex=j,J},h2=(J,q,Q=!1)=>{if(q===0)return J;let j=J.focusedIndex+1;if(j>=q)j=Q?0:q-1;return J.focusedIndex=j,J},u2=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},g2=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J};var nJ=(J,q)=>{return J.selected.has(q)},n0=(J)=>{return Array.from(J.selected)},o0=(J,q)=>{let Q=[];for(let j of J.selected){let Y=q(j);if(Y)Q.push(Y)}return Q};var oJ=(J)=>{let q=J?.mode??"single",Q=J?.initial,j=L2(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(X){let{dom:K,emitter:B,config:Z}=X,{classPrefix:U,ariaIdPrefix:_}=Z;if(q==="none"){X.methods.set("select",()=>{}),X.methods.set("deselect",()=>{}),X.methods.set("toggleSelect",()=>{}),X.methods.set("selectAll",()=>{}),X.methods.set("clearSelection",()=>{}),X.methods.set("getSelected",()=>[]),X.methods.set("getSelectedItems",()=>[]),X.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let F=new Map,$=()=>{F.clear();let M=X.dataManager.getTotal(),L=X.dataManager.getCached();if(L===0)return;if(L>=M){for(let W=0;W<M;W++){let h=X.dataManager.getItem(W);if(h)F.set(h.id,W)}return}let z=X.dataManager.getStorage();if(z&&typeof z.getLoadedRanges==="function"){let W=z.getLoadedRanges();for(let h of W)for(let P=h.start;P<=h.end;P++){let x=X.dataManager.getItem(P);if(x)F.set(x.id,P)}}};B.on("load:end",({items:M,offset:L})=>{if(!M||M.length===0)return;if(L!==void 0)for(let z=0;z<M.length;z++){let W=M[z];if(W&&W.id!==void 0)F.set(W.id,L+z)}else $()}),$(),X.methods.set("_getSelectedIds",()=>{return j.selected}),X.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:k}=X.getRenderFns(),O=()=>{k();let M=(L)=>{let z=F.get(L);if(z===void 0)return;return X.dataManager.getItem(z)};B.emit("selection:change",{selected:n0(j),items:o0(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 N=Y;B.on("selection:change",({selected:M})=>{let L=M.length;if(L===0)N.textContent="";else if(L===1)N.textContent="1 item selected";else N.textContent=`${L} items selected`});let G=()=>{if(X.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let M=X.dataManager.getTotal();if(M===0)return;let L=j.focusedIndex>=0?Math.min(j.focusedIndex,M-1):0;j=H2(j,L),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${_}-item-${L}`),X.scrollController.scrollTo(X.adjustScrollPosition(y0(L,X.sizeCache,X.state.viewportState.containerSize,X.dataManager.getState().total,"center",X.getCachedCompression())));let z=X.dataManager.getItem(L);if(z)X.renderer.updateItemClasses(L,j.selected.has(z.id),!0)};K.root.addEventListener("focusin",G);let b=(M)=>{if(X.state.isDestroyed)return;let L=M.relatedTarget;if(L&&K.root.contains(L))return;let z=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),z>=0){let W=X.dataManager.getItem(z);if(W)X.renderer.updateItemClasses(z,j.selected.has(W.id),!1)}};K.root.addEventListener("focusout",b),X.clickHandlers.push((M)=>{if(X.state.isDestroyed)return;let z=M.target.closest("[data-index]");if(!z)return;let W=parseInt(z.dataset.index??"-1",10);if(W<0)return;let h=X.dataManager.getItem(W);if(!h)return;B.emit("item:click",{item:h,index:W,event:M}),j=H2(j,W),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${_}-item-${W}`),j=g0(j,h.id,q),O()}),X.keydownHandlers.push((M)=>{if(X.state.isDestroyed)return;let L=X.dataManager.getTotal(),z=j.focusedIndex,W=!1,h=!1,P=j;switch(M.key){case"ArrowUp":P=p2(j,L,Z.wrap),P.focusVisible=!0,W=!0,h=!0;break;case"ArrowDown":P=h2(j,L,Z.wrap),P.focusVisible=!0,W=!0,h=!0;break;case"Home":P=u2(j,L),P.focusVisible=!0,W=!0,h=!0;break;case"End":P=g2(j,L),P.focusVisible=!0,W=!0,h=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let x=X.dataManager.getItem(j.focusedIndex);if(x)P=g0(j,x.id,q),P.focusVisible=!0;W=!0}break}if(W){M.preventDefault(),j=P;let x=j.focusedIndex;if(x>=0){let m=X.dataManager.getState();X.scrollController.scrollTo(X.adjustScrollPosition(y0(x,X.sizeCache,X.state.viewportState.containerSize,m.total,"center",X.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${_}-item-${x}`)}else K.root.removeAttribute("aria-activedescendant");if(h){let{selected:m}=j;if(z>=0&&z!==x){let p=X.dataManager.getItem(z);if(p)X.renderer.updateItemClasses(z,m.has(p.id),!1)}if(x>=0){let p=X.dataManager.getItem(x);if(p)X.renderer.updateItemClasses(x,m.has(p.id),!0)}}else O()}}),X.methods.set("select",(...M)=>{j=a0(j,M,q),O()}),X.methods.set("deselect",(...M)=>{j=s0(j,M),O()}),X.methods.set("toggleSelect",(M)=>{j=g0(j,M,q),O()}),X.methods.set("selectAll",()=>{if(q!=="multiple")return;let M=X.getAllLoadedItems();j=T2(j,M,q),$(),O()}),X.methods.set("clearSelection",()=>{j=b2(j),O()}),X.methods.set("getSelected",()=>{return n0(j)}),X.methods.set("getSelectedItems",()=>{return o0(j,(L)=>{let z=F.get(L);if(z===void 0)return;return X.dataManager.getItem(z)})}),X.destroyHandlers.push(()=>{if(N&&N.parentNode)N.remove();K.root.removeEventListener("focusin",G),K.root.removeEventListener("focusout",b)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var iJ=(J)=>{let q=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let Y=Q.scrollController.getScrollTop(),X=Q.getCachedCompression(),K=Q.getVirtualTotal(),B=Q.methods.get("getSelected"),Z=B&&B().length>0?B():void 0;if(K===0){let $={index:0,offsetInItem:0,total:0};if(Z)$.selectedIds=Z;return $}let U,_;if(X.isCompressed){let k=Y/X.virtualSize*K;U=Math.max(0,Math.min(Math.floor(k),K-1)),_=(k-U)*Q.sizeCache.getSize(U)}else U=Q.sizeCache.indexAtOffset(Y),_=Y-Q.sizeCache.getOffset(U);_=Math.max(0,_);let F={index:U,offsetInItem:_,total:K};if(Z)F.selectedIds=Z;return F});let j=(Y)=>{let{index:X,offsetInItem:K,selectedIds:B}=Y,Z=Q.getVirtualTotal();if(Z===0)return;if(!Number.isFinite(X)||!Number.isFinite(K))return;if(Q.sizeCache.getTotal()!==Z){Q.sizeCache.rebuild(Z),Q.updateCompressionMode();let N=Q.getCachedCompression();Q.updateContentSize(N.virtualSize)}let _=Q.getCachedCompression(),F=Math.max(0,Math.min(X,Z-1)),$;if(_.isCompressed){let N=Q.sizeCache.getSize(F),G=N>0?K/N:0;$=(F+G)/Z*_.virtualSize}else $=Q.sizeCache.getOffset(F)+K;let k=Q.state.viewportState.containerSize,O=Math.max(0,_.virtualSize-k);if($=Math.max(0,Math.min($,O)),Q.scrollController.scrollTo($),B&&B.length>0){let N=Q.methods.get("select");if(N)N(...B)}let y=Q.methods.get("loadVisibleRange");if(y)requestAnimationFrame(()=>{y()});else{let N=Q.methods.get("reload");if(N)requestAnimationFrame(()=>{N()})}};if(Q.methods.set("restoreScroll",j),q)queueMicrotask(()=>{j(q)})}}};var $2=(J,q=50,Q=1/0,j=!0)=>{let Y=J,X=[],K=0,B=()=>{X=Y.map((N,G)=>({def:N,index:G,width:0,minWidth:C1(N.minWidth??q,1),maxWidth:N.maxWidth??Q,resizable:N.resizable??j,offset:0}))},Z=(N)=>{if(X.length===0){K=0;return}let G=0,b=0;for(let M=0;M<X.length;M++){let L=X[M],z=L.def;if(z.width!==void 0)L.width=x2(z.width,L.minWidth,L.maxWidth),G+=L.width;else b++}if(b>0){let L=Math.max(0,N-G)/b;for(let z=0;z<X.length;z++){let W=X[z];if(W.def.width===void 0)W.width=x2(L,W.minWidth,W.maxWidth)}}U()},U=()=>{let N=0;for(let G=0;G<X.length;G++){let b=X[G];b.offset=N,N+=b.width}K=N},_=(N,G)=>{if(N<0||N>=X.length)return 0;let b=X[N];if(!b.resizable)return b.width;let M=x2(G,b.minWidth,b.maxWidth);return b.width=M,U(),M},F=(N)=>{return X[N]},$=(N)=>{if(X.length===0)return;if(N<0)return X[0];if(N>=K)return X[X.length-1];let G=0,b=X.length-1;while(G<b){let M=G+b>>>1,L=X[M];if(N<L.offset)b=M-1;else if(N>=L.offset+L.width)G=M+1;else return L}return X[G]},k=(N)=>{if(N<0||N>=X.length)return 0;return X[N].offset},O=(N)=>{if(N<0||N>=X.length)return 0;return X[N].width},y=(N)=>{Y=N,B()};return B(),{get columns(){return X},get totalWidth(){return K},resolve:Z,updateColumns:y,resizeColumn:_,getColumn:F,getColumnAtX:$,getColumnOffset:k,getColumnWidth:O}},x2=(J,q,Q)=>Math.min(Q,Math.max(q,J)),C1=(J,q)=>Math.max(q,J);var k2=(J,q,Q,j,Y,X,K)=>{let B=document.createElement("div");B.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),B.appendChild(Z),J.insertBefore(B,J.firstChild),q.style.position="absolute",q.style.top=`${Q}px`,q.style.left="0",q.style.right="0",q.style.bottom="0",q.style.height="auto";let _=[],F=[],$=[],k=!0,O=null,y="asc",N=null,G=!1,b=-1,M=0,L=0,z=(A,T)=>{let S=document.createElement("div");S.className=`${j}-table-header-cell`,S.setAttribute("role","columnheader"),S.setAttribute("aria-colindex",String(T+1)),S.dataset.columnKey=A.def.key;let D=A.def.align;if(D==="center")S.classList.add(`${j}-table-header-cell--center`);else if(D==="right")S.classList.add(`${j}-table-header-cell--right`);let I=document.createElement("div");I.className=`${j}-table-header-content`;let v=A.def.header?A.def.header(A.def):A.def.label;if(typeof v==="string")I.textContent=v;else I.appendChild(v);if(S.appendChild(I),A.def.sortable){let C=document.createElement("span");C.className=`${j}-table-header-sort`,C.setAttribute("aria-hidden","true"),S.appendChild(C),$.push(C),S.classList.add(`${j}-table-header-cell--sortable`)}else $.push(null);if(A.resizable){let C=document.createElement("div");C.className=`${j}-table-header-resize`,C.dataset.resizeIndex=String(T),S.appendChild(C),F.push(C)}return S},W=(A)=>{N=A,U.textContent="",_=[],F=[],$=[];let T=A.columns;for(let S=0;S<T.length;S++){let D=T[S],I=z(D,S);_.push(I),U.appendChild(I)}if(h(A),O)P(O,y)},h=(A)=>{N=A;let T=A.columns;U.style.width=`${A.totalWidth}px`;for(let S=0;S<_.length&&S<T.length;S++){let D=_[S],I=T[S];D.style.width=`${I.width}px`}},P=(A,T)=>{if(O=A,y=T,!N)return;let S=N.columns;for(let D=0;D<$.length&&D<S.length;D++){let I=$[D];if(!I)continue;if(S[D].def.key===A&&A!==null)I.textContent=T==="asc"?"▲":"▼",I.style.opacity="0.7",_[D].setAttribute("aria-sort",T==="asc"?"ascending":"descending");else I.textContent="",I.style.opacity="0",_[D].removeAttribute("aria-sort")}},x=(A)=>{U.style.transform=`translateX(${-A}px)`},m=(A)=>{let T=A.target;if(!T.dataset.resizeIndex)return;if(A.preventDefault(),A.stopPropagation(),b=parseInt(T.dataset.resizeIndex,10),!N)return;let S=N.getColumn(b);if(!S||!S.resizable)return;G=!0,M=A.clientX,L=S.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",T.classList.add(`${j}-table-header-resize--active`),T.setPointerCapture(A.pointerId),T.addEventListener("pointermove",p),T.addEventListener("pointerup",f),T.addEventListener("pointercancel",f)},p=(A)=>{if(!G||!N)return;let T=A.clientX-M;if(Math.abs(T)<1)return;let S=Math.max(0,L+T);Y(b,S)},f=(A)=>{if(!G)return;let T=A.target;T.removeEventListener("pointermove",p),T.removeEventListener("pointerup",f),T.removeEventListener("pointercancel",f);try{T.releasePointerCapture(A.pointerId)}catch{}T.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,b=-1},n=(A)=>{let T=A.target;if(T.dataset.resizeIndex!==void 0)return;if(G)return;let S=T;while(S&&!S.dataset.columnKey)if(S=S.parentElement,S===Z||S===null)return;if(!S||!S.dataset.columnKey)return;let D=S.dataset.columnKey;if(!N)return;let I=N.columns,v=-1;for(let E=0;E<I.length;E++)if(I[E].def.key===D){v=E;break}if(v===-1)return;let C=I[v];if(K)K({key:D,index:v,event:A});if(C.def.sortable&&X){let E;if(O===D)if(y==="asc")E="desc";else E=null;else E="asc";X({key:D,index:v,direction:E})}};return Z.addEventListener("pointerdown",m),Z.addEventListener("click",n),{element:Z,update:h,updateSort:P,rebuild:W,show:()=>{if(k)return;k=!0,Z.style.display=""},hide:()=>{if(!k)return;k=!1,Z.style.display="none"},destroy:()=>{Z.removeEventListener("pointerdown",m),Z.removeEventListener("click",n),q.style.position="",q.style.top="",q.style.left="",q.style.right="",q.style.bottom="",B.remove(),_=[],F=[],$=[],N=null,k=!1},syncScroll:x}};var w1=(J=200)=>{let q=[];return{acquire:()=>{let X=q.pop();if(X)return X;return document.createElement("div")},release:(X)=>{if(X.parentNode)X.parentNode.removeChild(X);if(q.length<J)X.className="",X.removeAttribute("data-id"),X.removeAttribute("data-index"),X.removeAttribute("aria-selected"),X.removeAttribute("aria-rowindex"),X.removeAttribute("role"),X.style.cssText="",X.textContent="",q.push(X)},clear:()=>{q.length=0}}},y2=(J,q,Q,j,Y,X,K,B)=>{let Z=w1(),U=new Map,_=-1,F=Q,$=null,k=null,O=(v,C)=>{$=v,k=C},y=(v,C)=>{if(C)v.setAttribute("aria-selected","true");else v.removeAttribute("aria-selected")},N=`${Y}-item ${Y}-table-row`,G=`${Y}-item--selected`,b=`${Y}-item--focused`,M=`${Y}-table-cell`,L=`${Y}-table-cell--center`,z=`${Y}-table-cell--right`,W=`${Y}-item--odd`,h=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,P=`${Y}-table-group-header-content`,x=(v,C,E,V)=>{if(E.def.cell){let w=E.def.cell(C,E.def,V);if(typeof w==="string")v.innerHTML=w;else v.replaceChildren(w)}else{let w=C[E.def.key];v.textContent=w!=null?String(w):""}},m=(v,C,E,V)=>{let w=N;if(B&&(C&1)===1)w+=` ${W}`;if(E)w+=` ${G}`;if(V)w+=` ${b}`;v.className=w},p=(v,C)=>{let E=C.def.align;if(E==="center")v.classList.add(L),v.classList.remove(z);else if(E==="right")v.classList.add(z),v.classList.remove(L);else v.classList.remove(L,z)},f=(v,C)=>{let V=F.columns.length;if(C.length===V)return C;let w=[];for(let H=0;H<V;H++){let u;if(H<C.length)u=C[H];else u=document.createElement("div"),u.className=M,v.appendChild(u);w.push(u)}for(let H=V;H<C.length;H++)C[H].remove();return w},n=(v,C,E)=>{let V=Z.acquire(),w=v;V.style.width=`${F.totalWidth}px`;let H=E.getSize(C);V.style.height=`${H}px`,V.className=h,V.setAttribute("role","presentation"),V.setAttribute("data-id",String(v.id)),V.setAttribute("data-index",String(C)),V.removeAttribute("aria-selected"),V.removeAttribute("aria-rowindex"),V.replaceChildren();let u=document.createElement("div");if(u.className=P,k){let o=k(w.groupKey,w.groupIndex);if(typeof o==="string")u.innerHTML=o;else u.appendChild(o)}V.appendChild(u);let d=E.getOffset(C);return V.style.transform=`translateY(${d}px)`,{element:V,cells:[],index:C,isGroupHeader:!0,lastItemId:v.id,lastSelected:!1,lastFocused:!1,lastOffset:d,lastHeight:H}},a=(v,C,E,V,w)=>{let H=Z.acquire();H.style.width=`${F.totalWidth}px`;let u=w.getSize(C);H.style.height=`${u}px`,m(H,C,E,V),H.setAttribute("role","row"),H.setAttribute("data-id",String(v.id)),H.setAttribute("data-index",String(C)),H.id=`${X}-${C}`,H.setAttribute("aria-rowindex",String(C+2));let d=K();if(d!==_)_=d;y(H,E);let o=f(H,[]),c=F.columns;for(let Q0=0;Q0<o.length&&Q0<c.length;Q0++){let r=o[Q0],i=c[Q0];r.style.left=`${i.offset}px`,r.style.width=`${i.width}px`,r.setAttribute("role","gridcell"),r.setAttribute("aria-colindex",String(Q0+1)),p(r,i),x(r,v,i,C)}let t=w.getOffset(C);return H.style.transform=`translateY(${t}px)`,{element:H,cells:o,index:C,isGroupHeader:!1,lastItemId:v.id,lastSelected:E,lastFocused:V,lastOffset:t,lastHeight:u}},R=(v,C,E,V)=>{for(let[o,c]of U)if(o<C.start||o>C.end)Z.release(c.element),U.delete(o);let w=!1,H=K();if(H!==_)_=H,w=!0;let u=null,d=q();for(let o=C.start;o<=C.end;o++){let c=o-C.start,t=v[c];if(!t)continue;let Q0=E.has(t.id),r=o===V,i=$?$(t):!1,s=U.get(o);if(s){if(s.isGroupHeader!==i){Z.release(s.element),U.delete(o);let j0=i?n(t,o,d):a(t,o,Q0,r,d);if(U.set(o,j0),!u)u=document.createDocumentFragment();u.appendChild(j0.element);continue}if(i){if(s.lastItemId!==t.id){let K0=t,_0=s.element.firstElementChild;if(_0&&k){let X0=k(K0.groupKey,K0.groupIndex);if(typeof X0==="string")_0.innerHTML=X0;else _0.replaceChildren(X0)}s.element.setAttribute("data-id",String(t.id)),s.lastItemId=t.id}let q0=d.getOffset(o);if(s.lastOffset!==q0)s.lastOffset=q0,s.element.style.transform=`translateY(${q0}px)`;let Y0=d.getSize(o);if(s.lastHeight!==Y0)s.lastHeight=Y0,s.element.style.height=`${Y0}px`}else{let j0=s.lastItemId!==t.id,q0=s.lastSelected!==Q0,Y0=s.lastFocused!==r;if(j0){let X0=F.columns;for(let D0=0;D0<s.cells.length&&D0<X0.length;D0++)x(s.cells[D0],t,X0[D0],o);m(s.element,o,Q0,r),s.element.setAttribute("data-id",String(t.id)),y(s.element,Q0),s.lastItemId=t.id,s.lastSelected=Q0,s.lastFocused=r}else if(q0||Y0)m(s.element,o,Q0,r),y(s.element,Q0),s.lastSelected=Q0,s.lastFocused=r;let K0=d.getOffset(o);if(s.lastOffset!==K0)s.lastOffset=K0,s.element.style.transform=`translateY(${K0}px)`;let _0=d.getSize(o);if(s.lastHeight!==_0)s.lastHeight=_0,s.element.style.height=`${_0}px`;if(w)s.element.setAttribute("aria-rowindex",String(o+2))}}else{let j0=i?n(t,o,d):a(t,o,Q0,r,d);if(U.set(o,j0),!u)u=document.createDocumentFragment();u.appendChild(j0.element)}}if(u)J.appendChild(u)},g=(v,C,E,V)=>{let w=U.get(v);if(!w)return;if(w.isGroupHeader)return;let H=w.lastItemId!==C.id,u=w.lastSelected!==E,d=w.lastFocused!==V;if(H||u||d){if(H){let o=F.columns;for(let c=0;c<w.cells.length&&c<o.length;c++)x(w.cells[c],C,o[c],v);w.element.setAttribute("data-id",String(C.id)),w.lastItemId=C.id}m(w.element,v,E,V),y(w.element,E),w.lastSelected=E,w.lastFocused=V}},A=(v,C,E)=>{let V=U.get(v);if(!V)return;if(V.isGroupHeader)return;let w=V.lastSelected!==C,H=V.lastFocused!==E;if(w||H)m(V.element,v,C,E),y(V.element,C),V.lastSelected=C,V.lastFocused=E},T=(v)=>{F=v;let C=v.columns;for(let[,E]of U)if(E.element.style.width=`${v.totalWidth}px`,E.cells.length>0)for(let V=0;V<E.cells.length&&V<C.length;V++){let w=E.cells[V],H=C[V];w.style.left=`${H.offset}px`,w.style.width=`${H.width}px`}},S=(v)=>{return U.get(v)?.element},D=()=>{for(let[,v]of U)Z.release(v.element);U.clear(),_=-1};return{render:R,updateItem:g,updateItemClasses:A,getElement:S,updateColumnLayout:T,setGroupHeaderFn:O,clear:D,destroy:()=>{D(),Z.clear()}}};var v1=new Set,tJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let q=null,Q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:X,emitter:K,config:B}=Y,{classPrefix:Z}=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,_=J.minColumnWidth??50,F=J.maxColumnWidth??1/0,$=J.columnBorders??!1,k=J.rowBorders??!0,O=J.rowHeight,y=J.headerHeight??(typeof O==="number"?O:40),N=J.sort?.key??null,G=J.sort?.direction??"asc";if(q=$2(J.columns,_,F,U),typeof O==="function")Y.setSizeConfig(O);else if(typeof O==="number")Y.setSizeConfig(O);if(Y.rebuildSizeCache(),X.root.classList.add(`${Z}--table`),k)X.root.classList.add(`${Z}--table-row-borders`);if($)X.root.classList.add(`${Z}--table-col-borders`);X.root.setAttribute("role","grid"),X.root.setAttribute("aria-colcount",String(J.columns.length));let b=-1,M=X.items.getAttribute("aria-label");if(M)X.root.setAttribute("aria-label",M),X.items.removeAttribute("aria-label");X.items.setAttribute("role","rowgroup"),X.viewport.setAttribute("role","none"),X.content.setAttribute("role","none"),X.viewport.removeAttribute("tabindex");let L=Y.getContainerWidth();q.resolve(L);let z=(V,w)=>{if(!q)return;let H=q.getColumn(V);if(!H)return;let u=H.width,d=q.resizeColumn(V,w);if(Q)Q.update(q);if(j)j.updateColumnLayout(q);P(),K.emit("column:resize",{key:H.def.key,index:V,previousWidth:u,width:d})},W=(V)=>{if(V.direction===null)N=null,G="asc";else N=V.key,G=V.direction;if(Q)Q.updateSort(N,G);K.emit("column:sort",V)},h=(V)=>{K.emit("column:click",V)};if(Q=k2(X.root,X.viewport,y,Z,z,W,h),Q.rebuild(q),N)Q.updateSort(N,G);let P=()=>{if(!q)return;let V=q.totalWidth;X.content.style.minWidth=`${V}px`,X.items.style.minWidth=`${V}px`};P(),j=y2(X.items,()=>Y.sizeCache,q,J.columns,Z,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped);let x=null,m=null,p=!1,f=()=>{if(p)return;p=!0,x=Y.methods.get("_getSelectedIds")??null,m=Y.methods.get("_getFocusedIndex")??null},n=-1,a=-1,R=!0,g=B.overscan,A={start:0,end:0},T={start:0,end:0},S=()=>{if(Y.state.isDestroyed)return;let V=Y.scrollController.getScrollTop(),w=Y.state.viewportState.containerSize;if(!R&&V===n&&w===a)return;n=V,a=w,R=!1;let H=Y.getVirtualTotal(),u=H+1;if(u!==b)b=u,X.root.setAttribute("aria-rowcount",String(u));if(H===0||w===0)A.start=0,A.end=0;else A.start=Math.max(0,Y.sizeCache.indexAtOffset(V)),A.end=Math.min(H-1,Math.max(0,Y.sizeCache.indexAtOffset(V+w-1)));T.start=Math.max(0,A.start-g),T.end=Math.min(H-1,A.end+g);let d=Y.state.viewportState;d.scrollPosition=V,d.visibleRange.start=A.start,d.visibleRange.end=A.end,d.renderRange.start=T.start,d.renderRange.end=T.end;let o=Y.state.lastRenderRange,c=Y.dataManager.getItemsInRange(T.start,T.end);f();let t=x?x():v1,Q0=m?m():-1;if(j.render(c,T,t,Q0),o.start!==T.start||o.end!==T.end)o.start=T.start,o.end=T.end,K.emit("range:change",{range:{start:T.start,end:T.end}})},D=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,R=!0,S()};Y.setRenderFns(S,D);let I=Q,v=-1,C=()=>{let V=X.viewport.scrollLeft;if(V!==v){if(v=V,I.syncScroll)I.syncScroll(V)}};Y.afterScroll.push(()=>{C()});let E=()=>{C()};X.viewport.addEventListener("scroll",E,{passive:!0}),Y.resizeHandlers.push((V,w)=>{if(!q)return;if(q.resolve(V),Q)Q.update(q);if(j)j.updateColumnLayout(q);P()}),Y.methods.set("updateColumns",(V)=>{if(!q||!Q)return;if(q.updateColumns(V),q.resolve(Y.getContainerWidth()),Q.rebuild(q),N)Q.updateSort(N,G);if(P(),j)j.updateColumnLayout(q),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(V,w)=>{if(!q)return;let H;if(typeof V==="string"){let u=q.columns;H=-1;for(let d=0;d<u.length;d++)if(u[d].def.key===V){H=d;break}if(H===-1)return}else H=V;z(H,w)}),Y.methods.set("getColumnWidths",()=>{if(!q)return{};let V={},w=q.columns;for(let H=0;H<w.length;H++)V[w[H].def.key]=w[H].width;return V}),Y.methods.set("setSort",(V,w)=>{if(N=V,G=w??"asc",Q)Q.updateSort(N,G)}),Y.methods.set("getSort",()=>{return{key:N,direction:G}}),Y.methods.set("_getTableLayout",()=>q),Y.methods.set("_replaceTableRenderer",(V)=>{j=V}),Y.methods.set("_updateTableForGroups",(V,w)=>{if(j)j.setGroupHeaderFn(V,w)}),Y.methods.set("_getTableHeaderHeight",()=>y),Y.contentSizeHandlers.push(()=>{P()}),Y.destroyHandlers.push(()=>{if(X.viewport.removeEventListener("scroll",E),Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null;X.content.style.minWidth="",X.items.style.minWidth="",X.root.classList.remove(`${Z}--table`),X.root.removeAttribute("role"),X.root.removeAttribute("aria-colcount"),X.viewport.removeAttribute("role"),X.viewport.setAttribute("tabindex","-1"),X.content.removeAttribute("role");let V=X.root.getAttribute("aria-label");if(V)X.items.setAttribute("aria-label",V),X.root.removeAttribute("aria-label");X.root.removeAttribute("aria-rowcount"),X.items.setAttribute("role","listbox")})},destroy(){if(Q)Q.destroy(),Q=null;if(j)j.destroy(),j=null}}};var S1=50,f1=0.1;function I1(J){let q=0,Q=0,j=0;function Y(){return j>0?Q/j:0}function X(Z){if(q=Z,Z>f1&&Z<S1)Q+=Z,j++}function K(){let Z=J.getTotal();if(Z===0)return 0;let U=J.getItemSize();if(U<=0)return 0;let _=J.getContainerSize();if(_<=0)return 0;let F=J.getScrollPosition(),$=typeof J.getColumns==="function"?J.getColumns():1,O=Math.ceil(Z/$)*U,N=Math.min(O,H0)-_,G=O-_,b=N>0?G/N:1,M=F*b,L=Math.ceil((M+_)/U);return Math.min(L*$,Z)}function B(){let Z=J.getTotal(),U=K();return{progress:Z>0?Math.min(100,Math.max(0,U/Z*100)):0,velocity:q,velocityAvg:Y(),itemCount:U,total:Z}}return{getState:B,onVelocity:X}}export{tJ as withTable,iJ as withSnapshots,oJ as withSelection,kJ as withScrollbar,RJ as withScale,CJ as withPage,sJ as withMasonry,rJ as withGroups,aJ as withGrid,zJ as withAsync,FJ as vlist,g0 as toggleSelection,SJ as simpleVisibleRange,a0 as selectItems,T2 as selectAll,xJ as rangesEqual,N2 as rafThrottle,bJ as needsScaling,D2 as mergeRanges,nJ as isSelected,R0 as isPlaceholderItem,mJ as isInRange,z0 as isGroupHeader,o0 as getSelectedItems,n0 as getSelectedIds,L0 as getScaleState,$J as getScaleInfo,L0 as getScale,dJ as getRangeCount,HJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,cJ as diffRanges,s0 as deselectItems,y2 as createTableRenderer,$2 as createTableLayout,k2 as createTableHeader,M2 as createStickyHeader,I1 as createStats,_2 as createSparseStorage,k0 as createSizeCache,L2 as createSelectionState,u0 as createScrollbar,PJ as createScrollController,W2 as createPlaceholderManager,Q2 as createMeasuredSizeCache,F2 as createMasonryRenderer,A2 as createMasonryLayout,l0 as createGroupedSizeFn,G2 as createGroupLayout,r0 as createGridRenderer,E2 as createGridLayout,j2 as createEmitter,V2 as createAsyncManager,b2 as clearSelection,gJ as clampScrollPosition,pJ as calculateTotalSize,y0 as calculateScrollToIndex,U2 as calculateScaledVisibleRange,K2 as calculateScaledScrollToIndex,LJ as calculateScaledRenderRange,h0 as calculateScaledItemPosition,fJ as calculateRenderRange,d0 as calculateMissingRanges,uJ as calculateItemOffset,TJ as calculateIndexFromScrollPosition,hJ as calculateActualSize,c0 as buildLayoutItems,H0 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var{defineProperty:i0,getOwnPropertyNames:gJ,getOwnPropertyDescriptor:xJ}=Object,mJ=Object.prototype.hasOwnProperty;var T2=new WeakMap,dJ=(J)=>{var X=T2.get(J),q;if(X)return X;if(X=i0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")gJ(J).map((j)=>!mJ.call(X,j)&&i0(X,j,{get:()=>J[j],enumerable:!(q=xJ(J,j))||q.enumerable}));return T2.set(J,X),X};var cJ=(J,X)=>{for(var q in X)i0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var k2=(J,X)=>()=>(J&&(X=J(J=0)),X);var lJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},rJ=(J,X)=>{let q=X,j=new Float64Array(0),Y=(K)=>{q=K,j=new Float64Array(K+1),j[0]=0;for(let B=0;B<K;B++)j[B+1]=j[B]+J(B)};Y(X);let Q=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=j[q])return q-1;let B=0,N=q-1;while(B<N){let U=B+N+1>>>1;if(j[U]<=K)B=U;else N=U-1}return B};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return j[q];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Q(K),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(K)=>Y(K),isVariable:()=>!0}},$0=(J,X)=>{if(typeof J==="number")return lJ(J,X);return rJ(J,X)},m0=(J,X,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let Y=0,Q=0,K=X;while(K<j&&Q<q)Q+=J.getSize(K),Y++,K++;return Math.max(1,Y)},t0=(J,X,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getSize(0));let j=0,Y=0;for(let Q=q-1;Q>=0;Q--){let K=J.getSize(Q);if(Y+K>X)break;Y+=K,j++}return Math.max(j,1)},P2=(J,X,q)=>{if(q===0)return 0;let j=Math.floor(X),Y=X-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+Y*J.getSize(Q)};var S0=(J,X,q)=>{let j=Array.from(X).sort((K,B)=>K-B);if(j.length<=1)return;let Y=[];for(let K=0;K<j.length;K++){let B=q(j[K]);if(B)Y.push(B)}if(Y.length<=1)return;let Q=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===Q)Q=Q.nextSibling;else J.insertBefore(B,Q)}};var x2=3,m2="vlist",J2=200,I0=50,d2=50,c2=5,l2=2,Q2=16000000,r2=150,a2="x",s2=20,j2="_isPlaceholder",o2="__placeholder_";var w0=(J,X)=>{let q=X.getTotalSize(),j=q>Q2,Y=j?Q2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},i2=(J,X,q,j,Y,Q)=>{if(j===0||X===0)return Q.start=0,Q.end=-1,Q;if(!Y.isCompressed){let E=q.indexAtOffset(J),v=q.indexAtOffset(J+X);if(v<j-1)v++;return Q.start=Math.max(0,E),Q.end=Math.min(j-1,Math.max(0,v)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=m0(q,Math.max(0,U),X,j),P=Math.ceil(N)+W,y=K-X-J;if(y<=X&&y>=-1){let E=t0(q,X,j),v=Math.max(0,j-E),_=Math.max(0,Math.min(1,1-y/X));U=Math.floor(U+(v-U)*_),P=y<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,P)),Q},l0=(J,X,q,j,Y,Q,K)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);let{virtualSize:B}=Q,N=B-Y,U=N-X;if(U<=Y&&U>=-1){if(X>=N-1){let L=q.getTotalSize()-q.getOffset(J);return Y-L}let y=t0(q,Y,j),E=Math.max(0,j-y),_=X/B*j,O=Math.max(0,Math.min(1,1-U/Y)),A=q.getOffset(J)-q.getOffset(E),M=q.getOffset(J)-P2(q,_,j);return M+(A-M)*O}let W=X/B,P=q.getTotalSize(),b=W*P;return q.getOffset(J)-b},t2=(J,X,q,j,Y,Q="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(Q==="end"&&J===j-1)return Math.max(0,Y.virtualSize-q);K=J/j*Y.virtualSize}else K=X.getOffset(J);let B=X.getSize(J);switch(Q){case"center":K-=(q-B)/2;break;case"end":K-=q-B;break}let N=Y.virtualSize-q;return Math.max(0,Math.min(K,N))};var q2=()=>{};var R0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var WJ={};cJ(WJ,{createGridRenderer:()=>K2});var q1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),X.push(Q)},clear:()=>{X.length=0}}},X1=1,K2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=q1(),W=new Map,P=Q,b=!1,y=null,E=0,v=0,_="",O=-1,A=(D)=>{if(y&&E===D)return y;return y=w0(D,q),E=D,y},M={selected:!1,focused:!1},L=(D,k)=>{return M.selected=D,M.focused=k,M},$=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,I=`${Y}-item--focused`,w=(D,k)=>{if(typeof k==="string")D.innerHTML=k;else D.replaceChildren(k)},g=(D,k,x)=>{D.classList.toggle(V,k),D.classList.toggle(I,x)},l=(D,k)=>{let x=j.getRow(D);if(k){let F=k.totalItems,f=A(F);if(f.isCompressed)return l0(x,k.scrollPosition,q,F,k.containerSize,f,k.rangeStart)}return q.getOffset(x)},z=(D,k)=>{let x=b&&j.getCol(D)===0,F=x?0:j.getCol(D),f=x?0:j.getColumnOffset(F,P),p;if(b){let t=j.getRow(D),u=0,s=new Set;for(let j0=0;j0<D;j0++){let m=j.getRow(j0);if(m<t&&!s.has(m)){let o=q.getSize(j0);u+=o,s.add(m)}}p=u}else p=l(D,k);if(N)return`translate(${Math.round(p)}px, ${Math.round(f)}px)`;return`translate(${Math.round(f)}px, ${Math.round(p)}px)`},d=(D,k)=>{D.style.transform=k},i=(D,k)=>{let x=D.dataset.id?.startsWith("__group_header"),F=x?P:j.getColumnWidth(P),f;if(b||x)f=q.getSize(k)-j.gap;else{let p=j.getRow(k);f=q.getSize(p)-j.gap}if(N)D.style.width=`${f}px`,D.style.height=`${F}px`;else D.style.width=`${F}px`,D.style.height=`${f}px`},h=(D,k,x,F,f)=>{let p=U.acquire(),t=L(x,F);if(p.className=$,p.dataset.index=String(D),p.dataset.id=String(k.id),p.dataset.row=String(j.getRow(D)),p.dataset.col=String(j.getCol(D)),p.ariaSelected=String(x),B)p.id=`${B}-item-${D}`;if(K){let s=K();if(s!==O)O=s,_=String(s);p.setAttribute("aria-setsize",_),p.setAttribute("aria-posinset",String(D+1))}i(p,D);let u=X(k,D,t);return w(p,u),g(p,x,F),d(p,f),{element:p,lastItemId:k.id,lastSelected:x,lastFocused:F,lastTransform:f,lastSeenFrame:v}},H=(D,k,x,F,f)=>{if(v++,k.start===0&&D.length>0)b=R0(D[0]);for(let[u,s]of W)if(u>=k.start&&u<=k.end)s.lastSeenFrame=v;else if(v-s.lastSeenFrame>X1)U.release(s.element),W.delete(u);let p=!1;if(K){let u=K();if(u!==O)O=u,_=String(u),p=!0}let t=null;for(let u=k.start;u<=k.end;u++){let s=u-k.start,j0=D[s];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${u} (range: ${k.start}-${k.end}, items.length: ${D.length})`);continue}let m=x.has(j0.id),o=u===F,n=W.get(u);if(n){let q0=n.lastItemId!==j0.id,e=n.lastSelected!==m,X0=n.lastFocused!==o;if(q0||e||X0){if(q0){let _0=L(m,o),Y0=X(j0,u,_0);w(n.element,Y0),n.element.dataset.id=String(j0.id),n.element.dataset.row=String(j.getRow(u)),n.element.dataset.col=String(j.getCol(u)),i(n.element,u)}g(n.element,m,o),n.element.ariaSelected=String(m),n.lastItemId=j0.id,n.lastSelected=m,n.lastFocused=o}let B0=z(u,f);if(n.lastTransform!==B0)d(n.element,B0),n.lastTransform=B0;if(p)n.element.setAttribute("aria-setsize",_)}else{let q0=z(u,f),e=h(u,j0,m,o,q0);if(!t)t=document.createDocumentFragment();t.appendChild(e.element),W.set(u,e)}}if(t)J.appendChild(t)},S=(D)=>{for(let[k,x]of W){let F=z(k,D);if(x.lastTransform!==F)d(x.element,F),x.lastTransform=F}},G=(D,k,x,F)=>{let f=W.get(D);if(!f)return;let p=f.lastItemId!==k.id,t=f.lastSelected!==x,u=f.lastFocused!==F;if(p||t||u){let s=L(x,F),j0=X(k,D,s);w(f.element,j0),g(f.element,x,F),f.element.dataset.id=String(k.id),f.element.ariaSelected=String(x),i(f.element,D),f.lastItemId=k.id,f.lastSelected=x,f.lastFocused=F}},T=(D,k,x)=>{let F=W.get(D);if(!F)return;let f=F.lastSelected!==k,p=F.lastFocused!==x;if(f||p)g(F.element,k,x),F.lastSelected=k,F.lastFocused=x},R=(D)=>{return W.get(D)?.element},Z=(D)=>{if(Math.abs(D-P)<1)return;P=D;for(let[k,x]of W){i(x.element,k);let F=z(k);d(x.element,F),x.lastTransform=F}},C=()=>{S0(J,W.keys(),(D)=>W.get(D)?.element)},a=()=>{for(let[,D]of W)U.release(D.element);W.clear()};return{render:H,updatePositions:S,updateItem:G,updateItemClasses:T,getElement:R,sortDOM:C,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var B2=k2(()=>{q2()});var b2=2,H2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},y2=(J,X)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=X,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[Q],B=X-K.position,N=q-K.time;J.velocity=N>0?Math.abs(B)/N:0}return J.lastPosition=X,J.lastTime=q,J};var $2=(J,X)=>{let q=new Map,j=(Q)=>{let K=q.get(Q);return K!==void 0?K:J},Y=$0(j,X);return{getOffset(Q){return Y.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return Y.indexAtOffset(Q)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(Q){if(Q<Y.getTotal()){for(let K of q.keys())if(K>=Q)q.delete(K)}Y=$0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,K){q.set(Q,K)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var w2=()=>{let J={},X=(B,N)=>{if(!J[B])J[B]=new Set;return J[B].add(N),()=>q(B,N)},q=(B,N)=>{J[B]?.delete(N)};return{on:X,off:q,emit:(B,N)=>{J[B]?.forEach((U)=>{try{U(N)}catch(W){console.error(`[vlist] Error in event handler for "${String(B)}":`,W)}})},once:(B,N)=>{let U=(W)=>{q(B,U),N(W)};return X(B,U)},clear:(B)=>{if(B)delete J[B];else for(let N in J)delete J[N]},listenerCount:(B)=>{return J[B]?.size??0}}};var R2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},v2=(J,X,q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);Y.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${X}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let K=document.createElement("div");if(K.className=`${X}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${X}-items`,B.setAttribute("role","listbox"),q)B.setAttribute("aria-label",q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";return K.appendChild(B),Q.appendChild(K),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B}};var z2=(J=100)=>{let X=[];return{acquire:()=>{let q=X.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(X.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),X.push(q)},clear:()=>{X.length=0}}};var C2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=m0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},S2=(J,X,q,j)=>{if(q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(q-1,J.end+X)},f2=(J,X,q,j,Y,Q=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U+Q-q),P;switch(Y){case"center":P=B-(q-N)/2;break;case"end":P=Q>0&&B+N>=U?W:B-q+N;break;default:P=B}return Math.max(0,Math.min(P,W))};var d0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return d0;if(typeof J==="number")return J===0?d0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?d0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?d0:{top:X,right:q,bottom:j,left:Y}},c0=(J,X)=>X?J.left+J.right:J.top+J.bottom,C0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var I2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:P,idleHandlers:b,afterScroll:y,clickHandlers:E,keydownHandlers:v,resizeHandlers:_,destroyHandlers:O,methods:A,onScrollFrame:M,resizeObserver:L,renderRange:$}=X;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return Q},adjustScrollPosition(V){if(J.mp===0)return V;let I=U?J.cw:J.ch,w=J.hc.getTotalSize(),g=Math.max(0,w-I),l=Math.max(0,w+J.mp-I);if(V>=g)return l;return Math.min(V,l)},get renderer(){return{render:(V,I,w,g,l)=>{J.ss=w,J.fi=g,J.ffn()},updateItemClasses:(V,I,w)=>{let g=K.get(V);if(!g)return;g.classList.toggle(`${W}-item--selected`,I),g.classList.toggle(`${W}-item--focused`,w),g.ariaSelected=I?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(V)=>K.get(V)??null,clear:()=>{},destroy:()=>{}}},set renderer(V){},get dataManager(){return J.dm},set dataManager(V){J.dm=V},get scrollController(){return J.sc},set scrollController(V){J.sc=V},state:N,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:b,clickHandlers:E,keydownHandlers:v,resizeHandlers:_,contentSizeHandlers:P,destroyHandlers:O,methods:A,replaceTemplate(V){J.at=V},replaceRenderer(V){},replaceDataManager(V){J.dm=V},replaceScrollController(V){J.sc=V},getItemsForRange(V){let{dm:I,it:w}=J,g=[];for(let l=V.start;l<=V.end;l++){let z=I?I.getItem(l):w[l];if(z)g.push(z)}return g},getAllLoadedItems(){let V=J.dm;if(V){let I=V.getTotal(),w=[];for(let g=0;g<I;g++){let l=V.getItem(g);if(l)w.push(l)}return w}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let V=J.hc;return{isCompressed:!1,actualSize:V.getTotalSize(),virtualSize:V.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:$.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,V]of K)V.remove(),B.release(V);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(V,I){J.rfn=V,J.ffn=I},setVirtualTotalFn(V){J.vtf=V},rebuildSizeCache(V){J.hc.rebuild(V??J.vtf())},setSizeConfig(V){if(J.hc=$0(V,J.vtf()),J.gp>0){let I=J.hc.getTotalSize,w=J.gp;J.hc.getTotalSize=()=>{let g=I();return g>0?g-w:0}}},updateContentSize(V){let I=`${V+J.mp}px`;if(U)q.content.style.width=I;else q.content.style.height=I},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,I){J.sgt=V,J.sst=(w)=>{I(w),M()}},setScrollTarget(V){J.st.removeEventListener("scroll",M),J.st=V,J.st.addEventListener("scroll",M,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(V){J.gcw=V.width,J.gch=V.height,J.cw=V.width(),J.ch=V.height(),N.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,L.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(V){J.sif=V}}},p2=(J,X,q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:Q,applyTemplate:K,updateContentSize:B}=X,N=()=>{J.hc.rebuild(J.vtf()),B(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let P=J.it,b=[],y=Math.max(0,U),E=Math.min(W,P.length-1);for(let v=y;v<=E;v++)b.push(P[v]);return b},setTotal:(U)=>{},setItems:(U,W=0,P)=>{let b=J.it;if(W===0&&(P!==void 0||b.length===0))J.it=U;else{let y=W+U.length;if(b.length<y)b.length=y;for(let E=0;E<U.length;E++)b[W+E]=U[E]}if(J.ii)N()},updateItem:(U,W)=>{let P=J.it;if(U<0||U>=P.length)return!1;let b=P[U];if(!b)return!1;P[U]={...b,...W};let y=j.get(U);if(y)K(y,J.at(P[U],U,Y)),y.dataset.id=String(P[U].id);return!0},removeItem:(U)=>{if(U<0||U>=J.it.length)return!1;if(J.it.splice(U,1),J.ii)N();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},h2=(J,X)=>{let{dom:q,classPrefix:j}=X;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let Q=J.sgt()+Y;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),Q=Math.max(0,Y-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var u2=(J,X,q,j,Y,Q,K,B,N,U=0)=>{let W=(_,O=!1)=>{let A=q?X.viewport.scrollWidth-X.viewport.clientWidth:X.viewport.scrollHeight-X.viewport.clientHeight;if(A<=0||_<A-2)return!1;let M=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(M>_){if(J.sst(M),J.ls=M,O)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let P=new WeakMap,b=0,y=!1,E=null,v=()=>{if(y){let _=J.sgt();K(),y=!1,W(_,!0)}};return E=new ResizeObserver((_)=>{if(J.id)return;let O=!1,A=j.start;for(let M of _){let L=P.get(M.target);if(L===void 0)continue;let $=q?M.borderBoxSize[0].inlineSize:M.borderBoxSize[0].blockSize;if(!B.isMeasured(L)){let V=$+U,I=B.getSize(L);if(B.setMeasuredSize(L,V),O=!0,L<A&&V!==I)b+=V-I;E.unobserve(M.target);let w=M.target;if(q)w.style.width=`${$}px`;else w.style.height=`${$}px`}}if(!O)return;if(B.rebuild(J.vtf()),J.hc=B,b!==0){let M=J.sgt();J.sst(M+b),J.ls=M+b,b=0}if(Q())y=!0;else{let M=J.sgt();K(),y=!1,W(M)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:E,ei:P,mc:B,fl:v,se:W}};var e0=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,H0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,X)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,K,B)=>{if(j(),Math.abs(K-Q)<1){J.scrollTo(K);return}let N=performance.now(),U=(W)=>{let P=W-N,b=Math.min(P/B,1),y=Q+(K-Q)*e0(b);if(J.scrollTo(y),X(),b<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var g2=(J,X,q,j,Y,Q,K,B,N,U,W,P,b,y,E,v,_,O)=>{let A=(G)=>{N.dataManager.setItems(G,0,G.length)},M=U?(G)=>{let T=J.sab(2),R=J.it.length;if(N.dataManager.setItems(G,R),T&&J.it.length>0){let Z=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(Z),J.ls=Z,J.rfn()}}:(G)=>{let T=J.it.length;N.dataManager.setItems(G,T)},L=U?(G)=>{let T=J.sgt(),R=J.hc.getTotalSize(),Z=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...G,...Z],0);let a=J.hc.getTotalSize()-R;if(a>0)J.sst(T+a),J.ls=T+a}:(G)=>{let T=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...G,...T],0)},$=(G,T)=>{N.dataManager.updateItem(G,T)},V=(G)=>{N.dataManager.removeItem(G)},I=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},w=null,g=()=>{if(w!==null)cancelAnimationFrame(w),w=null},l=(G,T,R)=>{if(g(),Math.abs(T-G)<1){J.sst(T),J.ls=T,J.rfn();return}let Z=performance.now(),C=(a)=>{let r=a-Z,D=Math.min(r/R,1),k=G+(T-G)*e0(D);if(J.sst(k),J.ls=k,J.rfn(),D<1)w=requestAnimationFrame(C);else w=null};w=requestAnimationFrame(C)},z=(G,T)=>{let{align:R,behavior:Z,duration:C}=H0(T),a=J.vtf(),r=G;if(W&&a>0)r=(r%a+a)%a;let D=J.gsp(r,J.hc,J.ch,a,R);if(Z==="smooth")l(J.sgt(),D,C);else g(),J.sst(D)},d=()=>J.sgt(),i=(G,T)=>{return q.on(G,T)},h=(G,T)=>{q.off(G,T)},H=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",P),X.items.removeEventListener("dblclick",b),X.root.removeEventListener("keydown",y),J.st.removeEventListener("scroll",E),v.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);O();for(let G=0;G<B.length;G++)B[G]();for(let G of K)if(G.destroy)G.destroy();g();for(let[,G]of j)G.remove(),Y.release(G);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},S={get element(){return X.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):A,appendItems:Q.has("appendItems")?Q.get("appendItems"):M,prependItems:Q.has("prependItems")?Q.get("prependItems"):L,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):V,reload:Q.has("reload")?Q.get("reload"):I,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):z,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):g,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):d,on:i,off:h,destroy:H};for(let[G,T]of Q){if(G.charCodeAt(0)===95||G==="setItems"||G==="appendItems"||G==="prependItems"||G==="updateItem"||G==="removeItem"||G==="reload"||G==="scrollToIndex"||G==="scrollToItem"||G==="cancelScroll"||G==="getScrollPosition")continue;S[G]=T}return S};var aJ=0,n2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.orientation==="horizontal",q=X?"width":"height",j=X?"estimatedWidth":"estimatedHeight",Y=X?J.item.width:J.item.height,Q=X?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${X?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,N={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),N},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,sJ(J,K,X,Y,Q??null)}};return N};function sJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=x2,classPrefix:N=m2,ariaLabel:U,padding:W,reverse:P=!1,scroll:b}=J,y=b,E=y?.wheel??!0,v=y?.wrap??!1,_=P,O=`${N}-${aJ++}`,A=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,M=j??Y,L=j==null&&Y!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,V=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,I={overscan:B,classPrefix:N,reverse:_,wrap:v,horizontal:q,ariaIdPrefix:O},w=Array.from(X.values()).sort((c,J0)=>(c.priority??50)-(J0.priority??50)),g=new Set(w.map((c)=>c.name));for(let c of w)if(c.conflicts){for(let J0 of c.conflicts)if(g.has(J0))throw Error(`[vlist/builder] ${c.name} and ${J0} cannot be combined`)}if(_){if(g.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let l=R2(J.container),z=v2(l,N,U,q);if(y?.wheel===!1)if(q)z.viewport.style.overflowX="hidden";else z.viewport.style.overflow="hidden";if(y?.scrollbar==="none")z.viewport.classList.add(`${N}-viewport--no-scrollbar`);let d=b0(W),i=c0(d,q);if(d.top||d.right||d.bottom||d.left)z.content.style.boxSizing="border-box",z.content.style.padding=`${d.top}px ${d.right}px ${d.bottom}px ${d.left}px`;let h=w2(),H=K||[],S=typeof M==="function"&&(X.has("withGrid")||X.has("withMasonry")),G=A>0?typeof M==="function"?(c)=>M(c)+A:M+A:M,T=L?$2(Y+A,H.length):$0(G,S?0:H.length);if(A>0){let c=T.getTotalSize;T.getTotalSize=()=>{let J0=c();return J0>0?J0-A:0}}let R=z2(),Z={it:H,hc:T,ch:z.viewport.clientHeight,cw:z.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:H2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>z.viewport.scrollLeft:()=>z.viewport.scrollTop,sst:q?(c)=>{z.viewport.scrollLeft=c}:(c)=>{z.viewport.scrollTop=c},sab:(c=2)=>{let J0=Z.hc.getTotalSize();return Z.ls+Z.ch>=J0-c},sic:!1,rfn:null,ffn:null,gvr:(c,J0,Q0,Z0,M0)=>{C2(c,J0,Q0,Z0,M0)},gsp:(c,J0,Q0,Z0,M0)=>{return f2(c,J0,Q0,Z0,M0,Z.mp)},pef:null,at:Q.template,vre:!0,st:z.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch,gp:A,mp:i,sif:(c)=>c};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let C=null,a=!1,r={start:0,end:0},D={start:0,end:0},k={start:-1,end:-1},x={viewportState:{scrollPosition:0,containerSize:q?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},F=new Map,f=()=>{S0(z.items,F.keys(),(c)=>F.get(c))},p=()=>{let c=`${Z.hc.getTotalSize()+i}px`;if(q)z.content.style.width=c;else z.content.style.height=c},u=u2(Z,z,q,r,k,()=>a,p,L?T:null,L,A),s={selected:!1,focused:!1},j0=`${N}-item`,m=Q.striped,o=!!m,n=m==="data"||m==="even"||m==="odd",q0=`${N}-item--odd`,e=[],X0=[],B0=[],_0=[],Y0=[],G0=[],D0=[],U0=new Map,A0=null,W0=null,L0=!1,v0=()=>{if(L0)return;L0=!0,A0=U0.get("_getSelectedIds")??null,W0=U0.get("_getFocusedIndex")??null},s0=(c,J0)=>{if(typeof J0==="string")c.innerHTML=J0;else c.replaceChildren(J0)},zJ=(c,J0)=>{let Q0=Math.round(Z.hc.getOffset(J0));if(q)c.style.transform=`translateX(${Q0}px)`;else c.style.transform=`translateY(${Q0}px)`};Z.pef=zJ;let CJ=(c,J0)=>{let Q0=R.acquire();Q0.className=j0;let Z0=!L||u.mc&&u.mc.isMeasured(c);if(q){if(Z0)Q0.style.width=`${Z.hc.getSize(c)-A}px`;else Q0.style.width="";if(V!=null)Q0.style.height=`${V}px`}else if(Z0)Q0.style.height=`${Z.hc.getSize(c)-A}px`;else Q0.style.height="";if(Q0.dataset.index=String(c),Q0.dataset.id=String(J0.id),Q0.ariaSelected="false",Q0.id=`${O}-item-${c}`,Z.la=String(Z.vtf()),Q0.setAttribute("aria-setsize",Z.la),Q0.setAttribute("aria-posinset",String(c+1)),String(J0.id).startsWith("__placeholder_"))Q0.classList.add(`${N}-item--placeholder`);if(o)if(n){let V0=Z.sif(c);if(V0<0)Q0.classList.remove(q0);else Q0.classList.toggle(q0,(V0&1)===1)}else Q0.classList.toggle(q0,(c&1)===1);return s0(Q0,Z.at(J0,c,s)),Z.pef(Q0,c),Q0},SJ=()=>{if(Z.id)return;v0();let c=A0?A0():Z.ss,J0=W0?W0():Z.fi,Q0=Z.vtf(),Z0=q?Z.cw:Z.ch;if(Z.gvr(Z.ls,Z0,Z.hc,Q0,r),S2(r,B,Q0,D),D.start===k.start&&D.end===k.end){if(Z.sic)for(let[K0,O0]of F)Z.pef(O0,K0);return}let M0=String(Q0),V0=M0!==Z.la;Z.la=M0;for(let[K0,O0]of F)if(K0<D.start||K0>D.end)O0.remove(),R.release(O0),F.delete(K0);let N0=document.createDocumentFragment(),F0=[],T0=[];for(let K0=D.start;K0<=D.end;K0++){let O0=Z.dm?Z.dm.getItem(K0):Z.it[K0];if(O0===void 0)continue;let E0=F.get(K0);if(E0){let k0=E0.dataset.id,p0=String(O0.id);if(k0!==p0){let uJ=k0?.startsWith("__placeholder_"),F2=p0.startsWith("__placeholder_");s0(E0,Z.at(O0,K0,s)),E0.dataset.id=p0;let L2=!L||u.mc&&u.mc.isMeasured(K0);if(q)E0.style.width=L2?`${Z.hc.getSize(K0)-A}px`:"";else E0.style.height=L2?`${Z.hc.getSize(K0)-A}px`:"";if(F2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(uJ&&!F2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,K0);let x0=c.has(O0.id),hJ=K0===J0;if(E0.classList.toggle(`${N}-item--selected`,x0),E0.classList.toggle(`${N}-item--focused`,hJ),E0.ariaSelected=x0?"true":"false",V0)E0.setAttribute("aria-setsize",Z.la)}else{let k0=CJ(K0,O0);T0.push({index:K0,element:k0});let p0=c.has(O0.id),x0=K0===J0;if(p0)k0.classList.add(`${N}-item--selected`),k0.ariaSelected="true";if(x0)k0.classList.add(`${N}-item--focused`);N0.appendChild(k0),F0.push({index:K0,element:k0})}}if(F0.length>0){z.items.appendChild(N0);for(let{index:K0,element:O0}of F0)F.set(K0,O0)}if(L&&u.ob&&u.mc&&u.ei){for(let{index:K0,element:O0}of T0)if(!u.mc.isMeasured(K0))u.ei.set(O0,K0),u.ob.observe(O0)}k.start=D.start,k.end=D.end,x.lastRenderRange.start=D.start,x.lastRenderRange.end=D.end,x.viewportState.scrollPosition=Z.ls,x.viewportState.visibleRange.start=r.start,x.viewportState.visibleRange.end=r.end,x.viewportState.renderRange.start=D.start,x.viewportState.renderRange.end=D.end,h.emit("range:change",{range:{start:D.start,end:D.end}})},fJ=()=>{k.start=-1,k.end=-1,Z.rfn()};Z.rfn=SJ,Z.ffn=fJ;let IJ=()=>{z.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),u.fl(),f();for(let c=0;c<X0.length;c++)X0[c]();h.emit("scroll:idle",{scrollPosition:Z.ls})},pJ=()=>{if(C)clearTimeout(C);C=setTimeout(IJ,y?.idleTimeout??r2)},u0=()=>{if(Z.id)return;let c=Z.sgt();if(c===Z.ls&&a)return;let J0=c>=Z.ls?"down":"up";if(Z.vt=y2(Z.vt,c),!z.root.classList.contains(`${N}--scrolling`))z.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=c,Z.rfn(),h.emit("scroll",{scrollPosition:c,direction:J0}),h.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=b2});for(let Q0=0;Q0<e.length;Q0++)e[Q0](c,J0);pJ()},z0=null;if(Z.st.addEventListener("scroll",u0,{passive:!0}),E&&!q&&!$)z0=(c)=>{if(x.viewportState.isCompressed)return;let J0=z.viewport.scrollWidth>z.viewport.clientWidth;if(J0&&Math.abs(c.deltaX)>Math.abs(c.deltaY))return;if(c.preventDefault(),J0&&c.deltaX!==0)z.viewport.scrollLeft+=c.deltaX;let Q0=Z.sgt(),Z0=z.viewport.scrollHeight-z.viewport.clientHeight,M0=Math.max(0,Math.min(Q0+c.deltaY,Z0));if(Math.abs(M0-Q0)<1)return;Z.sst(M0),u0()},Z.wh=z0,z.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&E)z0=(c)=>{if(c.deltaX)return;c.preventDefault(),z.viewport.scrollLeft+=c.deltaY},Z.wh=z0,z.viewport.addEventListener("wheel",z0,{passive:!1});let G2=(c)=>{let J0=c.target.closest("[data-index]");if(!J0)return null;let Q0=parseInt(J0.dataset.index??"-1",10);if(Q0<0)return null;let Z0=Z.dm?.getItem(Q0)??Z.it[Q0];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:Q0}},M2=(c)=>{let J0=G2(c);if(J0)h.emit("item:click",{item:J0.item,index:J0.index,event:c});for(let Q0=0;Q0<B0.length;Q0++)B0[Q0](c)},O2=(c)=>{let J0=G2(c);if(J0)h.emit("item:dblclick",{item:J0.item,index:J0.index,event:c})},E2=(c)=>{for(let J0=0;J0<_0.length;J0++)_0[J0](c)};z.items.addEventListener("click",M2),z.items.addEventListener("dblclick",O2),z.root.addEventListener("keydown",E2);let o0=new ResizeObserver((c)=>{if(Z.id)return;for(let J0 of c){let Q0=J0.contentRect.height,Z0=J0.contentRect.width,M0=q?Z0:Q0,V0=q?Z.cw:Z.ch;if(Z.cw=Z0,Z.ch=Q0,Math.abs(M0-V0)>1){if(x.viewportState.containerSize=M0,Z.ii)p(),Z.rfn(),h.emit("resize",{height:Q0,width:Z0})}if(Z.ii)for(let N0=0;N0<Y0.length;N0++)Y0[N0](Z0,Q0)}});if(Z.vre)o0.observe(z.viewport);let n0={dom:z,emitter:h,resolvedConfig:I,rawConfig:J,rendered:F,pool:R,itemState:s,sharedState:x,renderRange:D,isHorizontal:q,classPrefix:N,contentSizeHandlers:G0,idleHandlers:X0,afterScroll:e,clickHandlers:B0,keydownHandlers:_0,resizeHandlers:Y0,destroyHandlers:D0,methods:U0,onScrollFrame:u0,resizeObserver:o0,applyTemplate:s0,updateContentSize:p},g0=I2(Z,n0);Z.dm=p2(Z,n0,g0),Z.sc=h2(Z,n0);let A2=new Map;for(let c of w)if(c.methods)for(let J0 of c.methods){let Q0=A2.get(J0);if(Q0)throw Error(`[vlist/builder] Method "${J0}" is registered by both "${Q0}" and "${c.name}"`);A2.set(J0,c.name)}for(let c of w)c.setup(g0);if(!U0.has("_getFocusedIndex")){let c=-1,J0=`${N}-item--focused`,Q0=(V0,N0)=>{let F0=Z.vtf();if(N0<0||N0>=F0)return;c=N0,z.root.setAttribute("aria-activedescendant",`${O}-item-${N0}`);let T0=q?Z.cw:Z.ch;if(Z.sst(Z.gsp(N0,Z.hc,T0,F0,"center")),Z.ls=Z.sgt(),Z.rfn(),V0>=0&&V0!==N0)F.get(V0)?.classList.remove(J0);F.get(N0)?.classList.add(J0)},Z0=()=>{if(Z.id)return;if(!z.root.matches(":focus-visible"))return;let V0=Z.vtf();if(V0===0)return;Q0(-1,c>=0?Math.min(c,V0-1):0)};z.root.addEventListener("focusin",Z0);let M0=(V0)=>{if(Z.id)return;let N0=V0.relatedTarget;if(N0&&z.root.contains(N0))return;if(c>=0)F.get(c)?.classList.remove(J0);z.root.removeAttribute("aria-activedescendant")};z.root.addEventListener("focusout",M0),_0.push((V0)=>{if(Z.id)return;let N0=Z.vtf();if(N0===0)return;let F0=c,T0=F0;switch(V0.key){case"ArrowUp":T0=F0<=0?N0-1:F0-1;break;case"ArrowDown":T0=F0>=N0-1?0:F0+1;break;case"Home":T0=0;break;case"End":T0=N0-1;break;default:return}V0.preventDefault(),Q0(F0,T0)}),D0.push(()=>{z.root.removeEventListener("focusin",Z0),z.root.removeEventListener("focusout",M0)})}if(Z.ii=!0,g0.state.isInitialized=!0,p(),Z.rfn(),_&&Z.it.length>0){let c=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(c),Z.ls=c,Z.rfn()}return g2(Z,z,h,F,R,U0,w,D0,g0,_,v,M2,O2,E2,u0,o0,()=>{if(u.ob)u.ob.disconnect()},()=>{if(C)clearTimeout(C)})}q2();var h0=(J,X,q={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:N=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,P=0,b=0,y=0,E=0,v=!1,_=!1,O=0,A=0,M=0,L=null,$=!1,V=null,I=null,w=Y?"width":"height",g=Y?"translateX":"translateY",l=Y?(u)=>u.clientX:(u)=>u.clientY,z=Y?"left":"top",d=document.createElement("div"),i=document.createElement("div"),h=N?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,i.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(i),J.appendChild(d),h){if(h.className=`${j}-scrollbar-hover`,Y)h.classList.add(`${j}-scrollbar-hover--horizontal`),h.style.height=`${U}px`;else h.style.width=`${U}px`;J.appendChild(h)}},S=()=>{if(L)clearTimeout(L),L=null},G=()=>{if(!Q)return;S(),L=setTimeout(R,K)},T=()=>{if(P<=b)return;if(S(),!$)d.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!v&&!_)G()},R=()=>{if(v||_)return;d.classList.remove(`${j}-scrollbar--visible`),$=!1},Z=(u,s)=>{P=u,b=s;let j0=P>b;if(d.style.display=j0?"":"none",!j0){R();return}let m=b/P;y=Math.max(B,m*b),i.style[w]=`${y}px`,E=b-y,C(M)},C=(u)=>{if(M=u,P<=b||E<=0)return;let s=P-b,m=Math.min(1,Math.max(0,u/s))*E;i.style.transform=`${g}(${m}px)`},a=(u)=>{if(u.target===i)return;let s=d.getBoundingClientRect(),o=l(u)-s[z]-y/2,q0=Math.max(0,Math.min(o,E))/E,e=P-b,X0=q0*e;X(X0),T()},r=(u)=>{u.preventDefault(),u.stopPropagation(),v=!0,O=l(u),A=M,S(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",D),document.addEventListener("mouseup",k)},D=(u)=>{if(!v)return;let s=l(u)-O,j0=E>0?s/E:0,m=P-b,o=j0*m,n=Math.max(0,Math.min(A+o,m)),e=n/m*E;if(i.style.transform=`${g}(${e}px)`,I=n,V===null)V=requestAnimationFrame(()=>{if(I!==null)X(I);V=null})},k=()=>{if(v=!1,V!==null)cancelAnimationFrame(V),V=null;if(I!==null)X(I),I=null;if(d.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)G();document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",k)},x=()=>{if(W)T()},F=()=>{if(!v){if(_=!1,Q)G()}},f=()=>{_=!0,S(),T()},p=()=>{if(_=!1,!v&&Q)G()},t=()=>{if(S(),V!==null)cancelAnimationFrame(V),V=null;if(d.removeEventListener("click",a),d.removeEventListener("mouseenter",f),d.removeEventListener("mouseleave",p),i.removeEventListener("mousedown",r),J.removeEventListener("mouseenter",x),J.removeEventListener("mouseleave",F),document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",k),h){if(h.removeEventListener("mouseenter",f),h.removeEventListener("mouseleave",p),h.parentNode)h.parentNode.removeChild(h)}if(d.parentNode)d.parentNode.removeChild(d)};if(H(),d.addEventListener("click",a),d.addEventListener("mouseenter",f),d.addEventListener("mouseleave",p),i.addEventListener("mousedown",r),J.addEventListener("mouseenter",x),J.addEventListener("mouseleave",F),h)h.addEventListener("mouseenter",f),h.addEventListener("mouseleave",p);return{show:T,hide:R,updateBounds:Z,updatePosition:C,isVisible:()=>$,destroy:t}};var e2=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=h0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,K),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let B=q.getCachedCompression();X.updateBounds(B.virtualSize,q.state.viewportState.containerSize);let N=X;q.afterScroll.push((U,W)=>{N.updatePosition(U),N.show()}),q.resizeHandlers.push((U,W)=>{if(N){let P=q.getCachedCompression();N.updateBounds(P.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(N){let U=q.getCachedCompression();N.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(N)N.destroy()})},destroy(){if(X)X.destroy(),X=null}}};var oJ=0.65,nJ=0.5,iJ=0.95,tJ=0.1,eJ=5,J1=100,JJ=()=>{let J=null,X=0,q=!1,j=0,Y=null,Q=0,K=0,B=null,N=[];return{name:"withScale",priority:20,setup(U){let{dom:W,config:P}=U,{classPrefix:b,horizontal:y}=P,E=()=>{let A=U.getVirtualTotal(),M=w0(A,U.sizeCache);if(M.isCompressed&&!q){q=!0,U.scrollController.enableCompression(M),U.updateContentSize(M.virtualSize),U.setScrollFns(()=>X,(d)=>{if(X=d,j=d,Y!==null)cancelAnimationFrame(Y),Y=null});let L=()=>{let d=j-X;if(Math.abs(d)<nJ)X=j,Y=null;else{X+=d*oJ;let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,h)),Y=requestAnimationFrame(L)}U.scrollController.scrollTo(X)},$=W.viewport,V=(d)=>{d.preventDefault();let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+d.deltaY,h)),Y===null)Y=requestAnimationFrame(L)};$.addEventListener("wheel",V,{passive:!1});let I=()=>{if(B!==null)cancelAnimationFrame(B),B=null},w=(d)=>{if(I(),Y!==null)cancelAnimationFrame(Y),Y=null;let i=d.touches[0];if(!i)return;let h=y?i.clientX:i.clientY;Q=h,K=X,N=[{time:performance.now(),y:h}]},g=(d)=>{d.preventDefault();let i=d.touches[0];if(!i)return;let h=y?i.clientX:i.clientY,H=performance.now();if(N.push({time:H,y:h}),N.length>eJ)N.shift();let S=Q-h,T=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,R=Math.max(0,Math.min(K+S,T));X=R,j=R,U.scrollController.scrollTo(R)},l=(d)=>{let i=performance.now(),h=N.filter((T)=>i-T.time<J1),H=0;if(h.length>=2){let T=h[0],R=h[h.length-1],Z=R.time-T.time;if(Z>0)H=(T.y-R.y)/Z}if(N=[],Math.abs(H)<tJ)return;let S=H*16,G=()=>{if(S*=iJ,Math.abs(S)<0.5){B=null;return}let R=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+S;if(Z=Math.max(0,Math.min(Z,R)),Z<=0&&S<0||Z>=R&&S>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(G)};B=requestAnimationFrame(G)};if($.addEventListener("touchstart",w,{passive:!0}),$.addEventListener("touchmove",g,{passive:!1}),$.addEventListener("touchend",l,{passive:!0}),$.addEventListener("touchcancel",l,{passive:!0}),U.destroyHandlers.push(()=>{if($.removeEventListener("wheel",V),$.removeEventListener("touchstart",w),$.removeEventListener("touchmove",g),$.removeEventListener("touchend",l),$.removeEventListener("touchcancel",l),I(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${b}-scrollbar`)){if(J=h0(W.viewport,(i)=>U.scrollController.scrollTo(i),{},b,y),!W.viewport.classList.contains(`${b}-viewport--custom-scrollbar`))W.viewport.classList.add(`${b}-viewport--custom-scrollbar`);J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);let d=J;U.afterScroll.push((i,h)=>{if(d)d.updatePosition(i),d.show()}),U.resizeHandlers.push((i,h)=>{if(d){let H=U.getCachedCompression();d.updateBounds(H.virtualSize,U.state.viewportState.containerSize)}})}}else if(!M.isCompressed&&q)q=!1,U.scrollController.disableCompression(),U.updateContentSize(M.actualSize);else if(M.isCompressed)U.scrollController.updateConfig({compression:M}),U.updateContentSize(M.virtualSize);if(J)J.updateBounds(M.virtualSize,U.state.viewportState.containerSize);U.state.cachedCompression={state:M,totalItems:A}};U.updateCompressionMode=E;let v=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return v()},U.setVisibleRangeFn((A,M,L,$,V)=>{_=null,O=null;let I=w0($,L);i2(A,M,L,$,I,V)}),U.setScrollToPosFn((A,M,L,$,V)=>{let I=w0($,M);return t2(A,M,L,$,I,V)});let _=null,O=null;U.setPositionElementFn((A,M)=>{let L=U.getVirtualTotal(),$=w0(L,U.sizeCache);if($.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||M<O)O=M,_=Math.round(l0(M,V,U.sizeCache,L,U.state.viewportState.containerSize,$));let I=_+U.sizeCache.getOffset(M)-U.sizeCache.getOffset(O),w=U.config.horizontal;A.style.transform=w?`translateX(${I}px)`:`translateY(${I}px)`}else{let V=Math.round(U.sizeCache.getOffset(M)),I=U.config.horizontal;A.style.transform=I?`translateX(${V}px)`:`translateY(${V}px)`}}),E(),U.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(B!==null)cancelAnimationFrame(B),B=null}}};var QJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:Y}=J,Q=new Map,K=0,B=0,N=(H)=>{let S=Q.get(H);if(!S)S={items:Array(X),count:0,lastAccess:Date.now()},Q.set(H,S);else S.lastAccess=Date.now();return S},U=(H)=>{return Math.floor(H/X)},W=(H)=>{return H%X},P=()=>K,b=(H)=>{K=H},y=(H)=>{if(H<0||H>=K)return;let S=U(H),G=Q.get(S);if(!G)return;return G.items[W(H)]},E=(H)=>{if(H<0||H>=K)return!1;let S=U(H),G=Q.get(S);if(!G)return!1;return G.items[W(H)]!==void 0},v=(H,S)=>{let G=U(H),T=N(G),R=W(H),Z=T.items[R]===void 0;if(T.items[R]=S,Z)T.count++,B++;if(H>=K)K=H+1},_=(H,S)=>{for(let G=0;G<S.length;G++){let T=S[G];if(T!==void 0)v(H+G,T)}},O=(H)=>{if(H<0||H>=K)return!1;let S=U(H),G=Q.get(S);if(!G)return!1;let T=W(H);if(G.items[T]===void 0)return!1;if(G.items[T]=void 0,G.count--,B--,G.count===0)Q.delete(S);return!0},A=(H,S)=>{let G=[];for(let T=H;T<=S&&T<K;T++)G.push(y(T));return G},M=(H,S)=>{for(let G=H;G<=S&&G<K;G++)if(!E(G))return!1;return!0},L=()=>{let H=[],S=null,G=Array.from(Q.keys()).sort((T,R)=>T-R);for(let T of G){let R=Q.get(T);if(!R)continue;let Z=T*X;for(let C=0;C<X;C++){let a=Z+C;if(a>=K)break;if(R.items[C]!==void 0)if(S===null)S={start:a,end:a};else if(a===S.end+1)S.end=a;else H.push(S),S={start:a,end:a};else if(S!==null)H.push(S),S=null}}if(S!==null)H.push(S);return H},$=(H,S)=>{let G=[],T=null;for(let R=H;R<=S&&R<K;R++)if(!E(R))if(T===null)T={start:R,end:R};else T.end=R;else if(T!==null)G.push(T),T=null;if(T!==null)G.push(T);return G},V=(H)=>{return Q.has(H)},I=(H)=>{let S=Q.get(H);if(S)S.lastAccess=Date.now()},w=(H,S)=>{if(H>S||Q.size===0)return;let G=Date.now(),T=U(Math.max(0,H)),R=U(Math.min(K-1,S));for(let Z=T;Z<=R;Z++){let C=Q.get(Z);if(C)C.lastAccess=G}},g=(H,S)=>{if(B<=q)return 0;let G=Math.max(0,H-j),T=Math.min(K-1,S+j),R=U(G),Z=U(T),C=0,a=[];for(let[r,D]of Q)if(r<R||r>Z)C+=D.count,a.push(r),B-=D.count,Q.delete(r);if(C>0&&Y)Y(C,a);return C},l=()=>{if(B<=q)return 0;let H=Array.from(Q.entries()).sort(([,T],[,R])=>T.lastAccess-R.lastAccess),S=0,G=[];for(let[T,R]of H){if(B<=q)break;S+=R.count,B-=R.count,G.push(T),Q.delete(T)}if(S>0&&Y)Y(S,G);return S},z=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},d=()=>B,i=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:P,setTotal:b,get:y,has:E,set:v,setRange:_,delete:O,getRange:A,isRangeLoaded:M,getLoadedRanges:L,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:V,touchChunk:I,touchChunksForRange:w,evictDistant:g,evictToLimit:l,getStats:z,getCachedCount:d,clear:i,reset:()=>{i(),K=0}}},Q1=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],Q=q[q.length-1];if(Y.start<=Q.end+1)Q.end=Math.max(Q.end,Y.end);else q.push({...Y})}return q},jJ=(J,X,q)=>{let j=Math.floor(J.start/q)*q,Y=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:Y};if(X.length===0)return[Q];let K=[],B=Q1(X),N=Q.start;for(let U of B){if(U.end<N)continue;if(U.start>Q.end)break;if(U.start>N)K.push({start:N,end:Math.min(U.start-1,Q.end)});if(N=U.end+1,N>Q.end)break}if(N<=Q.end)K.push({start:N,end:Q.end});return K};var qJ=(J={})=>{let{maskCharacter:X=a2,maxSampleSize:q=s2}=J,j=[],Y=!1,Q=0,K=(P)=>{if(Y||P.length===0)return;let b=Math.min(P.length,q);for(let y=0;y<b;y++){let E=P[y];if(!E||typeof E!=="object")continue;let v={};for(let[_,O]of Object.entries(E)){if(_.startsWith("_")||_==="id")continue;v[_]=String(O??"").length}if(Object.keys(v).length>0)j.push(v)}Y=!0},B=()=>Y,N=(P)=>{let b={id:`${o2}${Q++}`,[j2]:!0,_index:P};if(j.length===0)return b.label=X.repeat(12),b;let y=j[P%j.length];for(let[E,v]of Object.entries(y))b[E]=X.repeat(Math.max(1,v));return b};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(P,b)=>{let y=[];for(let E=P;E<=b;E++)y.push(N(E));return y},clear:()=>{j=[],Y=!1,Q=0}}},r0=(J)=>{if(!J||typeof J!=="object")return!1;return J[j2]===!0};var j1=50,XJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=j1,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=QJ({...Y,onEvict:(m,o)=>{U?.(m),$()}}),P=null,b=()=>{if(!P)P=qJ(Q);return P},y=new Map,E=!1,v,_=!0,O,A=[],M=0,L=new Map,$=()=>{B?.(h())},V=()=>{y.clear();let m=W.getLoadedRanges();for(let o of m)for(let n=o.start;n<=o.end;n++){let q0=W.get(n);if(q0&&!r0(q0))y.set(q0.id,n)}},I=(m,o)=>{if(!r0(o))y.set(o.id,m)},w=(m)=>{y.delete(m)},g=(m,o)=>{return`${m}-${o}`},l=()=>W.getTotal(),z=()=>W.getCachedCount(),d=()=>E,i=()=>_,h=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:E,pendingRanges:A,error:v,hasMore:_,cursor:O}),H=()=>W,S=()=>b(),G=(m)=>{let o=W.get(m);if(o!==void 0)return o;if(m>=0&&m<W.getTotal())return b().generate(m);return},T=(m)=>{let o=y.get(m);if(o===void 0)return;return W.get(o)},R=(m)=>{return y.get(m)??-1},Z=(m)=>{let o=W.get(m);return o!==void 0&&!r0(o)},C=(m,o)=>{let n=[],q0=W.getTotal(),e=0,X0=0;W.touchChunksForRange(m,Math.min(o,q0-1));for(let B0=m;B0<=o&&B0<q0;B0++){let _0=W.get(B0);if(_0!==void 0)n.push(_0),e++;else n.push(b().generate(B0)),X0++}return n},a=(m)=>{W.setTotal(m),_=W.getCachedCount()<m,$()},r=(m,o=0,n)=>{if(X&&m.length>0){let q0=b();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(m)}for(let q0=0;q0<m.length;q0++){let e=m[q0];if(e!==void 0){let X0=o+q0;W.set(X0,e),I(X0,e)}}if(n!==void 0)W.setTotal(n);else if(o+m.length>W.getTotal())W.setTotal(o+m.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)_=!1;$(),N?.(m,o,W.getTotal())},D=(m,o)=>{let n=y.get(m);if(n===void 0)return!1;let q0=W.get(n);if(!q0)return!1;let e={...q0,...o};if(W.set(n,e),o.id!==void 0&&o.id!==m)w(m),I(n,e);return $(),!0},k=(m)=>{let o=y.get(m);if(o===void 0)return!1;W.delete(o),w(m);let n=W.getTotal();if(n>0)W.setTotal(n-1);return $(),!0},x=async(m,o)=>{if(!X)return;let n=g(m,o);if(L.has(n))return;let q0=W.getLoadedRanges(),e=jJ({start:m,end:o},q0,W.chunkSize);if(e.length===0)return;let X0=W.chunkSize,B0=[];for(let Y0 of e){let G0=Math.floor(Y0.start/X0),D0=Math.floor(Y0.end/X0);for(let U0=G0;U0<=D0;U0++){let A0=U0*X0,W0=A0+X0-1,L0=g(A0,W0);if(!B0.some((v0)=>v0.start===A0)&&!L.has(L0))B0.push({start:A0,end:W0})}}let _0=[];for(let Y0 of e){let G0=Math.floor(Y0.start/X0),D0=Math.floor(Y0.end/X0);for(let U0=G0;U0<=D0;U0++){let A0=U0*X0,W0=A0+X0-1,L0=g(A0,W0);if(L.has(L0)){let v0=L.get(L0);if(!_0.includes(v0))_0.push(v0)}}}for(let Y0 of B0){let G0=g(Y0.start,Y0.end),D0=(async()=>{A.push(Y0),E=!0,v=void 0,$();try{let U0=Y0.end-Y0.start+1,A0={offset:Y0.start,limit:U0,cursor:void 0},W0=await X.read(A0);if(r(W0.items,Y0.start,W0.total),W0.cursor)O=W0.cursor;let L0=Y0.start+W0.items.length;if(L0>=M){if(M=L0,W0.hasMore!==void 0)_=W0.hasMore;else if(W0.total!==void 0)_=L0<W0.total}}catch(U0){v=U0 instanceof Error?U0:Error(String(U0))}finally{L.delete(G0),A=A.filter((U0)=>U0.start!==Y0.start||U0.end!==Y0.end),E=L.size>0,$()}})();L.set(G0,D0),_0.push(D0)}await Promise.all(_0)},F=async(m,o)=>{if(W.isRangeLoaded(m,o))return;await x(m,o)},f=async()=>{if(!X)return;await x(0,K-1)},p=async()=>{if(!X||E||!_)return!1;let m=W.getCachedCount(),o=W.getTotal(),n=m,q0=Math.min(n+K-1,o>0?o-1:n+K-1);if(n>=o&&o>0)return _=!1,!1;return await x(n,q0),W.getCachedCount()>m},t=async()=>{if(W.clear(),W.setTotal(0),y.clear(),P)P.clear();L.clear(),A=[],E=!1,O=void 0,_=!0,M=0,v=void 0,$()},u=(m,o)=>{if(W.evictDistant(m,o)>0)V()},s=()=>{W.clear(),y.clear(),O=void 0,v=void 0,A=[],E=!1,$()},j0=()=>{if(W.reset(),y.clear(),P)P.clear();O=void 0,_=!0,M=0,v=void 0,A=[],E=!1,$()};if(q&&q.length>0)r(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:h,getTotal:l,getCached:z,getIsLoading:d,getHasMore:i,getStorage:H,getPlaceholders:S,getItem:G,getItemById:T,getIndexById:R,isItemLoaded:Z,getItemsInRange:C,setTotal:a,setItems:r,updateItem:D,removeItem:k,loadRange:x,ensureRange:F,loadInitial:f,loadMore:p,reload:t,evictDistant:u,clear:s,reset:j0}};var YJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??c2,B=q?.preloadThreshold??l2,N=q?.preloadAhead??d2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,P=U.config.reverse,b=XJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let w=U.getVirtualTotal();U.sizeCache.rebuild(w),U.updateCompressionMode();let g=U.getCachedCompression();U.state.viewportState.totalSize=g.virtualSize,U.state.viewportState.actualSize=g.actualSize,U.state.viewportState.isCompressed=g.isCompressed,U.state.viewportState.compressionRatio=g.ratio,U.updateContentSize(g.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(w,g,l)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:w,total:l,offset:g})}});U.replaceDataManager(b);let y=null,E=null,v=0,_=!1,O=null,A=120,M=(w=!1)=>{if(_=!1,E=null,w)y=null;if(O!==null)clearTimeout(O),O=null},L=()=>{if(E){let w=E;E=null,U.dataManager.ensureRange(w.start,w.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})}};U.afterScroll.push((w,g)=>{if(U.state.isDestroyed)return;let l=U.scrollController.getVelocity(),d=U.scrollController.isTracking()&&l<=K;if(v>K&&l<=K)_=!0;else if(_&&l>K)M();if(_&&l<0.5)M(!0);if(v=l,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(_||E))M(!0),d=!0;let h=_&&l>0.5;if(d&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(P){if(w<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((G)=>{W.emit("error",{error:G,context:"loadMore"})})}else if(U.state.viewportState.totalSize-w-U.state.viewportState.containerSize<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((T)=>{W.emit("error",{error:T,context:"loadMore"})})}let{renderRange:H}=U.state.viewportState;if(!y||H.start!==y.start||H.end!==y.end){if(y={start:H.start,end:H.end},d&&!h){if(E=null,O!==null)clearTimeout(O),O=null;let{start:G,end:T}=H,R=U.getVirtualTotal();if(l>B)if(g==="down")T=Math.min(H.end+N,R-1);else G=Math.max(H.start-N,0);U.dataManager.ensureRange(G,T).catch((Z)=>{W.emit("error",{error:Z,context:"ensureRange"})})}else if(E={start:H.start,end:H.end},h){if(O!==null)clearTimeout(O);O=setTimeout(()=>{O=null,L(),M()},A)}}});let $=200,V=null;U.afterScroll.push((w,g)=>{if(V!==null)clearTimeout(V);V=setTimeout(()=>{V=null,L(),M()},$)}),U.destroyHandlers.push(()=>{if(V!==null)clearTimeout(V),V=null;M()});let I=()=>{if(U.state.isDestroyed)return;y=null;let{renderRange:w}=U.state.viewportState;if(w.end>0)U.dataManager.ensureRange(w.start,w.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})});L()};if(window.addEventListener("online",I),U.destroyHandlers.push(()=>{window.removeEventListener("online",I)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{y=null,E=null,U.forceRender();let{renderRange:w}=U.state.viewportState;if(w.end>0)W.emit("load:start",{offset:w.start,limit:w.end-w.start+1}),await U.dataManager.ensureRange(w.start,w.end)}),U.methods.set("reload",async()=>{y=null,E=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:w}=U.state.viewportState;if(w.end>0)await U.dataManager.ensureRange(w.start,w.end)}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((w)=>{W.emit("error",{error:w,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var UJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:q,state:j,config:Y,emitter:Q}=X;if(q.root.style.overflow="visible",q.root.style.height="auto",Y.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.disableWheelHandler(),X.setScrollTarget(window),X.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(Y.horizontal){let P=W.left+window.scrollX;window.scrollTo(P+U,window.scrollY)}else{let P=W.top+window.scrollY;window.scrollTo(window.scrollX,P+U)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,N=()=>{let{innerWidth:U,innerHeight:W}=window,P=Y.horizontal?U:W,b=Y.horizontal?B:K;if(Math.abs(P-b)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let y=0;y<X.resizeHandlers.length;y++)X.resizeHandlers[y](U,W);X.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),J=()=>{window.removeEventListener("resize",N)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)q=Y;else j=Y-1}return q},KJ=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].firstDataIndex<=X)q=Y;else j=Y-1}return q},BJ=(J,X)=>{if(J===0)return[];let q=[],j=X(0),Y=0,Q=0;for(let K=1;K<J;K++){let B=X(K);if(B!==j){let N=K-Y;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:N}),Q=Q+1+N,j=B,Y=K}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:J-Y}),q},Y2=(J,X)=>{if(J.length===0||X.length===0)return[];let q=J.length+X.length,j=Array(q),Y=0;for(let Q of X){j[Y]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},Y++;for(let K=0;K<Q.count;K++)j[Y]=J[Q.firstDataIndex+K],Y++}return j},U2=(J,X)=>{let q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return q(Y.dataIndex)}},ZJ=(J,X)=>{let q=BJ(J,X.getGroupForIndex),j=J+q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(b)=>{if(q.length===0)return{type:"item",dataIndex:b,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=X2(q,b),E=q[y];if(b===E.headerLayoutIndex)return{type:"header",group:E};let v=b-E.headerLayoutIndex-1;return{type:"item",dataIndex:E.firstDataIndex+v,group:E}},layoutToDataIndex:(b)=>{if(q.length===0)return b;let y=X2(q,b),E=q[y];if(b===E.headerLayoutIndex)return-1;let v=b-E.headerLayoutIndex-1;return E.firstDataIndex+v},dataToLayoutIndex:(b)=>{if(q.length===0)return b;let y=KJ(q,b),E=q[y],v=b-E.firstDataIndex;return E.headerLayoutIndex+1+v},getGroupAtLayoutIndex:(b)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=X2(q,b);return q[y]},getGroupAtDataIndex:(b)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=KJ(q,b);return q[y]},getHeaderHeight:typeof Y==="number"?(b)=>Y:(b)=>{let y=q[b];if(!y)return 0;return Y(y.key,b)},rebuild:(b)=>{q=BJ(b,X.getGroupForIndex),j=b+q.length}}};var NJ=(J,X,q,j,Y,Q=!1,K=0)=>{let B=document.createElement("div");if(B.className=`${Y}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",Q)B.style.top="0",B.style.bottom="0",B.style.left=K?`${K}px`:"0";else B.style.top=K?`${K}px`:"0",B.style.left="0",B.style.right="0";J.insertBefore(B,J.firstChild);let N=-1,U=!1,W=0,P=(O)=>{if(O===N)return;N=O;let A=X.groups;if(O<0||O>=A.length){B.textContent="";return}let M=A[O],L=j.headerTemplate(M.key,M.groupIndex),$=X.getHeaderHeight(O);if(Q)B.style.width=`${$}px`;else B.style.height=`${$}px`;if(typeof L==="string")B.innerHTML=L;else B.replaceChildren(L)},b=(O)=>{let A=X.groups;if(A.length===0){E();return}let M=q.getOffset(A[0].headerLayoutIndex);if(O<M){E();return}let L=0,$=A.length-1;while(L<$){let l=L+$+1>>>1;if(q.getOffset(A[l].headerLayoutIndex)<=O)L=l;else $=l-1}let V=L;if(!U)y();P(V);let I=X.getHeaderHeight(V),w=0,g=V+1;if(g<A.length){let z=q.getOffset(A[g].headerLayoutIndex)-O;if(z<I)w=z-I}if(w!==W)if(W=w,w===0)B.style.transform="";else{let l=Math.round(w);B.style.transform=Q?`translateX(${l}px)`:`translateY(${l}px)`}},y=()=>{if(U)return;U=!0,B.style.display=""},E=()=>{if(!U)return;U=!1,B.style.display="none",N=-1,W=0,B.style.transform=""},v=()=>{let O=N;if(N=-1,O>=0)P(O)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:b,refresh:v,show:y,hide:E,destroy:_}};var _J=(J,X,q,j,Y,Q)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U-q),P;switch(Q){case"center":P=B-q/2+N/2;break;case"end":P=B-q+N;break;case"start":default:P=B;break}return Math.max(0,Math.min(P,W))};var y0=(J,X,q,j,Y="start",Q,K=_J)=>{return K(J,X,q,j,Q,Y)};var VJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(Q){let{dom:K,config:B,rawConfig:N}=Q,{classPrefix:U}=B,P=N.item.height;j=N.items?[...N.items]:[];let b=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=ZJ(b,y),Y=Y2(j,X.groups);let E=U2(X,P);Q.setSizeConfig(E),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let v=N.item.template,{headerTemplate:_}=J,O=(h,H,S)=>{if(R0(h))return _(h.groupKey,h.groupIndex);return v(h,H,S)},A=Q.methods.get("_getGridLayout"),M=Q.methods.get("_replaceGridRenderer"),L=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),I=Q.methods.get("_getTableHeaderHeight");if(A&&M){if(L)L((G)=>{let T=Y[G];return!!(T&&R0(T))});let{createGridRenderer:h}=(B2(),dJ(WJ)),H=A(),S=h(K.items,O,Q.sizeCache,H,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);M(S)}else if($&&V)V((h)=>R0(h),J.headerTemplate);else Q.replaceTemplate(O);let w=I?I():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=NJ(K.root,X,Q.sizeCache,{...y,sticky:y.sticky??!1},U,B.horizontal,w);let h=q;Q.afterScroll.push((H,S)=>{h.update(H)}),q.update(Q.scrollController.getScrollTop())}let g=N.item?.striped,l=()=>{if(g!=="data"&&g!=="even"&&g!=="odd")return;let h=new Int32Array(Y.length),H=g==="odd"?1:0,S=0;for(let G=0;G<Y.length;G++)if(R0(Y[G])){if(h[G]=-1,g==="even"||g==="odd")S=0}else h[G]=S+++H;Q.setStripeIndexFn((G)=>{if(G<0||G>=h.length)return G;return h[G]})};l();let z=()=>{if(!X)return;X.rebuild(j.length),Y=Y2(j,X.groups);let h=U2(X,P);if(Q.setSizeConfig(h),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),l(),q)q.refresh()};Q.methods.set("setItems",(h)=>{j=h.slice(),z()}),Q.methods.set("appendItems",(h)=>{j.push(...h),z()}),Q.methods.set("prependItems",(h)=>{j.unshift(...h),z()}),Q.methods.set("removeItem",(h)=>{j=j.filter((H)=>H.id!==h),z()});let{animateScroll:d,cancelScroll:i}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(h,H)=>{let S=X.dataToLayoutIndex(h),{align:G,behavior:T,duration:R}=H0(H),Z=Q.dataManager.getTotal(),C=Q.adjustScrollPosition(y0(S,Q.sizeCache,Q.state.viewportState.containerSize,Z,G,Q.getCachedCompression()));if(T==="smooth")d(Q.scrollController.getScrollTop(),C,R);else i(),Q.scrollController.scrollTo(C)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(i(),q)q.destroy(),q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var DJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},Q=(E)=>{if(E<=0)return 0;if(!j)return Math.ceil(E/X);let v=0,_=0,O=0;for(let A=0;A<E;A++)if(j(A)){if(O++,_>0)v++,_=0;v++,_=0}else if(_++,_>=X)v++,_=0;if(_>0)v++;return v},K=(E)=>{return Y.row=B(E),Y.col=N(E),Y},B=(E)=>{if(!j)return Math.floor(E/X);let v=0,_=0;for(let O=0;O<=E;O++)if(j(O)){if(_>0)v++,_=0;if(O===E)return v;v++,_=0}else{if(O===E)return v;if(_++,_>=X)v++,_=0}return console.warn(`⚠️ getRow(${E}) fell through - returning ${v}`),v},N=(E)=>{if(!j)return E%X;if(j(E))return 0;let v=0;for(let _=0;_<=E;_++)if(j(_))v=0;else{if(_===E)return v;if(v++,v>=X)v=0}return v},U=(E,v,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,E*X),V=Math.min(_-1,(v+1)*X-1);return{start:$,end:V}}let O=-1,A=-1,M=0,L=0;for(let $=0;$<_;$++){if(j($)){if(L>0)M++,L=0;if(M>=E&&M<=v){if(O===-1)O=$;A=$}M++,L=0}else{if(M>=E&&M<=v){if(O===-1)O=$;A=$}if(L++,L>=X)M++,L=0}if(M>v&&L===0)break}if(O===-1)return{start:0,end:-1};return{start:O,end:A}},W=(E,v,_)=>{if(v<0||v>=X)return-1;let O=E*X+v;if(O<0||O>=_)return-1;return O},P=(E)=>{let v=(X-1)*q;return Math.max(0,(E-v)/X)};return{get columns(){return X},get gap(){return q},update:(E)=>{if(E.columns!==void 0)X=Math.max(1,Math.floor(E.columns));if(E.gap!==void 0)q=E.gap;if(E.isHeaderFn!==void 0)j=E.isHeaderFn},getTotalRows:Q,getPosition:K,getRow:B,getCol:N,getItemRange:U,getItemIndex:W,getColumnWidth:P,getColumnOffset:(E,v)=>{let _=P(v);return E*(_+q)}}};B2();var Y1=new Set,GJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:Q,config:K,rawConfig:B}=j,{classPrefix:N}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,W=C0(b0(B.padding),U),P=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},b=B.items?.some((C)=>C.__groupHeader===!0),y={columns:J.columns,gap:J.gap??0};if(b)y.isHeaderFn=(C)=>{let a=j.dataManager.getItem(C);return!!(a&&a.__groupHeader===!0)};X=DJ(y);let E=X.gap;j.setVirtualTotalFn(()=>{let C=j.dataManager.getTotal();return X.getTotalRows(C)});let v=B.item,_=K.horizontal?v.width:v.height,O={containerWidth:P(),columns:X.columns,gap:X.gap},A={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof _==="function")j.setSizeConfig((C)=>{let a=O.containerWidth-2,r=(O.columns-1)*O.gap;return A.containerWidth=O.containerWidth,A.columns=O.columns,A.gap=O.gap,A.columnWidth=(a-r)/O.columns,A.row=X.getRow(C),A.column=X.getCol(C),A.totalRows=X.getTotalRows(j.dataManager.getTotal()),A.totalColumns=O.columns,_(C,A)+O.gap});else if(E>0)j.setSizeConfig(_+E);if(j.rebuildSizeCache(),E>0){let C=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=C();return a>0?a-O.gap:0}}Y.root.classList.add(`${N}--grid`);let M=P(),L=B.item.template,$=()=>{q=K2(Y.items,L,j.sizeCache,X,N,M,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>y),j.methods.set("_replaceGridRenderer",(C)=>{q=C}),j.methods.set("_updateGridLayoutForGroups",(C)=>{X.update({isHeaderFn:C});let a=j.dataManager.getTotal(),r=0;for(let D=0;D<a;D++)if(X.getCol(D)===0){let k=j.sizeCache.getSize(D);r+=k}j.sizeCache.getTotalSize=()=>r,j.updateContentSize(r),$()}),j.methods.set("updateGrid",(C)=>{if(C.columns!==void 0){if(!Number.isInteger(C.columns)||C.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");y.columns=C.columns}if(C.gap!==void 0){if(C.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");y.gap=C.gap}if(X)X.update(y);let a=P();if(O.containerWidth=a,O.columns=y.columns,O.gap=y.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let r=0;r<j.contentSizeHandlers.length;r++)j.contentSizeHandlers[r]();if(q)q.clear();j.forceRender()});let V=null,I=null,w=!1,g=()=>{if(w)return;w=!0,V=j.methods.get("_getSelectedIds")??null,I=j.methods.get("_getFocusedIndex")??null},l=-1,z=-1,d=!0,i=K.overscan,h={start:0,end:0},H={start:0,end:0},S=()=>{if(j.state.isDestroyed)return;let C=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!d&&C===l&&a===z)return;l=C,z=a,d=!1;let r=j.getVirtualTotal();if(r===0||a===0)h.start=0,h.end=0;else h.start=Math.max(0,j.sizeCache.indexAtOffset(C)),h.end=Math.min(r-1,Math.max(0,j.sizeCache.indexAtOffset(C+a-1)));H.start=Math.max(0,h.start-i),H.end=Math.min(r-1,h.end+i);let D=j.state.viewportState;D.scrollPosition=C,D.visibleRange.start=h.start,D.visibleRange.end=h.end,D.renderRange.start=H.start,D.renderRange.end=H.end;let k=j.state.lastRenderRange,x=D.isCompressed,F=j.dataManager.getTotal(),f=X.getItemRange(H.start,H.end,F),p=j.dataManager.getItemsInRange(f.start,f.end),t=x?j.getCompressionContext():void 0;g();let u=V?V():Y1,s=I?I():-1;if(q.render(p,f,u,s,t),k.start!==H.start||k.end!==H.end)k.start=H.start,k.end=H.end,Q.emit("range:change",{range:{start:H.start,end:H.end}})},G=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,d=!0,S()};j.setRenderFns(S,G);let T=typeof _==="function";j.resizeHandlers.push((C,a)=>{let r=(U?a:C)-W;if(O.containerWidth=r,q)q.updateContainerWidth(r);if(T){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let D=0;D<j.contentSizeHandlers.length;D++)j.contentSizeHandlers[D]();if(q)q.clear();j.forceRender()}});let{animateScroll:R,cancelScroll:Z}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(C,a)=>{let r=Math.floor(C/J.columns),{align:D,behavior:k,duration:x}=H0(a),F=j.dataManager.getState(),f=X.getTotalRows(F.total),p=Math.max(0,Math.min(r,f-1)),t=j.adjustScrollPosition(y0(p,j.sizeCache,j.state.viewportState.containerSize,f,D,j.getCachedCompression()));if(k==="smooth")R(j.scrollController.getScrollTop(),t,x);else Z(),j.scrollController.scrollTo(t)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(Z(),q)q.destroy(),q=null;Y.root.classList.remove(`${N}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var MJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,Y=0,Q=[],K=()=>{let _=(X-1)*q;Y=Math.max(0,(j-_)/X),Q=Array(X);let O=Y+q;for(let A=0;A<X;A++)Q[A]=A*O};K();let B=[],N=0,U=[],W=(_)=>{let O=0,A=_[0];for(let M=1;M<_.length;M++){let L=_[M];if(L<A)A=L,O=M}return O},P=(_,O)=>{if(_<=0)return N=0,B=[],[];let A=Array(X).fill(0),M=Array(X);for(let V=0;V<X;V++)M[V]=[];let L=Array(_);for(let V=0;V<_;V++){let I=W(A),w=O(V),g=A[I];L[V]={index:V,x:Q[I],y:g,lane:I,size:w,crossSize:Y},M[I].push(V),A[I]=g+w+q}B=M;let $=0;for(let V=0;V<X;V++){let I=A[V],w=I>0?I-q:0;if(w>$)$=w}return N=$,L},b=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let O=Array(X).fill(0);for(let M of _){let L=M.y+M.size,$=O[M.lane];if(L>$)O[M.lane]=L}let A=0;for(let M=0;M<X;M++)if(O[M]>A)A=O[M];return A},y=(_,O,A)=>{if(_.length===0||A<=O)return U.length=0,U;if(B.length===0||B.length!==X)return E(_,O,A);U.length=0;for(let M=0;M<X;M++){let L=B[M],$=L.length;if($===0)continue;let V=0,I=$;while(V<I){let w=V+I>>>1,g=_[L[w]];if(g.y+g.size<=O)V=w+1;else I=w}for(let w=V;w<$;w++){let g=_[L[w]];if(g.y>=A)break;U.push(g)}}return U},E=(_,O,A)=>{let M=[];for(let L of _)if(L.y+L.size>O&&L.y<A)M.push(L);return M};return{get columns(){return X},get gap(){return q},get containerSize(){return j},update:(_)=>{let O=!1;if(_.columns!==void 0){let A=Math.max(1,Math.floor(_.columns));if(A!==X)X=A,O=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,O=!0;if(_.containerSize!==void 0&&_.containerSize!==j)j=_.containerSize,O=!0;if(O)K()},calculateLayout:P,getTotalSize:b,getVisibleItems:y}};var U1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),X.push(Q)},clear:()=>{X.length=0}}},K1=1,OJ=(J,X,q,j=!1,Y,Q)=>{let K=U1(),B=new Map,N=new Set,U=0,W="",P=-1,b={selected:!1,focused:!1},y=(l,z)=>{return b.selected=l,b.focused=z,b},E=`${q}-item ${q}-masonry-item`,v=`${q}-item--selected`,_=`${q}-item--focused`,O=(l,z)=>{if(typeof z==="string")l.innerHTML=z;else l.replaceChildren(z)},A=(l,z,d)=>{l.classList.toggle(v,z),l.classList.toggle(_,d)},M=(l,z)=>{if(j)l.style.transform=`translate(${Math.round(z.y)}px, ${Math.round(z.x)}px)`;else l.style.transform=`translate(${Math.round(z.x)}px, ${Math.round(z.y)}px)`},L=(l,z)=>{if(j)l.style.width=`${z.size}px`,l.style.height=`${z.crossSize}px`;else l.style.width=`${z.crossSize}px`,l.style.height=`${z.size}px`},$=(l,z,d,i,h)=>{let H=K.acquire(),S=y(i,h);if(H.className=E,H.dataset.index=String(l),H.dataset.id=String(z.id),H.dataset.lane=String(d.lane),H.ariaSelected=String(i),Q)H.id=`${Q}-item-${l}`;if(Y){let T=Y();if(T!==P)P=T,W=String(T);H.setAttribute("aria-setsize",W),H.setAttribute("aria-posinset",String(l+1))}L(H,d);let G=X(z,l,S);return O(H,G),A(H,i,h),M(H,d),{element:H,lastItemId:z.id,lastSelected:i,lastFocused:h,lastY:d.y,lastX:d.x,lastSize:d.size,lastCrossSize:d.crossSize,lastSeenFrame:U}},V=(l,z,d,i)=>{U++,N.clear();for(let H=0;H<z.length;H++)N.add(z[H].index);for(let[H,S]of B)if(N.has(H))S.lastSeenFrame=U;else if(U-S.lastSeenFrame>K1)K.release(S.element),B.delete(H);let h=null;for(let H=0;H<z.length;H++){let S=z[H],G=S.index,T=l(G);if(!T)continue;let R=d.has(T.id),Z=G===i,C=B.get(G);if(C){let a=C.lastItemId!==T.id,r=C.lastSelected!==R,D=C.lastFocused!==Z,k=C.lastY!==S.y||C.lastX!==S.x,x=C.lastSize!==S.size||C.lastCrossSize!==S.crossSize;if(a||r||D){let F=y(R,Z),f=X(T,G,F);O(C.element,f),A(C.element,R,Z),C.element.dataset.id=String(T.id),C.element.ariaSelected=String(R),C.lastItemId=T.id,C.lastSelected=R,C.lastFocused=Z}if(x)L(C.element,S),C.lastSize=S.size,C.lastCrossSize=S.crossSize;if(k)M(C.element,S),C.lastY=S.y,C.lastX=S.x}else{let a=$(G,T,S,R,Z);if(!h)h=document.createDocumentFragment();h.appendChild(a.element),B.set(G,a)}}if(h)J.appendChild(h)},I=()=>{for(let{element:l}of B.values())K.release(l);B.clear(),J.innerHTML=""};return{render:V,getElement:(l)=>B.get(l)?.element,sortDOM:()=>{S0(J,B.keys(),(l)=>B.get(l)?.element)},clear:I,destroy:()=>{I(),K.clear()}}};var B1=new Set,Z1=100,EJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let X=null,q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:Q,emitter:K,config:B,rawConfig:N}=Y,U=B.classPrefix,W=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let P=b0(N.padding),b=C0(P,W),y=c0(P,W),E=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-b},v={columns:J.columns,gap:J.gap??0,containerSize:E()};X=MJ(v);let _=N.item,O=W&&N.item.width?N.item.width:_.height,A={containerWidth:0,columns:0,gap:0,columnWidth:0},M=typeof O==="function"?(r)=>O(r,A):()=>O,L=()=>{let r=Y.dataManager.getTotal(),D=X;A.containerWidth=D.containerSize,A.columns=D.columns,A.gap=D.gap;let k=(D.columns-1)*D.gap;A.columnWidth=Math.max(0,(A.containerWidth-k)/D.columns),j=D.calculateLayout(r,M);let x=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>x,Y.updateContentSize(x)},$=N.item.template;q=OJ(Q.items,$,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,I=null,w=!1,g=()=>{if(w)return;w=!0,V=Y.methods.get("_getSelectedIds")??null,I=Y.methods.get("_getFocusedIndex")??null},l=(r)=>Y.dataManager.getItem(r),z=-1,d=-1,i=!0,h=B.overscan*Z1,H=()=>{if(Y.state.isDestroyed)return;g();let r=Y.scrollController.getScrollTop(),D=Y.state.viewportState.containerSize;if(!i&&r===z&&D===d)return;z=r,d=D,i=!1;let k=Math.max(0,r-h),x=r+D+h,F=X.getVisibleItems(j,k,x),f=V?V():B1,p=I?I():-1;if(q&&F.length>0)q.render(l,F,f,p);let t=Y.state.viewportState;t.scrollPosition=r;let u=F.length,s=u>0?F[0].index:0,j0=u>0?F[u-1].index:0;t.visibleRange.start=s,t.visibleRange.end=j0,t.renderRange.start=s,t.renderRange.end=j0;let m=Y.state.lastRenderRange;if(m.start!==s||m.end!==j0)m.start=s,m.end=j0,K.emit("range:change",{range:{start:s,end:j0}})},S=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,i=!0,H()};Y.setRenderFns(H,S);let G=(r,D)=>{let k=(W?D:r)-b;if(X&&X.containerSize!==k){if(X.update({containerSize:k}),L(),q)q.clear();S()}};Y.resizeHandlers.push(G);let T=()=>{L(),S()},R=Y.dataManager,Z=(r)=>{if(typeof R[r]!=="function")return;let D=R[r].bind(R);R[r]=(...k)=>{D(...k),T()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:C,cancelScroll:a}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(r,D)=>{let k=j[r];if(!k)return;let{align:x,behavior:F,duration:f}=H0(D),p=k.y,t=Y.state.viewportState.containerSize,u=p;if(x==="center")u=p-t/2+k.size/2;else if(x==="end"){u=p-t+k.size;let s=X.getTotalSize(j);if(r===j.length-1)u=Math.max(0,s+y-t)}if(u=Math.max(0,u),u=Y.adjustScrollPosition(u),F==="smooth")C(Y.scrollController.getScrollTop(),u,f);else a(),Y.scrollController.scrollTo(u)}),L(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),Z2=(J,X,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},N2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},a0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return N2(J,[X]);else return Z2(J,[X],q)},FJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},LJ=(J)=>({...J,selected:new Set}),_2=(J,X)=>{return J.focusedIndex=X,J},TJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?X-1:0;return J.focusedIndex=j,J},kJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=q?0:X-1;return J.focusedIndex=j,J},bJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},HJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var W2=(J)=>{return Array.from(J.selected)},V2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var yJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=AJ(q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:K,emitter:B,config:N}=Q,{classPrefix:U,ariaIdPrefix:W}=N;if(X==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let P=new Map,b=()=>{P.clear();let M=Q.dataManager.getTotal(),L=Q.dataManager.getCached();if(L===0)return;if(L>=M){for(let V=0;V<M;V++){let I=Q.dataManager.getItem(V);if(I)P.set(I.id,V)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let V=$.getLoadedRanges();for(let I of V)for(let w=I.start;w<=I.end;w++){let g=Q.dataManager.getItem(w);if(g)P.set(g.id,w)}}};B.on("load:end",({items:M,offset:L})=>{if(!M||M.length===0)return;if(L!==void 0)for(let $=0;$<M.length;$++){let V=M[$];if(V&&V.id!==void 0)P.set(V.id,L+$)}else b()}),b(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=Q.getRenderFns(),E=()=>{y();let M=(L)=>{let $=P.get(L);if($===void 0)return;return Q.dataManager.getItem($)};B.emit("selection:change",{selected:W2(j),items:V2(j,M)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${U}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(K.root.getAttribute("role")==="grid"?K.root.parentElement??K.root:K.root).appendChild(Y);let _=Y;B.on("selection:change",({selected:M})=>{let L=M.length;if(L===0)_.textContent="";else if(L===1)_.textContent="1 item selected";else _.textContent=`${L} items selected`});let O=()=>{if(Q.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let M=Q.dataManager.getTotal();if(M===0)return;let L=j.focusedIndex>=0?Math.min(j.focusedIndex,M-1):0;j=_2(j,L),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${W}-item-${L}`),Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(L,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(L);if($)Q.renderer.updateItemClasses(L,j.selected.has($.id),!0)};K.root.addEventListener("focusin",O);let A=(M)=>{if(Q.state.isDestroyed)return;let L=M.relatedTarget;if(L&&K.root.contains(L))return;let $=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),$>=0){let V=Q.dataManager.getItem($);if(V)Q.renderer.updateItemClasses($,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",A),Q.clickHandlers.push((M)=>{if(Q.state.isDestroyed)return;let $=M.target.closest("[data-index]");if(!$)return;let V=parseInt($.dataset.index??"-1",10);if(V<0)return;let I=Q.dataManager.getItem(V);if(!I)return;B.emit("item:click",{item:I,index:V,event:M}),j=_2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=a0(j,I.id,X),E()}),Q.keydownHandlers.push((M)=>{if(Q.state.isDestroyed)return;let L=Q.dataManager.getTotal(),$=j.focusedIndex,V=!1,I=!1,w=j;switch(M.key){case"ArrowUp":w=TJ(j,L,N.wrap),w.focusVisible=!0,V=!0,I=!0;break;case"ArrowDown":w=kJ(j,L,N.wrap),w.focusVisible=!0,V=!0,I=!0;break;case"Home":w=bJ(j,L),w.focusVisible=!0,V=!0,I=!0;break;case"End":w=HJ(j,L),w.focusVisible=!0,V=!0,I=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let g=Q.dataManager.getItem(j.focusedIndex);if(g)w=a0(j,g.id,X),w.focusVisible=!0;V=!0}break}if(V){M.preventDefault(),j=w;let g=j.focusedIndex;if(g>=0){let l=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(g,Q.sizeCache,Q.state.viewportState.containerSize,l.total,"center",Q.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${W}-item-${g}`)}else K.root.removeAttribute("aria-activedescendant");if(I){let{selected:l}=j;if($>=0&&$!==g){let z=Q.dataManager.getItem($);if(z)Q.renderer.updateItemClasses($,l.has(z.id),!1)}if(g>=0){let z=Q.dataManager.getItem(g);if(z)Q.renderer.updateItemClasses(g,l.has(z.id),!0)}}else E()}}),Q.methods.set("select",(...M)=>{j=Z2(j,M,X),E()}),Q.methods.set("deselect",(...M)=>{j=N2(j,M),E()}),Q.methods.set("toggleSelect",(M)=>{j=a0(j,M,X),E()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let M=Q.getAllLoadedItems();j=FJ(j,M,X),b(),E()}),Q.methods.set("clearSelection",()=>{j=LJ(j),E()}),Q.methods.set("getSelected",()=>{return W2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(L)=>{let $=P.get(L);if($===void 0)return;return Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(_&&_.parentNode)_.remove();K.root.removeEventListener("focusin",O),K.root.removeEventListener("focusout",A)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var PJ=(J)=>{let X=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let Y=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),K=q.getVirtualTotal(),B=q.methods.get("getSelected"),N=B&&B().length>0?B():void 0;if(K===0){let b={index:0,offsetInItem:0,total:0};if(N)b.selectedIds=N;return b}let U,W;if(Q.isCompressed){let y=Y/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor(y),K-1)),W=(y-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let P={index:U,offsetInItem:W,total:K};if(N)P.selectedIds=N;return P});let j=(Y)=>{let{index:Q,offsetInItem:K,selectedIds:B}=Y,N=q.getVirtualTotal();if(N===0)return;if(!Number.isFinite(Q)||!Number.isFinite(K))return;if(q.sizeCache.getTotal()!==N){q.sizeCache.rebuild(N),q.updateCompressionMode();let _=q.getCachedCompression();q.updateContentSize(_.virtualSize)}let W=q.getCachedCompression(),P=Math.max(0,Math.min(Q,N-1)),b;if(W.isCompressed){let _=q.sizeCache.getSize(P),O=_>0?K/_:0;b=(P+O)/N*W.virtualSize}else b=q.sizeCache.getOffset(P)+K;let y=q.state.viewportState.containerSize,E=Math.max(0,W.virtualSize-y);if(b=Math.max(0,Math.min(b,E)),q.scrollController.scrollTo(b),B&&B.length>0){let _=q.methods.get("select");if(_)_(...B)}let v=q.methods.get("loadVisibleRange");if(v)requestAnimationFrame(()=>{v()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var $J=(J,X=50,q=1/0,j=!0)=>{let Y=J,Q=[],K=0,B=()=>{Q=Y.map((_,O)=>({def:_,index:O,width:0,minWidth:N1(_.minWidth??X,1),maxWidth:_.maxWidth??q,resizable:_.resizable??j,offset:0}))},N=(_)=>{if(Q.length===0){K=0;return}let O=0,A=0;for(let M=0;M<Q.length;M++){let L=Q[M],$=L.def;if($.width!==void 0)L.width=D2($.width,L.minWidth,L.maxWidth),O+=L.width;else A++}if(A>0){let L=Math.max(0,_-O)/A;for(let $=0;$<Q.length;$++){let V=Q[$];if(V.def.width===void 0)V.width=D2(L,V.minWidth,V.maxWidth)}}U()},U=()=>{let _=0;for(let O=0;O<Q.length;O++){let A=Q[O];A.offset=_,_+=A.width}K=_},W=(_,O)=>{if(_<0||_>=Q.length)return 0;let A=Q[_];if(!A.resizable)return A.width;let M=D2(O,A.minWidth,A.maxWidth);return A.width=M,U(),M},P=(_)=>{return Q[_]},b=(_)=>{if(Q.length===0)return;if(_<0)return Q[0];if(_>=K)return Q[Q.length-1];let O=0,A=Q.length-1;while(O<A){let M=O+A>>>1,L=Q[M];if(_<L.offset)A=M-1;else if(_>=L.offset+L.width)O=M+1;else return L}return Q[O]},y=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},E=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},v=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:v,resizeColumn:W,getColumn:P,getColumnAtX:b,getColumnOffset:y,getColumnWidth:E}},D2=(J,X,q)=>Math.min(q,Math.max(X,J)),N1=(J,X)=>Math.max(X,J);var wJ=(J,X,q,j,Y,Q,K)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let N=document.createElement("div");N.className=`${j}-table-header`,N.setAttribute("role","row"),N.setAttribute("aria-rowindex","1"),N.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),N.appendChild(U),B.appendChild(N),J.insertBefore(B,J.firstChild),X.style.position="absolute",X.style.top=`${q}px`,X.style.left="0",X.style.right="0",X.style.bottom="0",X.style.height="auto";let W=[],P=[],b=[],y=!0,E=null,v="asc",_=null,O=!1,A=-1,M=0,L=0,$=(G,T)=>{let R=document.createElement("div");R.className=`${j}-table-header-cell`,R.setAttribute("role","columnheader"),R.setAttribute("aria-colindex",String(T+1)),R.dataset.columnKey=G.def.key;let Z=G.def.align;if(Z==="center")R.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")R.classList.add(`${j}-table-header-cell--right`);let C=document.createElement("div");C.className=`${j}-table-header-content`;let a=G.def.header?G.def.header(G.def):G.def.label;if(typeof a==="string")C.textContent=a;else C.appendChild(a);if(R.appendChild(C),G.def.sortable){let r=document.createElement("span");r.className=`${j}-table-header-sort`,r.setAttribute("aria-hidden","true"),R.appendChild(r),b.push(r),R.classList.add(`${j}-table-header-cell--sortable`)}else b.push(null);if(G.resizable){let r=document.createElement("div");r.className=`${j}-table-header-resize`,r.dataset.resizeIndex=String(T),R.appendChild(r),P.push(r)}return R},V=(G)=>{_=G,U.textContent="",W=[],P=[],b=[];let T=G.columns;for(let R=0;R<T.length;R++){let Z=T[R],C=$(Z,R);W.push(C),U.appendChild(C)}if(I(G),E)w(E,v)},I=(G)=>{_=G;let T=G.columns;U.style.width=`${G.totalWidth}px`;for(let R=0;R<W.length&&R<T.length;R++){let Z=W[R],C=T[R];Z.style.width=`${C.width}px`}},w=(G,T)=>{if(E=G,v=T,!_)return;let R=_.columns;for(let Z=0;Z<b.length&&Z<R.length;Z++){let C=b[Z];if(!C)continue;if(R[Z].def.key===G&&G!==null)C.textContent=T==="asc"?"▲":"▼",C.style.opacity="0.7",W[Z].setAttribute("aria-sort",T==="asc"?"ascending":"descending");else C.textContent="",C.style.opacity="0",W[Z].removeAttribute("aria-sort")}},g=(G)=>{U.style.transform=`translateX(${-G}px)`},l=(G)=>{let T=G.target;if(!T.dataset.resizeIndex)return;if(G.preventDefault(),G.stopPropagation(),A=parseInt(T.dataset.resizeIndex,10),!_)return;let R=_.getColumn(A);if(!R||!R.resizable)return;O=!0,M=G.clientX,L=R.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",T.classList.add(`${j}-table-header-resize--active`),T.setPointerCapture(G.pointerId),T.addEventListener("pointermove",z),T.addEventListener("pointerup",d),T.addEventListener("pointercancel",d)},z=(G)=>{if(!O||!_)return;let T=G.clientX-M;if(Math.abs(T)<1)return;let R=Math.max(0,L+T);Y(A,R)},d=(G)=>{if(!O)return;let T=G.target;T.removeEventListener("pointermove",z),T.removeEventListener("pointerup",d),T.removeEventListener("pointercancel",d);try{T.releasePointerCapture(G.pointerId)}catch{}T.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",O=!1,A=-1},i=(G)=>{let T=G.target;if(T.dataset.resizeIndex!==void 0)return;if(O)return;let R=T;while(R&&!R.dataset.columnKey)if(R=R.parentElement,R===N||R===null)return;if(!R||!R.dataset.columnKey)return;let Z=R.dataset.columnKey;if(!_)return;let C=_.columns,a=-1;for(let D=0;D<C.length;D++)if(C[D].def.key===Z){a=D;break}if(a===-1)return;let r=C[a];if(K)K({key:Z,index:a,event:G});if(r.def.sortable&&Q){let D;if(E===Z)if(v==="asc")D="desc";else D=null;else D="asc";Q({key:Z,index:a,direction:D})}};return N.addEventListener("pointerdown",l),N.addEventListener("click",i),{element:N,update:I,updateSort:w,rebuild:V,show:()=>{if(y)return;y=!0,N.style.display=""},hide:()=>{if(!y)return;y=!1,N.style.display="none"},destroy:()=>{N.removeEventListener("pointerdown",l),N.removeEventListener("click",i),X.style.position="",X.style.top="",X.style.left="",X.style.right="",X.style.bottom="",B.remove(),W=[],P=[],b=[],_=null,y=!1},syncScroll:g}};var _1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(X.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",X.push(Q)},clear:()=>{X.length=0}}},RJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=_1(),W=new Map,P=-1,b=q,y=null,E=null,v=null,_=(D,k)=>{E=D,v=k},O=(D,k)=>{if(k)D.setAttribute("aria-selected","true");else D.removeAttribute("aria-selected")},A=`${Y}-item ${Y}-table-row`,M=`${Y}-item--selected`,L=`${Y}-item--focused`,$=`${Y}-table-cell`,V=`${Y}-table-cell--center`,I=`${Y}-table-cell--right`,w=`${Y}-item--odd`,g=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,l=`${Y}-table-group-header-content`,z=(D,k,x,F)=>{if(x.def.cell){let f=x.def.cell(k,x.def,F);if(typeof f==="string")D.innerHTML=f;else D.replaceChildren(f)}else{let f=k[x.def.key];D.textContent=f!=null?String(f):""}},d=(D,k,x,F)=>{let f=A;if(B){if(y){let p=y(k);if(p>=0&&(p&1)===1)f+=` ${w}`}else if((k&1)===1)f+=` ${w}`}if(x)f+=` ${M}`;if(F)f+=` ${L}`;D.className=f},i=(D,k)=>{let x=k.def.align;if(x==="center")D.classList.add(V),D.classList.remove(I);else if(x==="right")D.classList.add(I),D.classList.remove(V);else D.classList.remove(V,I)},h=(D,k)=>{let F=b.columns.length;if(k.length===F)return k;let f=[];for(let p=0;p<F;p++){let t;if(p<k.length)t=k[p];else t=document.createElement("div"),t.className=$,D.appendChild(t);f.push(t)}for(let p=F;p<k.length;p++)k[p].remove();return f},H=(D,k,x)=>{let F=U.acquire(),f=D;F.style.width=`${b.totalWidth}px`;let p=x.getSize(k);F.style.height=`${p}px`,F.className=g,F.setAttribute("role","presentation"),F.setAttribute("data-id",String(D.id)),F.setAttribute("data-index",String(k)),F.removeAttribute("aria-selected"),F.removeAttribute("aria-rowindex"),F.replaceChildren();let t=document.createElement("div");if(t.className=l,v){let s=v(f.groupKey,f.groupIndex);if(typeof s==="string")t.innerHTML=s;else t.appendChild(s)}F.appendChild(t);let u=x.getOffset(k);return F.style.transform=`translateY(${u}px)`,{element:F,cells:[],index:k,isGroupHeader:!0,lastItemId:D.id,lastSelected:!1,lastFocused:!1,lastOffset:u,lastHeight:p}},S=(D,k,x,F,f)=>{let p=U.acquire();p.style.width=`${b.totalWidth}px`;let t=f.getSize(k);p.style.height=`${t}px`,d(p,k,x,F),p.setAttribute("role","row"),p.setAttribute("data-id",String(D.id)),p.setAttribute("data-index",String(k)),p.id=`${Q}-${k}`,p.setAttribute("aria-rowindex",String(k+2));let u=K();if(u!==P)P=u;O(p,x);let s=h(p,[]),j0=b.columns;for(let o=0;o<s.length&&o<j0.length;o++){let n=s[o],q0=j0[o];n.style.left=`${q0.offset}px`,n.style.width=`${q0.width}px`,n.setAttribute("role","gridcell"),n.setAttribute("aria-colindex",String(o+1)),i(n,q0),z(n,D,q0,k)}let m=f.getOffset(k);return p.style.transform=`translateY(${m}px)`,{element:p,cells:s,index:k,isGroupHeader:!1,lastItemId:D.id,lastSelected:x,lastFocused:F,lastOffset:m,lastHeight:t}},G=(D,k,x,F)=>{for(let[s,j0]of W)if(s<k.start||s>k.end)U.release(j0.element),W.delete(s);let f=!1,p=K();if(p!==P)P=p,f=!0;let t=null,u=X();y=typeof B==="string"&&N?N():null;for(let s=k.start;s<=k.end;s++){let j0=s-k.start,m=D[j0];if(!m)continue;let o=x.has(m.id),n=s===F,q0=E?E(m):!1,e=W.get(s);if(e){if(e.isGroupHeader!==q0){U.release(e.element),W.delete(s);let X0=q0?H(m,s,u):S(m,s,o,n,u);if(W.set(s,X0),!t)t=document.createDocumentFragment();t.appendChild(X0.element);continue}if(q0){if(e.lastItemId!==m.id){let Y0=m,G0=e.element.firstElementChild;if(G0&&v){let D0=v(Y0.groupKey,Y0.groupIndex);if(typeof D0==="string")G0.innerHTML=D0;else G0.replaceChildren(D0)}e.element.setAttribute("data-id",String(m.id)),e.lastItemId=m.id}let B0=u.getOffset(s);if(e.lastOffset!==B0)e.lastOffset=B0,e.element.style.transform=`translateY(${B0}px)`;let _0=u.getSize(s);if(e.lastHeight!==_0)e.lastHeight=_0,e.element.style.height=`${_0}px`}else{let X0=e.lastItemId!==m.id,B0=e.lastSelected!==o,_0=e.lastFocused!==n;if(X0){let D0=b.columns;for(let U0=0;U0<e.cells.length&&U0<D0.length;U0++)z(e.cells[U0],m,D0[U0],s);d(e.element,s,o,n),e.element.setAttribute("data-id",String(m.id)),O(e.element,o),e.lastItemId=m.id,e.lastSelected=o,e.lastFocused=n}else if(B0||_0)d(e.element,s,o,n),O(e.element,o),e.lastSelected=o,e.lastFocused=n;let Y0=u.getOffset(s);if(e.lastOffset!==Y0)e.lastOffset=Y0,e.element.style.transform=`translateY(${Y0}px)`;let G0=u.getSize(s);if(e.lastHeight!==G0)e.lastHeight=G0,e.element.style.height=`${G0}px`;if(f)e.element.setAttribute("aria-rowindex",String(s+2))}}else{let X0=q0?H(m,s,u):S(m,s,o,n,u);if(W.set(s,X0),!t)t=document.createDocumentFragment();t.appendChild(X0.element)}}if(t)J.appendChild(t)},T=(D,k,x,F)=>{let f=W.get(D);if(!f)return;if(f.isGroupHeader)return;let p=f.lastItemId!==k.id,t=f.lastSelected!==x,u=f.lastFocused!==F;if(p||t||u){if(p){let s=b.columns;for(let j0=0;j0<f.cells.length&&j0<s.length;j0++)z(f.cells[j0],k,s[j0],D);f.element.setAttribute("data-id",String(k.id)),f.lastItemId=k.id}d(f.element,D,x,F),O(f.element,x),f.lastSelected=x,f.lastFocused=F}},R=(D,k,x)=>{let F=W.get(D);if(!F)return;if(F.isGroupHeader)return;let f=F.lastSelected!==k,p=F.lastFocused!==x;if(f||p)d(F.element,D,k,x),O(F.element,k),F.lastSelected=k,F.lastFocused=x},Z=(D)=>{b=D;let k=D.columns;for(let[,x]of W)if(x.element.style.width=`${D.totalWidth}px`,x.cells.length>0)for(let F=0;F<x.cells.length&&F<k.length;F++){let f=x.cells[F],p=k[F];f.style.left=`${p.offset}px`,f.style.width=`${p.width}px`}},C=(D)=>{return W.get(D)?.element},a=()=>{for(let[,D]of W)U.release(D.element);W.clear(),P=-1};return{render:G,updateItem:T,updateItemClasses:R,getElement:C,updateColumnLayout:Z,setGroupHeaderFn:_,clear:a,destroy:()=>{a(),U.clear()}}};var W1=new Set,vJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let X=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:Q,emitter:K,config:B}=Y,{classPrefix:N}=B;if(B.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,P=J.maxColumnWidth??1/0,b=J.columnBorders??!1,y=J.rowBorders??!0,E=J.rowHeight,v=C0(b0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof E==="number"?E:40),O=J.sort?.key??null,A=J.sort?.direction??"asc";if(X=$J(J.columns,W,P,U),typeof E==="function")Y.setSizeConfig(E);else if(typeof E==="number")Y.setSizeConfig(E);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),y)Q.root.classList.add(`${N}--table-row-borders`);if(b)Q.root.classList.add(`${N}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let M=-1,L=Q.items.getAttribute("aria-label");if(L)Q.root.setAttribute("aria-label",L),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth()-v;X.resolve($);let V=(F,f)=>{if(!X)return;let p=X.getColumn(F);if(!p)return;let t=p.width,u=X.resizeColumn(F,f);if(q)q.update(X);if(j)j.updateColumnLayout(X);g(),K.emit("column:resize",{key:p.def.key,index:F,previousWidth:t,width:u})},I=(F)=>{if(F.direction===null)O=null,A="asc";else O=F.key,A=F.direction;if(q)q.updateSort(O,A);K.emit("column:sort",F)},w=(F)=>{K.emit("column:click",F)};if(q=wJ(Q.root,Q.viewport,_,N,V,I,w),q.rebuild(X),O)q.updateSort(O,A);let g=()=>{if(!X)return;let F=X.totalWidth;Q.content.style.minWidth=`${F}px`,Q.items.style.minWidth=`${F}px`};g(),j=RJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let l=null,z=null,d=!1,i=()=>{if(d)return;d=!0,l=Y.methods.get("_getSelectedIds")??null,z=Y.methods.get("_getFocusedIndex")??null},h=-1,H=-1,S=-1,G=!0,T=B.overscan,R={start:0,end:0},Z={start:0,end:0},C=()=>{if(Y.state.isDestroyed)return;let F=Y.scrollController.getScrollTop(),f=Y.state.viewportState.containerSize,p=Y.getVirtualTotal();if(!G&&F===h&&f===H&&p===S)return;h=F,H=f,S=p,G=!1;let t=p+1;if(t!==M)M=t,Q.root.setAttribute("aria-rowcount",String(t));if(p===0||f===0)R.start=0,R.end=0;else R.start=Math.max(0,Y.sizeCache.indexAtOffset(F)),R.end=Math.min(p-1,Math.max(0,Y.sizeCache.indexAtOffset(F+f-1)));Z.start=Math.max(0,R.start-T),Z.end=Math.min(p-1,R.end+T);let u=Y.state.viewportState;u.scrollPosition=F,u.visibleRange.start=R.start,u.visibleRange.end=R.end,u.renderRange.start=Z.start,u.renderRange.end=Z.end;let s=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);i();let m=l?l():W1,o=z?z():-1;if(j.render(j0,Z,m,o),s.start!==Z.start||s.end!==Z.end)s.start=Z.start,s.end=Z.end,K.emit("range:change",{range:{start:Z.start,end:Z.end}})},a=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,G=!0,C()};Y.setRenderFns(C,a);let r=q,D=-1,k=()=>{let F=Q.viewport.scrollLeft;if(F!==D){if(D=F,r.syncScroll)r.syncScroll(F)}};Y.afterScroll.push(()=>{k()});let x=()=>{k()};Q.viewport.addEventListener("scroll",x,{passive:!0}),Y.resizeHandlers.push((F,f)=>{if(!X)return;if(X.resolve(F-v),q)q.update(X);if(j)j.updateColumnLayout(X);g()}),Y.methods.set("updateColumns",(F)=>{if(!X||!q)return;if(X.updateColumns(F),X.resolve(Y.getContainerWidth()-v),q.rebuild(X),O)q.updateSort(O,A);if(g(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(F,f)=>{if(!X)return;let p;if(typeof F==="string"){let t=X.columns;p=-1;for(let u=0;u<t.length;u++)if(t[u].def.key===F){p=u;break}if(p===-1)return}else p=F;V(p,f)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let F={},f=X.columns;for(let p=0;p<f.length;p++)F[f[p].def.key]=f[p].width;return F}),Y.methods.set("setSort",(F,f)=>{if(O=F,A=f??"asc",q)q.updateSort(O,A)}),Y.methods.set("getSort",()=>{return{key:O,direction:A}}),Y.methods.set("_getTableLayout",()=>X),Y.methods.set("_replaceTableRenderer",(F)=>{j=F}),Y.methods.set("_updateTableForGroups",(F,f)=>{if(j)j.setGroupHeaderFn(F,f)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{g()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",x),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${N}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let F=Q.root.getAttribute("aria-label");if(F)Q.items.setAttribute("aria-label",F),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};export{vJ as withTable,PJ as withSnapshots,yJ as withSelection,e2 as withScrollbar,JJ as withScale,UJ as withPage,EJ as withMasonry,VJ as withGroups,GJ as withGrid,YJ as withAsync,n2 as vlist};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist/internals - Low-Level Exports
|
|
3
|
+
*
|
|
4
|
+
* Advanced utilities for feature authors, custom renderers, and power users.
|
|
5
|
+
* These are implementation details — use at your own risk.
|
|
6
|
+
*
|
|
7
|
+
* For the stable public API, import from '@floor/vlist' instead.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, type GroupsConfig, type GroupBoundary, type LayoutEntry, type GroupHeaderItem, type GroupLayout, type StickyHeader, } from "./features/groups";
|
|
12
|
+
export { createGridLayout, createGridRenderer, type GridConfig, type GridLayout, type GridPosition, type GridRenderer, type ItemRange, } from "./features/grid";
|
|
13
|
+
export { createTableLayout, createTableHeader, createTableRenderer, type TableConfig, type TableColumn, type TableLayout, type TableHeader, type TableRenderer, type TableRendererInstance, type ResolvedColumn, type ColumnResizeEvent, type ColumnSortEvent, type ColumnClickEvent, } from "./features/table";
|
|
14
|
+
export { createMasonryLayout, createMasonryRenderer, type MasonryConfig, type MasonryLayout, type MasonryRenderer, type GetItemFn, type ItemPlacement, } from "./features/masonry";
|
|
15
|
+
export { createSizeCache, type SizeCache, createMeasuredSizeCache, type MeasuredSizeCache, simpleVisibleRange, calculateRenderRange, calculateTotalSize, calculateActualSize, calculateItemOffset, calculateScrollToIndex, clampScrollPosition, rangesEqual, isInRange, getRangeCount, diffRanges, MAX_VIRTUAL_SIZE, getCompressionState as getScaleState, getCompression as getScale, needsCompression as needsScaling, getMaxItemsWithoutCompression as getMaxItemsWithoutScaling, getCompressionInfo as getScaleInfo, calculateCompressedVisibleRange as calculateScaledVisibleRange, calculateCompressedRenderRange as calculateScaledRenderRange, calculateCompressedItemPosition as calculateScaledItemPosition, calculateCompressedScrollToIndex as calculateScaledScrollToIndex, calculateIndexFromScrollPosition, type CompressionState as ScaleState, } from "./rendering";
|
|
16
|
+
export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds, getSelectedItems, } from "./features/selection";
|
|
17
|
+
export { createEmitter, type Emitter } from "./events";
|
|
18
|
+
export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, type DataManager as AsyncManager, type SparseStorage, type PlaceholderManager, } from "./features/async";
|
|
19
|
+
export { createScrollController, createScrollbar, rafThrottle, type ScrollController, type Scrollbar, } from "./features/scrollbar";
|
|
20
|
+
export { createStats, type StatsConfig, type StatsState, type Stats, } from "./utils/stats";
|
|
21
|
+
//# sourceMappingURL=internals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var W2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,W=$-1;while(U<W){let G=U+W+1>>>1;if(j[G]<=K)U=G;else W=G-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},V2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var B2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var G2=(J,Q)=>{let $=Q.getTotalSize(),j=$>B2,q=j?B2:$,Y=$>0?q/$:1;return{isCompressed:j,actualSize:$,virtualSize:q,ratio:Y}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed){let Z=$.indexAtOffset(J),V=$.indexAtOffset(J+Q);if(V<j-1)V++;return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,V)),Y}let{virtualSize:K}=q,W=J/K*j,G=Math.floor(W),B=P2($,Math.max(0,G),Q,j),H=Math.ceil(W)+B,k=K-Q-J;if(k<=Q&&k>=-1){let Z=E2($,Q,j),V=Math.max(0,j-Z),X=Math.max(0,Math.min(1,1-k/Q));G=Math.floor(G+(V-G)*X),H=k<=1?j-1:Math.min(j-1,G+B)}return Y.start=Math.max(0,G),Y.end=Math.min(j-1,Math.max(0,H)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);let{virtualSize:U}=Y,W=U-q,G=W-Q;if(G<=q&&G>=-1){if(Q>=W-1){let y=$.getTotalSize()-$.getOffset(J);return q-y}let k=E2($,q,j),Z=Math.max(0,j-k),X=Q/U*j,D=Math.max(0,Math.min(1,1-G/q)),F=$.getOffset(J)-$.getOffset(Z),v=$.getOffset(J)-k2($,X,j);return v+(F-v)*D}let B=Q/U,H=$.getTotalSize(),E=B*H;return $.getOffset(J)-E},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let W=q.virtualSize-$;return Math.max(0,Math.min(K,W))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>B2;return Q.getTotalSize()>B2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(B2/J)},ZJ=(J,Q)=>{let $=G2(J,Q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,DJ=(J,Q,$,j,q,Y,K,U,W=!1)=>{let G=SJ(),B=new Map,H=Y,E=!1,k=null,Z=0,V=0,X="",D=-1,F=(N)=>{if(k&&Z===N)return k;return k=G2(N,$),Z=N,k},v={selected:!1,focused:!1},y=(N,M)=>{return v.selected=N,v.focused=M,v},p=`${q}-item ${q}-grid-item`,h=`${q}-item--selected`,l=`${q}-item--focused`,a=(N,M)=>{if(typeof M==="string")N.innerHTML=M;else N.replaceChildren(M)},i=(N,M,w)=>{N.classList.toggle(h,M),N.classList.toggle(l,w)},u=(N,M)=>{let w=j.getRow(N);if(M){let _=M.totalItems,O=F(_);if(O.isCompressed)return L2(w,M.scrollPosition,$,_,M.containerSize,O,M.rangeStart)}return $.getOffset(w)},d=(N,M)=>{let w=E&&j.getCol(N)===0,_=w?0:j.getCol(N),O=w?0:j.getColumnOffset(_,H),L;if(E){let c=j.getRow(N),C=0,x=new Set;for(let e=0;e<N;e++){let T=j.getRow(e);if(T<c&&!x.has(T)){let S=$.getSize(e);C+=S,x.add(T)}}L=C}else L=u(N,M);if(W)return`translate(${Math.round(L)}px, ${Math.round(O)}px)`;return`translate(${Math.round(O)}px, ${Math.round(L)}px)`},m=(N,M)=>{N.style.transform=M},t=(N,M)=>{let w=N.dataset.id?.startsWith("__group_header"),_=w?H:j.getColumnWidth(H),O;if(E||w)O=$.getSize(M)-j.gap;else{let L=j.getRow(M);O=$.getSize(L)-j.gap}if(W)N.style.width=`${O}px`,N.style.height=`${_}px`;else N.style.width=`${_}px`,N.style.height=`${O}px`},n=(N,M,w,_,O)=>{let L=G.acquire(),c=y(w,_);if(L.className=p,L.dataset.index=String(N),L.dataset.id=String(M.id),L.dataset.row=String(j.getRow(N)),L.dataset.col=String(j.getCol(N)),L.ariaSelected=String(w),U)L.id=`${U}-item-${N}`;if(K){let x=K();if(x!==D)D=x,X=String(x);L.setAttribute("aria-setsize",X),L.setAttribute("aria-posinset",String(N+1))}t(L,N);let C=Q(M,N,c);return a(L,C),i(L,w,_),m(L,O),{element:L,lastItemId:M.id,lastSelected:w,lastFocused:_,lastTransform:O,lastSeenFrame:V}},R=(N,M,w,_,O)=>{if(V++,M.start===0&&N.length>0)E=W2(N[0]);for(let[C,x]of B)if(C>=M.start&&C<=M.end)x.lastSeenFrame=V;else if(V-x.lastSeenFrame>fJ)G.release(x.element),B.delete(C);let L=!1;if(K){let C=K();if(C!==D)D=C,X=String(C),L=!0}let c=null;for(let C=M.start;C<=M.end;C++){let x=C-M.start,e=N[x];if(!e){console.warn(`⚠️ RENDER: Missing item at index ${C} (range: ${M.start}-${M.end}, items.length: ${N.length})`);continue}let T=w.has(e.id),S=C===_,I=B.get(C);if(I){let o=I.lastItemId!==e.id,g=I.lastSelected!==T,Q2=I.lastFocused!==S;if(o||g||Q2){if(o){let q2=y(T,S),$2=Q(e,C,q2);a(I.element,$2),I.element.dataset.id=String(e.id),I.element.dataset.row=String(j.getRow(C)),I.element.dataset.col=String(j.getCol(C)),t(I.element,C)}i(I.element,T,S),I.element.ariaSelected=String(T),I.lastItemId=e.id,I.lastSelected=T,I.lastFocused=S}let Y2=d(C,O);if(I.lastTransform!==Y2)m(I.element,Y2),I.lastTransform=Y2;if(L)I.element.setAttribute("aria-setsize",X)}else{let o=d(C,O),g=n(C,e,T,S,o);if(!c)c=document.createDocumentFragment();c.appendChild(g.element),B.set(C,g)}}if(c)J.appendChild(c)},z=(N)=>{for(let[M,w]of B){let _=d(M,N);if(w.lastTransform!==_)m(w.element,_),w.lastTransform=_}},A=(N,M,w,_)=>{let O=B.get(N);if(!O)return;let L=O.lastItemId!==M.id,c=O.lastSelected!==w,C=O.lastFocused!==_;if(L||c||C){let x=y(w,_),e=Q(M,N,x);a(O.element,e),i(O.element,w,_),O.element.dataset.id=String(M.id),O.element.ariaSelected=String(w),t(O.element,N),O.lastItemId=M.id,O.lastSelected=w,O.lastFocused=_}},b=(N,M,w)=>{let _=B.get(N);if(!_)return;let O=_.lastSelected!==M,L=_.lastFocused!==w;if(O||L)i(_.element,M,w),_.lastSelected=M,_.lastFocused=w},P=(N)=>{return B.get(N)?.element},r=(N)=>{if(Math.abs(N-H)<1)return;H=N;for(let[M,w]of B){t(w.element,M);let _=d(M);m(w.element,_),w.lastTransform=_}},f=()=>{A2(J,B.keys(),(N)=>B.get(N)?.element)},s=()=>{for(let[,N]of B)G.release(N.element);B.clear()};return{render:R,updatePositions:z,updateItem:A,updateItemClasses:b,getElement:P,sortDOM:f,updateContainerWidth:r,clear:s,destroy:()=>{s(),G.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let W=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:W}),Y=Y+1+W,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(E)=>{if($.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let k=y2($,E),Z=$[k];if(E===Z.headerLayoutIndex)return{type:"header",group:Z};let V=E-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+V,group:Z}},layoutToDataIndex:(E)=>{if($.length===0)return E;let k=y2($,E),Z=$[k];if(E===Z.headerLayoutIndex)return-1;let V=E-Z.headerLayoutIndex-1;return Z.firstDataIndex+V},dataToLayoutIndex:(E)=>{if($.length===0)return E;let k=p2($,E),Z=$[k],V=E-Z.firstDataIndex;return Z.headerLayoutIndex+1+V},getGroupAtLayoutIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=y2($,E);return $[k]},getGroupAtDataIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=p2($,E);return $[k]},getHeaderHeight:typeof q==="number"?(E)=>q:(E)=>{let k=$[E];if(!k)return 0;return q(k.key,E)},rebuild:(E)=>{$=x2(E,Q.getGroupForIndex),j=E+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let W=-1,G=!1,B=0,H=(D)=>{if(D===W)return;W=D;let F=Q.groups;if(D<0||D>=F.length){U.textContent="";return}let v=F[D],y=j.headerTemplate(v.key,v.groupIndex),p=Q.getHeaderHeight(D);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof y==="string")U.innerHTML=y;else U.replaceChildren(y)},E=(D)=>{let F=Q.groups;if(F.length===0){Z();return}let v=$.getOffset(F[0].headerLayoutIndex);if(D<v){Z();return}let y=0,p=F.length-1;while(y<p){let u=y+p+1>>>1;if($.getOffset(F[u].headerLayoutIndex)<=D)y=u;else p=u-1}let h=y;if(!G)k();H(h);let l=Q.getHeaderHeight(h),a=0,i=h+1;if(i<F.length){let d=$.getOffset(F[i].headerLayoutIndex)-D;if(d<l)a=d-l}if(a!==B)if(B=a,a===0)U.style.transform="";else{let u=Math.round(a);U.style.transform=Y?`translateX(${u}px)`:`translateY(${u}px)`}},k=()=>{if(G)return;G=!0,U.style.display=""},Z=()=>{if(!G)return;G=!1,U.style.display="none",W=-1,B=0,U.style.transform=""},V=()=>{let D=W;if(W=-1,D>=0)H(D)},X=()=>{U.remove(),W=-1,G=!1};return U.style.display="none",{update:E,refresh:V,show:k,hide:Z,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=V2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=V2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),W=Q.getSize(K),G=Q.getTotalSize(),B=Math.max(0,G-$),H;switch(Y){case"center":H=U-$/2+W/2;break;case"end":H=U-$+W;break;case"start":default:H=U;break}return Math.max(0,Math.min(H,B))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var _J=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(Z)=>{if(Z<=0)return 0;if(!j)return Math.ceil(Z/Q);let V=0,X=0,D=0;for(let F=0;F<Z;F++)if(j(F)){if(D++,X>0)V++,X=0;V++,X=0}else if(X++,X>=Q)V++,X=0;if(X>0)V++;return V},K=(Z)=>{return q.row=U(Z),q.col=W(Z),q},U=(Z)=>{if(!j)return Math.floor(Z/Q);let V=0,X=0;for(let D=0;D<=Z;D++)if(j(D)){if(X>0)V++,X=0;if(D===Z)return V;V++,X=0}else{if(D===Z)return V;if(X++,X>=Q)V++,X=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${V}`),V},W=(Z)=>{if(!j)return Z%Q;if(j(Z))return 0;let V=0;for(let X=0;X<=Z;X++)if(j(X))V=0;else{if(X===Z)return V;if(V++,V>=Q)V=0}return V},G=(Z,V,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,Z*Q),h=Math.min(X-1,(V+1)*Q-1);return{start:p,end:h}}let D=-1,F=-1,v=0,y=0;for(let p=0;p<X;p++){if(j(p)){if(y>0)v++,y=0;if(v>=Z&&v<=V){if(D===-1)D=p;F=p}v++,y=0}else{if(v>=Z&&v<=V){if(D===-1)D=p;F=p}if(y++,y>=Q)v++,y=0}if(v>V&&y===0)break}if(D===-1)return{start:0,end:-1};return{start:D,end:F}},B=(Z,V,X)=>{if(V<0||V>=Q)return-1;let D=Z*Q+V;if(D<0||D>=X)return-1;return D},H=(Z)=>{let V=(Q-1)*$;return Math.max(0,(Z-V)/Q)};return{get columns(){return Q},get gap(){return $},update:(Z)=>{if(Z.columns!==void 0)Q=Math.max(1,Math.floor(Z.columns));if(Z.gap!==void 0)$=Z.gap;if(Z.isHeaderFn!==void 0)j=Z.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:W,getItemRange:G,getItemIndex:B,getColumnWidth:H,getColumnOffset:(Z,V)=>{let X=H(V);return Z*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,D)=>({def:X,index:D,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},W=(X)=>{if(Y.length===0){K=0;return}let D=0,F=0;for(let v=0;v<Y.length;v++){let y=Y[v],p=y.def;if(p.width!==void 0)y.width=v2(p.width,y.minWidth,y.maxWidth),D+=y.width;else F++}if(F>0){let y=Math.max(0,X-D)/F;for(let p=0;p<Y.length;p++){let h=Y[p];if(h.def.width===void 0)h.width=v2(y,h.minWidth,h.maxWidth)}}G()},G=()=>{let X=0;for(let D=0;D<Y.length;D++){let F=Y[D];F.offset=X,X+=F.width}K=X},B=(X,D)=>{if(X<0||X>=Y.length)return 0;let F=Y[X];if(!F.resizable)return F.width;let v=v2(D,F.minWidth,F.maxWidth);return F.width=v,G(),v},H=(X)=>{return Y[X]},E=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let D=0,F=Y.length-1;while(D<F){let v=D+F>>>1,y=Y[v];if(X<y.offset)F=v-1;else if(X>=y.offset+y.width)D=v+1;else return y}return Y[D]},k=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},Z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},V=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:W,updateColumns:V,resizeColumn:B,getColumn:H,getColumnAtX:E,getColumnOffset:k,getColumnWidth:Z}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let W=document.createElement("div");W.className=`${j}-table-header`,W.setAttribute("role","row"),W.setAttribute("aria-rowindex","1"),W.style.height=`${$}px`;let G=document.createElement("div");G.className=`${j}-table-header-scroll`,G.setAttribute("role","presentation"),W.appendChild(G),U.appendChild(W),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let B=[],H=[],E=[],k=!0,Z=null,V="asc",X=null,D=!1,F=-1,v=0,y=0,p=(A,b)=>{let P=document.createElement("div");P.className=`${j}-table-header-cell`,P.setAttribute("role","columnheader"),P.setAttribute("aria-colindex",String(b+1)),P.dataset.columnKey=A.def.key;let r=A.def.align;if(r==="center")P.classList.add(`${j}-table-header-cell--center`);else if(r==="right")P.classList.add(`${j}-table-header-cell--right`);let f=document.createElement("div");f.className=`${j}-table-header-content`;let s=A.def.header?A.def.header(A.def):A.def.label;if(typeof s==="string")f.textContent=s;else f.appendChild(s);if(P.appendChild(f),A.def.sortable){let J2=document.createElement("span");J2.className=`${j}-table-header-sort`,J2.setAttribute("aria-hidden","true"),P.appendChild(J2),E.push(J2),P.classList.add(`${j}-table-header-cell--sortable`)}else E.push(null);if(A.resizable){let J2=document.createElement("div");J2.className=`${j}-table-header-resize`,J2.dataset.resizeIndex=String(b),P.appendChild(J2),H.push(J2)}return P},h=(A)=>{X=A,G.textContent="",B=[],H=[],E=[];let b=A.columns;for(let P=0;P<b.length;P++){let r=b[P],f=p(r,P);B.push(f),G.appendChild(f)}if(l(A),Z)a(Z,V)},l=(A)=>{X=A;let b=A.columns;G.style.width=`${A.totalWidth}px`;for(let P=0;P<B.length&&P<b.length;P++){let r=B[P],f=b[P];r.style.width=`${f.width}px`}},a=(A,b)=>{if(Z=A,V=b,!X)return;let P=X.columns;for(let r=0;r<E.length&&r<P.length;r++){let f=E[r];if(!f)continue;if(P[r].def.key===A&&A!==null)f.textContent=b==="asc"?"▲":"▼",f.style.opacity="0.7",B[r].setAttribute("aria-sort",b==="asc"?"ascending":"descending");else f.textContent="",f.style.opacity="0",B[r].removeAttribute("aria-sort")}},i=(A)=>{G.style.transform=`translateX(${-A}px)`},u=(A)=>{let b=A.target;if(!b.dataset.resizeIndex)return;if(A.preventDefault(),A.stopPropagation(),F=parseInt(b.dataset.resizeIndex,10),!X)return;let P=X.getColumn(F);if(!P||!P.resizable)return;D=!0,v=A.clientX,y=P.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",b.classList.add(`${j}-table-header-resize--active`),b.setPointerCapture(A.pointerId),b.addEventListener("pointermove",d),b.addEventListener("pointerup",m),b.addEventListener("pointercancel",m)},d=(A)=>{if(!D||!X)return;let b=A.clientX-v;if(Math.abs(b)<1)return;let P=Math.max(0,y+b);q(F,P)},m=(A)=>{if(!D)return;let b=A.target;b.removeEventListener("pointermove",d),b.removeEventListener("pointerup",m),b.removeEventListener("pointercancel",m);try{b.releasePointerCapture(A.pointerId)}catch{}b.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",D=!1,F=-1},t=(A)=>{let b=A.target;if(b.dataset.resizeIndex!==void 0)return;if(D)return;let P=b;while(P&&!P.dataset.columnKey)if(P=P.parentElement,P===W||P===null)return;if(!P||!P.dataset.columnKey)return;let r=P.dataset.columnKey;if(!X)return;let f=X.columns,s=-1;for(let N=0;N<f.length;N++)if(f[N].def.key===r){s=N;break}if(s===-1)return;let J2=f[s];if(K)K({key:r,index:s,event:A});if(J2.def.sortable&&Y){let N;if(Z===r)if(V==="asc")N="desc";else N=null;else N="asc";Y({key:r,index:s,direction:N})}};return W.addEventListener("pointerdown",u),W.addEventListener("click",t),{element:W,update:l,updateSort:a,rebuild:h,show:()=>{if(k)return;k=!0,W.style.display=""},hide:()=>{if(!k)return;k=!1,W.style.display="none"},destroy:()=>{W.removeEventListener("pointerdown",u),W.removeEventListener("click",t),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),B=[],H=[],E=[],X=null,k=!1},syncScroll:i}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},OJ=(J,Q,$,j,q,Y,K,U,W)=>{let G=pJ(),B=new Map,H=-1,E=$,k=null,Z=null,V=null,X=(N,M)=>{Z=N,V=M},D=(N,M)=>{if(M)N.setAttribute("aria-selected","true");else N.removeAttribute("aria-selected")},F=`${q}-item ${q}-table-row`,v=`${q}-item--selected`,y=`${q}-item--focused`,p=`${q}-table-cell`,h=`${q}-table-cell--center`,l=`${q}-table-cell--right`,a=`${q}-item--odd`,i=`${q}-item ${q}-table-row ${q}-table-group-header`,u=`${q}-table-group-header-content`,d=(N,M,w,_)=>{if(w.def.cell){let O=w.def.cell(M,w.def,_);if(typeof O==="string")N.innerHTML=O;else N.replaceChildren(O)}else{let O=M[w.def.key];N.textContent=O!=null?String(O):""}},m=(N,M,w,_)=>{let O=F;if(U){if(k){let L=k(M);if(L>=0&&(L&1)===1)O+=` ${a}`}else if((M&1)===1)O+=` ${a}`}if(w)O+=` ${v}`;if(_)O+=` ${y}`;N.className=O},t=(N,M)=>{let w=M.def.align;if(w==="center")N.classList.add(h),N.classList.remove(l);else if(w==="right")N.classList.add(l),N.classList.remove(h);else N.classList.remove(h,l)},n=(N,M)=>{let _=E.columns.length;if(M.length===_)return M;let O=[];for(let L=0;L<_;L++){let c;if(L<M.length)c=M[L];else c=document.createElement("div"),c.className=p,N.appendChild(c);O.push(c)}for(let L=_;L<M.length;L++)M[L].remove();return O},R=(N,M,w)=>{let _=G.acquire(),O=N;_.style.width=`${E.totalWidth}px`;let L=w.getSize(M);_.style.height=`${L}px`,_.className=i,_.setAttribute("role","presentation"),_.setAttribute("data-id",String(N.id)),_.setAttribute("data-index",String(M)),_.removeAttribute("aria-selected"),_.removeAttribute("aria-rowindex"),_.replaceChildren();let c=document.createElement("div");if(c.className=u,V){let x=V(O.groupKey,O.groupIndex);if(typeof x==="string")c.innerHTML=x;else c.appendChild(x)}_.appendChild(c);let C=w.getOffset(M);return _.style.transform=`translateY(${C}px)`,{element:_,cells:[],index:M,isGroupHeader:!0,lastItemId:N.id,lastSelected:!1,lastFocused:!1,lastOffset:C,lastHeight:L}},z=(N,M,w,_,O)=>{let L=G.acquire();L.style.width=`${E.totalWidth}px`;let c=O.getSize(M);L.style.height=`${c}px`,m(L,M,w,_),L.setAttribute("role","row"),L.setAttribute("data-id",String(N.id)),L.setAttribute("data-index",String(M)),L.id=`${Y}-${M}`,L.setAttribute("aria-rowindex",String(M+2));let C=K();if(C!==H)H=C;D(L,w);let x=n(L,[]),e=E.columns;for(let S=0;S<x.length&&S<e.length;S++){let I=x[S],o=e[S];I.style.left=`${o.offset}px`,I.style.width=`${o.width}px`,I.setAttribute("role","gridcell"),I.setAttribute("aria-colindex",String(S+1)),t(I,o),d(I,N,o,M)}let T=O.getOffset(M);return L.style.transform=`translateY(${T}px)`,{element:L,cells:x,index:M,isGroupHeader:!1,lastItemId:N.id,lastSelected:w,lastFocused:_,lastOffset:T,lastHeight:c}},A=(N,M,w,_)=>{for(let[x,e]of B)if(x<M.start||x>M.end)G.release(e.element),B.delete(x);let O=!1,L=K();if(L!==H)H=L,O=!0;let c=null,C=Q();k=typeof U==="string"&&W?W():null;for(let x=M.start;x<=M.end;x++){let e=x-M.start,T=N[e];if(!T)continue;let S=w.has(T.id),I=x===_,o=Z?Z(T):!1,g=B.get(x);if(g){if(g.isGroupHeader!==o){G.release(g.element),B.delete(x);let Q2=o?R(T,x,C):z(T,x,S,I,C);if(B.set(x,Q2),!c)c=document.createDocumentFragment();c.appendChild(Q2.element);continue}if(o){if(g.lastItemId!==T.id){let $2=T,X2=g.element.firstElementChild;if(X2&&V){let U2=V($2.groupKey,$2.groupIndex);if(typeof U2==="string")X2.innerHTML=U2;else X2.replaceChildren(U2)}g.element.setAttribute("data-id",String(T.id)),g.lastItemId=T.id}let Y2=C.getOffset(x);if(g.lastOffset!==Y2)g.lastOffset=Y2,g.element.style.transform=`translateY(${Y2}px)`;let q2=C.getSize(x);if(g.lastHeight!==q2)g.lastHeight=q2,g.element.style.height=`${q2}px`}else{let Q2=g.lastItemId!==T.id,Y2=g.lastSelected!==S,q2=g.lastFocused!==I;if(Q2){let U2=E.columns;for(let j2=0;j2<g.cells.length&&j2<U2.length;j2++)d(g.cells[j2],T,U2[j2],x);m(g.element,x,S,I),g.element.setAttribute("data-id",String(T.id)),D(g.element,S),g.lastItemId=T.id,g.lastSelected=S,g.lastFocused=I}else if(Y2||q2)m(g.element,x,S,I),D(g.element,S),g.lastSelected=S,g.lastFocused=I;let $2=C.getOffset(x);if(g.lastOffset!==$2)g.lastOffset=$2,g.element.style.transform=`translateY(${$2}px)`;let X2=C.getSize(x);if(g.lastHeight!==X2)g.lastHeight=X2,g.element.style.height=`${X2}px`;if(O)g.element.setAttribute("aria-rowindex",String(x+2))}}else{let Q2=o?R(T,x,C):z(T,x,S,I,C);if(B.set(x,Q2),!c)c=document.createDocumentFragment();c.appendChild(Q2.element)}}if(c)J.appendChild(c)},b=(N,M,w,_)=>{let O=B.get(N);if(!O)return;if(O.isGroupHeader)return;let L=O.lastItemId!==M.id,c=O.lastSelected!==w,C=O.lastFocused!==_;if(L||c||C){if(L){let x=E.columns;for(let e=0;e<O.cells.length&&e<x.length;e++)d(O.cells[e],M,x[e],N);O.element.setAttribute("data-id",String(M.id)),O.lastItemId=M.id}m(O.element,N,w,_),D(O.element,w),O.lastSelected=w,O.lastFocused=_}},P=(N,M,w)=>{let _=B.get(N);if(!_)return;if(_.isGroupHeader)return;let O=_.lastSelected!==M,L=_.lastFocused!==w;if(O||L)m(_.element,N,M,w),D(_.element,M),_.lastSelected=M,_.lastFocused=w},r=(N)=>{E=N;let M=N.columns;for(let[,w]of B)if(w.element.style.width=`${N.totalWidth}px`,w.cells.length>0)for(let _=0;_<w.cells.length&&_<M.length;_++){let O=w.cells[_],L=M[_];O.style.left=`${L.offset}px`,O.style.width=`${L.width}px`}},f=(N)=>{return B.get(N)?.element},s=()=>{for(let[,N]of B)G.release(N.element);B.clear(),H=-1};return{render:A,updateItem:b,updateItemClasses:P,getElement:f,updateColumnLayout:r,setGroupHeaderFn:X,clear:s,destroy:()=>{s(),G.clear()}}};var WJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let D=q+$;for(let F=0;F<Q;F++)Y[F]=F*D};K();let U=[],W=0,G=[],B=(X)=>{let D=0,F=X[0];for(let v=1;v<X.length;v++){let y=X[v];if(y<F)F=y,D=v}return D},H=(X,D)=>{if(X<=0)return W=0,U=[],[];let F=Array(Q).fill(0),v=Array(Q);for(let h=0;h<Q;h++)v[h]=[];let y=Array(X);for(let h=0;h<X;h++){let l=B(F),a=D(h),i=F[l];y[h]={index:h,x:Y[l],y:i,lane:l,size:a,crossSize:q},v[l].push(h),F[l]=i+a+$}U=v;let p=0;for(let h=0;h<Q;h++){let l=F[h],a=l>0?l-$:0;if(a>p)p=a}return W=p,y},E=(X)=>{if(X.length===0)return W>0?W:0;if(W>0)return W;let D=Array(Q).fill(0);for(let v of X){let y=v.y+v.size,p=D[v.lane];if(y>p)D[v.lane]=y}let F=0;for(let v=0;v<Q;v++)if(D[v]>F)F=D[v];return F},k=(X,D,F)=>{if(X.length===0||F<=D)return G.length=0,G;if(U.length===0||U.length!==Q)return Z(X,D,F);G.length=0;for(let v=0;v<Q;v++){let y=U[v],p=y.length;if(p===0)continue;let h=0,l=p;while(h<l){let a=h+l>>>1,i=X[y[a]];if(i.y+i.size<=D)h=a+1;else l=a}for(let a=h;a<p;a++){let i=X[y[a]];if(i.y>=F)break;G.push(i)}}return G},Z=(X,D,F)=>{let v=[];for(let y of X)if(y.y+y.size>D&&y.y<F)v.push(y);return v};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let D=!1;if(X.columns!==void 0){let F=Math.max(1,Math.floor(X.columns));if(F!==Q)Q=F,D=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,D=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,D=!0;if(D)K()},calculateLayout:H,getTotalSize:E,getVisibleItems:k}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,W=new Set,G=0,B="",H=-1,E={selected:!1,focused:!1},k=(u,d)=>{return E.selected=u,E.focused=d,E},Z=`${$}-item ${$}-masonry-item`,V=`${$}-item--selected`,X=`${$}-item--focused`,D=(u,d)=>{if(typeof d==="string")u.innerHTML=d;else u.replaceChildren(d)},F=(u,d,m)=>{u.classList.toggle(V,d),u.classList.toggle(X,m)},v=(u,d)=>{if(j)u.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else u.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},y=(u,d)=>{if(j)u.style.width=`${d.size}px`,u.style.height=`${d.crossSize}px`;else u.style.width=`${d.crossSize}px`,u.style.height=`${d.size}px`},p=(u,d,m,t,n)=>{let R=K.acquire(),z=k(t,n);if(R.className=Z,R.dataset.index=String(u),R.dataset.id=String(d.id),R.dataset.lane=String(m.lane),R.ariaSelected=String(t),Y)R.id=`${Y}-item-${u}`;if(q){let b=q();if(b!==H)H=b,B=String(b);R.setAttribute("aria-setsize",B),R.setAttribute("aria-posinset",String(u+1))}y(R,m);let A=Q(d,u,z);return D(R,A),F(R,t,n),v(R,m),{element:R,lastItemId:d.id,lastSelected:t,lastFocused:n,lastY:m.y,lastX:m.x,lastSize:m.size,lastCrossSize:m.crossSize,lastSeenFrame:G}},h=(u,d,m,t)=>{G++,W.clear();for(let R=0;R<d.length;R++)W.add(d[R].index);for(let[R,z]of U)if(W.has(R))z.lastSeenFrame=G;else if(G-z.lastSeenFrame>hJ)K.release(z.element),U.delete(R);let n=null;for(let R=0;R<d.length;R++){let z=d[R],A=z.index,b=u(A);if(!b)continue;let P=m.has(b.id),r=A===t,f=U.get(A);if(f){let s=f.lastItemId!==b.id,J2=f.lastSelected!==P,N=f.lastFocused!==r,M=f.lastY!==z.y||f.lastX!==z.x,w=f.lastSize!==z.size||f.lastCrossSize!==z.crossSize;if(s||J2||N){let _=k(P,r),O=Q(b,A,_);D(f.element,O),F(f.element,P,r),f.element.dataset.id=String(b.id),f.element.ariaSelected=String(P),f.lastItemId=b.id,f.lastSelected=P,f.lastFocused=r}if(w)y(f.element,z),f.lastSize=z.size,f.lastCrossSize=z.crossSize;if(M)v(f.element,z),f.lastY=z.y,f.lastX=z.x}else{let s=p(A,b,z,P,r);if(!n)n=document.createDocumentFragment();n.appendChild(s.element),U.set(A,s)}}if(n)J.appendChild(n)},l=()=>{for(let{element:u}of U.values())K.release(u);U.clear(),J.innerHTML=""};return{render:h,getElement:(u)=>U.get(u)?.element,sortDOM:()=>{A2(J,U.keys(),(u)=>U.get(u)?.element)},clear:l,destroy:()=>{l(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,W)=>{if(!J[U])J[U]=new Set;return J[U].add(W),()=>$(U,W)},$=(U,W)=>{J[U]?.delete(W)};return{on:Q,off:$,emit:(U,W)=>{J[U]?.forEach((G)=>{try{G(W)}catch(B){console.error(`[vlist] Error in event handler for "${String(U)}":`,B)}})},once:(U,W)=>{let G=(B)=>{$(U,G),W(B)};return Q(U,G)},clear:(U)=>{if(U)delete J[U];else for(let W in J)delete J[W]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,W=(R)=>{let z=Y.get(R);if(!z)z={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(R,z);else z.lastAccess=Date.now();return z},G=(R)=>{return Math.floor(R/Q)},B=(R)=>{return R%Q},H=()=>K,E=(R)=>{K=R},k=(R)=>{if(R<0||R>=K)return;let z=G(R),A=Y.get(z);if(!A)return;return A.items[B(R)]},Z=(R)=>{if(R<0||R>=K)return!1;let z=G(R),A=Y.get(z);if(!A)return!1;return A.items[B(R)]!==void 0},V=(R,z)=>{let A=G(R),b=W(A),P=B(R),r=b.items[P]===void 0;if(b.items[P]=z,r)b.count++,U++;if(R>=K)K=R+1},X=(R,z)=>{for(let A=0;A<z.length;A++){let b=z[A];if(b!==void 0)V(R+A,b)}},D=(R)=>{if(R<0||R>=K)return!1;let z=G(R),A=Y.get(z);if(!A)return!1;let b=B(R);if(A.items[b]===void 0)return!1;if(A.items[b]=void 0,A.count--,U--,A.count===0)Y.delete(z);return!0},F=(R,z)=>{let A=[];for(let b=R;b<=z&&b<K;b++)A.push(k(b));return A},v=(R,z)=>{for(let A=R;A<=z&&A<K;A++)if(!Z(A))return!1;return!0},y=()=>{let R=[],z=null,A=Array.from(Y.keys()).sort((b,P)=>b-P);for(let b of A){let P=Y.get(b);if(!P)continue;let r=b*Q;for(let f=0;f<Q;f++){let s=r+f;if(s>=K)break;if(P.items[f]!==void 0)if(z===null)z={start:s,end:s};else if(s===z.end+1)z.end=s;else R.push(z),z={start:s,end:s};else if(z!==null)R.push(z),z=null}}if(z!==null)R.push(z);return R},p=(R,z)=>{let A=[],b=null;for(let P=R;P<=z&&P<K;P++)if(!Z(P))if(b===null)b={start:P,end:P};else b.end=P;else if(b!==null)A.push(b),b=null;if(b!==null)A.push(b);return A},h=(R)=>{return Y.has(R)},l=(R)=>{let z=Y.get(R);if(z)z.lastAccess=Date.now()},a=(R,z)=>{if(R>z||Y.size===0)return;let A=Date.now(),b=G(Math.max(0,R)),P=G(Math.min(K-1,z));for(let r=b;r<=P;r++){let f=Y.get(r);if(f)f.lastAccess=A}},i=(R,z)=>{if(U<=$)return 0;let A=Math.max(0,R-j),b=Math.min(K-1,z+j),P=G(A),r=G(b),f=0,s=[];for(let[J2,N]of Y)if(J2<P||J2>r)f+=N.count,s.push(J2),U-=N.count,Y.delete(J2);if(f>0&&q)q(f,s);return f},u=()=>{if(U<=$)return 0;let R=Array.from(Y.entries()).sort(([,b],[,P])=>b.lastAccess-P.lastAccess),z=0,A=[];for(let[b,P]of R){if(U<=$)break;z+=P.count,U-=P.count,A.push(b),Y.delete(b)}if(z>0&&q)q(z,A);return z},d=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},m=()=>U,t=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:H,setTotal:E,get:k,has:Z,set:V,setRange:X,delete:D,getRange:F,isRangeLoaded:v,getLoadedRanges:y,findUnloadedRanges:p,getChunkIndex:G,isChunkLoaded:h,touchChunk:l,touchChunksForRange:a,evictDistant:i,evictToLimit:u,getStats:d,getCachedCount:m,clear:t,reset:()=>{t(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},M2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),W=Y.start;for(let G of U){if(G.end<W)continue;if(G.start>Y.end)break;if(G.start>W)K.push({start:W,end:Math.min(G.start-1,Y.end)});if(W=G.end+1,W>Y.end)break}if(W<=Y.end)K.push({start:W,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(H)=>{if(q||H.length===0)return;let E=Math.min(H.length,$);for(let k=0;k<E;k++){let Z=H[k];if(!Z||typeof Z!=="object")continue;let V={};for(let[X,D]of Object.entries(Z)){if(X.startsWith("_")||X==="id")continue;V[X]=String(D??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},U=()=>q,W=(H)=>{let E={id:`${l2}${Y++}`,[z2]:!0,_index:H};if(j.length===0)return E.label=Q.repeat(12),E;let k=j[H%j.length];for(let[Z,V]of Object.entries(k))E[Z]=Q.repeat(Math.max(1,V));return E};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:W,generateRange:(H,E)=>{let k=[];for(let Z=H;Z<=E;Z++)k.push(W(Z));return k},clear:()=>{j=[],q=!1,Y=0}}},_2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!_2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:W,onItemsEvicted:G}=J,B=F2({...q,onEvict:(T,S)=>{G?.(T),p()}}),H=null,E=()=>{if(!H)H=H2(Y);return H},k=new Map,Z=!1,V,X=!0,D,F=[],v=0,y=new Map,p=()=>{U?.(n())},h=()=>{k.clear();let T=B.getLoadedRanges();for(let S of T)for(let I=S.start;I<=S.end;I++){let o=B.get(I);if(o&&!_2(o))k.set(o.id,I)}},l=(T,S)=>{if(!_2(S))k.set(S.id,T)},a=(T)=>{k.delete(T)},i=(T,S)=>{return`${T}-${S}`},u=()=>B.getTotal(),d=()=>B.getCachedCount(),m=()=>Z,t=()=>X,n=()=>({total:B.getTotal(),cached:B.getCachedCount(),isLoading:Z,pendingRanges:F,error:V,hasMore:X,cursor:D}),R=()=>B,z=()=>E(),A=(T)=>{let S=B.get(T);if(S!==void 0)return S;if(T>=0&&T<B.getTotal())return E().generate(T);return},b=(T)=>{let S=k.get(T);if(S===void 0)return;return B.get(S)},P=(T)=>{return k.get(T)??-1},r=(T)=>{let S=B.get(T);return S!==void 0&&!_2(S)},f=(T,S)=>{let I=[],o=B.getTotal(),g=0,Q2=0;B.touchChunksForRange(T,Math.min(S,o-1));for(let Y2=T;Y2<=S&&Y2<o;Y2++){let q2=B.get(Y2);if(q2!==void 0)I.push(q2),g++;else I.push(E().generate(Y2)),Q2++}return I},s=(T)=>{B.setTotal(T),X=B.getCachedCount()<T,p()},J2=(T,S=0,I)=>{if(Q&&T.length>0){let o=E();if(!o.hasAnalyzedStructure())o.analyzeStructure(T)}for(let o=0;o<T.length;o++){let g=T[o];if(g!==void 0){let Q2=S+o;B.set(Q2,g),l(Q2,g)}}if(I!==void 0)B.setTotal(I);else if(S+T.length>B.getTotal())B.setTotal(S+T.length);if(B.getCachedCount()>=B.getTotal()&&B.getTotal()>0)X=!1;p(),W?.(T,S,B.getTotal())},N=(T,S)=>{let I=k.get(T);if(I===void 0)return!1;let o=B.get(I);if(!o)return!1;let g={...o,...S};if(B.set(I,g),S.id!==void 0&&S.id!==T)a(T),l(I,g);return p(),!0},M=(T)=>{let S=k.get(T);if(S===void 0)return!1;B.delete(S),a(T);let I=B.getTotal();if(I>0)B.setTotal(I-1);return p(),!0},w=async(T,S)=>{if(!Q)return;let I=i(T,S);if(y.has(I))return;let o=B.getLoadedRanges(),g=M2({start:T,end:S},o,B.chunkSize);if(g.length===0)return;let Q2=B.chunkSize,Y2=[];for(let $2 of g){let X2=Math.floor($2.start/Q2),U2=Math.floor($2.end/Q2);for(let j2=X2;j2<=U2;j2++){let N2=j2*Q2,K2=N2+Q2-1,Z2=i(N2,K2);if(!Y2.some((O2)=>O2.start===N2)&&!y.has(Z2))Y2.push({start:N2,end:K2})}}let q2=[];for(let $2 of g){let X2=Math.floor($2.start/Q2),U2=Math.floor($2.end/Q2);for(let j2=X2;j2<=U2;j2++){let N2=j2*Q2,K2=N2+Q2-1,Z2=i(N2,K2);if(y.has(Z2)){let O2=y.get(Z2);if(!q2.includes(O2))q2.push(O2)}}}for(let $2 of Y2){let X2=i($2.start,$2.end),U2=(async()=>{F.push($2),Z=!0,V=void 0,p();try{let j2=$2.end-$2.start+1,N2={offset:$2.start,limit:j2,cursor:void 0},K2=await Q.read(N2);if(J2(K2.items,$2.start,K2.total),K2.cursor)D=K2.cursor;let Z2=$2.start+K2.items.length;if(Z2>=v){if(v=Z2,K2.hasMore!==void 0)X=K2.hasMore;else if(K2.total!==void 0)X=Z2<K2.total}}catch(j2){V=j2 instanceof Error?j2:Error(String(j2))}finally{y.delete(X2),F=F.filter((j2)=>j2.start!==$2.start||j2.end!==$2.end),Z=y.size>0,p()}})();y.set(X2,U2),q2.push(U2)}await Promise.all(q2)},_=async(T,S)=>{if(B.isRangeLoaded(T,S))return;await w(T,S)},O=async()=>{if(!Q)return;await w(0,K-1)},L=async()=>{if(!Q||Z||!X)return!1;let T=B.getCachedCount(),S=B.getTotal(),I=T,o=Math.min(I+K-1,S>0?S-1:I+K-1);if(I>=S&&S>0)return X=!1,!1;return await w(I,o),B.getCachedCount()>T},c=async()=>{if(B.clear(),B.setTotal(0),k.clear(),H)H.clear();y.clear(),F=[],Z=!1,D=void 0,X=!0,v=0,V=void 0,p()},C=(T,S)=>{if(B.evictDistant(T,S)>0)h()},x=()=>{B.clear(),k.clear(),D=void 0,V=void 0,F=[],Z=!1,p()},e=()=>{if(B.reset(),k.clear(),H)H.clear();D=void 0,X=!0,v=0,V=void 0,F=[],Z=!1,p()};if($&&$.length>0)J2($,0,j??$.length);else if(j!==void 0)B.setTotal(j),p();return{getState:n,getTotal:u,getCached:d,getIsLoading:m,getHasMore:t,getStorage:R,getPlaceholders:z,getItem:A,getItemById:b,getIndexById:P,isItemLoaded:r,getItemsInRange:f,setTotal:s,setItems:J2,updateItem:N,removeItem:M,loadRange:w,ensureRange:_,loadInitial:O,loadMore:L,reload:c,evictDistant:C,clear:x,reset:e}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:W=!0,hoverZoneWidth:G=16,showOnViewportEnter:B=!0}=$,H=0,E=0,k=0,Z=0,V=!1,X=!1,D=0,F=0,v=0,y=null,p=!1,h=null,l=null,a=q?"width":"height",i=q?"translateX":"translateY",u=q?(C)=>C.clientX:(C)=>C.clientY,d=q?"left":"top",m=document.createElement("div"),t=document.createElement("div"),n=W?document.createElement("div"):null,R=()=>{if(m.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,q)m.classList.add(`${j}-scrollbar--horizontal`);if(m.appendChild(t),J.appendChild(m),n){if(n.className=`${j}-scrollbar-hover`,q)n.classList.add(`${j}-scrollbar-hover--horizontal`),n.style.height=`${G}px`;else n.style.width=`${G}px`;J.appendChild(n)}},z=()=>{if(y)clearTimeout(y),y=null},A=()=>{if(!Y)return;z(),y=setTimeout(P,K)},b=()=>{if(H<=E)return;if(z(),!p)m.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!V&&!X)A()},P=()=>{if(V||X)return;m.classList.remove(`${j}-scrollbar--visible`),p=!1},r=(C,x)=>{H=C,E=x;let e=H>E;if(m.style.display=e?"":"none",!e){P();return}let T=E/H;k=Math.max(U,T*E),t.style[a]=`${k}px`,Z=E-k,f(v)},f=(C)=>{if(v=C,H<=E||Z<=0)return;let x=H-E,T=Math.min(1,Math.max(0,C/x))*Z;t.style.transform=`${i}(${T}px)`},s=(C)=>{if(C.target===t)return;let x=m.getBoundingClientRect(),S=u(C)-x[d]-k/2,o=Math.max(0,Math.min(S,Z))/Z,g=H-E,Q2=o*g;Q(Q2),b()},J2=(C)=>{C.preventDefault(),C.stopPropagation(),V=!0,D=u(C),F=v,z(),m.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",N),document.addEventListener("mouseup",M)},N=(C)=>{if(!V)return;let x=u(C)-D,e=Z>0?x/Z:0,T=H-E,S=e*T,I=Math.max(0,Math.min(F+S,T)),g=I/T*Z;if(t.style.transform=`${i}(${g}px)`,l=I,h===null)h=requestAnimationFrame(()=>{if(l!==null)Q(l);h=null})},M=()=>{if(V=!1,h!==null)cancelAnimationFrame(h),h=null;if(l!==null)Q(l),l=null;if(m.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)A();document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",M)},w=()=>{if(B)b()},_=()=>{if(!V){if(X=!1,Y)A()}},O=()=>{X=!0,z(),b()},L=()=>{if(X=!1,!V&&Y)A()},c=()=>{if(z(),h!==null)cancelAnimationFrame(h),h=null;if(m.removeEventListener("click",s),m.removeEventListener("mouseenter",O),m.removeEventListener("mouseleave",L),t.removeEventListener("mousedown",J2),J.removeEventListener("mouseenter",w),J.removeEventListener("mouseleave",_),document.removeEventListener("mousemove",N),document.removeEventListener("mouseup",M),n){if(n.removeEventListener("mouseenter",O),n.removeEventListener("mouseleave",L),n.parentNode)n.parentNode.removeChild(n)}if(m.parentNode)m.parentNode.removeChild(m)};if(R(),m.addEventListener("click",s),m.addEventListener("mouseenter",O),m.addEventListener("mouseleave",L),t.addEventListener("mousedown",J2),J.addEventListener("mouseenter",w),J.addEventListener("mouseleave",_),n)n.addEventListener("mouseenter",O),n.addEventListener("mouseleave",L);return{show:b,hide:P,updateBounds:r,updatePosition:f,isVisible:()=>p,destroy:c}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,W=$-K.time;J.velocity=W>0?U/W:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:W,horizontal:G=!1}=Q,B=!!W,H=0,E=0,k=B?G?window.innerWidth:window.innerHeight:G?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,V=Q.compression,X=zJ(),D=!1,F=null,y=R2(()=>{let _=G?J.scrollLeft:J.scrollTop,O=_>=H?"down":"up";if(X=T2(X,_),H=_,K)K({scrollTop:H,direction:O,velocity:X.velocity});u()}),h=R2(()=>{let _=J.getBoundingClientRect(),O=G?Math.max(0,-_.left):Math.max(0,-_.top),L=O>=H?"down":"up";if(X=T2(X,O),H=O,!D)D=!0;if(K)K({scrollTop:H,direction:L,velocity:X.velocity});u()}),l=(_)=>{_.preventDefault()},a=(_)=>{if(_.deltaX)return;_.preventDefault(),J.scrollLeft+=_.deltaY},i=(_)=>{if(!Z)return;_.preventDefault();let O=(G?_.deltaX||_.deltaY:_.deltaY)*j,L=H+O;if(q)L=H+O*0.3;if(L=Math.max(0,Math.min(L,E)),L!==H){let C=L>=H?"down":"up";if(X=T2(X,L),H=L,!D)D=!0;if(K)K({scrollTop:H,direction:C,velocity:X.velocity});u()}},u=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(D=!1,X=zJ(H),U)U()},Y)},d=(_)=>{if(Z)return;if(Z=!0,V=_,E=_.virtualSize-k,B)return;if(y.cancel(),J.removeEventListener("scroll",y),!$)J.removeEventListener("wheel",l);else if(G)J.removeEventListener("wheel",a);if(G)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",i,{passive:!1});let O=G?J.scrollLeft:J.scrollTop;if(O>0){let L=G?V?.actualSize??J.scrollWidth:V?.actualSize??J.scrollHeight;H=O/L*E}if(G)J.scrollLeft=0;else J.scrollTop=0},m=()=>{if(!Z)return;if(Z=!1,B){V=void 0;return}if(J.removeEventListener("wheel",i),G)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",y,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(G)J.addEventListener("wheel",a,{passive:!1});if(V&&H>0){let O=H/E*(V.actualSize-k);if(G)J.scrollLeft=O;else J.scrollTop=O}V=void 0},t=()=>{if(B||Z)return H;return G?J.scrollLeft:J.scrollTop},n=(_,O=!1)=>{let L=Math.max(0,Math.min(_,E||1/0));if(B){let c=J.getBoundingClientRect();if(G){let C=c.left+window.scrollX;window.scrollTo({left:C+L,behavior:O?"smooth":"auto"})}else{let C=c.top+window.scrollY;window.scrollTo({top:C+L,behavior:O?"smooth":"auto"})}}else if(Z){if(L===H)return;let C=L>=H?"down":"up";if(X=T2(X,L),H=L,!D)D=!0;if(K)K({scrollTop:H,direction:C,velocity:X.velocity});u()}else if(G)J.scrollTo({left:L,behavior:O?"smooth":"auto"});else J.scrollTo({top:L,behavior:O?"smooth":"auto"})},R=(_)=>{n(t()+_)},z=()=>{return t()<=0},A=(_=0)=>{let O=t(),L=B||Z?E:G?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return O>=L-_},b=()=>{let _=t(),O=B||Z?E:G?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(O<=0)return 0;return Math.min(1,Math.max(0,_/O))},P=(_)=>{if(_.compression)V=_.compression,E=V.virtualSize-k},r=()=>Z,f=()=>Math.abs(X.velocity),s=()=>mJ(X),J2=()=>D,N=()=>B,M=(_)=>{if(k=_,V)E=V.virtualSize-k},w=()=>{if(F)clearTimeout(F);if(B)h.cancel(),window.removeEventListener("scroll",h);else y.cancel(),J.removeEventListener("scroll",y),J.removeEventListener("wheel",i),J.removeEventListener("wheel",l),J.removeEventListener("wheel",a)};if(B){if(Z&&V)E=V.virtualSize-k;window.addEventListener("scroll",h,{passive:!0})}else if(Z&&V){if(E=V.virtualSize-k,G)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",i,{passive:!1})}else{if(G)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",y,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(G)J.addEventListener("wheel",a,{passive:!1})}return{getScrollTop:t,scrollTo:n,scrollBy:R,isAtTop:z,isAtBottom:A,getScrollPercentage:b,getVelocity:f,isTracking:s,isScrolling:J2,updateConfig:P,enableCompression:d,disableCompression:m,isCompressed:r,isWindowMode:N,updateContainerHeight:M,destroy:w}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(W){if(Q=W,W>cJ&&W<dJ)$+=W,j++}function K(){let W=J.getTotal();if(W===0)return 0;let G=J.getItemSize();if(G<=0)return 0;let B=J.getContainerSize();if(B<=0)return 0;let H=J.getScrollPosition(),E=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(W/E)*G,X=Math.min(Z,B2)-B,D=Z-B,F=X>0?D/X:1,v=H*F,y=Math.ceil((v+B)/G);return Math.min(y*E,W)}function U(){let W=J.getTotal(),G=K();return{progress:W>0?Math.min(100,Math.max(0,G/W*100)):0,velocity:Q,velocityAvg:q(),itemCount:G,total:W}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,_2 as isPlaceholderItem,$J as isInRange,W2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,G2 as getScaleState,ZJ as getScaleInfo,G2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,OJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,V2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,WJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,DJ as createGridRenderer,_J as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,M2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,B2 as MAX_VIRTUAL_SIZE};
|
|
@@ -82,7 +82,7 @@ export declare const createElementPool: (tagName?: string, maxSize?: number) =>
|
|
|
82
82
|
export declare const createRenderer: <T extends VListItem = VListItem>(itemsContainer: HTMLElement, template: ItemTemplate<T>, sizeCache: SizeCache, classPrefix: string, totalItemsGetter?: () => number, ariaIdPrefix?: string, horizontal?: boolean, crossAxisSize?: number, compressionFns?: {
|
|
83
83
|
getState: CompressionStateFn;
|
|
84
84
|
getPosition: CompressedPositionFn;
|
|
85
|
-
}, striped?: boolean) => Renderer<T>;
|
|
85
|
+
}, striped?: boolean | "data" | "even" | "odd", stripeIndexFn?: () => (index: number) => number) => Renderer<T>;
|
|
86
86
|
/**
|
|
87
87
|
* Create the vlist DOM structure
|
|
88
88
|
*/
|
package/dist/types.d.ts
CHANGED
|
@@ -157,9 +157,17 @@ export interface ItemConfig<T extends VListItem = VListItem> {
|
|
|
157
157
|
* .vlist-item--odd { background: #fafafb; }
|
|
158
158
|
* ```
|
|
159
159
|
*
|
|
160
|
+
* - `true` — all items (including group headers) count for even/odd.
|
|
161
|
+
* - `"data"` — only data items count; group headers are excluded from
|
|
162
|
+
* the stripe index so they don't shift the alternating pattern.
|
|
163
|
+
* - `"even"` — counter resets after each group header; first data row
|
|
164
|
+
* in every group is even (non-striped). macOS Finder behavior.
|
|
165
|
+
* - `"odd"` — counter resets after each group header; first data row
|
|
166
|
+
* in every group is odd (striped).
|
|
167
|
+
*
|
|
160
168
|
* Default: `false` (no extra work on the render hot path).
|
|
161
169
|
*/
|
|
162
|
-
striped?: boolean;
|
|
170
|
+
striped?: boolean | "data" | "even" | "odd";
|
|
163
171
|
/**
|
|
164
172
|
* Gap between items in pixels along the main axis (default: 0).
|
|
165
173
|
*
|
package/dist/vlist.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}[data-theme-mode="light"]{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}
|
|
1
|
+
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}[data-theme-mode="light"]{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]){--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}}.dark{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}.vlist--scrolling .vlist-sticky-header{transition:none}.vlist--grid .vlist-items{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry .vlist-items{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:var(--vlist-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@floor/vlist",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.5",
|
|
4
4
|
"description": "Lightweight, high-performance virtual list with zero dependencies",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Floor IO",
|
|
@@ -34,6 +34,11 @@
|
|
|
34
34
|
"import": "./dist/index.js",
|
|
35
35
|
"default": "./dist/index.js"
|
|
36
36
|
},
|
|
37
|
+
"./internals": {
|
|
38
|
+
"types": "./dist/internals.d.ts",
|
|
39
|
+
"import": "./dist/internals.js",
|
|
40
|
+
"default": "./dist/internals.js"
|
|
41
|
+
},
|
|
37
42
|
"./styles": "./dist/vlist.css",
|
|
38
43
|
"./styles/table": "./dist/vlist-table.css",
|
|
39
44
|
"./styles/extras": "./dist/vlist-extras.css",
|
|
@@ -41,6 +46,7 @@
|
|
|
41
46
|
},
|
|
42
47
|
"files": [
|
|
43
48
|
"dist/index.js",
|
|
49
|
+
"dist/internals.js",
|
|
44
50
|
"dist/**/*.d.ts",
|
|
45
51
|
"dist/**/*.css",
|
|
46
52
|
"!dist/**/*.d.ts.map"
|