vlist 1.6.3 → 1.6.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.github.md +6 -6
- package/README.md +6 -6
- package/dist/features/scrollbar/feature.d.ts +15 -0
- package/dist/features/scrollbar/scrollbar.d.ts +31 -5
- package/dist/features/table/header.d.ts +1 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internals.js +1 -1
- package/dist/size.json +1 -1
- package/dist/types.d.ts +18 -0
- package/dist/vlist-table.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +1 -1
package/README.github.md
CHANGED
|
@@ -53,15 +53,15 @@ const list = vlist({ container: '#app', items, item: { height: 200, template: re
|
|
|
53
53
|
| Feature | Size | Description |
|
|
54
54
|
|---------|------|-------------|
|
|
55
55
|
| **Base** | 10.6 KB | Virtualization, ARIA, keyboard nav, gap, padding |
|
|
56
|
-
| `withGrid()` | +3.9 KB | 2D grid layout |
|
|
57
|
-
| `withMasonry()` | +3.4 KB | Pinterest-style masonry with lane-aware keyboard nav |
|
|
58
|
-
| `withTable()` | +5.5 KB | Data table with columns, resize, sort |
|
|
59
|
-
| `withGroups()` | +2.7 KB | Sticky/inline headers |
|
|
60
56
|
| `withAsync()` | +4.6 KB | Lazy loading with velocity-aware fetching |
|
|
61
57
|
| `withSelection()` | +2.7 KB | Single/multiple selection with 2D keyboard nav |
|
|
62
|
-
| `withScale()` | +3.
|
|
58
|
+
| `withScale()` | +3.7 KB | 1M+ items via scroll compression |
|
|
59
|
+
| `withGroups()` | +2.7 KB | Sticky/inline headers |
|
|
63
60
|
| `withAutoSize()` | +0.9 KB | Auto-measure items via ResizeObserver |
|
|
64
|
-
| `withScrollbar()` | +1.
|
|
61
|
+
| `withScrollbar()` | +1.7 KB | Custom scrollbar UI |
|
|
62
|
+
| `withGrid()` | +3.9 KB | 2D grid layout |
|
|
63
|
+
| `withMasonry()` | +3.4 KB | Pinterest-style masonry with lane-aware keyboard nav |
|
|
64
|
+
| `withTable()` | +5.5 KB | Data table with columns, resize, sort |
|
|
65
65
|
| `withPage()` | +0.8 KB | Window-level scrolling |
|
|
66
66
|
| `withSnapshots()` | +0.8 KB | Scroll position save/restore |
|
|
67
67
|
|
package/README.md
CHANGED
|
@@ -53,15 +53,15 @@ const list = vlist({ container: '#app', items, item: { height: 200, template: re
|
|
|
53
53
|
| Feature | Size | Description |
|
|
54
54
|
|---------|------|-------------|
|
|
55
55
|
| **Base** | 10.6 KB | Virtualization, ARIA, keyboard nav, gap, padding |
|
|
56
|
-
| `withGrid()` | +3.9 KB | 2D grid layout |
|
|
57
|
-
| `withMasonry()` | +3.4 KB | Pinterest-style masonry with lane-aware keyboard nav |
|
|
58
|
-
| `withTable()` | +5.5 KB | Data table with columns, resize, sort |
|
|
59
|
-
| `withGroups()` | +2.7 KB | Sticky/inline headers |
|
|
60
56
|
| `withAsync()` | +4.6 KB | Lazy loading with velocity-aware fetching |
|
|
61
57
|
| `withSelection()` | +2.7 KB | Single/multiple selection with 2D keyboard nav |
|
|
62
|
-
| `withScale()` | +3.
|
|
58
|
+
| `withScale()` | +3.7 KB | 1M+ items via scroll compression |
|
|
59
|
+
| `withGroups()` | +2.7 KB | Sticky/inline headers |
|
|
63
60
|
| `withAutoSize()` | +0.9 KB | Auto-measure items via ResizeObserver |
|
|
64
|
-
| `withScrollbar()` | +1.
|
|
61
|
+
| `withScrollbar()` | +1.7 KB | Custom scrollbar UI |
|
|
62
|
+
| `withGrid()` | +3.9 KB | 2D grid layout |
|
|
63
|
+
| `withMasonry()` | +3.4 KB | Pinterest-style masonry with lane-aware keyboard nav |
|
|
64
|
+
| `withTable()` | +5.5 KB | Data table with columns, resize, sort |
|
|
65
65
|
| `withPage()` | +0.8 KB | Window-level scrolling |
|
|
66
66
|
| `withSnapshots()` | +0.8 KB | Scroll position save/restore |
|
|
67
67
|
|
|
@@ -46,6 +46,21 @@ export interface ScrollbarFeatureConfig {
|
|
|
46
46
|
* never overlaps items. Equivalent to CSS `scrollbar-gutter: stable`.
|
|
47
47
|
*/
|
|
48
48
|
gutter?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Padding between the scrollbar track and the viewport edges in pixels (default: 1).
|
|
51
|
+
* Insets the track from the right wall and from the top and bottom, so the scrollbar
|
|
52
|
+
* floats rather than sitting flush against the edges. Also adjusts the thumb travel
|
|
53
|
+
* range to keep position accurate.
|
|
54
|
+
* Can also be set globally via the `--vlist-custom-scrollbar-padding` CSS variable.
|
|
55
|
+
*/
|
|
56
|
+
padding?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Behavior when clicking on the scrollbar track (not the thumb) (default: 'jump').
|
|
59
|
+
* - `'jump'` — jumps directly to the clicked position (centers the thumb there).
|
|
60
|
+
* - `'page'` — scrolls by one page (containerSize) toward the clicked position,
|
|
61
|
+
* matching macOS native scrollbar behavior.
|
|
62
|
+
*/
|
|
63
|
+
clickBehavior?: 'jump' | 'page';
|
|
49
64
|
}
|
|
50
65
|
/**
|
|
51
66
|
* Create a scrollbar feature for the builder.
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* - CSS variables for customization
|
|
13
13
|
* - Horizontal mode support (direction-aware axis)
|
|
14
14
|
*/
|
|
15
|
+
import type { ScrollbarPadding } from "../../types";
|
|
16
|
+
export type { ScrollbarPadding } from "../../types";
|
|
15
17
|
/** Scrollbar configuration */
|
|
16
18
|
export interface ScrollbarConfig {
|
|
17
19
|
/** Enable scrollbar (default: true when compressed) */
|
|
@@ -20,7 +22,10 @@ export interface ScrollbarConfig {
|
|
|
20
22
|
autoHide?: boolean;
|
|
21
23
|
/** Auto-hide delay in milliseconds (default: 1000) */
|
|
22
24
|
autoHideDelay?: number;
|
|
23
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Minimum thumb size in pixels (default: 15).
|
|
27
|
+
* Can also be set globally via the `--vlist-custom-scrollbar-min-thumb-size` CSS variable.
|
|
28
|
+
*/
|
|
24
29
|
minThumbSize?: number;
|
|
25
30
|
/**
|
|
26
31
|
* Show scrollbar when hovering near the scrollbar edge (default: true).
|
|
@@ -30,10 +35,13 @@ export interface ScrollbarConfig {
|
|
|
30
35
|
*/
|
|
31
36
|
showOnHover?: boolean;
|
|
32
37
|
/**
|
|
33
|
-
* Width of the
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
38
|
+
* Width of the edge zone in pixels (default: `wallPadding + 16`).
|
|
39
|
+
* The edge zone covers the scrollbar edge including the padding margin, making
|
|
40
|
+
* the full area clickable regardless of `showOnHover`. When `showOnHover` is
|
|
41
|
+
* true, it also acts as the hover-to-reveal target.
|
|
42
|
+
* Defaults to wall-side padding (`right` for vertical, `bottom` for horizontal)
|
|
43
|
+
* plus 16px reach, so the zone always covers the full inset track plus a
|
|
44
|
+
* comfortable buffer.
|
|
37
45
|
*/
|
|
38
46
|
hoverZoneWidth?: number;
|
|
39
47
|
/**
|
|
@@ -42,6 +50,24 @@ export interface ScrollbarConfig {
|
|
|
42
50
|
* near the scrollbar edge (if `showOnHover` is true).
|
|
43
51
|
*/
|
|
44
52
|
showOnViewportEnter?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Padding between the scrollbar track and the viewport edges (default: 2).
|
|
55
|
+
* Insets the track from the edges so the scrollbar floats rather than sitting flush.
|
|
56
|
+
* Also adjusts the thumb travel range to keep position accurate.
|
|
57
|
+
*
|
|
58
|
+
* Accepts a single number (all sides) or an object for per-side control:
|
|
59
|
+
* `{ top?, right?, bottom?, left? }` — omitted sides default to 2px.
|
|
60
|
+
*
|
|
61
|
+
* Can also be set globally via the `--vlist-custom-scrollbar-padding-{side}` CSS variables.
|
|
62
|
+
*/
|
|
63
|
+
padding?: ScrollbarPadding;
|
|
64
|
+
/**
|
|
65
|
+
* Behavior when clicking on the scrollbar track (not the thumb) (default: 'page').
|
|
66
|
+
* - `'page'` — scrolls by one page (containerSize) toward the clicked position,
|
|
67
|
+
* matching macOS native scrollbar behavior. Hold to scroll continuously.
|
|
68
|
+
* - `'jump'` — jumps directly to the clicked position (centers the thumb there).
|
|
69
|
+
*/
|
|
70
|
+
clickBehavior?: 'jump' | 'page';
|
|
45
71
|
}
|
|
46
72
|
/** Scrollbar instance */
|
|
47
73
|
export interface Scrollbar {
|
|
@@ -37,7 +37,6 @@ import type { TableHeader, ColumnSortEvent, ColumnClickEvent } from "./types";
|
|
|
37
37
|
* Create a TableHeader instance.
|
|
38
38
|
*
|
|
39
39
|
* @param root - The vlist root element (.vlist)
|
|
40
|
-
* @param viewport - The vlist viewport element (for scroll sync)
|
|
41
40
|
* @param headerHeight - Height of the header row in pixels
|
|
42
41
|
* @param classPrefix - CSS class prefix (default: 'vlist')
|
|
43
42
|
* @param onResize - Callback when a column is resized (receives column index and new width)
|
|
@@ -45,5 +44,5 @@ import type { TableHeader, ColumnSortEvent, ColumnClickEvent } from "./types";
|
|
|
45
44
|
* @param onClick - Callback when any header cell is clicked
|
|
46
45
|
* @returns TableHeader instance
|
|
47
46
|
*/
|
|
48
|
-
export declare const createTableHeader: <T extends VListItem = VListItem>(root: HTMLElement,
|
|
47
|
+
export declare const createTableHeader: <T extends VListItem = VListItem>(root: HTMLElement, headerHeight: number, classPrefix: string, onResize: (columnIndex: number, newWidth: number) => void, onSort?: (event: ColumnSortEvent) => void, onClick?: (event: ColumnClickEvent) => void) => TableHeader<T>;
|
|
49
48
|
//# sourceMappingURL=header.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,6 @@ export { withTable } from "./features/table";
|
|
|
24
24
|
export { withAutoSize } from "./features/autosize";
|
|
25
25
|
export { createStats } from "./utils/stats";
|
|
26
26
|
export type { Stats, StatsConfig, StatsState } from "./utils/stats";
|
|
27
|
-
export type { VListItem, VListEvents, ItemConfig, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridConfig, MasonryConfig, GroupsConfig, GroupHeaderConfig, GridSizeContext, GridHeightContext, } from "./types";
|
|
27
|
+
export type { VListItem, VListEvents, ItemConfig, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarPadding, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridConfig, MasonryConfig, GroupsConfig, GroupHeaderConfig, GridSizeContext, GridHeightContext, } from "./types";
|
|
28
28
|
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, ReloadOptions, } from "./builder";
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Q1=2,q1=(J=0)=>({velocity:0,sampleCount:0}),Y1=(J,q)=>{let Y=performance.now(),Q=J._lt??Y,U=J._lp??q,j=Y-Q;if(J._lp=q,J._lt=Y,j===0)return J.sampleCount=Math.min(J.sampleCount+1,5),J;if(j>100)return J.velocity=0,J.sampleCount=1,J;return J.velocity=Math.abs(q-U)/j,J.sampleCount=Math.min(J.sampleCount+1,5),J};var Q4=(J,q)=>{let Y=q;return{getOffset:(Q)=>Q*J,getSize:(Q)=>J,indexAtOffset:(Q)=>{if(Y===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(Q/J),Y-1))},getTotalSize:()=>Y*J,getTotal:()=>Y,rebuild:(Q)=>{Y=Q},isVariable:()=>!1}},q4=(J,q)=>{let Y=q,Q=new Float64Array(0),U=(K)=>{Y=K,Q=new Float64Array(K+1),Q[0]=0;for(let D=0;D<K;D++)Q[D+1]=Q[D]+J(D)};U(q);let j=(K)=>{if(Y===0)return 0;if(K<=0)return 0;if(K>=Q[Y])return Y-1;let D=0,B=Y-1;while(D<B){let Z=D+B+1>>>1;if(Q[Z]<=K)D=Z;else B=Z-1}return D};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=Y)return Q[Y];return Q[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>j(K),getTotalSize:()=>Q[Y]??0,getTotal:()=>Y,rebuild:(K)=>U(K),isVariable:()=>!0}},f0=(J,q)=>{if(typeof J==="number")return Q4(J,q);return q4(J,q)},j1=(J,q,Y,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.ceil(Y/J.getSize(0));let U=0,j=0,K=q;while(K<Q&&j<Y)j+=J.getSize(K),U++,K++;return Math.max(1,U)};var X1=()=>{let J={},q=(j,K)=>{if(!J[j])J[j]=new Set;return J[j].add(K),()=>Y(j,K)},Y=(j,K)=>{J[j]?.delete(K)};return{on:q,off:Y,emit:(j,K)=>{J[j]?.forEach((D)=>{try{D(K)}catch(B){console.error(`[vlist] Error in event handler for "${String(j)}":`,B)}})},clear:(j)=>{if(j)delete J[j];else for(let K in J)delete J[K]}}};var U1=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist] Container not found: ${J}`);return q}return J},o0=(J,q)=>{let Y=document.createElement("div");if(Y.className=J,q)Y.style.cssText=q;return Y},K1=(J,q,Y,Q,U)=>{let j=Q,K=o0(q);if(j)K.classList.add(`${q}--horizontal`);if(U!==!1)K.setAttribute("tabindex","0");let D=o0(`${q}-viewport`,j?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%");D.setAttribute("tabindex","-1");let B=o0(`${q}-content`,j?"position:relative;height:100%":"position:relative;width:100%"),Z=o0(`${q}-items`,j?"position:relative;height:100%":"position:relative;width:100%");if(Z.setAttribute("role","listbox"),Y)Z.setAttribute("aria-label",Y);if(j)Z.setAttribute("aria-orientation","horizontal");let N=o0(`${q}-live`,"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0");return N.setAttribute("aria-live","polite"),N.setAttribute("aria-atomic","true"),N.setAttribute("role","status"),B.appendChild(Z),D.appendChild(B),K.appendChild(N),K.appendChild(D),J.appendChild(K),{root:K,viewport:D,content:B,items:Z,liveRegion:N}};var Z1=(J=100)=>{let q=[];return{acquire:()=>{let Y=q.pop();if(Y)return Y;let Q=document.createElement("div");return Q.setAttribute("role","option"),Q},release:(Y)=>{if(q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),q.push(Y)},clear:()=>{q.length=0}}};var B1=(J,q,Y,Q,U)=>{if(Q===0||q===0){U.start=0,U.end=-1;return}let j=Y.indexAtOffset(J),K=Y.indexAtOffset(J+q);if(K<Q-1)K++;U.start=Math.max(0,j),U.end=Math.min(Q-1,Math.max(0,K))},N1=(J,q,Y,Q)=>{Q.start=Math.max(0,J.start-q),Q.end=Math.min(Y-1,J.end+q)},W1=(J,q,Y,Q,U,j=0)=>{if(Q===0)return 0;let K=Math.max(0,Math.min(J,Q-1)),D=q.getOffset(K),B=q.getSize(K),Z=q.getTotalSize(),N=Math.max(0,Z+j-Y),w;switch(U){case"center":w=D-(Y-B)/2;break;case"end":w=j>0&&D+B>=Z?N:D-Y+B;break;default:w=D}return Math.max(0,Math.min(w,N))};var YJ={top:0,right:0,bottom:0,left:0},$0=(J)=>{if(J==null)return YJ;if(typeof J==="number")return J===0?YJ:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[j,K]=J;return j===0&&K===0?YJ:{top:j,right:K,bottom:j,left:K}}let[q,Y,Q,U]=J;return q===0&&Y===0&&Q===0&&U===0?YJ:{top:q,right:Y,bottom:Q,left:U}},h0=(J,q)=>q?J.left+J.right:J.top+J.bottom,jJ=(J,q)=>q?J.top+J.bottom:J.left+J.right;var u0=(J,q,Y)=>{let Q=Array.from(q).sort((K,D)=>K-D);if(Q.length<=1)return;let U=[];for(let K=0;K<Q.length;K++){let D=Y(Q[K]);if(D)U.push(D)}if(U.length<=1)return;let j=J.firstChild;for(let K=0;K<U.length;K++){let D=U[K];if(D===j)j=j.nextSibling;else J.insertBefore(D,j)}};var V1=(J,q)=>{let{dom:Y,emitter:Q,resolvedConfig:U,rawConfig:j,rendered:K,pool:D,sharedState:B,isHorizontal:Z,classPrefix:N,contentSizeHandlers:w,idleHandlers:_,afterScroll:T,clickHandlers:z,keydownHandlers:R,resizeHandlers:G,destroyHandlers:v,methods:k,onScrollFrame:f,resizeObserver:a,renderRange:h,afterRenderBatch:u}=q;return{get dom(){return Y},get sizeCache(){return J.hc},get emitter(){return Q},get config(){return U},get rawConfig(){return j},adjustScrollPosition(b){if(J.mp===0)return b;let d=Z?J.cw:J.ch,J0=J.hc.getTotalSize(),o=Math.max(0,J0-d),H=Math.max(0,J0+J.mp-d);if(b>=o)return H;return Math.min(b,H)},get renderer(){return{render:(b,d,J0,o,H)=>{J.ss=J0,J.fi=o,J.ffn()},updateItemClasses:(b,d,J0)=>{J.uic(b,d,J0)},updatePositions:()=>{},updateItem:()=>{},getElement:(b)=>K.get(b)??null,clear:()=>{},destroy:()=>{}}},set renderer(b){},get dataManager(){return J.dm},set dataManager(b){J.dm=b},get scrollController(){return J.sc},set scrollController(b){J.sc=b},state:B,getContainerWidth(){return J.cw},afterScroll:T,idleHandlers:_,afterRenderBatch:u,clickHandlers:z,keydownHandlers:R,resizeHandlers:G,contentSizeHandlers:w,destroyHandlers:v,methods:k,replaceTemplate(b){J.at=b},replaceRenderer(b){},replaceDataManager(b){J.dm=b},replaceScrollController(b){J.sc=b},getItemsForRange(b){let{dm:d,it:J0}=J,o=[];for(let H=b.start;H<=b.end;H++){let C=d?d.getItem(H):J0[H];if(C)o.push(C)}return o},getAllLoadedItems(){let b=J.dm;if(b){let d=b.getTotal(),J0=[];for(let o=0;o<d;o++){let H=b.getItem(o);if(H)J0.push(H)}return J0}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let b=J.hc;return{isCompressed:!1,actualSize:b.getTotalSize(),virtualSize:b.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:h.start,compression:B.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,b]of K)b.remove(),D.release(b);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(b,d){J.rfn=b,J.ffn=d},setVirtualTotalFn(b){J.vtf=b},rebuildSizeCache(b){J.hc.rebuild(b??J.vtf())},setSizeConfig(b){if(J.hc=f0(b,J.vtf()),J.gp>0){let d=J.hc.getTotalSize,J0=J.gp;J.hc.getTotalSize=()=>{let o=d();return o>0?o-J0:0}}},updateContentSize(b){let d=`${b+J.mp}px`;if(Z)Y.content.style.width=d;else Y.content.style.height=d},updateCompressionMode(){for(let b=0;b<w.length;b++)w[b]()},setVisibleRangeFn(b){J.gvr=b},getVisibleRange(b,d,J0,o){J.gvr(b,d,J.hc,J0,o)},setScrollToPosFn(b){J.gsp=b},getScrollToPos(b,d,J0,o){return J.gsp(b,J.hc,d,J0,o)},setPositionElementFn(b){J.pef=b},setScrollFns(b,d){J.sgt=b,J.sst=(J0)=>{d(J0),f()}},setScrollTarget(b){J.st.removeEventListener("scroll",f),J.st=b,J.st.addEventListener("scroll",f,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(b){J.gcw=b.width,J.gch=b.height,J.cw=b.width(),J.ch=b.height(),B.viewportState.containerSize=Z?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,a.unobserve(Y.viewport)},disableWheelHandler(){if(J.wh)Y.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(b){J.sif=b},getItemToScrollIndexFn(){return J.i2s},setItemToScrollIndexFn(b){J.i2s=b},setUpdateItemClassesFn(b){J.uic=b}}},_1=(J,q,Y)=>{let{rendered:Q,itemState:U,applyTemplate:j,updateContentSize:K}=q,D=()=>{J.hc.rebuild(J.vtf()),K(),Y.updateCompressionMode(),J.ffn()},B=()=>J.it.length;return{getState:()=>({total:B(),cached:B(),isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:B,getCached:B,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Z)=>J.it[Z],isItemLoaded:(Z)=>Z>=0&&Z<B()&&J.it[Z]!==void 0,getItemsInRange:(Z,N)=>{let w=[];for(let _=Math.max(0,Z),T=Math.min(N,B()-1);_<=T;_++)w.push(J.it[_]);return w},setTotal:()=>{},setItems:(Z,N=0,w)=>{if(N===0&&(w!==void 0||B()===0))J.it=Z;else{let _=N+Z.length;if(B()<_)J.it.length=_;for(let T=0;T<Z.length;T++)J.it[N+T]=Z[T]}if(J.ii)D()},updateItem:(Z,N)=>{let w=J.it;if(Z<0||Z>=w.length)return!1;let _=w[Z];if(!_)return!1;w[Z]={..._,...N};let T=Q.get(Z);if(T)j(T,J.at(w[Z],Z,U)),T.dataset.id=String(w[Z].id);return!0},removeItem:(Z)=>{let N=typeof Z==="number"?Z:J.it.findIndex((w)=>w.id===Z);if(N<0||N>=J.it.length)return!1;if(J.it.splice(N,1),J.ii)D();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),K(),J.ffn()}}},D1=(J,q)=>{let{dom:Y,classPrefix:Q}=q;return{getScrollTop:()=>J.sgt(),scrollTo:(U)=>{J.sst(U),J.ls=U,J.rfn()},scrollBy:(U)=>{let j=J.sgt()+U;J.sst(j),J.ls=j,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(U=2)=>J.sab(U),getScrollPercentage:()=>{let U=J.hc.getTotalSize(),j=Math.max(0,U-J.ch);return j>0?J.ls/j:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>Y.root.classList.contains(`${Q}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(U)=>{J.ch=U},destroy:()=>{}}};var LJ=(J,q,Y,Q,U=0,j=0)=>{let K=q.getOffset(J),D=q.getSize(J),B=K+U,Z=B+D,N=Y+Q;if(B<Y)return Math.max(0,K);if(Z>N)return Z+j-Q;return Y},XJ=(J,q,Y,Q,U=0,j=0,K,D,B)=>{if(!(K!=null&&K.isCompressed&&K.ratio!==1))return LJ(J,q,Y,Q,U,j);let N=D,{virtualSize:w}=K,_=q.getSize(Math.max(0,J)),T=Q-U-j,z=Math.max(1,Math.floor(T/_)),R=w/N;if(B){if(J>=B.start+z){let k=T/_,f=J+1-k;return Math.max(0,f*R)}if(J<=B.start)return Math.max(0,J*R);return Y}let G=Y/w*N,v=G+z;if(J>=v){let k=T/_,f=J+1-k;return Math.max(0,f*R)}if(J<G)return Math.max(0,J*R);return Y};var G1=(J,q,Y,Q,U,j,K,D,B,Z,N,w,_,T)=>{let z=`${Y}-item--focused`,R=!1,G=null,v=null,k=null,f=null,a=!1,h=()=>{if(a)return;a=!0,G=B.get("_getNavTotal")??null,v=B.get("_getNavDelta")??null,k=B.get("_navigate")??null,f=B.get("_scrollItemIntoView")??null},u=()=>{return h(),G?G():J.vtf()},b=()=>{return h(),v?v():{ud:1,lr:0,cols:0}};B.set("_getFocusedIndex",()=>R?J.fi:-1);let d=(c,F=!0)=>{if(q.root.setAttribute("aria-activedescendant",`${Q}-item-${c}`),h(),F)if(f)f(c);else{let y=U?J.cw:J.ch,O=J.i2s(c),I=LJ(O,J.hc,J.ls,y,j,K);if(I!==J.ls)J.sst(I),J.ls=J.sgt()}J.ffn()},J0=(c)=>{J.fi=c,R=!0,d(c)},o=(c,F)=>{if(J.fi=c,F||T)R=!0;let y=J.dm?J.dm.getItem(c):J.it[c];if(y&&J.ss.has(y.id))J.ss.clear();else if(J.ss.clear(),y)J.ss.add(y.id);d(c,F)},H=(c,F,y)=>{let O=c;while(O>=0&&O<y){let I=J.dm?J.dm.getItem(O):J.it[O];if(!I||!I.__groupHeader)return O;O+=F}O=c-F;while(O>=0&&O<y){let I=J.dm?J.dm.getItem(O):J.it[O];if(!I||!I.__groupHeader)return O;O-=F}return c},C=()=>{if(J.id)return;if(!q.root.matches(":focus-visible"))return;let c=u();if(c===0)return;let F=J.fi>=0?Math.min(J.fi,c-1):0;F=H(F,1,c),J0(F)};q.root.addEventListener("focusin",C);let S=(c)=>{if(J.id)return;let F=c.relatedTarget;if(F&&q.root.contains(F))return;if(R=!1,J.fi>=0)Z.get(J.fi)?.classList.remove(z);q.root.removeAttribute("aria-activedescendant")};q.root.addEventListener("focusout",S),N.push((c)=>{if(J.id)return;let F=u();if(F===0)return;let y=J.fi,O=y;if(c.key===" "||c.key==="Enter"){if(y>=0){let I=J.dm?J.dm.getItem(y):J.it[y];if(I&&!I.__groupHeader)o(y,!0)}c.preventDefault();return}if(h(),k)switch(c.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":O=k(y,c.key,F);break;default:return}else{let{ud:I,lr:x}=b();switch(c.key){case"ArrowUp":O=y-I;break;case"ArrowDown":O=y+I;break;case"ArrowLeft":if(!x)return;O=y-x;break;case"ArrowRight":if(!x)return;O=y+x;break;case"PageUp":case"PageDown":{let l=J.hc.getSize(J.i2s(Math.max(0,y))),p=Math.max(I,Math.floor((U?J.cw:J.ch)/l)*I);O=c.key==="PageUp"?y-p:y+p;break}case"Home":O=0;break;case"End":O=F-1;break;default:return}if(O<0)O=D?F-1:0;else if(O>=F)O=D?0:F-1}if(c.preventDefault(),O=H(O,O>=y?1:-1,F),O!==y)J0(O)}),w.push((c)=>{if(J.id)return;let F=c.target.closest("[data-index]");if(!F)return;let y=parseInt(F.dataset.index??"-1",10);if(y<0)return;let O=J.dm?.getItem(y)??J.it[y];if(!O||O.__groupHeader)return;R=!1,q.root.focus({preventScroll:!0}),o(y,!1)}),_.push(()=>{q.root.removeEventListener("focusin",C),q.root.removeEventListener("focusout",S)})};var FJ=200,g0=50;var M1=50,O1=12,E1=2,x0=16000000;var A1="x",L1=20,TJ="_isPlaceholder",w0="__placeholder_";var R0=(J,q,Y)=>{if(String(Y).startsWith(w0))return!1;let Q=w0+q;if(J.has(Q))return J.delete(Q),J.add(Y),!0;return!1},F1=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),m0=(J,q,Y)=>{if(Y==="none")return J;let Q=new Set(J.selected);if(Y==="single"){if(Q.clear(),q.length>0)Q.add(q[0])}else for(let U of q)Q.add(U);return{...J,selected:Q}},kJ=(J,q)=>{let Y=new Set(J.selected);for(let Q of q)Y.delete(Q);return{...J,selected:Y}},d0=(J,q,Y)=>{if(Y==="none")return J;if(J.selected.has(q))return kJ(J,[q]);else return m0(J,[q],Y)},bJ=(J,q,Y)=>{if(Y!=="multiple")return J;return{...J,selected:new Set(q.map((Q)=>Q.id))}},HJ=(J)=>({...J,selected:new Set}),c0=(J,q)=>{return J.focusedIndex=q,J},UJ=(J,q,Y=!1,Q=1)=>{if(q===0)return J;let U=J.focusedIndex-Q;if(U<0)U=Y?q-1:0;return J.focusedIndex=U,J},KJ=(J,q,Y=!1,Q=1)=>{if(q===0)return J;let U=J.focusedIndex+Q;if(U>=q)U=Y?0:q-1;return J.focusedIndex=U,J},T1=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},k1=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J},$J=(J,q,Y,Q)=>{if(q===0)return J;let U=Q==="up"?J.focusedIndex-Y:J.focusedIndex+Y;return U=Math.max(0,Math.min(q-1,U)),J.focusedIndex=U,J};var yJ=(J)=>{return Array.from(J.selected)},PJ=(J,q)=>{let Y=[];for(let Q of J.selected){let U=q(Q);if(U)Y.push(U)}return Y};var ZJ=(J,q,Y,Q,U)=>{if(U!=="multiple")return J;let j=Math.min(Y,Q),K=Math.max(Y,Q),D=[];for(let B=j;B<=K;B++){let Z=q[B];if(Z)D.push(Z.id)}return m0(J,D,U)};var wJ=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,z0=(J)=>{let q=typeof J==="object"&&J?J:null;return{align:typeof J==="string"?J:q?.align??"start",behavior:q?.behavior??"auto",duration:q?.duration??300}},l0=(J,q)=>{let Y=null,Q=()=>{if(Y!==null)cancelAnimationFrame(Y),Y=null};return{animateScroll:(j,K,D)=>{if(Q(),Math.abs(K-j)<1){J.scrollTo(K);return}let B=performance.now(),Z=(N)=>{let w=N-B,_=Math.min(w/D,1),T=j+(K-j)*wJ(_);if(J.scrollTo(T),q(),_<1)Y=requestAnimationFrame(Z);else Y=null};Y=requestAnimationFrame(Z)},cancelScroll:Q}};var b1=(J,q,Y,Q,U,j,K,D,B,Z,N,w,_,T,z,R,G,v)=>{let k=(M)=>{{if(!Array.isArray(M)){console.warn("[vlist] setItems() expects an array, got:",typeof M);return}if(M.length>0&&M[0]&&!("id"in M[0]))console.warn('[vlist] Items must have an "id" property. First item:',M[0]);let A=Math.min(M.length,1e4),W=new Set;for(let $=0;$<A;$++){let E=M[$];if(E&&"id"in E){if(W.has(E.id)){console.warn(`[vlist] Duplicate item ID "${E.id}" at index ${$}. updateItem() and removeItem() will only match the first occurrence.`);break}W.add(E.id)}}}O(),B.dataManager.setItems(M,0,M.length)},f=(M)=>{let A=Z&&J.sab(2);if(B.dataManager.setItems(M,J.it.length),A&&J.it.length>0){let W=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(W),J.ls=W,J.rfn()}},a=(M)=>{let A=Z?J.sgt():0,W=Z?J.hc.getTotalSize():0,$=[...J.it];if(B.dataManager.clear(),B.dataManager.setItems([...M,...$],0),Z){let E=J.hc.getTotalSize()-W;if(E>0)J.sst(A+E),J.ls=A+E}},h=null,u=null,b=null,d=!1,J0=()=>{if(d)return;d=!0,h=j.get("_updateRenderedItem")??null,u=j.get("_getSelectedIds")??null,b=j.get("_getFocusedIndex")??null},o=(M,A)=>{{let $=J.vtf();if(M<0||M>=$)console.warn(`[vlist] updateItem() index ${M} is out of range (0–${$-1}).`)}if(B.dataManager.updateItem(M,A),J0(),!h)return;let W=B.dataManager.getItem(M);if(W){let E=(u?u():J.ss).has(W.id),L=(b?b():J.fi)===M;h(M,W,E,L)}},H=!1,C=(M)=>{let A=typeof document<"u"?document.activeElement:null,W=A&&q.items.contains(A)?parseInt(A.dataset?.index??"-1",10):-1;if(!B.dataManager.removeItem(M))return console.warn(`[vlist] removeItem() could not find item with id "${M}".`),!1;if(Y.emit("data:change",{type:"remove",id:M}),B.forceRender(),!H){let E=B.dataManager;if(typeof E.ensureRange==="function")H=!0,queueMicrotask(()=>{H=!1;let L=B.dataManager.getTotal(),{start:g,end:i}=B.state.viewportState.renderRange;if(L>0&&i>=g)E.ensureRange(g,i).catch(()=>{})})}if(W>=0){let E=J.vtf();if(E>0)Q.get(Math.min(W,E-1))?.focus()}return!0},S=(M)=>{return B.dataManager.getItem(M)},c=(M)=>{return B.dataManager.getIndexById?.(M)??-1},F=async(M)=>{if(B.dataManager.reload)await B.dataManager.reload()},y=null,O=()=>{if(y!==null)cancelAnimationFrame(y),y=null},I=(M,A,W,$)=>{if(O(),Math.abs(A-M)<1){J.sst(A),J.ls=A,J.rfn();return}let E=performance.now(),L=(g)=>{let i=g-E,n=Math.min(i/W,1),t=$?$():A,j0=M+(t-M)*wJ(n);if(J.sst(j0),J.ls=j0,J.rfn(),n<1)y=requestAnimationFrame(L);else y=null};y=requestAnimationFrame(L)},x=(M,A)=>{{let n=J.vtf();if(n>0&&(M<0||M>=n))console.warn(`[vlist] scrollToIndex(${M}) is out of range (0–${n-1}).`)}let{align:W,behavior:$,duration:E}=z0(A),L=J.vtf(),g=M;if(N&&L>0)g=(g%L+L)%L;let i=J.gsp(g,J.hc,J.ch,L,W);if($==="smooth"){let n=g,t=W;I(J.sgt(),i,E,()=>J.gsp(n,J.hc,J.ch,J.vtf(),t))}else O(),J.sst(i)},l=()=>J.sgt(),p=(M,A)=>{return Y.on(M,A)},r=(M,A)=>{Y.off(M,A)},V=()=>{if(J.id)return;if(J.id=!0,B.state.isDestroyed=!0,q.items.removeEventListener("click",w),q.items.removeEventListener("dblclick",_),q.root.removeEventListener("keydown",T),J.st.removeEventListener("scroll",z),R.disconnect(),G(),J.wh)q.viewport.removeEventListener("wheel",J.wh);v();let M=[];for(let A=0;A<D.length;A++)try{D[A]()}catch(W){M.push(W instanceof Error?W:Error(String(W)))}for(let A of K)if(A.destroy)try{A.destroy()}catch(W){M.push(W instanceof Error?W:Error(String(W)))}O();for(let[,A]of Q)A.remove(),U.release(A);Q.clear(),U.clear(),Y.emit("destroy",void 0);for(let A of M)Y.emit("error",{error:A,context:"destroy"});Y.clear(),q.root.remove()},X=(M,A)=>j.has(M)?j.get(M):A,P={get element(){return q.root},get items(){let M=j.get("_getItems");return M?M():J.it},get total(){let M=j.get("_getTotal");return M?M():J.vtf()},setItems:X("setItems",k),appendItems:X("appendItems",f),prependItems:X("prependItems",a),updateItem:X("updateItem",o),removeItem:X("removeItem",C),reload:X("reload",F),getItemAt:S,getIndexById:c,scrollToIndex:X("scrollToIndex",x),cancelScroll:X("cancelScroll",O),getScrollPosition:X("getScrollPosition",l),on:p,off:r,destroy:V};for(let[M,A]of j){if(M.charCodeAt(0)===95||M==="setItems"||M==="appendItems"||M==="prependItems"||M==="updateItem"||M==="removeItem"||M==="reload"||M==="scrollToIndex"||M==="scrollToItem"||M==="cancelScroll"||M==="getScrollPosition")continue;P[M]=A}return P};var Y4=3,j4="vlist",X4=150,U4=16000000,K4=0,RJ=(J)=>{if(!J.container)throw Error("[vlist] Container is required");if(!J.item)throw Error("[vlist] item configuration is required");let q=J.orientation==="horizontal",Y=q?"width":"height",Q=q?"estimatedWidth":"estimatedHeight",U=q?J.item.width:J.item.height,j=q?J.item.estimatedWidth:J.item.estimatedHeight;if(U==null&&j==null)throw Error(`[vlist] item.${Y} or item.${Q} is required${q?" when orientation is 'horizontal'":""}`);if(U!=null){if(typeof U==="number"&&U<=0)throw Error(`[vlist] item.${Y} must be a positive number`);if(typeof U!=="number"&&typeof U!=="function")throw Error(`[vlist] item.${Y} must be a number or a function (index) => number`)}else if(j!=null){if(typeof j!=="number"||j<=0)throw Error(`[vlist] item.${Q} must be a positive number`)}if(!J.item.template)throw Error("[vlist] item.template is required");if(q&&J.reverse)throw Error("[vlist] horizontal direction cannot be combined with reverse mode");let K=new Map,D=!1,B={use(Z){if(D)throw Error("[vlist] Cannot call .use() after .build()");return K.set(Z.name,Z),B},build(){if(D)throw Error("[vlist] .build() can only be called once");return D=!0,Z4(J,K,q,U,j??null)}};return B};function Z4(J,q,Y,Q,U){let{item:j,items:K,overscan:D=Y4,classPrefix:B=j4,ariaLabel:Z,padding:N,reverse:w=!1,scroll:_,accessible:T,interactive:z}=J,R=z??T??!0,G=_,v=G?.wheel??!0,k=G?.wrap??!1,f=w,a=`${B}-${K4++}`,h=q.has("withGrid")||q.has("withMasonry")?0:j.gap??0,u=Q??U,b=Q==null&&U!=null,d=Y?typeof j.height==="number"?j.height:void 0:typeof j.width==="number"?j.width:void 0,J0={overscan:D,classPrefix:B,reverse:f,wrap:k,horizontal:Y,ariaIdPrefix:a,interactive:R},o=Array.from(q.values()).sort((m,e)=>(m.priority??50)-(e.priority??50)),H=new Set(o.map((m)=>m.name));for(let m of o)if(m.conflicts){for(let e of m.conflicts)if(H.has(e))throw Error(`[vlist] ${m.name} and ${e} cannot be combined`)}if(f){if(H.has("withGrid"))throw Error("[vlist] withGrid cannot be used with reverse: true")}let C=U1(J.container),S=K1(C,B,Z,Y,R);if(G?.wheel===!1)if(Y)S.viewport.style.overflowX="hidden";else S.viewport.style.overflow="hidden";if(G?.scrollbar==="none")S.viewport.classList.add(`${B}-viewport--no-scrollbar`);if(G?.gutter==="stable")S.viewport.classList.add(`${B}-viewport--gutter-stable`);let c=H.has("withGrid")||H.has("withMasonry");if(Y&&d!=null&&G?.scrollbar!=="none"&&!c){S.root.style.height=`${d}px`;let m=S.viewport.style.overflowX;S.viewport.style.overflowX="scroll";let e=S.viewport.offsetHeight-S.viewport.clientHeight;if(S.viewport.style.overflowX=m,e>0)S.root.style.height=`${d+e}px`}let F=$0(N),y=h0(F,Y);if(F.top||F.right||F.bottom||F.left)S.content.style.boxSizing="border-box",S.content.style.padding=`${F.top}px ${F.right}px ${F.bottom}px ${F.left}px`;let O=X1(),I=K||[],x=typeof u==="function"&&(q.has("withGrid")||q.has("withMasonry")),l=h>0?typeof u==="function"?(m)=>u(m)+h:u+h:u,p=b?U+h:l,r=f0(p,x?0:I.length);if(h>0){let m=r.getTotalSize;r.getTotalSize=()=>{let e=m();return e>0?e-h:0}}let V=Z1(),X={it:I,hc:r,ch:S.viewport.clientHeight,cw:S.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:q1(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Y?()=>S.viewport.scrollLeft:()=>S.viewport.scrollTop,sst:Y?(m)=>{S.viewport.scrollLeft=m}:(m)=>{S.viewport.scrollTop=m},sab:(m=2)=>{let e=X.hc.getTotalSize();return X.ls+X.ch>=e-m},sic:!1,rfn:null,ffn:null,gvr:(m,e,Y0,N0,E0)=>{B1(m,e,Y0,N0,E0)},gsp:(m,e,Y0,N0,E0)=>{return W1(m,e,Y0,N0,E0,X.mp)},pef:null,at:j.template,vre:!0,st:S.viewport,wh:null,gcw:()=>X.cw,gch:()=>X.ch,gp:h,mp:y,sif:(m)=>m,i2s:(m)=>m,uic:(m,e,Y0)=>{let N0=g.get(m);if(!N0)return;q0(N0,e,Y0)},csi:null};X.vtf=()=>X.dm?X.dm.getTotal():X.it.length;let P=null,M=!1,A={start:0,end:0},W={start:0,end:0},$={start:-1,end:-1},E={viewportState:{scrollPosition:0,containerSize:Y?X.cw:X.ch,totalSize:X.hc.getTotalSize(),actualSize:X.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},L=()=>({...E.viewportState,totalItems:X.vtf()}),g=new Map,i=()=>{u0(S.items,g.keys(),(m)=>g.get(m))},n=()=>{let m=X.hc.getTotalSize(),Y0=`${(X.sic?m:Math.min(m,U4))+y}px`;if(Y)S.content.style.width=Y0;else S.content.style.height=Y0},t={selected:!1,focused:!1},j0=`${B}-item`,s=`${B}-item--selected`,Q0=`${B}-item--focused`,q0=(m,e,Y0)=>{m.classList.toggle(s,e),m.classList.toggle(Q0,Y0),m.ariaSelected=e?"true":"false"},U0=j.striped,K0=!!U0,Z0=U0==="data"||U0==="even"||U0==="odd",V0=`${B}-item--odd`,G0=`${B}-item--placeholder`,X0=`${B}-item--replaced`,B0=`${B}--scrolling`,O0=[],A0=[],D0=[],W0=[],F0=[],M0=[],T0=[],y0=[],P0=new Map,WJ="__placeholder_",VJ={scrollPosition:0,direction:"down"},I0={velocity:0,reliable:!1},_J={range:{start:0,end:0}},DJ=null,GJ=null,aJ=!1,r1=()=>{if(aJ)return;aJ=!0,DJ=P0.get("_getSelectedIds")??null,GJ=P0.get("_getFocusedIndex")??null},e0=(m,e,Y0)=>{if(!e)console.warn(`[vlist] Template returned falsy value${Y0!==void 0?` for item at index ${Y0}`:""}. The element will render as blank.`);else if(typeof e==="string"&&e==="")console.warn(`[vlist] Template returned empty string${Y0!==void 0?` for item at index ${Y0}`:""}. The element will render as blank.`);if(typeof e==="string")m.innerHTML=e;else m.replaceChildren(e)},a1=(m,e)=>{let Y0=Math.round(X.hc.getOffset(e));if(Y)m.style.transform=`translateX(${Y0}px)`;else m.style.transform=`translateY(${Y0}px)`};X.pef=a1;let s1=(m,e)=>{let Y0=V.acquire();Y0.className=j0;let N0=!X.csi||X.csi(m);if(Y){if(N0)Y0.style.width=`${X.hc.getSize(m)-h}px`;else Y0.style.width="";if(d!=null)Y0.style.height=`${d}px`}else if(N0)Y0.style.height=`${X.hc.getSize(m)-h}px`;else Y0.style.height="";if(Y0.dataset.index=String(m),Y0.dataset.id=String(e.id),Y0.ariaSelected="false",Y0.id=`${a}-item-${m}`,X.la=String(X.vtf()),Y0.setAttribute("aria-setsize",X.la),Y0.setAttribute("aria-posinset",String(m+1)),String(e.id).startsWith(WJ))Y0.classList.add(G0);if(K0)if(Z0){let k0=X.sif(m);if(k0<0)Y0.classList.remove(V0);else Y0.classList.toggle(V0,(k0&1)===1)}else Y0.classList.toggle(V0,(m&1)===1);try{e0(Y0,X.at(e,m,t),m)}catch(k0){let L0=k0 instanceof Error?k0:Error(String(k0));O.emit("error",{error:L0,context:`tpl(${m},${e.id})`,viewport:L()}),Y0.textContent=""}return X.pef(Y0,m),Y0},o1=()=>{if(X.id)return;let m=Y?X.cw:X.ch;if(m<=0)return;r1();let e=DJ?DJ():X.ss,Y0=GJ?GJ():X.fi,N0=X.vtf();if(X.gvr(X.ls,m,X.hc,N0,A),N1(A,D,N0,W),W.start===$.start&&W.end===$.end){if(X.sic)for(let[_0,b0]of g)X.pef(b0,_0);E.viewportState.scrollPosition=X.ls,E.viewportState.containerSize=m,E.viewportState.visibleRange.start=A.start,E.viewportState.visibleRange.end=A.end,E.viewportState.renderRange.start=W.start,E.viewportState.renderRange.end=W.end;return}let E0=String(N0),k0=E0!==X.la;X.la=E0;for(let[_0,b0]of g)if(_0<W.start||_0>W.end)b0.remove(),V.release(b0),g.delete(_0);let L0=document.createDocumentFragment(),v0=!1,s0=T0.length>0?[]:null;for(let _0=W.start;_0<=W.end;_0++){let b0=X.dm?X.dm.getItem(_0):X.it[_0];if(b0===void 0)continue;let H0=g.get(_0);if(H0){let S0=H0.dataset.id,p0=String(b0.id);if(S0!==p0){let e1=S0?.startsWith(WJ),EJ=p0.startsWith(WJ);try{e0(H0,X.at(b0,_0,t),_0)}catch(AJ){let J4=AJ instanceof Error?AJ:Error(String(AJ));O.emit("error",{error:J4,context:`tpl(${_0},${b0.id})`,viewport:L()}),H0.textContent=""}H0.dataset.id=p0;let J1=!X.csi||X.csi(_0);if(Y)H0.style.width=J1?`${X.hc.getSize(_0)-h}px`:"";else H0.style.height=J1?`${X.hc.getSize(_0)-h}px`:"";if(EJ)H0.classList.add(G0);else H0.classList.remove(G0);if(e1&&!EJ)H0.classList.add(X0),setTimeout(()=>{H0.classList.remove(X0)},300);if(X.dm&&!EJ)R0(e,_0,b0.id)}X.pef(H0,_0);let qJ=e.has(b0.id);if(q0(H0,qJ,_0===Y0),k0)H0.setAttribute("aria-setsize",X.la)}else{let S0=s1(_0,b0);if(s0)s0.push({index:_0,element:S0});if(X.dm)R0(e,_0,b0.id);let p0=e.has(b0.id),qJ=_0===Y0;if(p0||qJ)q0(S0,p0,qJ);L0.appendChild(S0),g.set(_0,S0),v0=!0}}if(v0)S.items.appendChild(L0);if(s0&&s0.length>0)for(let _0=0;_0<T0.length;_0++)T0[_0](s0);$.start=W.start,$.end=W.end,E.lastRenderRange.start=W.start,E.lastRenderRange.end=W.end,E.viewportState.scrollPosition=X.ls,E.viewportState.visibleRange.start=A.start,E.viewportState.visibleRange.end=A.end,E.viewportState.renderRange.start=W.start,E.viewportState.renderRange.end=W.end,_J.range.start=W.start,_J.range.end=W.end,O.emit("range:change",_J)},n1=()=>{$.start=-1,$.end=-1,X.rfn()};X.rfn=o1,X.ffn=n1;let i1=()=>{S.root.classList.remove(B0),M=!1,X.vt.velocity=0,X.vt.sampleCount=0,I0.velocity=0,I0.reliable=!1,O.emit("velocity:change",I0),i();for(let m=0;m<A0.length;m++)A0[m]();O.emit("scroll:idle",{scrollPosition:X.ls})},t1=()=>{if(P)clearTimeout(P);P=setTimeout(i1,G?.idleTimeout??X4)},a0=()=>{if(X.id)return;let m=X.sgt();if(m===X.ls&&M)return;let e=m>=X.ls?"down":"up";if(X.vt=Y1(X.vt,m),!S.root.classList.contains(B0))S.root.classList.add(B0);M=!0,X.ls=m,X.rfn(),VJ.scrollPosition=m,VJ.direction=e,O.emit("scroll",VJ),I0.velocity=X.vt.velocity,I0.reliable=X.vt.sampleCount>=Q1,O.emit("velocity:change",I0);for(let Y0=0;Y0<O0.length;Y0++)O0[Y0](m,e);t1()},JJ=null;if(X.st.addEventListener("scroll",a0,{passive:!0}),v){let m=S.viewport;if(Y)JJ=(e)=>{if(E.viewportState.isCompressed)return;if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return;let Y0=X.sgt(),N0=m.scrollWidth-m.clientWidth,E0=Math.max(0,Math.min(Y0+e.deltaY,N0));if(Math.abs(E0-Y0)<1)return;e.preventDefault(),X.sst(E0),a0()};else JJ=(e)=>{if(E.viewportState.isCompressed)return;let Y0=m.scrollWidth>m.clientWidth;if(Y0&&Math.abs(e.deltaX)>Math.abs(e.deltaY))return;if(Y0&&e.deltaX!==0)e.preventDefault(),m.scrollLeft+=e.deltaX;let N0=X.sgt(),E0=m.scrollHeight-m.clientHeight,k0=Math.max(0,Math.min(N0+e.deltaY,E0));if(Math.abs(k0-N0)<1)return;e.preventDefault(),X.sst(k0),a0()};X.wh=JJ,m.addEventListener("wheel",JJ,{passive:!1})}let sJ=(m)=>{let e=m.target.closest("[data-index]");if(!e)return null;let Y0=parseInt(e.dataset.index??"-1",10);if(Y0<0)return null;let N0=X.dm?.getItem(Y0)??X.it[Y0];if(!N0||N0.__groupHeader)return null;return{item:N0,index:Y0}},oJ=(m)=>{let e=sJ(m);if(e)O.emit("item:click",{item:e.item,index:e.index,event:m});for(let Y0=0;Y0<D0.length;Y0++)D0[Y0](m)},nJ=(m)=>{let e=sJ(m);if(e)O.emit("item:dblclick",{item:e.item,index:e.index,event:m})},iJ=(m)=>{for(let e=0;e<W0.length;e++)W0[e](m)};if(S.items.addEventListener("click",oJ),S.items.addEventListener("dblclick",nJ),S.root.addEventListener("keydown",iJ),R){let m=null,e=(Y0)=>{if(m)clearTimeout(m);m=setTimeout(()=>{if(m=null,X.id)return;let N0=X.vtf();S.liveRegion.textContent=`Showing items ${Y0.range.start+1} to ${Math.min(Y0.range.end+1,N0)} of ${N0}`},300)};O.on("range:change",e),y0.push(()=>{if(m)clearTimeout(m);O.off("range:change",e)})}let MJ=new ResizeObserver((m)=>{if(X.id)return;for(let e of m){let Y0=e.contentRect.height,N0=e.contentRect.width,E0=Y?N0:Y0,k0=Y?X.cw:X.ch;if(X.cw=N0,X.ch=Y0,Math.abs(E0-k0)>1){if(E.viewportState.containerSize=E0,X.ii){let L0=E.cachedCompression;if(L0&&L0.state.isCompressed){let v0=`${L0.state.virtualSize+y}px`;if(Y)S.content.style.width=v0;else S.content.style.height=v0}else n();X.rfn(),O.emit("resize",{height:Y0,width:N0})}}if(X.ii)for(let L0=0;L0<F0.length;L0++)F0[L0](N0,Y0)}});if(X.vre)MJ.observe(S.viewport);let OJ={dom:S,emitter:O,resolvedConfig:J0,rawConfig:J,rendered:g,pool:V,itemState:t,sharedState:E,renderRange:W,isHorizontal:Y,classPrefix:B,contentSizeHandlers:M0,idleHandlers:A0,afterScroll:O0,clickHandlers:D0,keydownHandlers:W0,resizeHandlers:F0,destroyHandlers:y0,methods:P0,onScrollFrame:a0,resizeObserver:MJ,afterRenderBatch:T0,applyTemplate:e0,updateContentSize:n},QJ=V1(X,OJ);X.dm=_1(X,OJ,QJ),X.sc=D1(X,OJ),P0.set("_updateRenderedItem",(m,e,Y0,N0)=>{let E0=g.get(m);if(!E0)return;let k0={selected:Y0,focused:N0};try{let L0=X.at(e,m,k0);e0(E0,L0,m)}catch(L0){let v0=L0 instanceof Error?L0:Error(String(L0));O.emit("error",{error:v0,context:`tpl(${m},${e.id})`,viewport:L()})}E0.dataset.id=String(e.id),q0(E0,Y0,N0)});let tJ=new WeakSet;P0.set("_setSizeCache",(m)=>{if(X.hc=m,X.gp>0&&!tJ.has(m)){tJ.add(m);let e=X.hc.getTotalSize,Y0=X.gp;X.hc.getTotalSize=()=>{let N0=e();return N0>0?N0-Y0:0}}}),P0.set("_setConstrainSize",(m)=>{X.csi=m});let eJ=new Map;for(let m of o)if(m.methods)for(let e of m.methods){let Y0=eJ.get(e);if(Y0)throw Error(`[vlist] Method "${e}" is registered by both "${Y0}" and "${m.name}"`);eJ.set(e,m.name)}for(let m of o)try{m.setup(QJ)}catch(e){let Y0=e instanceof Error?e:Error(String(e));console.error(`[vlist] Feature "${m.name}" setup failed:`,Y0),O.emit("error",{error:Y0,context:m.name,viewport:L()})}if(b&&!q.has("withAutoSize"))console.warn("[vlist] estimatedHeight/estimatedWidth requires .use(withAutoSize()). Items will use the estimated size as a fixed size.");if(R&&!P0.has("_getFocusedIndex")){let m=Y?F.left:F.top,e=Y?F.right:F.bottom;G1(X,S,B,a,Y,m,e,k,P0,g,W0,D0,y0,!!J.focusOnClick)}if(X.ii=!0,QJ.state.isInitialized=!0,n(),X.rfn(),f&&X.it.length>0){let m=X.gsp(X.it.length-1,X.hc,X.ch,X.it.length,"end");X.sst(m),X.ls=m,X.rfn()}return b1(X,S,O,g,V,P0,o,y0,QJ,f,k,oJ,nJ,iJ,a0,MJ,()=>{},()=>{if(P)clearTimeout(P)})}var n0=(J,q,Y)=>{let Q=q.getTotalSize(),U=Y===!0||Q>x0,j=Q>x0?x0:Q,K=Q>0?j/Q:1;return{isCompressed:U,actualSize:Q,virtualSize:j,ratio:K}},H1=(J,q,Y,Q,U,j)=>{if(Q===0||q===0)return j.start=0,j.end=-1,j;if(!U.isCompressed||U.ratio===1){let _=Y.indexAtOffset(J),T=Y.indexAtOffset(J+q);if(T<Q-1)T++;return j.start=Math.max(0,_),j.end=Math.min(Q-1,Math.max(0,T)),j}let{virtualSize:K}=U,B=J/K*Q,Z=Math.floor(B),N=j1(Y,Math.max(0,Z),q,Q),w=Math.ceil(B)+N;return j.start=Math.max(0,Z),j.end=Math.min(Q-1,Math.max(0,w)),j};var r0=(J,q,Y,Q,U,j,K)=>{if(!j.isCompressed||Q===0)return Y.getOffset(J);if(j.ratio===1)return Y.getOffset(J)-q;let{virtualSize:D}=j,B=q/D,Z=Y.getTotalSize(),N=B*Z;return Y.getOffset(J)-N},$1=(J,q,Y,Q,U,j="start")=>{if(Q===0)return 0;let K;if(U.isCompressed&&U.ratio!==1){K=J/Q*U.virtualSize;let N=q.getSize(J);switch(j){case"center":K-=(Y-N)/2*U.ratio;break;case"end":K-=(Y-N)*U.ratio;break}return Math.max(0,K)}K=q.getOffset(J);let D=q.getSize(J);switch(j){case"center":K-=(Y-D)/2;break;case"end":K-=Y-D;break}let B=U.virtualSize-Y;return Math.max(0,Math.min(K,B))};var i0=(J,q,Y={},Q="vlist",U=!1)=>{let{autoHide:j=!0,autoHideDelay:K=1000,minThumbSize:D=30,showOnHover:B=!0,hoverZoneWidth:Z=16,showOnViewportEnter:N=!0}=Y,w=0,_=0,T=0,z=0,R=!1,G=!1,v=0,k=0,f=0,a=null,h=!1,u=null,b=null,d=U?"width":"height",J0=U?"translateX":"translateY",o=U?(L)=>L.clientX:(L)=>L.clientY,H=U?"left":"top",C=document.createElement("div"),S=document.createElement("div"),c=B?document.createElement("div"):null,F=()=>{if(C.className=`${Q}-scrollbar`,S.className=`${Q}-scrollbar-thumb`,U)C.classList.add(`${Q}-scrollbar--horizontal`);if(C.appendChild(S),J.appendChild(C),c){if(c.className=`${Q}-scrollbar-hover`,U)c.classList.add(`${Q}-scrollbar-hover--horizontal`),c.style.height=`${Z}px`;else c.style.width=`${Z}px`;J.appendChild(c)}},y=()=>{if(a)clearTimeout(a),a=null},O=()=>{if(!j)return;y(),a=setTimeout(x,K)},I=()=>{if(w<=_)return;if(y(),!h)C.classList.add(`${Q}-scrollbar--visible`),h=!0;if(j&&!R&&!G)O()},x=()=>{if(R||G)return;C.classList.remove(`${Q}-scrollbar--visible`),h=!1},l=(L,g)=>{w=L,_=g;let i=w>_;if(C.style.display=i?"":"none",!i){x();return}let n=_/w;T=Math.max(D,n*_),S.style[d]=`${T}px`,z=_-T,p(f)},p=(L)=>{if(f=L,w<=_||z<=0)return;let g=w-_,n=Math.min(1,Math.max(0,L/g))*z;S.style.transform=`${J0}(${n}px)`},r=(L)=>{if(L.target===S)return;let g=C.getBoundingClientRect(),t=o(L)-g[H]-T/2,s=Math.max(0,Math.min(t,z))/z,Q0=w-_,q0=s*Q0;q(q0),I()},V=(L)=>{L.preventDefault(),L.stopPropagation(),R=!0,v=o(L),k=f,y(),C.classList.add(`${Q}-scrollbar--dragging`),document.addEventListener("mousemove",X),document.addEventListener("mouseup",P)},X=(L)=>{if(!R)return;let g=o(L)-v,i=z>0?g/z:0,n=w-_,t=i*n,j0=Math.max(0,Math.min(k+t,n)),Q0=j0/n*z;if(S.style.transform=`${J0}(${Q0}px)`,b=j0,u===null)u=requestAnimationFrame(()=>{if(b!==null)q(b);u=null})},P=()=>{if(R=!1,u!==null)cancelAnimationFrame(u),u=null;if(b!==null)q(b),b=null;if(C.classList.remove(`${Q}-scrollbar--dragging`),j&&!G)O();document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",P)},M=()=>{if(N)I()},A=()=>{if(!R){if(G=!1,j)O()}},W=()=>{G=!0,y(),I()},$=()=>{if(G=!1,!R&&j)O()},E=()=>{if(y(),u!==null)cancelAnimationFrame(u),u=null;if(C.removeEventListener("click",r),C.removeEventListener("mouseenter",W),C.removeEventListener("mouseleave",$),S.removeEventListener("mousedown",V),J.removeEventListener("mouseenter",M),J.removeEventListener("mouseleave",A),document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",P),c){if(c.removeEventListener("mouseenter",W),c.removeEventListener("mouseleave",$),c.parentNode)c.parentNode.removeChild(c)}if(C.parentNode)C.parentNode.removeChild(C)};if(F(),C.addEventListener("click",r),C.addEventListener("mouseenter",W),C.addEventListener("mouseleave",$),S.addEventListener("mousedown",V),J.addEventListener("mouseenter",M),J.addEventListener("mouseleave",A),c)c.addEventListener("mouseenter",W),c.addEventListener("mouseleave",$);return{show:I,hide:x,updateBounds:l,updatePosition:p,isVisible:()=>h,destroy:E}};var zJ=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Y){let{dom:Q,config:U}=Y,{classPrefix:j,horizontal:K}=U;if(q=i0(Q.viewport,(B)=>Y.scrollController.scrollTo(B),J??{},j,K),!Q.viewport.classList.contains(`${j}-viewport--custom-scrollbar`))Q.viewport.classList.add(`${j}-viewport--custom-scrollbar`);if(J?.gutter)Q.viewport.classList.add(`${j}-viewport--gutter`);q.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize);let D=q;Y.afterScroll.push((B,Z)=>{D.updatePosition(B),D.show()}),Y.resizeHandlers.push((B,Z)=>{if(D)D.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.contentSizeHandlers.push(()=>{if(D)D.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.destroyHandlers.push(()=>{if(D)D.destroy()})},destroy(){if(q)q.destroy(),q=null}}};var B4=0.65,N4=0.5,y1=1.7,W4=0.95,V4=0.1,_4=5,D4=100,P1=(J,q,Y,Q=0)=>{if(J<=0)return 0;let U=q-Q;return Math.max(0,U*(1-Y)+Q)},CJ=(J)=>{let q=J?.force??!1,Y=null,Q=0,U=!1,j=0,K=0,D=null,B=0,Z=0,N=null,w=[];return{name:"withScale",priority:20,setup(_){let{dom:T,config:z}=_,{classPrefix:R,horizontal:G}=z,v=$0(_.rawConfig.padding),k=G?v.left+v.right:v.top+v.bottom,f=()=>{let o=_.getVirtualTotal(),H=n0(o,_.sizeCache,q);if(H.isCompressed&&!U){U=!0,_.scrollController.enableCompression(H);let S=G?T.viewport.scrollLeft:T.viewport.scrollTop;if(G)T.viewport.style.overflowX="hidden";else T.viewport.style.overflow="hidden";if(G)T.viewport.scrollLeft=0;else T.viewport.scrollTop=0;if(S>0)Q=S,K=S;j=P1(H.virtualSize,_.state.viewportState.containerSize,H.ratio,k),_.updateContentSize(H.virtualSize+j),_.setScrollFns(()=>Q,(V)=>{if(Q=V,K=V,D!==null)cancelAnimationFrame(D),D=null});let c=()=>{let V=K-Q;if(_.getVirtualTotal()===0){Q=0,K=0,D=null,_.scrollController.scrollTo(0);return}if(Math.abs(V)<N4){let X=_.getCachedCompression(),P=Math.max(0,X.virtualSize+j-_.state.viewportState.containerSize);Q=Math.max(0,Math.min(K,P)),K=Q,D=null}else{Q+=V*B4;let P=_.getCachedCompression().virtualSize+j-_.state.viewportState.containerSize;Q=Math.max(0,Math.min(Q,P)),D=requestAnimationFrame(c)}_.scrollController.scrollTo(Q)},F=T.viewport,y=(V)=>{V.preventDefault();let X=_.getCachedCompression(),P=X.virtualSize+j-_.state.viewportState.containerSize;if(K=Math.max(0,Math.min(K+V.deltaY*X.ratio*y1,P)),D===null)D=requestAnimationFrame(c)};F.addEventListener("wheel",y,{passive:!1});let O=()=>{if(N!==null)cancelAnimationFrame(N),N=null},I=(V)=>{if(O(),D!==null)cancelAnimationFrame(D),D=null;let X=V.touches[0];if(!X)return;let P=G?X.clientX:X.clientY;B=P,Z=Q,w=[{time:performance.now(),y:P}]},x=(V)=>{V.preventDefault();let X=V.touches[0];if(!X)return;let P=G?X.clientX:X.clientY,M=performance.now();if(w.push({time:M,y:P}),w.length>_4)w.shift();let A=B-P,W=_.getCachedCompression(),$=W.virtualSize+j-_.state.viewportState.containerSize,E=Math.max(0,Math.min(Z+A*W.ratio*y1,$));Q=E,K=E,_.scrollController.scrollTo(E)},l=(V)=>{let X=performance.now(),P=w.filter(($)=>X-$.time<D4),M=0;if(P.length>=2){let $=P[0],E=P[P.length-1],L=E.time-$.time;if(L>0)M=($.y-E.y)/L}if(w=[],Math.abs(M)<V4)return;let A=M*16,W=()=>{if(A*=W4,Math.abs(A)<0.5){N=null;return}let E=_.getCachedCompression().virtualSize+j-_.state.viewportState.containerSize,L=Q+A;if(L=Math.max(0,Math.min(L,E)),L<=0&&A<0||L>=E&&A>0){Q=L,K=L,_.scrollController.scrollTo(L),N=null;return}Q=L,K=L,_.scrollController.scrollTo(L),N=requestAnimationFrame(W)};N=requestAnimationFrame(W)};F.addEventListener("touchstart",I,{passive:!0}),F.addEventListener("touchmove",x,{passive:!1}),F.addEventListener("touchend",l,{passive:!0}),F.addEventListener("touchcancel",l,{passive:!0}),_.destroyHandlers.push(()=>{F.removeEventListener("wheel",y),F.removeEventListener("touchstart",I),F.removeEventListener("touchmove",x),F.removeEventListener("touchend",l),F.removeEventListener("touchcancel",l)});let p=T.viewport.querySelector(`.${R}-scrollbar`),r=()=>{if((G?T.viewport.scrollLeft:T.viewport.scrollTop)!==0)if(G)T.viewport.scrollLeft=0;else T.viewport.scrollTop=0};if(F.addEventListener("scroll",r,{passive:!0}),_.destroyHandlers.push(()=>{F.removeEventListener("scroll",r)}),!p){if(Y=i0(T.viewport,(X)=>_.scrollController.scrollTo(X),{},R,G),!T.viewport.classList.contains(`${R}-viewport--custom-scrollbar`))T.viewport.classList.add(`${R}-viewport--custom-scrollbar`);Y.updateBounds(H.virtualSize,_.state.viewportState.containerSize);let V=Y;_.afterScroll.push((X,P)=>{if(V)V.updatePosition(X),V.show()}),_.resizeHandlers.push((X,P)=>{if(V){let M=_.getCachedCompression();V.updateBounds(M.virtualSize,_.state.viewportState.containerSize)}})}}else if(!H.isCompressed&&U){if(U=!1,D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null;if(Q=0,K=0,w=[],_.setScrollFns(G?()=>T.viewport.scrollLeft:()=>T.viewport.scrollTop,G?(S)=>{T.viewport.scrollLeft=S}:(S)=>{T.viewport.scrollTop=S}),G)T.viewport.scrollLeft=0;else T.viewport.scrollTop=0;if(_.scrollController.disableCompression(),G)T.viewport.style.overflowX="auto";else T.viewport.style.overflow="auto";if(Y)Y.destroy(),Y=null;j=0,_.updateContentSize(H.actualSize)}else if(H.isCompressed)_.scrollController.updateConfig({compression:H}),j=P1(H.virtualSize,_.state.viewportState.containerSize,H.ratio,k),_.updateContentSize(H.virtualSize+j);if(Y)Y.updateBounds(H.virtualSize+j,_.state.viewportState.containerSize);let C=_.state.viewportState;if(C.isCompressed=H.isCompressed,C.compressionRatio=H.ratio,C.totalSize=H.virtualSize+j,C.actualSize=H.actualSize,_.state.cachedCompression={state:H,totalItems:o},U){let S=Math.max(0,H.virtualSize+j-_.state.viewportState.containerSize),c=Q;if(c>S)c=S;else if(c<0)c=0;if(c!==Q){if(D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null;_.scrollController.scrollTo(c)}}for(let S=0;S<_.contentSizeHandlers.length;S++)_.contentSizeHandlers[S]()};_.updateCompressionMode=f;let a=_.getCachedCompression.bind(_);_.getCachedCompression=()=>{if(_.state.cachedCompression)return _.state.cachedCompression.state;return a()},_.setVisibleRangeFn((o,H,C,S,c)=>{h=null,u=null;let F=n0(S,C,q);H1(o,H,C,S,F,c)}),_.setScrollToPosFn((o,H,C,S,c)=>{let F=n0(S,H,q);return $1(o,H,C,S,F,c)});let h=null,u=null;_.setPositionElementFn((o,H)=>{let C=_.getVirtualTotal(),S=n0(C,_.sizeCache,q);if(S.isCompressed){let c=_.scrollController.getScrollTop();if(h===null||H<u)u=H,h=Math.round(r0(H,c,_.sizeCache,C,_.state.viewportState.containerSize,S));let F=h+_.sizeCache.getOffset(H)-_.sizeCache.getOffset(u),y=_.config.horizontal;o.style.transform=y?`translateX(${F}px)`:`translateY(${F}px)`}else{let c=Math.round(_.sizeCache.getOffset(H)),F=_.config.horizontal;o.style.transform=F?`translateX(${c}px)`:`translateY(${c}px)`}});let b=G?v.left:v.top,d=G?v.right:v.bottom,J0=_.getItemToScrollIndexFn();_.methods.set("_scrollItemIntoView",(o)=>{let H=_.getCachedCompression(),C=_.state.viewportState.containerSize,S=_.state.viewportState.scrollPosition,c=_.getVirtualTotal(),{visibleRange:F}=_.state.viewportState,y=J0(o),O=XJ(y,_.sizeCache,S,C,b,d,H,c,F);if(O!==S)_.scrollController.scrollTo(O)}),f(),_.destroyHandlers.push(()=>{if(Y)Y.destroy(),Y=null;if(D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null})}}};var w1=(J={})=>{let{chunkSize:q=100,maxCachedItems:Y=5000,evictionBuffer:Q=200,onEvict:U}=J,j=new Map,K=0,D=0,B=(F)=>{let y=j.get(F);if(!y)y={items:Array(q),count:0,lastAccess:Date.now()},j.set(F,y);else y.lastAccess=Date.now();return y},Z=(F)=>{return Math.floor(F/q)},N=(F)=>{return F%q},w=()=>K,_=(F)=>{K=F},T=(F)=>{if(F<0||F>=K)return;let y=Z(F),O=j.get(y);if(!O)return;return O.items[N(F)]},z=(F)=>{if(F<0||F>=K)return!1;let y=Z(F),O=j.get(y);if(!O)return!1;return O.items[N(F)]!==void 0},R=(F,y)=>{let O=Z(F),I=B(O),x=N(F),l=I.items[x]===void 0;if(I.items[x]=y,l)I.count++,D++;if(F>=K)K=F+1},G=(F,y)=>{for(let O=0;O<y.length;O++){let I=y[O];if(I!==void 0)R(F+O,I)}},v=(F)=>{if(F<0||F>=K)return!1;let y=Z(F),O=j.get(y),I=N(F);if(!(O!==void 0&&O.items[I]!==void 0))return!1;let l=y,p=Array.from(j.keys()).filter((V)=>V>=l).sort((V,X)=>V-X),r=[];for(let V of p){let X=j.get(V),P=V*q;for(let M=0;M<q;M++){if(X.items[M]===void 0)continue;let A=P+M;if(A<=F)continue;r.push({oldIndex:A,item:X.items[M]})}}if(O.items[I]=void 0,O.count--,D--,O.count===0)j.delete(y);for(let{oldIndex:V}of r){let X=Z(V),P=j.get(X);if(!P)continue;let M=N(V);if(P.items[M]!==void 0){if(P.items[M]=void 0,P.count--,D--,P.count===0)j.delete(X)}}for(let{oldIndex:V,item:X}of r){let P=V-1,M=Z(P),A=B(M),W=N(P);A.items[W]=X,A.count++,D++}return K--,!0},k=(F,y)=>{let O=[];for(let I=F;I<=y&&I<K;I++)O.push(T(I));return O},f=(F,y)=>{for(let O=F;O<=y&&O<K;O++)if(!z(O))return!1;return!0},a=()=>{let F=[],y=null,O=Array.from(j.keys()).sort((I,x)=>I-x);for(let I of O){let x=j.get(I);if(!x)continue;let l=I*q;for(let p=0;p<q;p++){let r=l+p;if(r>=K)break;if(x.items[p]!==void 0)if(y===null)y={start:r,end:r};else if(r===y.end+1)y.end=r;else F.push(y),y={start:r,end:r};else if(y!==null)F.push(y),y=null}}if(y!==null)F.push(y);return F},h=(F,y)=>{let O=[],I=null;for(let x=F;x<=y&&x<K;x++)if(!z(x))if(I===null)I={start:x,end:x};else I.end=x;else if(I!==null)O.push(I),I=null;if(I!==null)O.push(I);return O},u=(F)=>{return j.has(F)},b=(F)=>{let y=j.get(F);if(y)y.lastAccess=Date.now()},d=(F,y)=>{if(F>y||j.size===0)return;let O=Date.now(),I=Z(Math.max(0,F)),x=Z(Math.min(K-1,y));for(let l=I;l<=x;l++){let p=j.get(l);if(p)p.lastAccess=O}},J0=(F,y)=>{if(D<=Y)return 0;let O=Math.max(0,F-Q),I=Math.min(K-1,y+Q),x=Z(O),l=Z(I),p=0,r=[];for(let[V,X]of j)if(V<x||V>l)p+=X.count,r.push(V),D-=X.count,j.delete(V);if(p>0&&U)U(p,r);return p},o=()=>{if(D<=Y)return 0;let F=Array.from(j.entries()).sort(([,I],[,x])=>I.lastAccess-x.lastAccess),y=0,O=[];for(let[I,x]of F){if(D<=Y)break;y+=x.count,D-=x.count,O.push(I),j.delete(I)}if(y>0&&U)U(y,O);return y},H=()=>{return{totalItems:K,cachedItems:D,cachedChunks:j.size,chunkSize:q,maxCachedItems:Y,memoryEfficiency:K>0?1-D/K:1}},C=()=>D,S=()=>{j.clear(),D=0};return{chunkSize:q,maxCachedItems:Y,getTotal:w,setTotal:_,get:T,has:z,set:R,setRange:G,delete:v,getRange:k,isRangeLoaded:f,getLoadedRanges:a,findUnloadedRanges:h,getChunkIndex:Z,isChunkLoaded:u,touchChunk:b,touchChunksForRange:d,evictDistant:J0,evictToLimit:o,getStats:H,getCachedCount:C,clear:S,reset:()=>{S(),K=0}}},G4=(J)=>{if(J.length===0)return[];let q=[...J].sort((Q,U)=>Q.start-U.start),Y=[{...q[0]}];for(let Q=1;Q<q.length;Q++){let U=q[Q],j=Y[Y.length-1];if(U.start<=j.end+1)j.end=Math.max(j.end,U.end);else Y.push({...U})}return Y},R1=(J,q,Y)=>{let Q=Math.floor(J.start/Y)*Y,U=Math.ceil((J.end+1)/Y)*Y-1,j={start:Q,end:U};if(q.length===0)return[j];let K=[],D=G4(q),B=j.start;for(let Z of D){if(Z.end<B)continue;if(Z.start>j.end)break;if(Z.start>B)K.push({start:B,end:Math.min(Z.start-1,j.end)});if(B=Z.end+1,B>j.end)break}if(B<=j.end)K.push({start:B,end:j.end});return K};var z1=(J={})=>{let{maskCharacter:q=A1,maxSampleSize:Y=L1}=J,Q=[],U=!1,j=(N)=>{if(U||N.length===0)return;let w=Math.min(N.length,Y);for(let _=0;_<w;_++){let T=N[_];if(!T||typeof T!=="object")continue;let z={};for(let[R,G]of Object.entries(T)){if(R.startsWith("_")||R==="id")continue;z[R]=String(G??"").length}if(Object.keys(z).length>0)Q.push(z)}U=!0},K=()=>U,D=(N)=>{let w={id:`${w0}${N}`,[TJ]:!0,_index:N};if(Q.length===0)return w.label=q.repeat(12),w;let _=Q[N%Q.length];for(let[T,z]of Object.entries(_))w[T]=q.repeat(Math.max(1,z));return w};return{analyzeStructure:j,hasAnalyzedStructure:K,generate:D,generateRange:(N,w)=>{let _=[];for(let T=N;T<=w;T++)_.push(D(T));return _},clear:()=>{Q=[],U=!1}}},BJ=(J)=>{if(!J||typeof J!=="object")return!1;return J[TJ]===!0};var M4=50,C1=(J={})=>{let{adapter:q,initialItems:Y,initialTotal:Q,storage:U,placeholder:j,pageSize:K=M4,onStateChange:D,onItemsLoaded:B,onItemsEvicted:Z}=J,N=w1({...U,onEvict:(s,Q0)=>{Z?.(s),d()}}),w=null,_=()=>{if(!w)w=z1(j);return w},T=new Map,z=!1,R,G=!0,v,k,f=[],a=0,h=new Map,u=new Map,b=()=>{for(let s of u.values())s.abort();u.clear(),h.clear()},d=()=>{D?.(O())},J0=()=>{T.clear();let s=N.getLoadedRanges();for(let Q0 of s)for(let q0=Q0.start;q0<=Q0.end;q0++){let U0=N.get(q0);if(U0&&!BJ(U0))T.set(U0.id,q0)}},o=(s,Q0)=>{if(!BJ(Q0))T.set(Q0.id,s)},H=(s)=>{T.delete(s)},C=(s,Q0)=>{return`${s}-${Q0}`},S=()=>N.getTotal(),c=()=>N.getCachedCount(),F=()=>z,y=()=>G,O=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:z,pendingRanges:f,error:R,hasMore:G,cursor:v}),I=()=>N,x=()=>_(),l=(s)=>{let Q0=N.get(s);if(Q0!==void 0)return Q0;if(s>=0&&s<N.getTotal())return _().generate(s);return},p=(s)=>{let Q0=T.get(s);if(Q0===void 0)return;return N.get(Q0)},r=(s)=>{return T.get(s)??-1},V=(s)=>{let Q0=N.get(s);return Q0!==void 0&&!BJ(Q0)},X=(s,Q0)=>{let q0=[],U0=N.getTotal(),K0=0,Z0=0;N.touchChunksForRange(s,Math.min(Q0,U0-1));for(let V0=s;V0<=Q0&&V0<U0;V0++){let G0=N.get(V0);if(G0!==void 0)q0.push(G0),K0++;else q0.push(_().generate(V0)),Z0++}return q0},P=(s)=>{N.setTotal(s),G=N.getCachedCount()<s,d()},M=(s,Q0=0,q0)=>{if(q&&s.length>0){let U0=_();if(!U0.hasAnalyzedStructure())U0.analyzeStructure(s)}for(let U0=0;U0<s.length;U0++){let K0=s[U0];if(K0!==void 0){let Z0=Q0+U0;N.set(Z0,K0),o(Z0,K0)}}if(q0!==void 0)N.setTotal(q0);else if(Q0+s.length>N.getTotal())N.setTotal(Q0+s.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)G=!1;d(),B?.(s,Q0,N.getTotal())},A=(s,Q0)=>{let q0=N.get(s);if(!q0)return!1;let U0=q0.id,K0={...q0,...Q0};if(N.set(s,K0),Q0.id!==void 0&&Q0.id!==U0)H(U0);return o(s,K0),d(),!0},W=(s)=>{let Q0=T.get(s);if(Q0===void 0)return!1;if(!N.delete(Q0))return!1;return J0(),b(),d(),!0},$=async(s,Q0)=>{if(!q)return;let q0=C(s,Q0);if(h.has(q0))return;let U0=N.getLoadedRanges(),K0=R1({start:s,end:Q0},U0,N.chunkSize);if(K0.length===0)return;let Z0=N.chunkSize,V0=Z0*2;for(let[B0,O0]of u){let A0=B0.indexOf("-"),D0=parseInt(B0.slice(0,A0),10);if(Math.abs(D0-s)>V0)O0.abort(),u.delete(B0),h.delete(B0)}let G0=[];for(let B0 of K0){let O0=Math.floor(B0.start/Z0),A0=Math.floor(B0.end/Z0);for(let D0=O0;D0<=A0;D0++){let W0=D0*Z0,F0=W0+Z0-1,M0=C(W0,F0);if(!G0.some((T0)=>T0.start===W0)&&!h.has(M0))G0.push({start:W0,end:F0})}}let X0=[];for(let B0 of K0){let O0=Math.floor(B0.start/Z0),A0=Math.floor(B0.end/Z0);for(let D0=O0;D0<=A0;D0++){let W0=D0*Z0,F0=W0+Z0-1,M0=C(W0,F0);if(h.has(M0)){let T0=h.get(M0);if(!X0.includes(T0))X0.push(T0)}}}for(let B0 of G0){let O0=C(B0.start,B0.end),A0=new AbortController;u.set(O0,A0);let D0=(async()=>{f.push(B0),z=!0,R=void 0,d();try{let W0=B0.end-B0.start+1,F0={offset:B0.start,limit:W0,cursor:B0.start===k?v:void 0,signal:A0.signal},M0=await q.read(F0);if(M(M0.items,B0.start,M0.total),M0.cursor)v=M0.cursor,k=B0.start+M0.items.length;let T0=B0.start+M0.items.length;if(T0>=a){if(a=T0,M0.hasMore!==void 0)G=M0.hasMore;else if(M0.total!==void 0)G=T0<M0.total}}catch(W0){if(W0?.name==="AbortError")return;R=W0 instanceof Error?W0:Error(String(W0))}finally{h.delete(O0),u.delete(O0),f=f.filter((W0)=>W0.start!==B0.start||W0.end!==B0.end),z=h.size>0,d()}})();h.set(O0,D0),X0.push(D0)}await Promise.all(X0)},E=async(s,Q0)=>{if(N.isRangeLoaded(s,Q0))return;await $(s,Q0)},L=async()=>{if(!q)return;await $(0,K-1)},g=async()=>{if(!q||z||!G)return!1;let s=N.getCachedCount(),Q0=N.getTotal(),q0=s,U0=Math.min(q0+K-1,Q0>0?Q0-1:q0+K-1);if(q0>=Q0&&Q0>0)return G=!1,!1;return await $(q0,U0),N.getCachedCount()>s},i=async()=>{if(N.clear(),N.setTotal(0),T.clear(),w)w.clear();b(),f=[],z=!1,v=void 0,k=void 0,G=!0,a=0,R=void 0,d()},n=(s,Q0)=>{if(N.evictDistant(s,Q0)>0)J0()},t=()=>{N.clear(),T.clear(),v=void 0,k=void 0,R=void 0,f=[],z=!1,d()},j0=()=>{if(N.reset(),T.clear(),w)w.clear();v=void 0,k=void 0,G=!0,a=0,R=void 0,f=[],z=!1,d()};if(Y&&Y.length>0)M(Y,0,Q??Y.length);else if(Q!==void 0)N.setTotal(Q),d();return{getState:O,getTotal:S,getCached:c,getIsLoading:F,getHasMore:y,getStorage:I,getPlaceholders:x,getItem:l,getItemById:p,getIndexById:r,isItemLoaded:V,getItemsInRange:X,setTotal:P,setItems:M,updateItem:A,removeItem:W,loadRange:$,ensureRange:E,loadInitial:L,loadMore:g,reload:i,evictDistant:n,clear:t,reset:j0}};var vJ=(J)=>{let{adapter:q,loading:Y,storage:Q,total:U,autoLoad:j=!0}=J,K=Y?.cancelThreshold??O1,D=Y?.preloadThreshold??E1,B=Y?.preloadAhead??M1;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Z){let{emitter:N}=Z,w=Z.config.reverse,_=Z.methods.get("_getGridLayout"),T=(H)=>{if(_){let C=_();if(C){let S=Z.dataManager.getTotal();return C.getItemRange(H.start,H.end,S)}}return H},z=C1({adapter:q,...U!==void 0&&{initialTotal:U},pageSize:Q?.chunkSize??g0,...Q&&{storage:{...Q.chunkSize!==void 0&&{chunkSize:Q.chunkSize},...Q.maxCachedItems!==void 0&&{maxCachedItems:Q.maxCachedItems}}},onStateChange:()=>{if(Z.state.isInitialized){let H=Z.getVirtualTotal();Z.sizeCache.rebuild(H),Z.updateCompressionMode();let C=Z.getCachedCompression();Z.state.viewportState.totalSize=C.virtualSize,Z.state.viewportState.actualSize=C.actualSize,Z.state.viewportState.isCompressed=C.isCompressed,Z.state.viewportState.compressionRatio=C.ratio,Z.updateContentSize(C.virtualSize),Z.renderIfNeeded()}},onItemsLoaded:(H,C,S)=>{if(Z.state.isInitialized)Z.forceRender(),N.emit("load:end",{items:H,total:S,offset:C})}});Z.replaceDataManager(z);let R=null,G=null,v=0,k=!1,f=null,a=120,h=(H=!1)=>{if(k=!1,G=null,H)R=null;if(f!==null)clearTimeout(f),f=null},u=()=>{if(!G)return;G=null;let{renderRange:H}=Z.state.viewportState;if(H.end<H.start)return;R=null;let C=T(H);Z.dataManager.ensureRange(C.start,C.end).catch((S)=>{N.emit("error",{error:S,context:"ensureRange"})})};Z.afterScroll.push((H,C)=>{if(Z.state.isDestroyed)return;let S=Z.scrollController.getVelocity(),F=Z.scrollController.isTracking()&&S<=K;if(v>K&&S<=K)k=!0;else if(k&&S>K)h();if(k&&S<0.5)h(!0);if(v=S,(Z.scrollController.isAtTop()||Z.scrollController.isAtBottom())&&(k||G))h(!0),F=!0;let O=k&&S>0.5;if(F&&!Z.dataManager.getIsLoading()&&Z.dataManager.getHasMore()){if(w){if(H<FJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:g0}),Z.dataManager.loadMore().catch((l)=>{N.emit("error",{error:l,context:"loadMore"})})}else if(Z.state.viewportState.totalSize-H-Z.state.viewportState.containerSize<FJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:g0}),Z.dataManager.loadMore().catch((p)=>{N.emit("error",{error:p,context:"loadMore"})})}let{renderRange:I}=Z.state.viewportState;if(!R||I.start!==R.start||I.end!==R.end){if(R={start:I.start,end:I.end},F&&!O){if(G=null,f!==null)clearTimeout(f),f=null;let l=T(I),p=l.start,r=l.end,V=_?Z.dataManager.getTotal():Z.getVirtualTotal();if(S>D)if(C==="down")r=Math.min(l.end+B,V-1);else p=Math.max(l.start-B,0);Z.dataManager.ensureRange(p,r).catch((X)=>{N.emit("error",{error:X,context:"ensureRange"})})}else if(G={start:I.start,end:I.end},O){if(f!==null)clearTimeout(f);f=setTimeout(()=>{f=null,u(),h()},a)}}});let b=200,d=null;Z.afterScroll.push((H,C)=>{if(d!==null)clearTimeout(d);d=setTimeout(()=>{d=null,u(),h()},b)}),Z.destroyHandlers.push(()=>{if(d!==null)clearTimeout(d),d=null;h()});let J0=()=>{if(Z.state.isDestroyed)return;R=null;let{renderRange:H}=Z.state.viewportState;if(H.end>0){let C=T(H);Z.dataManager.ensureRange(C.start,C.end).catch((S)=>{N.emit("error",{error:S,context:"ensureRange"})})}u()};window.addEventListener("online",J0),Z.destroyHandlers.push(()=>{window.removeEventListener("online",J0)}),N.on("load:start",()=>{Z.dom.root.setAttribute("aria-busy","true")}),N.on("load:end",()=>{Z.dom.root.removeAttribute("aria-busy")}),Z.methods.set("loadVisibleRange",async()=>{R=null,G=null,Z.forceRender();let{renderRange:H}=Z.state.viewportState;if(H.end>0){let C=T(H);N.emit("load:start",{offset:C.start,limit:C.end-C.start+1}),await Z.dataManager.ensureRange(C.start,C.end)}}),Z.methods.set("reload",async(H)=>{R=null,G=null;let C=H?.snapshot,S=C!=null&&(C.total??0)>0&&C.index>0,c=S||H?.skipInitialLoad===!0;if(Z.invalidateRendered(),await Z.dataManager.reload(),!S)Z.scrollController.scrollTo(0);if(!c){N.emit("load:start",{offset:0,limit:g0}),await Z.dataManager.loadInitial(),Z.forceRender();let{renderRange:F}=Z.state.viewportState;if(F.end>0){let y=T(F);await Z.dataManager.ensureRange(y.start,y.end)}}if(S){let F=Z.methods.get("restoreScroll");if(F)F(C)}});let o=!1;if(Z.methods.set("_cancelAutoLoad",()=>{o=!0}),j)queueMicrotask(()=>{if(o)return;N.emit("load:start",{offset:0,limit:g0}),Z.dataManager.loadInitial().catch((H)=>{N.emit("error",{error:H,context:"loadInitial"})})});else if(U!==void 0)Z.dataManager.setTotal(U)}}};var NJ=(J)=>J==null?0:typeof J==="function"?J():J,SJ=(J)=>{let q=null,Y=J?.scrollPadding;return{name:"withPage",priority:5,setup(Q){let{dom:U,state:j,config:K,emitter:D}=Q;if(U.root.style.overflow="visible",U.root.style.height="auto",K.horizontal)U.viewport.style.overflowX="visible",U.viewport.style.overflowY="visible";else U.viewport.style.overflow="visible";if(U.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),Q.disableViewportResize(),Q.disableWheelHandler(),Q.setScrollTarget(window),Q.setScrollFns(()=>{let w=U.viewport.getBoundingClientRect();return Math.max(0,K.horizontal?-w.left:-w.top)},(w)=>{let _=U.viewport.getBoundingClientRect();if(K.horizontal){let T=_.left+window.scrollX;window.scrollTo({left:T+w,top:window.scrollY,behavior:"instant"})}else{let T=_.top+window.scrollY;window.scrollTo({left:window.scrollX,top:T+w,behavior:"instant"})}}),Q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight,Y){let w=K.horizontal,_=Q.getItemToScrollIndexFn();Q.setScrollToPosFn((T,z,R,G,v)=>{let k=NJ(w?Y.left:Y.top),f=NJ(w?Y.right:Y.bottom);if(G===0)return 0;let a=Math.max(0,Math.min(T,G-1)),h=z.getOffset(a),u=z.getSize(a),b=z.getTotalSize(),d=Math.max(0,b-R+f),J0;switch(v){case"start":J0=h-k;break;case"center":{let o=R-k-f;J0=h-k-(o-u)/2;break}case"end":J0=h-R+u+f;break}return Math.max(-k,Math.min(J0,d))}),Q.methods.set("_scrollItemIntoView",(T)=>{let z=_(T),R=w?window.innerWidth:window.innerHeight,G=NJ(w?Y.left:Y.top),v=NJ(w?Y.right:Y.bottom),k=U.viewport.getBoundingClientRect(),f=w?window.scrollX:window.scrollY,a=(w?k.left:k.top)+f,h=a-f,u=Q.sizeCache.getOffset(z),b=Q.sizeCache.getSize(z),d=h+u,J0=d+b,o=G,H=R-v,C=f;if(d<o)C=a+u-o;else if(J0>H)C=a+u+b-H;if(C!==f)if(w)window.scrollTo({left:C,top:window.scrollY,behavior:"instant"});else window.scrollTo({left:window.scrollX,top:C,behavior:"instant"})})}let{innerHeight:B,innerWidth:Z}=window,N=()=>{let{innerWidth:w,innerHeight:_}=window,T=K.horizontal?w:_,z=K.horizontal?Z:B;if(Math.abs(T-z)<=1)return;B=_,Z=w,j.viewportState.containerSize=_,D.emit("resize",{width:w,height:_});for(let R=0;R<Q.resizeHandlers.length;R++)Q.resizeHandlers[R](w,_);Q.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),q=()=>{window.removeEventListener("resize",N)},Q.destroyHandlers.push(q)},destroy(){if(q)q(),q=null}}};var fJ=(J,q)=>{let Y=0,Q=J.length-1;while(Y<Q){let U=Y+Q+1>>>1;if(J[U].headerLayoutIndex<=q)Y=U;else Q=U-1}return Y},v1=(J,q)=>{let Y=0,Q=J.length-1;while(Y<Q){let U=Y+Q+1>>>1;if(J[U].firstDataIndex<=q)Y=U;else Q=U-1}return Y},S1=(J,q)=>{if(J===0)return[];let Y=[],Q=q(0),U=0,j=0;for(let K=1;K<J;K++){let D=q(K);if(D!==Q){let B=K-U;Y.push({key:Q,groupIndex:Y.length,headerLayoutIndex:j,firstDataIndex:U,count:B}),j=j+1+B,Q=D,U=K}}return Y.push({key:Q,groupIndex:Y.length,headerLayoutIndex:j,firstDataIndex:U,count:J-U}),Y},IJ=(J,q)=>{if(J.length===0||q.length===0)return[];let Y=J.length+q.length,Q=Array(Y),U=0;for(let j of q){Q[U]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},U++;for(let K=0;K<j.count;K++)Q[U]=J[j.firstDataIndex+K],U++}return Q},pJ=(J,q,Y=!1)=>{let Q=typeof q==="number"?(U)=>q:q;return(U)=>{let j=J.getEntry(U);if(j.type==="header"){if(Y&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return Q(j.dataIndex)}},f1=(J,q)=>{let Y=S1(J,q.getGroupForIndex),Q=J+Y.length,U=q.header?.height??q.header?.width??q.headerHeight;return{get totalEntries(){return Q},get groupCount(){return Y.length},get groups(){return Y},getEntry:(_)=>{if(Y.length===0)return{type:"item",dataIndex:_,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let T=fJ(Y,_),z=Y[T];if(_===z.headerLayoutIndex)return{type:"header",group:z};let R=_-z.headerLayoutIndex-1;return{type:"item",dataIndex:z.firstDataIndex+R,group:z}},layoutToDataIndex:(_)=>{if(Y.length===0)return _;let T=fJ(Y,_),z=Y[T];if(_===z.headerLayoutIndex)return-1;let R=_-z.headerLayoutIndex-1;return z.firstDataIndex+R},dataToLayoutIndex:(_)=>{if(Y.length===0)return _;let T=v1(Y,_),z=Y[T],R=_-z.firstDataIndex;return z.headerLayoutIndex+1+R},getGroupAtLayoutIndex:(_)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let T=fJ(Y,_);return Y[T]},getGroupAtDataIndex:(_)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let T=v1(Y,_);return Y[T]},getHeaderHeight:typeof U==="number"?(_)=>U:(_)=>{let T=Y[_];if(!T)return 0;return U(T.key,_)},rebuild:(_)=>{Y=S1(_,q.getGroupForIndex),Q=_+Y.length}}};var I1=(J,q,Y,Q,U,j=!1,K=0)=>{let D=j?"width":"height",B=j?"height":"width",Z=j?"X":"Y",N=(X,P)=>{X.style[D]=`${P}px`},w=document.createElement("div");w.className=`${U}-sticky-header`,w.setAttribute("role","presentation"),w.setAttribute("aria-hidden","true"),w.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(j?`top:0;bottom:0;left:${K||0}px`:`top:${K||0}px`);let _=()=>{let X=document.createElement("div");return X.className="sticky-group",X.style.position="absolute",X.style.willChange="transform",X.style[B]="100%",X},T=_(),z=_();w.append(T,z),J.insertBefore(w,J.firstChild);let R=T,G=z,v=q.groups,k=[],f=[],a=0,h=()=>{v=q.groups,a=v.length,k=Array(a),f=Array(a);for(let X=0;X<a;X++)k[X]=Y.getOffset(v[X].headerLayoutIndex),f[X]=q.getHeaderHeight(X)};h();let u=-1,b=0,d=-1,J0=!1,o=0,H=!1,C=(X,P)=>{Q(X,P);let M=f[P];return N(X,M),M},S=(X)=>{X.replaceChildren(),X.style.transform=""},c=(X)=>{if(X===u)return;if(u=X,b=0,X<0||X>=a){S(R);return}b=C(R,X),N(w,b),R.style.transform=""},F=(X)=>{if(X===o)return;o=X;let P=Math.round(X);R.style.transform=`translate${Z}(${P}px)`,G.style.transform=`translate${Z}(${P+b}px)`},y=()=>{o=0,R.style.transform="",G.style.transform=""},O=()=>{if(!H)return;let X=R;R=G,G=X,u=d,b=u>=0?f[u]:0,N(w,b),S(G),d=-1,H=!1,y()},I=()=>{if(!H)return;S(G),d=-1,H=!1,y()},x=()=>{if(J0)return;J0=!0,w.style.display=""},l=()=>{if(!J0)return;J0=!1,w.style.display="none",S(R),u=-1,b=0,I()},p=(X)=>{if(a===0){l();return}if(X<k[0]){l();return}let P=0,M=a-1;while(P<M){let W=P+M+1>>>1;if(k[W]+f[W]<=X)P=W;else M=W-1}if(!J0)x();c(P);let A=P+1;if(A<a){let W=k[A]-X;if(W<=0&&W>-b){if(d!==A||!H)d=A,C(G,A),H=!0;F(W)}else if(W<=-b){if(H)O()}else if(H)I()}else if(H)I()},r=()=>{h();let X=u;if(u=-1,b=0,X>=0)c(X)},V=()=>{w.remove(),u=-1,b=0,d=-1,J0=!1,H=!1};return w.style.display="none",{update:p,refresh:r,show:x,hide:l,destroy:V}};var C0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var p1=(J,q,Y,Q,U,j)=>{if(Q===0)return 0;let K=Math.max(0,Math.min(J,Q-1)),D=q.getOffset(K),B=q.getSize(K),Z=q.getTotalSize(),N=Math.max(0,Z-Y),w;switch(j){case"center":w=D-Y/2+B/2;break;case"end":w=D-Y+B;break;case"start":default:w=D;break}return Math.max(0,Math.min(w,N))};var t0=(J,q,Y,Q,U="start",j,K=p1)=>{return K(J,q,Y,Q,j,U)};var O4=(J,q)=>{if(J.header){let Y=q?J.header.width??J.header.height:J.header.height??J.header.width;return{...J,header:{...J.header,height:Y}}}if(J.headerHeight!=null&&J.headerTemplate)return{...J,header:{height:J.headerHeight,template:J.headerTemplate}};return J},hJ=(J)=>{let q=J.header,Y=q?q.height??q.width:J.headerHeight,Q=q?.template??J.headerTemplate;if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(Y==null||Y<=0)throw Error("[vlist/builder] withGroups: header.height must be a positive number");if(!Q)throw Error("[vlist/builder] withGroups: header.template is required");let U=null,j=null,K=[],D=[];return{name:"withGroups",priority:10,setup(B){let{dom:Z,config:N,rawConfig:w}=B,{classPrefix:_}=N,T=O4(J,N.horizontal),R=w.item.height;K=w.items?[...w.items]:[];let G=K.length,v={getGroupForIndex:T.getGroupForIndex,header:{height:T.header.height,template:T.header.template},sticky:T.sticky??!1};U=f1(G,v),D=IJ(K,U.groups);let k=T.sticky!==!1,f=pJ(U,R,k);B.setSizeConfig(f),B.rebuildSizeCache(D.length),B.dataManager.setItems(D,0,D.length);let a=w.item.template,{template:h}=T.header,u=(l,p,r)=>{if(C0(l))return h(l.groupKey,l.groupIndex);return a(l,p,r)},b=B.methods.get("_getGridLayout"),d=B.methods.get("_replaceGridRenderer"),J0=B.methods.get("_updateGridLayoutForGroups"),o=B.methods.get("_createGridRenderer"),H=B.methods.get("_getTableLayout"),C=B.methods.get("_updateTableForGroups"),S=B.methods.get("_getTableHeaderHeight");if(b&&d&&o){if(J0)J0((r)=>{let V=D[r];return!!(V&&C0(V))});let l=b(),p=o(Z.items,u,B.sizeCache,l,_,B.getContainerWidth(),()=>B.dataManager.getTotal(),N.ariaIdPrefix);d(p)}else if(H&&C)C((l)=>C0(l),T.header.template);else B.replaceTemplate(u);let c=S?S():0;if(Z.root.classList.add(`${_}--grouped`),T.sticky!==!1)if(B.methods.set("_getStickyHeaderHeight",()=>T.header.height),!N.horizontal)Z.viewport.style.height=`calc(100% - ${T.header.height}px)`;else Z.viewport.style.width=`calc(100% - ${T.header.height}px)`;if(T.sticky!==!1){let l=T.header.template,p=(V,X)=>{let P=U.groups[X];if(!P)return;let M=l(P.key,P.groupIndex);if(typeof M==="string")V.innerHTML=M;else V.replaceChildren(M)};j=I1(Z.root,U,B.sizeCache,p,_,N.horizontal,c);let r=j;B.afterScroll.push((V,X)=>{r.update(V)}),j.update(B.scrollController.getScrollTop())}let F=w.item?.striped,y=()=>{if(F!=="data"&&F!=="even"&&F!=="odd")return;let l=new Int32Array(D.length),p=F==="odd"?1:0,r=0;for(let V=0;V<D.length;V++)if(C0(D[V])){if(l[V]=-1,F==="even"||F==="odd")r=0}else l[V]=r+++p;B.setStripeIndexFn((V)=>{if(V<0||V>=l.length)return V;return l[V]})};y();let O=()=>{if(!U)return;U.rebuild(K.length),D=IJ(K,U.groups);let l=pJ(U,R,k);if(B.setSizeConfig(l),B.rebuildSizeCache(D.length),B.dataManager.setItems(D,0,D.length),y(),j)j.refresh()};B.methods.set("setItems",(l)=>{K=l.slice(),O()}),B.methods.set("appendItems",(l)=>{K.push(...l),O()}),B.methods.set("prependItems",(l)=>{K.unshift(...l),O()}),B.methods.set("removeItem",(l)=>{K=K.filter((p)=>p.id!==l),O()});let{animateScroll:I,cancelScroll:x}=l0(B.scrollController,B.renderIfNeeded);B.methods.set("scrollToIndex",(l,p)=>{let r=U.dataToLayoutIndex(l),{align:V,behavior:X,duration:P}=z0(p),M=B.dataManager.getTotal(),A=B.adjustScrollPosition(t0(r,B.sizeCache,B.state.viewportState.containerSize,M,V,B.getCachedCompression()));if(X==="smooth")I(B.scrollController.getScrollTop(),A,P);else x(),B.scrollController.scrollTo(A)}),B.methods.set("_getItems",()=>K),B.methods.set("_getTotal",()=>K.length),B.methods.set("_isGroupHeader",(l)=>{let p=D[l];return!!(p&&C0(p))}),B.destroyHandlers.push(()=>{if(x(),j)j.destroy(),j=null;Z.root.classList.remove(`${_}--grouped`)})},destroy(){if(j)j.destroy(),j=null}}};var h1=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,Q=J.isHeaderFn,U={row:0,col:0},j=(z)=>{if(z<=0)return 0;if(!Q)return Math.ceil(z/q);let R=0,G=0,v=0;for(let k=0;k<z;k++)if(Q(k)){if(v++,G>0)R++,G=0;R++,G=0}else if(G++,G>=q)R++,G=0;if(G>0)R++;return R},K=(z)=>{return U.row=D(z),U.col=B(z),U},D=(z)=>{if(!Q)return Math.floor(z/q);let R=0,G=0;for(let v=0;v<=z;v++)if(Q(v)){if(G>0)R++,G=0;if(v===z)return R;R++,G=0}else{if(v===z)return R;if(G++,G>=q)R++,G=0}return console.warn(`⚠️ getRow(${z}) fell through - returning ${R}`),R},B=(z)=>{if(!Q)return z%q;if(Q(z))return 0;let R=0;for(let G=0;G<=z;G++)if(Q(G))R=0;else{if(G===z)return R;if(R++,R>=q)R=0}return R},Z=(z,R,G)=>{if(G<=0)return{start:0,end:-1};if(!Q){let h=Math.max(0,z*q),u=Math.min(G-1,(R+1)*q-1);return{start:h,end:u}}let v=-1,k=-1,f=0,a=0;for(let h=0;h<G;h++){if(Q(h)){if(a>0)f++,a=0;if(f>=z&&f<=R){if(v===-1)v=h;k=h}f++,a=0}else{if(f>=z&&f<=R){if(v===-1)v=h;k=h}if(a++,a>=q)f++,a=0}if(f>R&&a===0)break}if(v===-1)return{start:0,end:-1};return{start:v,end:k}},N=(z,R,G)=>{if(R<0||R>=q)return-1;let v=z*q+R;if(v<0||v>=G)return-1;return v},w=(z)=>{let R=(q-1)*Y;return Math.max(0,(z-R)/q)};return{get columns(){return q},get gap(){return Y},update:(z)=>{if(z.columns!==void 0)q=Math.max(1,Math.floor(z.columns));if(z.gap!==void 0)Y=z.gap;if(z.isHeaderFn!==void 0)Q=z.isHeaderFn},getTotalRows:j,getPosition:K,getRow:D,getCol:B,getItemRange:Z,getItemIndex:N,getColumnWidth:w,getColumnOffset:(z,R)=>{let G=w(R);return z*(G+Y)}}};var E4=(J=200)=>{let q=[];return{acquire:()=>{let j=q.pop();if(j)return j;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(j)=>{if(j.remove(),q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),q.push(j)},clear:()=>{q.length=0}}},A4=1,uJ=(J,q,Y,Q,U,j,K,D,B=!1)=>{let Z=E4(),N=new Map,w=j,_=!1,T=0,z="",R=-1,G={selected:!1,focused:!1},v=(V,X)=>{return G.selected=V,G.focused=X,G},k=`${U}-item ${U}-grid-item`,f=`${U}-item--selected`,a=`${U}-item--focused`,h=`${U}-item--placeholder`,u=`${U}-item--replaced`,b=(V,X)=>{if(typeof X==="string")V.innerHTML=X;else V.replaceChildren(X)},d=(V,X,P)=>{V.classList.toggle(f,X),V.classList.toggle(a,P)},J0=(V,X)=>{let P=Q.getRow(V);if(X?.compression?.isCompressed)return r0(P,X.scrollPosition,Y,X.totalItems,X.containerSize,X.compression,X.rangeStart);return Y.getOffset(P)},o=(V,X)=>{let P=_&&Q.getCol(V)===0,M=P?0:Q.getCol(V),A=P?0:Q.getColumnOffset(M,w),W;if(_){let $=Q.getRow(V),E=0,L=new Set;for(let g=0;g<V;g++){let i=Q.getRow(g);if(i<$&&!L.has(i)){let n=Y.getSize(g);E+=n,L.add(i)}}W=E}else W=J0(V,X);if(B)return`translate(${Math.round(W)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(W)}px)`},H=(V,X)=>{V.style.transform=X},C=(V,X)=>{let P=V.dataset.id?.startsWith("__group_header"),M=P?w:Q.getColumnWidth(w),A;if(_||P)A=Y.getSize(X)-Q.gap;else{let W=Q.getRow(X);A=Y.getSize(W)-Q.gap}if(B)V.style.width=`${A}px`,V.style.height=`${M}px`;else V.style.width=`${M}px`,V.style.height=`${A}px`},S=(V,X,P,M,A)=>{let W=Z.acquire(),$=v(P,M);if(W.className=k,W.dataset.index=String(V),W.dataset.id=String(X.id),W.dataset.row=String(Q.getRow(V)),W.dataset.col=String(Q.getCol(V)),W.ariaSelected=String(P),D)W.id=`${D}-item-${V}`;if(K){let g=K();if(g!==R)R=g,z=String(g);W.setAttribute("aria-setsize",z),W.setAttribute("aria-posinset",String(V+1))}C(W,V);let E=q(X,V,$);if(b(W,E),String(X.id).startsWith(w0))W.classList.add(h);return d(W,P,M),H(W,A),{element:W,lastItemId:X.id,lastSelected:P,lastFocused:M,lastTransform:A,lastSeenFrame:T}},c=(V,X,P,M,A)=>{if(T++,X.start===0&&V.length>0)_=C0(V[0]);for(let[E,L]of N)if(E>=X.start&&E<=X.end)L.lastSeenFrame=T;else if(T-L.lastSeenFrame>A4)Z.release(L.element),N.delete(E);let W=!1;if(K){let E=K();if(E!==R)R=E,z=String(E),W=!0}let $=null;for(let E=X.start;E<=X.end;E++){let L=E-X.start,g=V[L];if(!g){console.warn(`⚠️ RENDER: Missing item at index ${E} (range: ${X.start}-${X.end}, items.length: ${V.length})`);continue}let i=P.has(g.id),n=E===M,t=N.get(E);if(t){let j0=t.lastItemId!==g.id,s=t.lastSelected!==i,Q0=t.lastFocused!==n;if(j0){let U0=String(t.lastItemId),K0=String(g.id),Z0=U0.startsWith(w0),V0=K0.startsWith(w0);if(!V0&&R0(P,E,g.id))i=!0;let G0=v(i,n),X0=q(g,E,G0);if(b(t.element,X0),t.element.dataset.id=K0,t.element.dataset.row=String(Q.getRow(E)),t.element.dataset.col=String(Q.getCol(E)),C(t.element,E),t.element.classList.toggle(h,V0),Z0&&!V0)t.element.classList.add(u),setTimeout(()=>t.element.classList.remove(u),300);t.lastItemId=g.id}if(j0||s||Q0)d(t.element,i,n),t.element.ariaSelected=String(i),t.lastSelected=i,t.lastFocused=n;let q0=o(E,A);if(t.lastTransform!==q0)H(t.element,q0),t.lastTransform=q0;if(W)t.element.setAttribute("aria-setsize",z)}else{if(R0(P,E,g.id))i=!0;let j0=o(E,A),s=S(E,g,i,n,j0);if(!$)$=document.createDocumentFragment();$.appendChild(s.element),N.set(E,s)}}if($)J.appendChild($)},F=(V)=>{for(let[X,P]of N){let M=o(X,V);if(P.lastTransform!==M)H(P.element,M),P.lastTransform=M}},y=(V,X,P,M)=>{let A=N.get(V);if(!A)return;let W=v(P,M),$=q(X,V,W);b(A.element,$),d(A.element,P,M),A.element.dataset.id=String(X.id),A.element.ariaSelected=String(P),C(A.element,V),A.lastItemId=X.id,A.lastSelected=P,A.lastFocused=M},O=(V,X,P)=>{let M=N.get(V);if(!M)return;let A=M.lastSelected!==X,W=M.lastFocused!==P;if(A||W)d(M.element,X,P),M.lastSelected=X,M.lastFocused=P},I=(V)=>{return N.get(V)?.element},x=(V)=>{if(Math.abs(V-w)<1)return;w=V;for(let[X,P]of N){C(P.element,X);let M=o(X);H(P.element,M),P.lastTransform=M}},l=()=>{u0(J,N.keys(),(V)=>N.get(V)?.element)},p=()=>{for(let[,V]of N)Z.release(V.element);N.clear()};return{render:c,updatePositions:F,updateItem:y,updateItemClasses:O,getElement:I,sortDOM:l,updateContainerWidth:x,clear:p,destroy:()=>{p(),Z.clear()}}};var L4=new Set,gJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Y=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(Q){let{dom:U,emitter:j,config:K,rawConfig:D}=Q,{classPrefix:B}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Z=K.horizontal,N=jJ($0(D.padding),Z),w=()=>{return(Z?U.viewport.clientHeight:Q.getContainerWidth())-N},_=D.items?.some((p)=>p.__groupHeader===!0),T={columns:J.columns,gap:J.gap??0};if(_)T.isHeaderFn=(p)=>{let r=Q.dataManager.getItem(p);return!!(r&&r.__groupHeader===!0)};q=h1(T);let z=q.gap;Q.setVirtualTotalFn(()=>{let p=Q.dataManager.getTotal();return q.getTotalRows(p)}),Q.setItemToScrollIndexFn((p)=>Math.floor(p/T.columns)),Q.methods.set("_getNavTotal",()=>Q.dataManager.getTotal()),Q.methods.set("_getNavDelta",()=>Z?{ud:1,lr:T.columns,cols:T.columns}:{ud:T.columns,lr:1,cols:T.columns});let R=D.item,G=K.horizontal?R.width:R.height,v={containerWidth:w(),columns:q.columns,gap:q.gap},k={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof G==="function")Q.setSizeConfig((p)=>{let r=v.containerWidth-2,V=(v.columns-1)*v.gap;return k.containerWidth=v.containerWidth,k.columns=v.columns,k.gap=v.gap,k.columnWidth=(r-V)/v.columns,k.row=q.getRow(p),k.column=q.getCol(p),k.totalRows=q.getTotalRows(Q.dataManager.getTotal()),k.totalColumns=v.columns,G(p,k)+v.gap});else if(z>0)Q.setSizeConfig(G+z);if(Q.rebuildSizeCache(),z>0){let p=Q.sizeCache.getTotalSize;Q.sizeCache.getTotalSize=()=>{let r=p();return r>0?r-v.gap:0}}U.root.classList.add(`${B}--grid`);let f=w(),a=D.item.template,h=()=>{Y=uJ(U.items,a,Q.sizeCache,q,B,f,()=>Q.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),Q.replaceRenderer(Y)};h(),Q.setUpdateItemClassesFn((p,r,V)=>{Y?.updateItemClasses(p,r,V)}),Q.methods.set("_updateRenderedItem",(p,r,V,X)=>{Y?.updateItem(p,r,V,X)}),Q.methods.set("_getGridLayout",()=>q),Q.methods.set("_getGridConfig",()=>T),Q.methods.set("_replaceGridRenderer",(p)=>{Y=p}),Q.methods.set("_createGridRenderer",uJ),Q.methods.set("_updateGridLayoutForGroups",(p)=>{q.update({isHeaderFn:p});let r=Q.dataManager.getTotal(),V=0;for(let X=0;X<r;X++)if(q.getCol(X)===0){let P=Q.sizeCache.getSize(X);V+=P}Q.sizeCache.getTotalSize=()=>V,Q.updateContentSize(V),h()}),Q.methods.set("updateGrid",(p)=>{if(p.columns!==void 0){if(!Number.isInteger(p.columns)||p.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");T.columns=p.columns}if(p.gap!==void 0){if(p.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");T.gap=p.gap}if(q)q.update(T);let r=w();if(v.containerWidth=r,v.columns=T.columns,v.gap=T.gap??0,Y)Y.updateContainerWidth(r);Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let V=0;V<Q.contentSizeHandlers.length;V++)Q.contentSizeHandlers[V]();if(Y)Y.clear();Q.forceRender()});let u=null,b=null,d=!1,J0=()=>{if(d)return;d=!0,u=Q.methods.get("_getSelectedIds")??null,b=Q.methods.get("_getFocusedIndex")??null},o=-1,H=-1,C=!0,S=K.overscan,c={start:0,end:0},F={start:0,end:0},y=()=>{if(Q.state.isDestroyed)return;let p=Q.scrollController.getScrollTop(),r=Q.state.viewportState.containerSize;if(!C&&p===o&&r===H)return;o=p,H=r,C=!1;let V=Q.getVirtualTotal();Q.getVisibleRange(p,r,V,c),F.start=Math.max(0,c.start-S),F.end=Math.min(V-1,c.end+S);let X=Q.state.viewportState;X.scrollPosition=p,X.visibleRange.start=c.start,X.visibleRange.end=c.end,X.renderRange.start=F.start,X.renderRange.end=F.end;let P=Q.state.lastRenderRange,M=X.isCompressed,A=P.start!==F.start||P.end!==F.end;if(!A&&M){Y.updatePositions(Q.getCompressionContext());return}let W=Q.dataManager.getTotal(),$=q.getItemRange(F.start,F.end,W),E=Q.dataManager.getItemsInRange($.start,$.end),L=M?Q.getCompressionContext():void 0;J0();let g=u?u():L4,i=b?b():-1;if(Y.render(E,$,g,i,L),A)P.start=F.start,P.end=F.end,j.emit("range:change",{range:{start:F.start,end:F.end}})},O=()=>{if(Q.state.isDestroyed)return;Q.state.lastRenderRange.start=-1,Q.state.lastRenderRange.end=-1,C=!0,y()};Q.setRenderFns(y,O);let I=typeof G==="function";Q.resizeHandlers.push((p,r)=>{let V=(Z?r:p)-N;if(Math.abs(V-v.containerWidth)<1)return;if(v.containerWidth=V,Y)Y.updateContainerWidth(V);if(I){Q.rebuildSizeCache(),Q.updateContentSize(Q.sizeCache.getTotalSize()),Q.updateCompressionMode();for(let X=0;X<Q.contentSizeHandlers.length;X++)Q.contentSizeHandlers[X]();if(Y)Y.clear();Q.forceRender()}});let{animateScroll:x,cancelScroll:l}=l0(Q.scrollController,Q.renderIfNeeded);if(Q.methods.set("cancelScroll",l),Q.methods.set("scrollToIndex",(p,r)=>{let V=Math.floor(p/J.columns),{align:X,behavior:P,duration:M}=z0(r),A=Q.dataManager.getState(),W=q.getTotalRows(A.total),$=Math.max(0,Math.min(V,W-1)),E=Q.adjustScrollPosition(t0($,Q.sizeCache,Q.state.viewportState.containerSize,W,X,Q.getCachedCompression()));if(P==="smooth")x(Q.scrollController.getScrollTop(),E,M);else l(),Q.scrollController.scrollTo(E)}),!Q.methods.has("_getTotal"))Q.methods.set("_getTotal",()=>Q.dataManager.getTotal());Q.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),Q.destroyHandlers.push(()=>{if(l(),Y)Y.destroy(),Y=null;U.root.classList.remove(`${B}--grid`)})},destroy(){if(Y)Y.destroy(),Y=null}}};var u1=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,Q=J.containerSize,U=0,j=[],K=()=>{let G=(q-1)*Y;U=Math.max(0,(Q-G)/q),j=Array(q);let v=U+Y;for(let k=0;k<q;k++)j[k]=k*v};K();let D=[],B=0,Z=[],N=(G)=>{let v=0,k=G[0];for(let f=1;f<G.length;f++){let a=G[f];if(a<k)k=a,v=f}return v},w=(G,v)=>{if(G<=0)return B=0,D=[],[];let k=Array(q).fill(0),f=Array(q);for(let u=0;u<q;u++)f[u]=[];let a=Array(G);for(let u=0;u<G;u++){let b=N(k),d=v(u),J0=k[b];a[u]={index:u,x:j[b],y:J0,lane:b,size:d,crossSize:U},f[b].push(u),k[b]=J0+d+Y}D=f;let h=0;for(let u=0;u<q;u++){let b=k[u],d=b>0?b-Y:0;if(d>h)h=d}return B=h,a},_=(G)=>{if(G.length===0)return B>0?B:0;if(B>0)return B;let v=Array(q).fill(0);for(let f of G){let a=f.y+f.size,h=v[f.lane];if(a>h)v[f.lane]=a}let k=0;for(let f=0;f<q;f++)if(v[f]>k)k=v[f];return k},T=(G,v,k)=>{if(G.length===0||k<=v)return Z.length=0,Z;if(D.length===0||D.length!==q)return z(G,v,k);Z.length=0;for(let f=0;f<q;f++){let a=D[f],h=a.length;if(h===0)continue;let u=0,b=h;while(u<b){let d=u+b>>>1,J0=G[a[d]];if(J0.y+J0.size<=v)u=d+1;else b=d}for(let d=u;d<h;d++){let J0=G[a[d]];if(J0.y>=k)break;Z.push(J0)}}return Z},z=(G,v,k)=>{let f=[];for(let a of G)if(a.y+a.size>v&&a.y<k)f.push(a);return f};return{get columns(){return q},get gap(){return Y},get containerSize(){return Q},update:(G)=>{let v=!1;if(G.columns!==void 0){let k=Math.max(1,Math.floor(G.columns));if(k!==q)q=k,v=!0}if(G.gap!==void 0&&G.gap!==Y)Y=G.gap,v=!0;if(G.containerSize!==void 0&&G.containerSize!==Q)Q=G.containerSize,v=!0;if(v)K()},calculateLayout:w,getTotalSize:_,getVisibleItems:T}};var F4=(J=200)=>{let q=[];return{acquire:()=>{let j=q.pop();if(j)return j;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(j)=>{if(j.remove(),q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),q.push(j)},clear:()=>{q.length=0}}},T4=1,g1=(J,q,Y,Q=!1,U,j)=>{let K=F4(),D=new Map,B=new Set,Z=0,N="",w=-1,_={selected:!1,focused:!1},T=(H,C)=>{return _.selected=H,_.focused=C,_},z=`${Y}-item ${Y}-masonry-item`,R=`${Y}-item--selected`,G=`${Y}-item--focused`,v=(H,C)=>{if(typeof C==="string")H.innerHTML=C;else H.replaceChildren(C)},k=(H,C,S)=>{H.classList.toggle(R,C),H.classList.toggle(G,S)},f=(H,C)=>{if(Q)H.style.transform=`translate(${Math.round(C.y)}px, ${Math.round(C.x)}px)`;else H.style.transform=`translate(${Math.round(C.x)}px, ${Math.round(C.y)}px)`},a=(H,C)=>{if(Q)H.style.width=`${C.size}px`,H.style.height=`${C.crossSize}px`;else H.style.width=`${C.crossSize}px`,H.style.height=`${C.size}px`},h=(H,C,S,c,F)=>{let y=K.acquire(),O=T(c,F);if(y.className=z,y.dataset.index=String(H),y.dataset.id=String(C.id),y.dataset.lane=String(S.lane),y.ariaSelected=String(c),j)y.id=`${j}-item-${H}`;if(U){let x=U();if(x!==w)w=x,N=String(x);y.setAttribute("aria-setsize",N),y.setAttribute("aria-posinset",String(H+1))}a(y,S);let I=q(C,H,O);return v(y,I),k(y,c,F),f(y,S),{element:y,lastItemId:C.id,lastSelected:c,lastFocused:F,lastY:S.y,lastX:S.x,lastSize:S.size,lastCrossSize:S.crossSize,lastSeenFrame:Z}},u=(H,C,S,c)=>{Z++,B.clear();for(let y=0;y<C.length;y++)B.add(C[y].index);for(let[y,O]of D)if(B.has(y))O.lastSeenFrame=Z;else if(Z-O.lastSeenFrame>T4)K.release(O.element),D.delete(y);let F=null;for(let y=0;y<C.length;y++){let O=C[y],I=O.index,x=H(I);if(!x)continue;let l=S.has(x.id),p=I===c,r=D.get(I);if(r){let V=r.lastItemId!==x.id,X=r.lastSelected!==l,P=r.lastFocused!==p,M=r.lastY!==O.y||r.lastX!==O.x,A=r.lastSize!==O.size||r.lastCrossSize!==O.crossSize;if(V){let W=T(l,p),$=q(x,I,W);v(r.element,$),r.element.dataset.id=String(x.id),r.lastItemId=x.id}if(V||X||P)k(r.element,l,p),r.element.ariaSelected=String(l),r.lastSelected=l,r.lastFocused=p;if(A)a(r.element,O),r.lastSize=O.size,r.lastCrossSize=O.crossSize;if(M)f(r.element,O),r.lastY=O.y,r.lastX=O.x}else{let V=h(I,x,O,l,p);if(!F)F=document.createDocumentFragment();F.appendChild(V.element),D.set(I,V)}}if(F)J.appendChild(F)},b=()=>{for(let{element:H}of D.values())K.release(H);D.clear(),J.innerHTML=""};return{render:u,getElement:(H)=>D.get(H)?.element,updateItemClasses:(H,C,S)=>{let c=D.get(H);if(!c)return;let F=c.lastSelected!==C,y=c.lastFocused!==S;if(F||y)k(c.element,C,S),c.lastSelected=C,c.lastFocused=S},sortDOM:()=>{u0(J,D.keys(),(H)=>D.get(H)?.element)},clear:b,destroy:()=>{b(),K.clear()}}};var k4=new Set,b4=100,xJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Y=null,Q=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(U){let{dom:j,emitter:K,config:D,rawConfig:B}=U,Z=D.classPrefix,N=D.horizontal;if(D.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");j.root.classList.add(`${Z}--masonry`);let w=$0(B.padding),_=jJ(w,N),T=h0(w,N),z=()=>{return(N?j.viewport.clientHeight:j.viewport.clientWidth)-_},R={columns:J.columns,gap:J.gap??0,containerSize:z()};q=u1(R);let G=B.item,v=N&&B.item.width?B.item.width:G.height,k={containerWidth:0,columns:0,gap:0,columnWidth:0},f=typeof v==="function"?(W)=>v(W,k):()=>v,a=()=>{let W=U.dataManager.getTotal(),$=q;k.containerWidth=$.containerSize,k.columns=$.columns,k.gap=$.gap;let E=($.columns-1)*$.gap;k.columnWidth=Math.max(0,(k.containerWidth-E)/$.columns),Q=$.calculateLayout(W,f),J0();let L=q.getTotalSize(Q);U.sizeCache.getTotalSize=()=>L,U.updateContentSize(L)},h=B.item.template;Y=g1(j.items,h,Z,N,()=>U.dataManager.getTotal(),D.ariaIdPrefix),U.setUpdateItemClassesFn((W,$,E)=>{Y?.updateItemClasses(W,$,E)});let u=[],b=new Int32Array(0),d=[],J0=()=>{let W=R.columns,$=Q.length;if(u=Array.from({length:W},()=>[]),b.length<$)b=new Int32Array($);for(let E=0;E<$;E++){let L=Q[E],g=u[L.lane].length;u[L.lane].push(E),b[E]=g}d=Array(W);for(let E=0;E<W;E++){let L=u[E],g=new Float64Array(L.length);for(let i=0;i<L.length;i++){let n=Q[L[i]];g[i]=n.y+n.size*0.5}d[E]=g}};U.methods.set("_getNavTotal",()=>U.dataManager.getTotal());let o=(W,$)=>{let E=W.length;if(E===0)return-1;if(E===1)return 0;let L=0,g=E-1;while(L<g){let i=L+g>>1;if(W[i]<$)L=i+1;else g=i}if(L>0&&Math.abs(W[L-1]-$)<=Math.abs(W[L]-$))return L-1;return L};U.methods.set("_navigate",(W,$,E)=>{let L=Q[W];if(!L)return W;let g=L.lane,i=R.columns,n=b[W],t=u[g];switch(N?$==="ArrowDown"?"ArrowRight":$==="ArrowUp"?"ArrowLeft":$==="ArrowRight"?"ArrowDown":$==="ArrowLeft"?"ArrowUp":$:$){case"ArrowDown":{if(n+1<t.length)return t[n+1];return W}case"ArrowUp":{if(n>0)return t[n-1];return W}case"ArrowRight":{if(g>=i-1)return W;let s=g+1,Q0=L.y+L.size*0.5,q0=u[s];if(q0.length===0)return W;let U0=o(d[s],Q0);return U0>=0?q0[U0]:W}case"ArrowLeft":{if(g<=0)return W;let s=g-1,Q0=L.y+L.size*0.5,q0=u[s];if(q0.length===0)return W;let U0=o(d[s],Q0);return U0>=0?q0[U0]:W}case"Home":return 0;case"End":return E-1;case"PageDown":{let s=U.state.viewportState.containerSize,Q0=L.size>0?L.size:150,q0=Math.max(1,Math.floor(s/Q0)),U0=Math.min(n+q0,t.length-1);return t[U0]}case"PageUp":{let s=U.state.viewportState.containerSize,Q0=L.size>0?L.size:150,q0=Math.max(1,Math.floor(s/Q0)),U0=Math.max(0,n-q0);return t[U0]}}return W}),U.methods.set("_scrollItemIntoView",(W)=>{let $=Q[W];if(!$)return;let E=U.scrollController.getScrollTop(),L=U.state.viewportState.containerSize,g=$.y,i=g+$.size,n=E+L;if(g<E)U.scrollController.scrollTo(U.adjustScrollPosition(Math.max(0,g)));else if(i>n)U.scrollController.scrollTo(U.adjustScrollPosition(i-L))});let H=null,C=null,S=!1,c=()=>{if(S)return;S=!0,H=U.methods.get("_getSelectedIds")??null,C=U.methods.get("_getFocusedIndex")??null},F=(W)=>U.dataManager.getItem(W),y=-1,O=-1,I=!0,x=D.overscan*b4,l=()=>{if(U.state.isDestroyed)return;c();let W=U.scrollController.getScrollTop(),$=U.state.viewportState.containerSize;if(!I&&W===y&&$===O)return;y=W,O=$,I=!1;let E=Math.max(0,W-x),L=W+$+x,g=q.getVisibleItems(Q,E,L),i=H?H():k4,n=C?C():-1;if(Y&&g.length>0)Y.render(F,g,i,n);let t=U.state.viewportState;t.scrollPosition=W;let j0=g.length,s=j0>0?g[0].index:0,Q0=j0>0?g[j0-1].index:0;t.visibleRange.start=s,t.visibleRange.end=Q0,t.renderRange.start=s,t.renderRange.end=Q0;let q0=U.state.lastRenderRange;if(q0.start!==s||q0.end!==Q0)q0.start=s,q0.end=Q0,K.emit("range:change",{range:{start:s,end:Q0}})},p=()=>{U.state.lastRenderRange.start=-1,U.state.lastRenderRange.end=-1,I=!0,l()};U.setRenderFns(l,p);let r=(W,$)=>{let E=(N?$:W)-_;if(q&&q.containerSize!==E){if(q.update({containerSize:E}),a(),Y)Y.clear();p()}};U.resizeHandlers.push(r);let V=()=>{a(),p()},X=U.dataManager,P=(W)=>{if(typeof X[W]!=="function")return;let $=X[W].bind(X);X[W]=(...E)=>{$(...E),V()}};P("setItems"),P("appendItems"),P("prependItems"),P("updateItem"),P("removeItem");let{animateScroll:M,cancelScroll:A}=l0(U.scrollController,U.renderIfNeeded);U.methods.set("cancelScroll",A),U.methods.set("scrollToIndex",(W,$)=>{let E=Q[W];if(!E)return;let{align:L,behavior:g,duration:i}=z0($),n=E.y,t=U.state.viewportState.containerSize,j0=n;if(L==="center")j0=n-t/2+E.size/2;else if(L==="end"){j0=n-t+E.size;let s=q.getTotalSize(Q);if(W===Q.length-1)j0=Math.max(0,s+T-t)}if(j0=Math.max(0,j0),j0=U.adjustScrollPosition(j0),g==="smooth")M(U.scrollController.getScrollTop(),j0,i);else A(),U.scrollController.scrollTo(j0)}),a(),U.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),U.destroyHandlers.push(()=>{if(A(),Y)Y.destroy();j.root.classList.remove(`${Z}--masonry`)})}}};var mJ=(J)=>{let q=J?.mode??"single",Y=J?.followFocus??!1,Q=J?.initial,U=J?.shiftArrowToggle??"origin",j=J?.focusOnClick??!1,K=F1(Q),D=null,B=-1;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems","selectNext","selectPrevious"],setup(Z){let{dom:N,emitter:w,config:_}=Z,{classPrefix:T,ariaIdPrefix:z}=_;if(q==="none"){Z.methods.set("select",()=>{}),Z.methods.set("deselect",()=>{}),Z.methods.set("toggleSelect",()=>{}),Z.methods.set("selectAll",()=>{}),Z.methods.set("clearSelection",()=>{}),Z.methods.set("getSelected",()=>[]),Z.methods.set("getSelectedItems",()=>[]),Z.methods.set("setSelectionMode",()=>{}),Z.methods.set("selectNext",()=>{}),Z.methods.set("selectPrevious",()=>{});return}N.root.classList.add(`${T}--selectable`);let R=Z.methods.get("_isGroupHeader"),G=(V)=>R?R(V):!1,v=(V,X,P)=>{if(!R)return V;let M=V;while(M>=0&&M<P){if(!G(M))return M;M+=X}M=V-X;while(M>=0&&M<P){if(!G(M))return M;M-=X}return V},k=new Map,f=()=>{k.clear();let V=Z.dataManager.getTotal(),X=Z.dataManager.getCached();if(X===0)return;if(X>=V){for(let M=0;M<V;M++){let A=Z.dataManager.getItem(M);if(A)k.set(A.id,M)}return}let P=Z.dataManager.getStorage();if(P&&typeof P.getLoadedRanges==="function"){let M=P.getLoadedRanges();for(let A of M)for(let W=A.start;W<=A.end;W++){let $=Z.dataManager.getItem(W);if($&&!$._isPlaceholder)k.set($.id,W)}}};w.on("data:change",({type:V,id:X})=>{if(V==="remove")K.selected.delete(X),f()}),w.on("load:end",({items:V,offset:X})=>{if(!V||V.length===0)return;if(X!==void 0)for(let P=0;P<V.length;P++){let M=V[P];if(M&&M.id!==void 0)k.set(M.id,X+P)}else f()}),f(),Z.methods.set("_getSelectedIds",()=>{return K.selected}),Z.methods.set("_getFocusedIndex",()=>{return K.focusVisible?K.focusedIndex:-1});let{forceRender:a}=Z.getRenderFns(),h=()=>{a();let V=(X)=>{let P=k.get(X);if(P===void 0)return;return Z.dataManager.getItem(P)};w.emit("selection:change",{selected:yJ(K),items:PJ(K,V)})},u=$0(Z.rawConfig.padding),b=_.horizontal?u.left:u.top,d=_.horizontal?u.right:u.bottom,J0=Z.getItemToScrollIndexFn(),o=null,H=null,C=null,S=!1,c=()=>{if(S)return;S=!0,o=Z.methods.get("_getNavDelta")??null,H=Z.methods.get("_navigate")??null,C=Z.methods.get("_scrollItemIntoView")??null},F=()=>{return c(),o?o():{ud:1,lr:0,cols:0}},y=(V)=>{if(V<0)return;if(c(),C)C(V);else{let X=Z.state.viewportState.containerSize,P=Z.state.viewportState.scrollPosition,M=Z.dataManager.getTotal(),A=Z.getCachedCompression(),{visibleRange:W}=Z.state.viewportState,$=J0(V),E=XJ($,Z.sizeCache,P,X,b,d,A,M,W);if(E!==P)Z.scrollController.scrollTo(Z.adjustScrollPosition(E))}},O=()=>{let V=J0(Math.max(0,K.focusedIndex)),X=Z.sizeCache.getSize(V),{ud:P}=F();return Math.max(P,Math.floor(Z.state.viewportState.containerSize/X)*P)};D=document.createElement("div"),D.setAttribute("aria-live","polite"),D.setAttribute("aria-atomic","true"),D.className=`${T}-live-region`,D.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",(N.root.getAttribute("role")==="grid"?N.root.parentElement??N.root:N.root).appendChild(D);let x=D;w.on("selection:change",({selected:V})=>{let X=V.length;if(X===0)x.textContent="";else if(X===1)x.textContent="1 item selected";else x.textContent=`${X} items selected`});let l=()=>{if(Z.state.isDestroyed)return;if(!N.root.matches(":focus-visible"))return;let V=Z.dataManager.getTotal();if(V===0)return;let X=K.focusedIndex>=0?Math.min(K.focusedIndex,V-1):0;X=v(X,1,V),K=c0(K,X),K.focusVisible=!0,N.root.setAttribute("aria-activedescendant",`${z}-item-${X}`),y(X);let P=Z.dataManager.getItem(X);if(P)Z.renderer.updateItemClasses(X,K.selected.has(P.id),!0)};if(_.interactive)N.root.addEventListener("focusin",l);let p=(V)=>{if(Z.state.isDestroyed)return;let X=V.relatedTarget;if(X&&N.root.contains(X))return;let P=K.focusedIndex;if(K.focusVisible=!1,N.root.removeAttribute("aria-activedescendant"),P>=0){let M=Z.dataManager.getItem(P);if(M)Z.renderer.updateItemClasses(P,K.selected.has(M.id),!1)}};if(_.interactive)N.root.addEventListener("focusout",p);if(Z.clickHandlers.push((V)=>{if(Z.state.isDestroyed)return;let P=V.target.closest("[data-index]");if(!P)return;let M=parseInt(P.dataset.index??"-1",10);if(M<0)return;let A=Z.dataManager.getItem(M);if(!A)return;if(G(M))return;if(w.emit("item:click",{item:A,index:M,event:V}),q==="multiple"&&V.shiftKey&&K.focusedIndex>=0){let W=B>=0?B:K.focusedIndex,$=Z.getAllLoadedItems();K=ZJ(K,$,W,M,q),K=c0(K,M),K.focusVisible=j,B=M,N.root.setAttribute("aria-activedescendant",`${z}-item-${M}`),h();return}B=M,K=c0(K,M),K.focusVisible=j,N.root.setAttribute("aria-activedescendant",`${z}-item-${M}`),K=d0(K,A.id,q),h()}),_.interactive)Z.keydownHandlers.push((V)=>{if(Z.state.isDestroyed)return;let X=Z.dataManager.getTotal(),P=K.focusedIndex,M=!1,A=!1,W=K;if(c(),H)switch(V.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":{let $=H(K.focusedIndex,V.key,X);if($!==K.focusedIndex)W=c0(K,$),W.focusVisible=!0,M=!0,A=!0;else{V.preventDefault();return}break}}if(!M)switch(V.key){case"ArrowUp":W=UJ(K,X,_.wrap,F().ud),W.focusVisible=!0,M=!0,A=!0;break;case"ArrowDown":W=KJ(K,X,_.wrap,F().ud),W.focusVisible=!0,M=!0,A=!0;break;case"ArrowLeft":{let{lr:$}=F();if($)W=UJ(K,X,_.wrap,$),W.focusVisible=!0,M=!0,A=!0;break}case"ArrowRight":{let{lr:$}=F();if($)W=KJ(K,X,_.wrap,$),W.focusVisible=!0,M=!0,A=!0;break}case"PageUp":W=$J(K,X,O(),"up"),W.focusVisible=!0,M=!0,A=!0;break;case"PageDown":W=$J(K,X,O(),"down"),W.focusVisible=!0,M=!0,A=!0;break;case"Home":{W=T1(K,X),W.focusVisible=!0,M=!0,A=!0;break}case"End":{W=k1(K,X),W.focusVisible=!0,M=!0,A=!0;break}}switch(V.key){case" ":case"Enter":if(V.key===" "&&V.shiftKey&&q==="multiple"&&K.focusedIndex>=0){if(B>=0){let $=Z.getAllLoadedItems();W=ZJ(W,$,B,K.focusedIndex,q)}W.focusVisible=!0,M=!0;break}if(K.focusedIndex>=0&&!G(K.focusedIndex)){let $=Z.dataManager.getItem(K.focusedIndex);if($)W=d0(K,$.id,q),W.focusVisible=!0;B=K.focusedIndex,M=!0}break;case"a":if((V.ctrlKey||V.metaKey)&&q==="multiple"){let $=Z.getAllLoadedItems();if(K.selected.size===$.length)W=HJ(W);else W=bJ(W,$,q);W.focusVisible=!0,M=!0,A=!1}break}if(A&&R){let $=W.focusedIndex>P?1:-1;W.focusedIndex=v(W.focusedIndex,$,X)}if(V.shiftKey&&q==="multiple"&&A&&W.focusedIndex>=0){let $=V.key==="ArrowUp"||V.key==="ArrowDown"||V.key==="ArrowLeft"||V.key==="ArrowRight",E=(V.ctrlKey||V.metaKey)&&(V.key==="Home"||V.key==="End");if($){if(U==="origin"){if(P>=0){let L=Z.dataManager.getItem(P);if(L)W=d0(W,L.id,q)}}else{let L=Z.dataManager.getItem(W.focusedIndex);if(L)W=d0(W,L.id,q)}B=W.focusedIndex,A=!1}else if(E){let L=Z.getAllLoadedItems(),g=P>=0?P:W.focusedIndex;W=ZJ(W,L,g,W.focusedIndex,q),B=W.focusedIndex,A=!1}}if(Y&&q==="single"&&A&&W.focusedIndex>=0){let $=Z.dataManager.getItem(W.focusedIndex);if($)W=m0(W,[$.id],q);A=!1}if(M){V.preventDefault(),K=W;let $=K.focusedIndex;if($>=0)y($),N.root.setAttribute("aria-activedescendant",`${z}-item-${$}`);else N.root.removeAttribute("aria-activedescendant");if(A){let{selected:E}=K;if(P>=0&&P!==$){let L=Z.dataManager.getItem(P);if(L)Z.renderer.updateItemClasses(P,E.has(L.id),!1)}if($>=0){let L=Z.dataManager.getItem($);if(L)Z.renderer.updateItemClasses($,E.has(L.id),!0)}}else h()}});Z.methods.set("select",(...V)=>{K=m0(K,V,q),h()}),Z.methods.set("deselect",(...V)=>{K=kJ(K,V),h()}),Z.methods.set("toggleSelect",(V)=>{K=d0(K,V,q),h()}),Z.methods.set("selectAll",()=>{if(q!=="multiple")return;let V=Z.getAllLoadedItems();K=bJ(K,V,q),f(),h()}),Z.methods.set("clearSelection",()=>{K=HJ(K),h()}),Z.methods.set("getSelected",()=>{return yJ(K)}),Z.methods.set("getSelectedItems",()=>{return PJ(K,(X)=>{let P=k.get(X);return P===void 0?void 0:Z.dataManager.getItem(P)})});let r=(V)=>{let X=Z.dataManager.getTotal();if(X===0)return;if(c(),H){let W=V==="next"?"ArrowDown":"ArrowUp",$=H(K.focusedIndex,W,X);K=c0(K,$)}else{let{ud:W}=F();K=V==="next"?KJ(K,X,_.wrap,W):UJ(K,X,_.wrap,W)}let P=V==="next"?1:-1;K.focusedIndex=v(K.focusedIndex,P,X);let M=K.focusedIndex,A=Z.dataManager.getItem(M);if(!A)return;K=m0(K,[A.id],q),y(M),h()};Z.methods.set("selectNext",()=>{r("next")}),Z.methods.set("selectPrevious",()=>{r("previous")}),Z.destroyHandlers.push(()=>{if(x&&x.parentNode)x.remove();N.root.removeEventListener("focusin",l),N.root.removeEventListener("focusout",p)})},destroy(){if(D&&D.parentNode)D.remove();D=null}}};var H4=(J)=>{try{let q=sessionStorage.getItem(J);if(!q)return;return JSON.parse(q)}catch{return}},dJ=(J)=>{let q=J?.autoSave,Y=q?H4(q):J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Q){Q.methods.set("getScrollSnapshot",()=>{let j=Q.scrollController.getScrollTop(),K=Q.getCachedCompression(),D=Q.getVirtualTotal(),B=Q.methods.get("getSelected"),Z=B&&B().length>0?B():void 0;if(D===0){let T={index:0,offsetInItem:0,total:0};if(Z)T.selectedIds=Z;return T}let N,w;if(K.isCompressed){let z=j/K.virtualSize*D;N=Math.max(0,Math.min(Math.floor(z),D-1)),w=(z-N)*Q.sizeCache.getSize(N)}else N=Q.sizeCache.indexAtOffset(j),w=j-Q.sizeCache.getOffset(N);w=Math.max(0,w);let _={index:N,offsetInItem:w,total:D};if(Z)_.selectedIds=Z;return _});let U=(j)=>{let{index:K,offsetInItem:D,selectedIds:B}=j,Z=Q.getVirtualTotal();if(Z===0&&j.total&&j.total>0){Q.dataManager.setTotal(j.total),Q.sizeCache.rebuild(j.total),Q.updateCompressionMode();let k=Q.getCachedCompression();Q.updateContentSize(k.virtualSize)}else if(Z===0)return;if(!Number.isFinite(K)||!Number.isFinite(D))return;let N=Q.getVirtualTotal();if(Q.sizeCache.getTotal()!==N){Q.sizeCache.rebuild(N),Q.updateCompressionMode();let k=Q.getCachedCompression();Q.updateContentSize(k.virtualSize)}let _=Q.getCachedCompression(),T=Math.max(0,Math.min(K,N-1)),z;if(_.isCompressed){let k=Q.sizeCache.getSize(T),f=k>0?D/k:0;z=(T+f)/N*_.virtualSize}else z=Q.sizeCache.getOffset(T)+D;let R=Q.state.viewportState.containerSize,G=Math.max(0,_.virtualSize-R);if(z=Math.max(0,Math.min(z,G)),Q.scrollController.scrollTo(z),B&&B.length>0){let k=Q.methods.get("select");if(k)k(...B)}let v=Q.methods.get("loadVisibleRange");if(v){let f=0,a=z,h=()=>{f++;let u=Q.state.viewportState.containerSize,b=Q.scrollController.getScrollTop();if(u>0){if(Math.abs(b-a)>1)Q.scrollController.scrollTo(a);v()}else if(f<10)requestAnimationFrame(h)};requestAnimationFrame(h)}else{let k=Q.methods.get("reload");if(k)requestAnimationFrame(()=>{k()})}};if(Q.methods.set("restoreScroll",U),q){let j=!!Y,K=()=>{if(j)return;let D=Q.methods.get("getScrollSnapshot");if(!D)return;let B=D();try{sessionStorage.setItem(q,JSON.stringify(B))}catch{}};if(Q.idleHandlers.push(()=>{if(j)j=!1;K()}),Q.emitter.on("selection:change",K),Y&&Y.total&&Y.total>0){let D=Q.methods.get("_cancelAutoLoad");if(D)D();Q.dataManager.setTotal(Y.total)}}if(Y)queueMicrotask(()=>{U(Y)})}}};var x1=(J,q=50,Y=1/0,Q=!0)=>{let U=J,j=[],K=0,D=()=>{j=U.map((G,v)=>({def:G,index:v,width:0,minWidth:$4(G.minWidth??q,1),maxWidth:G.maxWidth??Y,resizable:G.resizable??Q,offset:0}))},B=(G)=>{if(j.length===0){K=0;return}let v=0,k=0;for(let f=0;f<j.length;f++){let a=j[f],h=a.def;if(h.width!==void 0)a.width=cJ(h.width,a.minWidth,a.maxWidth),v+=a.width;else k++}if(k>0){let a=Math.max(0,G-v)/k;for(let h=0;h<j.length;h++){let u=j[h];if(u.def.width===void 0)u.width=cJ(a,u.minWidth,u.maxWidth)}}Z()},Z=()=>{let G=0;for(let v=0;v<j.length;v++){let k=j[v];k.offset=G,G+=k.width}K=G},N=(G,v)=>{if(G<0||G>=j.length)return 0;let k=j[G];if(!k.resizable)return k.width;let f=cJ(v,k.minWidth,k.maxWidth);return k.width=f,Z(),f},w=(G)=>{return j[G]},_=(G)=>{if(j.length===0)return;if(G<0)return j[0];if(G>=K)return j[j.length-1];let v=0,k=j.length-1;while(v<k){let f=v+k>>>1,a=j[f];if(G<a.offset)k=f-1;else if(G>=a.offset+a.width)v=f+1;else return a}return j[v]},T=(G)=>{if(G<0||G>=j.length)return 0;return j[G].offset},z=(G)=>{if(G<0||G>=j.length)return 0;return j[G].width},R=(G)=>{U=G,D()};return D(),{get columns(){return j},get totalWidth(){return K},resolve:B,updateColumns:R,resizeColumn:N,getColumn:w,getColumnAtX:_,getColumnOffset:T,getColumnWidth:z}},cJ=(J,q,Y)=>Math.min(Y,Math.max(q,J)),$4=(J,q)=>Math.max(q,J);var m1=(J,q,Y,Q,U,j,K)=>{let D=document.createElement("div");D.setAttribute("role","rowgroup");let B=document.createElement("div");B.className=`${Q}-table-header`,B.setAttribute("role","row"),B.setAttribute("aria-rowindex","1"),B.style.height=`${Y}px`;let Z=document.createElement("div");Z.className=`${Q}-table-header-scroll`,Z.setAttribute("role","presentation"),B.appendChild(Z),D.appendChild(B),J.insertBefore(D,J.firstChild),q.style.cssText=`position:absolute;top:${Y}px;left:0px;right:0px;bottom:0px;height:auto`;let N=[],w=[],_=[],T=!0,z=null,R="asc",G=null,v=!1,k=-1,f=0,a=0,h=(O,I)=>{let x=document.createElement("div");x.className=`${Q}-table-header-cell`,x.setAttribute("role","columnheader"),x.setAttribute("aria-colindex",String(I+1)),x.dataset.columnKey=O.def.key;let l=O.def.align;if(l==="center")x.classList.add(`${Q}-table-header-cell--center`);else if(l==="right")x.classList.add(`${Q}-table-header-cell--right`);let p=document.createElement("div");p.className=`${Q}-table-header-content`;let r=O.def.header?O.def.header(O.def):O.def.label;if(typeof r==="string")p.textContent=r;else p.appendChild(r);if(x.appendChild(p),O.def.sortable){let V=document.createElement("span");V.className=`${Q}-table-header-sort`,V.setAttribute("aria-hidden","true"),x.appendChild(V),_.push(V),x.classList.add(`${Q}-table-header-cell--sortable`)}else _.push(null);if(O.resizable){let V=document.createElement("div");V.className=`${Q}-table-header-resize`,V.dataset.resizeIndex=String(I),x.appendChild(V),w.push(V)}return x},u=(O)=>{G=O,Z.textContent="",N=[],w=[],_=[];let I=O.columns;for(let x=0;x<I.length;x++){let l=I[x],p=h(l,x);N.push(p),Z.appendChild(p)}if(b(O),z)d(z,R)},b=(O)=>{G=O;let I=O.columns;Z.style.width=`${O.totalWidth}px`;for(let x=0;x<N.length&&x<I.length;x++){let l=N[x],p=I[x];l.style.width=`${p.width}px`}},d=(O,I)=>{if(z=O,R=I,!G)return;let x=G.columns;for(let l=0;l<_.length&&l<x.length;l++){let p=_[l];if(!p)continue;if(x[l].def.key===O&&O!==null)p.textContent=I==="asc"?"▲":"▼",p.style.opacity="0.7",N[l].setAttribute("aria-sort",I==="asc"?"ascending":"descending");else p.textContent="",p.style.opacity="0",N[l].removeAttribute("aria-sort")}},J0=(O)=>{Z.style.transform=`translateX(${-O}px)`},o=(O)=>{let I=O.target;if(!I.dataset.resizeIndex)return;if(O.preventDefault(),O.stopPropagation(),k=parseInt(I.dataset.resizeIndex,10),!G)return;let x=G.getColumn(k);if(!x||!x.resizable)return;v=!0,f=O.clientX,a=x.width,J.classList.add(`${Q}--col-resizing`),J.style.cursor="col-resize",I.classList.add(`${Q}-table-header-resize--active`),I.setPointerCapture(O.pointerId),I.addEventListener("pointermove",H),I.addEventListener("pointerup",C),I.addEventListener("pointercancel",C)},H=(O)=>{if(!v||!G)return;let I=O.clientX-f;if(Math.abs(I)<1)return;let x=Math.max(0,a+I);U(k,x)},C=(O)=>{if(!v)return;let I=O.target;I.removeEventListener("pointermove",H),I.removeEventListener("pointerup",C),I.removeEventListener("pointercancel",C);try{I.releasePointerCapture(O.pointerId)}catch{}I.classList.remove(`${Q}-table-header-resize--active`),J.classList.remove(`${Q}--col-resizing`),J.style.cursor="",v=!1,k=-1},S=(O)=>{let I=O.target;if(I.dataset.resizeIndex!==void 0)return;if(v)return;let x=I;while(x&&!x.dataset.columnKey)if(x=x.parentElement,x===B||x===null)return;if(!x||!x.dataset.columnKey)return;let l=x.dataset.columnKey;if(!G)return;let p=G.columns,r=-1;for(let X=0;X<p.length;X++)if(p[X].def.key===l){r=X;break}if(r===-1)return;let V=p[r];if(K)K({key:l,index:r,event:O});if(V.def.sortable&&j){let X;if(z===l)if(R==="asc")X="desc";else X=null;else X="asc";j({key:l,index:r,direction:X})}};return B.addEventListener("pointerdown",o),B.addEventListener("click",S),{element:B,update:b,updateSort:d,rebuild:u,show:()=>{if(T)return;T=!0,B.style.display=""},hide:()=>{if(!T)return;T=!1,B.style.display="none"},destroy:()=>{B.removeEventListener("pointerdown",o),B.removeEventListener("click",S),q.style.cssText="",D.remove(),N=[],w=[],_=[],G=null,T=!1},syncScroll:J0}};var y4=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(q)=>{if(q.parentNode?.removeChild(q),J.length<200)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="",J.push(q)},clear:()=>{J.length=0}}},d1=(J,q,Y,Q,U,j,K,D,B)=>{let Z=y4(),N=new Map,w=-1,_=Y,T=null,z=null,R=null,G=(E,L)=>{z=E,R=L},v=(E,L)=>{if(L)E.setAttribute("aria-selected","true");else E.removeAttribute("aria-selected")},k=(E,L,g,i)=>{E.setAttribute("role",L),E.setAttribute("data-id",String(g)),E.setAttribute("data-index",String(i))},f=(E)=>String(E).startsWith("__placeholder_"),a=`${U}-item ${U}-table-row`,h=`${U}-item--selected`,u=`${U}-item--focused`,b=`${U}-table-cell`,d=`${U}-table-cell--center`,J0=`${U}-table-cell--right`,o=`${U}-item--odd`,H=`${U}-item--placeholder`,C=`${U}-item--replaced`,S=`${U}-item ${U}-table-row ${U}-table-group-header`,c=`${U}-table-group-header-content`,F=(E,L,g,i,n=!1)=>{if(g.def.cell){let t=g.def.cell(L,g.def,i);if(typeof t==="string")E.innerHTML=t;else E.replaceChildren(t)}else{let t=L[g.def.key],j0=t!=null?String(t):"";if(n&&j0)E.innerHTML=`<span>${j0}</span>`;else E.textContent=j0}},y=(E,L,g,i,n=!1)=>{let t=a;if(D){if(T){let j0=T(L);if(j0>=0&&(j0&1)===1)t+=` ${o}`}else if((L&1)===1)t+=` ${o}`}if(n)t+=` ${H}`;if(g)t+=` ${h}`;if(i)t+=` ${u}`;E.className=t},O=(E,L,g)=>{if(g?.compression?.isCompressed)return Math.round(r0(E,g.scrollPosition,L,g.totalItems,g.containerSize,g.compression,g.rangeStart));return L.getOffset(E)},I=(E,L)=>{let g=L.def.align;if(g==="center")E.classList.add(d),E.classList.remove(J0);else if(g==="right")E.classList.add(J0),E.classList.remove(d);else E.classList.remove(d,J0)},x=(E,L)=>{let i=_.columns.length;if(L.length===i)return L;let n=[];for(let t=0;t<i;t++){let j0;if(t<L.length)j0=L[t];else j0=document.createElement("div"),j0.className=b,E.appendChild(j0);n.push(j0)}for(let t=i;t<L.length;t++)L[t].remove();return n},l=(E,L,g,i)=>{let n=Z.acquire(),t=E,j0=g.getSize(L),s=O(L,g,i);n.style.cssText=`width:${_.totalWidth}px;height:${j0}px;transform:translateY(${s}px)`,n.className=S,k(n,"presentation",E.id,L),n.removeAttribute("aria-selected"),n.removeAttribute("aria-rowindex"),n.replaceChildren();let Q0=document.createElement("div");if(Q0.className=c,R){let q0=R(t.groupKey,t.groupIndex);if(typeof q0==="string")Q0.innerHTML=q0;else Q0.appendChild(q0)}return n.appendChild(Q0),{element:n,cells:[],index:L,isGroupHeader:!0,lastItemId:E.id,lastSelected:!1,lastFocused:!1,lastOffset:s,lastHeight:j0}},p=(E,L,g,i,n,t)=>{let j0=Z.acquire(),s=n.getSize(L),Q0=O(L,n,t),q0=f(E.id);j0.style.cssText=`width:${_.totalWidth}px;height:${s}px;transform:translateY(${Q0}px)`,y(j0,L,g,i,q0),k(j0,"row",E.id,L),j0.id=`${j}-${L}`,j0.setAttribute("aria-rowindex",String(L+2)),v(j0,g);let U0=x(j0,[]),K0=_.columns;for(let Z0=0;Z0<U0.length&&Z0<K0.length;Z0++){let V0=U0[Z0],G0=K0[Z0];V0.style.cssText=`left:${G0.offset}px;width:${G0.width}px`,V0.setAttribute("role","gridcell"),V0.setAttribute("aria-colindex",String(Z0+1)),I(V0,G0),F(V0,E,G0,L,q0)}return{element:j0,cells:U0,index:L,isGroupHeader:!1,lastItemId:E.id,lastSelected:g,lastFocused:i,lastOffset:Q0,lastHeight:s}},r=(E,L,g,i,n)=>{for(let[q0,U0]of N)if(q0<L.start||q0>L.end)Z.release(U0.element),N.delete(q0);let t=!1,j0=K();if(j0!==w)w=j0,t=!0;let s=null,Q0=q();T=typeof D==="string"&&B?B():null;for(let q0=L.start;q0<=L.end;q0++){let U0=q0-L.start,K0=E[U0];if(!K0)continue;let Z0=g.has(K0.id),V0=q0===i,G0=z?z(K0):!1,X0=N.get(q0);if(X0){if(X0.isGroupHeader!==G0){Z.release(X0.element),N.delete(q0);let B0=G0?l(K0,q0,Q0,n):p(K0,q0,Z0,V0,Q0,n);if(N.set(q0,B0),!s)s=document.createDocumentFragment();s.appendChild(B0.element);continue}if(G0){if(X0.lastItemId!==K0.id){let D0=K0,W0=X0.element.firstElementChild;if(W0&&R){let F0=R(D0.groupKey,D0.groupIndex);if(typeof F0==="string")W0.innerHTML=F0;else W0.replaceChildren(F0)}X0.element.setAttribute("data-id",String(K0.id)),X0.lastItemId=K0.id}let O0=O(q0,Q0,n);if(X0.lastOffset!==O0)X0.lastOffset=O0,X0.element.style.transform=`translateY(${O0}px)`;let A0=Q0.getSize(q0);if(X0.lastHeight!==A0)X0.lastHeight=A0,X0.element.style.height=`${A0}px`}else{let B0=X0.lastItemId!==K0.id,O0=X0.lastSelected!==Z0,A0=X0.lastFocused!==V0;if(B0){let F0=X0.lastItemId!=null&&f(X0.lastItemId),M0=f(K0.id);if(!M0&&R0(g,q0,K0.id))Z0=!0;let T0=_.columns;for(let y0=0;y0<X0.cells.length&&y0<T0.length;y0++)F(X0.cells[y0],K0,T0[y0],q0,M0);if(y(X0.element,q0,Z0,V0,M0),X0.element.setAttribute("data-id",String(K0.id)),v(X0.element,Z0),F0&&!M0)X0.element.classList.add(C),setTimeout(()=>{X0.element.classList.remove(C)},300);X0.lastItemId=K0.id,X0.lastSelected=Z0,X0.lastFocused=V0}else if(O0||A0)y(X0.element,q0,Z0,V0,f(K0.id)),v(X0.element,Z0),X0.lastSelected=Z0,X0.lastFocused=V0;let D0=O(q0,Q0,n);if(X0.lastOffset!==D0)X0.lastOffset=D0,X0.element.style.transform=`translateY(${D0}px)`;let W0=Q0.getSize(q0);if(X0.lastHeight!==W0)X0.lastHeight=W0,X0.element.style.height=`${W0}px`;if(t)X0.element.setAttribute("aria-rowindex",String(q0+2))}}else{if(R0(g,q0,K0.id))Z0=!0;let B0=G0?l(K0,q0,Q0,n):p(K0,q0,Z0,V0,Q0,n);if(N.set(q0,B0),!s)s=document.createDocumentFragment();s.appendChild(B0.element)}}if(s)J.appendChild(s)},V=(E)=>{let L=q();for(let[g,i]of N){let n=O(g,L,E);if(i.lastOffset!==n)i.lastOffset=n,i.element.style.transform=`translateY(${n}px)`}},X=(E,L,g,i)=>{let n=N.get(E);if(!n)return;if(n.isGroupHeader)return;let t=_.columns;for(let j0=0;j0<n.cells.length&&j0<t.length;j0++)F(n.cells[j0],L,t[j0],E);n.element.setAttribute("data-id",String(L.id)),n.lastItemId=L.id,y(n.element,E,g,i),v(n.element,g),n.lastSelected=g,n.lastFocused=i},P=(E,L,g)=>{let i=N.get(E);if(!i)return;if(i.isGroupHeader)return;let n=i.lastSelected!==L,t=i.lastFocused!==g;if(n||t)y(i.element,E,L,g),v(i.element,L),i.lastSelected=L,i.lastFocused=g},M=(E)=>{_=E;let L=E.columns;for(let[,g]of N)if(g.element.style.width=`${E.totalWidth}px`,g.cells.length>0)for(let i=0;i<g.cells.length&&i<L.length;i++){let n=g.cells[i],t=L[i];n.style.left=`${t.offset}px`,n.style.width=`${t.width}px`}},A=(E)=>{return N.get(E)?.element},W=()=>{for(let[,E]of N)Z.release(E.element);N.clear(),w=-1};return{render:r,updatePositions:V,updateItem:X,updateItemClasses:P,getElement:A,updateColumnLayout:M,setGroupHeaderFn:G,clear:W,destroy:()=>{W(),Z.clear()}}};var P4=new Set,lJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist] withTable: either rowHeight or estimatedRowHeight is required");let q=null,Y=null,Q=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(U){let{dom:j,emitter:K,config:D}=U,{classPrefix:B}=D;if(D.horizontal)throw Error("[vlist] withTable cannot be used with orientation: 'horizontal'");if(D.reverse)throw Error("[vlist] withTable cannot be used with reverse: true");let Z=J.resizable??!0,N=J.minColumnWidth??50,w=J.maxColumnWidth??1/0,_=J.columnBorders??!1,T=J.rowBorders??!0,z=J.rowHeight,R=U.rawConfig.padding,G=!R?0:typeof R==="number"?R*2:R.length===2?R[1]*2:R[1]+R[3],v=J.headerHeight??(typeof z==="number"?z:40),k=J.sort?.key??null,f=J.sort?.direction??"asc";if(q=x1(J.columns,N,w,Z),typeof z==="function")U.setSizeConfig(z);else if(typeof z==="number")U.setSizeConfig(z);if(U.rebuildSizeCache(),j.root.classList.add(`${B}--table`),T)j.root.classList.add(`${B}--table-row-borders`);if(_)j.root.classList.add(`${B}--table-col-borders`);j.root.setAttribute("role","grid"),j.root.setAttribute("aria-colcount",String(J.columns.length));let a=-1,h=j.items.getAttribute("aria-label");if(h)j.root.setAttribute("aria-label",h),j.items.removeAttribute("aria-label");j.items.setAttribute("role","rowgroup"),j.viewport.setAttribute("role","none"),j.content.setAttribute("role","none"),j.viewport.removeAttribute("tabindex");let u=U.getContainerWidth()-G;q.resolve(u);let b=(A,W)=>{if(!q)return;let $=q.getColumn(A);if(!$)return;let E=$.width,L=q.resizeColumn(A,W);if(Y)Y.update(q);if(Q)Q.updateColumnLayout(q);o(),K.emit("column:resize",{key:$.def.key,index:A,previousWidth:E,width:L})},d=(A)=>{if(A.direction===null)k=null,f="asc";else k=A.key,f=A.direction;if(Y)Y.updateSort(k,f);K.emit("column:sort",A)},J0=(A)=>{K.emit("column:click",A)};if(Y=m1(j.root,j.viewport,v,B,b,d,J0),Y.rebuild(q),k)Y.updateSort(k,f);let o=()=>{if(!q)return;let A=q.totalWidth;j.content.style.minWidth=`${A}px`,j.items.style.minWidth=`${A}px`};o(),Q=d1(j.items,()=>U.sizeCache,q,J.columns,B,D.ariaIdPrefix,()=>U.dataManager.getTotal(),U.rawConfig.item?.striped,()=>U.getStripeIndexFn());let H=null,C=null,S=!1,c=()=>{if(S)return;S=!0,H=U.methods.get("_getSelectedIds")??null,C=U.methods.get("_getFocusedIndex")??null},F=-1,y=-1,O=-1,I=!0,x=D.overscan,l={start:0,end:0},p={start:0,end:0},r=()=>{if(U.state.isDestroyed)return;let A=U.scrollController.getScrollTop(),W=U.state.viewportState.containerSize,$=U.getVirtualTotal(),E=U.state.viewportState.isCompressed;if(!I&&A===F&&W===y&&$===O)return;F=A,y=W,O=$,I=!1;let L=$+1;if(L!==a)a=L,j.root.setAttribute("aria-rowcount",String(L));U.getVisibleRange(A,W,$,l),p.start=Math.max(0,l.start-x),p.end=Math.min($-1,l.end+x);let g=U.state.viewportState;g.scrollPosition=A,g.visibleRange.start=l.start,g.visibleRange.end=l.end,g.renderRange.start=p.start,g.renderRange.end=p.end;let i=U.state.lastRenderRange,n=i.start!==p.start||i.end!==p.end;if(!n&&E){Q.updatePositions(U.getCompressionContext());return}if(!n)return;let t=E?U.getCompressionContext():void 0,j0=U.dataManager.getItemsInRange(p.start,p.end);c();let s=H?H():P4,Q0=C?C():-1;Q.render(j0,p,s,Q0,t),i.start=p.start,i.end=p.end,K.emit("range:change",{range:{start:p.start,end:p.end}})},V=()=>{if(U.state.isDestroyed)return;U.state.lastRenderRange.start=-1,U.state.lastRenderRange.end=-1,I=!0,r()};U.setRenderFns(r,V),U.setUpdateItemClassesFn((A,W,$)=>{Q?.updateItemClasses(A,W,$)});let X=Y,P=-1,M=()=>{let A=j.viewport.scrollLeft;if(A!==P){if(P=A,X.syncScroll)X.syncScroll(A)}};U.afterScroll.push(M),j.viewport.addEventListener("scroll",M,{passive:!0}),U.resizeHandlers.push((A,W)=>{if(!q)return;if(q.resolve(A-G),Y)Y.update(q);if(Q)Q.updateColumnLayout(q);o()}),U.methods.set("updateColumns",(A)=>{if(!q||!Y)return;if(q.updateColumns(A),q.resolve(U.getContainerWidth()-G),Y.rebuild(q),k)Y.updateSort(k,f);if(o(),Q)Q.updateColumnLayout(q),Q.clear();U.forceRender()}),U.methods.set("resizeColumn",(A,W)=>{if(!q)return;let $;if(typeof A==="string"){let E=q.columns;$=-1;for(let L=0;L<E.length;L++)if(E[L].def.key===A){$=L;break}if($===-1)return}else $=A;b($,W)}),U.methods.set("getColumnWidths",()=>{if(!q)return{};let A={},W=q.columns;for(let $=0;$<W.length;$++)A[W[$].def.key]=W[$].width;return A}),U.methods.set("setSort",(A,W)=>{if(k=A,f=W??"asc",Y)Y.updateSort(k,f)}),U.methods.set("getSort",()=>{return{key:k,direction:f}}),U.methods.set("_getTableLayout",()=>q),U.methods.set("_updateRenderedItem",(A,W,$,E)=>{Q?.updateItem(A,W,$,E)}),U.methods.set("_replaceTableRenderer",(A)=>{Q=A}),U.methods.set("_updateTableForGroups",(A,W)=>{if(Q)Q.setGroupHeaderFn(A,W)}),U.methods.set("_getTableHeaderHeight",()=>v),U.keydownHandlers.push((A)=>{if(A.key!=="ArrowLeft"&&A.key!=="ArrowRight")return;if(!q)return;let W=q.columns;if(W.length===0)return;let $=j.viewport.clientWidth;if(q.totalWidth<=$)return;let E=j.viewport.scrollLeft;if(A.key==="ArrowRight"){for(let L=0;L<W.length;L++)if(W[L].offset>E+1){j.viewport.scrollLeft=W[L].offset,A.preventDefault();return}}else{for(let L=W.length-1;L>=0;L--)if(W[L].offset<E-1){j.viewport.scrollLeft=W[L].offset,A.preventDefault();return}if(E>0)j.viewport.scrollLeft=0,A.preventDefault()}}),U.contentSizeHandlers.push(()=>{o()}),U.destroyHandlers.push(()=>{if(j.viewport.removeEventListener("scroll",M),Y)Y.destroy(),Y=null;if(Q)Q.destroy(),Q=null;j.content.style.minWidth="",j.items.style.minWidth="",j.root.classList.remove(`${B}--table`),j.root.removeAttribute("role"),j.root.removeAttribute("aria-colcount"),j.viewport.removeAttribute("role"),j.viewport.setAttribute("tabindex","-1"),j.content.removeAttribute("role");let A=j.root.getAttribute("aria-label");if(A)j.items.setAttribute("aria-label",A),j.root.removeAttribute("aria-label");j.root.removeAttribute("aria-rowcount"),j.items.setAttribute("role","listbox")})},destroy(){if(Y)Y.destroy(),Y=null;if(Q)Q.destroy(),Q=null}}};var c1=(J,q)=>{let Y=new Map,Q=(j)=>{let K=Y.get(j);return K!==void 0?K:J},U=f0(Q,q);return{getOffset(j){return U.getOffset(j)},getSize(j){return Q(j)},indexAtOffset(j){return U.indexAtOffset(j)},getTotalSize(){return U.getTotalSize()},getTotal(){return U.getTotal()},rebuild(j){if(j<U.getTotal()){for(let K of Y.keys())if(K>=j)Y.delete(K)}U=f0(Q,j)},isVariable(){return!0},setMeasuredSize(j,K){Y.set(j,K)},isMeasured(j){return Y.has(j)},getEstimatedSize(){return J},measuredCount(){return Y.size}}};var rJ=()=>{let J=null;return{name:"withAutoSize",priority:5,setup(q){let Y=q.config.horizontal,U=q.rawConfig.item,j=Y?U.estimatedWidth:U.estimatedHeight;if(j==null||j<=0)throw Error("[vlist/withAutoSize] Requires item.estimatedHeight (or item.estimatedWidth for horizontal)");let K=U.gap??0,D=q.getVirtualTotal(),B=$0(q.rawConfig.padding),Z=h0(B,Y),N=c1(j+K,D),w=q.methods.get("_setSizeCache"),_=q.methods.get("_setConstrainSize");if(!w||!_)throw Error("[vlist/withAutoSize] Incompatible builder version");w(N),_((h)=>N.isMeasured(h));let T=new WeakMap,z=0,R=!1,G=2,v=(h)=>{let u=q.scrollController.getScrollTop(),b=q.state.viewportState.containerSize;if(b<=0)return!1;let d=Math.max(0,h+Z-b);return u>=d-G},k=()=>{let h=N.getTotalSize(),u=q.state.viewportState.containerSize;if(u<=0)return;let b=Math.max(0,h+Z-u),d=q.scrollController.getScrollTop();if(b>d)q.scrollController.scrollTo(b)},f=()=>{let h=N.getTotalSize();q.updateContentSize(h)},a=()=>{if(R){let h=q.dom.viewport,u=h.scrollHeight,b=u-h.clientHeight,d=q.scrollController.getScrollTop(),J0=b>0&&d>=b-G,o=q.getVirtualTotal(),H=q.state.viewportState.renderRange.end,C=o>0&&H>=o-1,S=N.getTotalSize()+Z,c=Math.abs(S-u),F=C&&b>0&&d>=b-c-G,y=J0||F;if(f(),R=!1,y)h.scrollHeight,k(),q.forceRender()}};J=new ResizeObserver((h)=>{if(q.state.isDestroyed)return;let u=!1,b=q.state.viewportState.visibleRange.start;for(let O of h){let I=T.get(O.target);if(I===void 0)continue;let x=Y?O.borderBoxSize[0].inlineSize:O.borderBoxSize[0].blockSize;if(!N.isMeasured(I)){let l=x+K,p=N.getSize(I);if(N.setMeasuredSize(I,l),u=!0,I<b&&l!==p)z+=l-p;J.unobserve(O.target);let r=O.target;if(Y)r.style.width=`${x}px`;else r.style.height=`${x}px`}}if(!u)return;let d=N.getTotalSize();if(N.rebuild(q.getVirtualTotal()),z!==0){let O=q.scrollController.getScrollTop();q.scrollController.scrollTo(O+z),z=0}let J0=v(d),o=q.getVirtualTotal(),H=q.state.viewportState.renderRange.end,C=o>0&&H>=o-1,S=q.dom.viewport,c=S.scrollHeight-S.clientHeight,F=q.scrollController.getScrollTop(),y=c>0&&F>=c-G;if(J0||C||!q.scrollController.isScrolling()){if(f(),R=!1,J0||C&&y)S.scrollHeight,k()}else R=!0;q.forceRender()}),q.afterRenderBatch.push((h)=>{for(let{index:u,element:b}of h)if(!N.isMeasured(u))T.set(b,u),J.observe(b)}),q.idleHandlers.push(a),q.destroyHandlers.push(()=>{if(J)J.disconnect(),J=null})},destroy(){if(J)J.disconnect(),J=null}}};var w4=50,R4=0.1;function l1(J){let q=0,Y=0,Q=0;function U(){return Q>0?Y/Q:0}function j(B){if(q=B,B>R4&&B<w4)Y+=B,Q++}function K(){let B=J.getTotal();if(B===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let w=J.getScrollPosition(),_=typeof J.getColumns==="function"?J.getColumns():1,z=Math.ceil(B/_)*Z,G=Math.min(z,x0)-N,v=z-N,k=G>0?v/G:1,f=w*k,a=Math.ceil((f+N)/Z);return Math.min(a*_,B)}function D(){let B=J.getTotal(),Z=K();return{progress:B>0?Math.min(100,Math.max(0,Z/B*100)):0,velocity:q,velocityAvg:U(),itemCount:Z,total:B}}return{getState:D,onVelocity:j}}export{lJ as withTable,dJ as withSnapshots,mJ as withSelection,zJ as withScrollbar,CJ as withScale,SJ as withPage,xJ as withMasonry,hJ as withGroups,gJ as withGrid,rJ as withAutoSize,vJ as withAsync,RJ as vlist,l1 as createStats};
|
|
1
|
+
var Q1=2,q1=(J=0)=>({velocity:0,sampleCount:0}),Y1=(J,Q)=>{let Y=performance.now(),q=J._lt??Y,K=J._lp??Q,j=Y-q;if(J._lp=Q,J._lt=Y,j===0)return J.sampleCount=Math.min(J.sampleCount+1,5),J;if(j>100)return J.velocity=0,J.sampleCount=1,J;return J.velocity=Math.abs(Q-K)/j,J.sampleCount=Math.min(J.sampleCount+1,5),J};var Q4=(J,Q)=>{let Y=Q;return{getOffset:(q)=>q*J,getSize:(q)=>J,indexAtOffset:(q)=>{if(Y===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(q/J),Y-1))},getTotalSize:()=>Y*J,getTotal:()=>Y,rebuild:(q)=>{Y=q},isVariable:()=>!1}},q4=(J,Q)=>{let Y=Q,q=new Float64Array(0),K=(U)=>{Y=U,q=new Float64Array(U+1),q[0]=0;for(let _=0;_<U;_++)q[_+1]=q[_]+J(_)};K(Q);let j=(U)=>{if(Y===0)return 0;if(U<=0)return 0;if(U>=q[Y])return Y-1;let _=0,W=Y-1;while(_<W){let Z=_+W+1>>>1;if(q[Z]<=U)_=Z;else W=Z-1}return _};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Y)return q[Y];return q[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>j(U),getTotalSize:()=>q[Y]??0,getTotal:()=>Y,rebuild:(U)=>K(U),isVariable:()=>!0}},f0=(J,Q)=>{if(typeof J==="number")return Q4(J,Q);return q4(J,Q)},j1=(J,Q,Y,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.ceil(Y/J.getSize(0));let K=0,j=0,U=Q;while(U<q&&j<Y)j+=J.getSize(U),K++,U++;return Math.max(1,K)};var X1=()=>{let J={},Q=(j,U)=>{if(!J[j])J[j]=new Set;return J[j].add(U),()=>Y(j,U)},Y=(j,U)=>{J[j]?.delete(U)};return{on:Q,off:Y,emit:(j,U)=>{J[j]?.forEach((_)=>{try{_(U)}catch(W){console.error(`[vlist] Error in event handler for "${String(j)}":`,W)}})},clear:(j)=>{if(j)delete J[j];else for(let U in J)delete J[U]}}};var K1=(J)=>{if(typeof J==="string"){let Q=document.querySelector(J);if(!Q)throw Error(`[vlist] Container not found: ${J}`);return Q}return J},o0=(J,Q)=>{let Y=document.createElement("div");if(Y.className=J,Q)Y.style.cssText=Q;return Y},U1=(J,Q,Y,q,K)=>{let j=q,U=o0(Q);if(j)U.classList.add(`${Q}--horizontal`);if(K!==!1)U.setAttribute("tabindex","0");let _=o0(`${Q}-viewport`,j?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%");_.setAttribute("tabindex","-1");let W=o0(`${Q}-content`,j?"position:relative;height:100%":"position:relative;width:100%"),Z=o0(`${Q}-items`,j?"position:relative;height:100%":"position:relative;width:100%");if(Z.setAttribute("role","listbox"),Y)Z.setAttribute("aria-label",Y);if(j)Z.setAttribute("aria-orientation","horizontal");let V=o0(`${Q}-live`,"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0");return V.setAttribute("aria-live","polite"),V.setAttribute("aria-atomic","true"),V.setAttribute("role","status"),W.appendChild(Z),_.appendChild(W),U.appendChild(V),U.appendChild(_),J.appendChild(U),{root:U,viewport:_,content:W,items:Z,liveRegion:V}};var Z1=(J=100)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(Y)=>{if(Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Q.push(Y)},clear:()=>{Q.length=0}}};var B1=(J,Q,Y,q,K)=>{if(q===0||Q===0){K.start=0,K.end=-1;return}let j=Y.indexAtOffset(J),U=Y.indexAtOffset(J+Q);if(U<q-1)U++;K.start=Math.max(0,j),K.end=Math.min(q-1,Math.max(0,U))},N1=(J,Q,Y,q)=>{q.start=Math.max(0,J.start-Q),q.end=Math.min(Y-1,J.end+Q)},W1=(J,Q,Y,q,K,j=0)=>{if(q===0)return 0;let U=Math.max(0,Math.min(J,q-1)),_=Q.getOffset(U),W=Q.getSize(U),Z=Q.getTotalSize(),V=Math.max(0,Z+j-Y),b;switch(K){case"center":b=_-(Y-W)/2;break;case"end":b=j>0&&_+W>=Z?V:_-Y+W;break;default:b=_}return Math.max(0,Math.min(b,V))};var YJ={top:0,right:0,bottom:0,left:0},y0=(J)=>{if(J==null)return YJ;if(typeof J==="number")return J===0?YJ:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[j,U]=J;return j===0&&U===0?YJ:{top:j,right:U,bottom:j,left:U}}let[Q,Y,q,K]=J;return Q===0&&Y===0&&q===0&&K===0?YJ:{top:Q,right:Y,bottom:q,left:K}},u0=(J,Q)=>Q?J.left+J.right:J.top+J.bottom,jJ=(J,Q)=>Q?J.top+J.bottom:J.left+J.right;var g0=(J,Q,Y)=>{let q=Array.from(Q).sort((U,_)=>U-_);if(q.length<=1)return;let K=[];for(let U=0;U<q.length;U++){let _=Y(q[U]);if(_)K.push(_)}if(K.length<=1)return;let j=J.firstChild;for(let U=0;U<K.length;U++){let _=K[U];if(_===j)j=j.nextSibling;else J.insertBefore(_,j)}};var V1=(J,Q)=>{let{dom:Y,emitter:q,resolvedConfig:K,rawConfig:j,rendered:U,pool:_,sharedState:W,isHorizontal:Z,classPrefix:V,contentSizeHandlers:b,idleHandlers:G,afterScroll:H,clickHandlers:S,keydownHandlers:$,resizeHandlers:M,destroyHandlers:w,methods:z,onScrollFrame:C,resizeObserver:r,renderRange:v,afterRenderBatch:g}=Q;return{get dom(){return Y},get sizeCache(){return J.hc},get emitter(){return q},get config(){return K},get rawConfig(){return j},adjustScrollPosition(P){if(J.mp===0)return P;let m=Z?J.cw:J.ch,t=J.hc.getTotalSize(),s=Math.max(0,t-m),T=Math.max(0,t+J.mp-m);if(P>=s)return T;return Math.min(P,T)},get renderer(){return{render:(P,m,t,s,T)=>{J.ss=t,J.fi=s,J.ffn()},updateItemClasses:(P,m,t)=>{J.uic(P,m,t)},updatePositions:()=>{},updateItem:()=>{},getElement:(P)=>U.get(P)??null,clear:()=>{},destroy:()=>{}}},set renderer(P){},get dataManager(){return J.dm},set dataManager(P){J.dm=P},get scrollController(){return J.sc},set scrollController(P){J.sc=P},state:W,getContainerWidth(){return J.cw},afterScroll:H,idleHandlers:G,afterRenderBatch:g,clickHandlers:S,keydownHandlers:$,resizeHandlers:M,contentSizeHandlers:b,destroyHandlers:w,methods:z,replaceTemplate(P){J.at=P},replaceRenderer(P){},replaceDataManager(P){J.dm=P},replaceScrollController(P){J.sc=P},getItemsForRange(P){let{dm:m,it:t}=J,s=[];for(let T=P.start;T<=P.end;T++){let h=m?m.getItem(T):t[T];if(h)s.push(h)}return s},getAllLoadedItems(){let P=J.dm;if(P){let m=P.getTotal(),t=[];for(let s=0;s<m;s++){let T=P.getItem(s);if(T)t.push(T)}return t}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let P=J.hc;return{isCompressed:!1,actualSize:P.getTotalSize(),virtualSize:P.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:v.start,compression:W.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,P]of U)P.remove(),_.release(P);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(P,m){J.rfn=P,J.ffn=m},setVirtualTotalFn(P){J.vtf=P},rebuildSizeCache(P){J.hc.rebuild(P??J.vtf())},setSizeConfig(P){if(J.hc=f0(P,J.vtf()),J.gp>0){let m=J.hc.getTotalSize,t=J.gp;J.hc.getTotalSize=()=>{let s=m();return s>0?s-t:0}}},updateContentSize(P){let m=`${P+J.mp}px`;if(Z)Y.content.style.width=m;else Y.content.style.height=m},updateCompressionMode(){for(let P=0;P<b.length;P++)b[P]()},setVisibleRangeFn(P){J.gvr=P},getVisibleRange(P,m,t,s){J.gvr(P,m,J.hc,t,s)},setScrollToPosFn(P){J.gsp=P},getScrollToPos(P,m,t,s){return J.gsp(P,J.hc,m,t,s)},setPositionElementFn(P){J.pef=P},setScrollFns(P,m){J.sgt=P,J.sst=(t)=>{m(t),C()}},setScrollTarget(P){J.st.removeEventListener("scroll",C),J.st=P,J.st.addEventListener("scroll",C,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(P){J.gcw=P.width,J.gch=P.height,J.cw=P.width(),J.ch=P.height(),W.viewportState.containerSize=Z?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,r.unobserve(Y.viewport)},disableWheelHandler(){if(J.wh)Y.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(P){J.sif=P},getItemToScrollIndexFn(){return J.i2s},setItemToScrollIndexFn(P){J.i2s=P},setUpdateItemClassesFn(P){J.uic=P}}},_1=(J,Q,Y)=>{let{rendered:q,itemState:K,applyTemplate:j,updateContentSize:U}=Q,_=()=>{J.hc.rebuild(J.vtf()),U(),Y.updateCompressionMode(),J.ffn()},W=()=>J.it.length;return{getState:()=>({total:W(),cached:W(),isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:W,getCached:W,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Z)=>J.it[Z],isItemLoaded:(Z)=>Z>=0&&Z<W()&&J.it[Z]!==void 0,getItemsInRange:(Z,V)=>{let b=[];for(let G=Math.max(0,Z),H=Math.min(V,W()-1);G<=H;G++)b.push(J.it[G]);return b},setTotal:()=>{},setItems:(Z,V=0,b)=>{if(V===0&&(b!==void 0||W()===0))J.it=Z;else{let G=V+Z.length;if(W()<G)J.it.length=G;for(let H=0;H<Z.length;H++)J.it[V+H]=Z[H]}if(J.ii)_()},updateItem:(Z,V)=>{let b=J.it;if(Z<0||Z>=b.length)return!1;let G=b[Z];if(!G)return!1;b[Z]={...G,...V};let H=q.get(Z);if(H)j(H,J.at(b[Z],Z,K)),H.dataset.id=String(b[Z].id);return!0},removeItem:(Z)=>{let V=typeof Z==="number"?Z:J.it.findIndex((b)=>b.id===Z);if(V<0||V>=J.it.length)return!1;if(J.it.splice(V,1),J.ii)_();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),U(),J.ffn()}}},G1=(J,Q)=>{let{dom:Y,classPrefix:q}=Q;return{getScrollTop:()=>J.sgt(),scrollTo:(K)=>{J.sst(K),J.ls=K,J.rfn()},scrollBy:(K)=>{let j=J.sgt()+K;J.sst(j),J.ls=j,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(K=2)=>J.sab(K),getScrollPercentage:()=>{let K=J.hc.getTotalSize(),j=Math.max(0,K-J.ch);return j>0?J.ls/j:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>Y.root.classList.contains(`${q}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{J.ch=K},destroy:()=>{}}};var LJ=(J,Q,Y,q,K=0,j=0)=>{let U=Q.getOffset(J),_=Q.getSize(J),W=U+K,Z=W+_,V=Y+q;if(W<Y)return Math.max(0,U);if(Z>V)return Z+j-q;return Y},XJ=(J,Q,Y,q,K=0,j=0,U,_,W)=>{if(!(U!=null&&U.isCompressed&&U.ratio!==1))return LJ(J,Q,Y,q,K,j);let V=_,{virtualSize:b}=U,G=Q.getSize(Math.max(0,J)),H=q-K-j,S=Math.max(1,Math.floor(H/G)),$=b/V;if(W){if(J>=W.start+S){let z=H/G,C=J+1-z;return Math.max(0,C*$)}if(J<=W.start)return Math.max(0,J*$);return Y}let M=Y/b*V,w=M+S;if(J>=w){let z=H/G,C=J+1-z;return Math.max(0,C*$)}if(J<M)return Math.max(0,J*$);return Y};var D1=(J,Q,Y,q,K,j,U,_,W,Z,V,b,G,H)=>{let S=`${Y}-item--focused`,$=!1,M=null,w=null,z=null,C=null,r=!1,v=()=>{if(r)return;r=!0,M=W.get("_getNavTotal")??null,w=W.get("_getNavDelta")??null,z=W.get("_navigate")??null,C=W.get("_scrollItemIntoView")??null},g=()=>{return v(),M?M():J.vtf()},P=()=>{return v(),w?w():{ud:1,lr:0,cols:0}};W.set("_getFocusedIndex",()=>$?J.fi:-1);let m=(l,F=!0)=>{if(Q.root.setAttribute("aria-activedescendant",`${q}-item-${l}`),v(),F)if(C)C(l);else{let E=K?J.cw:J.ch,L=J.i2s(l),f=LJ(L,J.hc,J.ls,E,j,U);if(f!==J.ls)J.sst(f),J.ls=J.sgt()}J.ffn()},t=(l)=>{J.fi=l,$=!0,m(l)},s=(l,F)=>{if(J.fi=l,F||H)$=!0;let E=J.dm?J.dm.getItem(l):J.it[l];if(E&&J.ss.has(E.id))J.ss.clear();else if(J.ss.clear(),E)J.ss.add(E.id);m(l,F)},T=(l,F,E)=>{let L=l;while(L>=0&&L<E){let f=J.dm?J.dm.getItem(L):J.it[L];if(!f||!f.__groupHeader)return L;L+=F}L=l-F;while(L>=0&&L<E){let f=J.dm?J.dm.getItem(L):J.it[L];if(!f||!f.__groupHeader)return L;L-=F}return l},h=()=>{if(J.id)return;if(!Q.root.matches(":focus-visible"))return;let l=g();if(l===0)return;let F=J.fi>=0?Math.min(J.fi,l-1):0;F=T(F,1,l),t(F)};Q.root.addEventListener("focusin",h);let I=(l)=>{if(J.id)return;let F=l.relatedTarget;if(F&&Q.root.contains(F))return;if($=!1,J.fi>=0)Z.get(J.fi)?.classList.remove(S);Q.root.removeAttribute("aria-activedescendant")};Q.root.addEventListener("focusout",I),V.push((l)=>{if(J.id)return;let F=g();if(F===0)return;let E=J.fi,L=E;if(l.key===" "||l.key==="Enter"){if(E>=0){let f=J.dm?J.dm.getItem(E):J.it[E];if(f&&!f.__groupHeader)s(E,!0)}l.preventDefault();return}if(v(),z)switch(l.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":L=z(E,l.key,F);break;default:return}else{let{ud:f,lr:a}=P();switch(l.key){case"ArrowUp":L=E-f;break;case"ArrowDown":L=E+f;break;case"ArrowLeft":if(!a)return;L=E-a;break;case"ArrowRight":if(!a)return;L=E+a;break;case"PageUp":case"PageDown":{let c=J.hc.getSize(J.i2s(Math.max(0,E))),u=Math.max(f,Math.floor((K?J.cw:J.ch)/c)*f);L=l.key==="PageUp"?E-u:E+u;break}case"Home":L=0;break;case"End":L=F-1;break;default:return}if(L<0)L=_?F-1:0;else if(L>=F)L=_?0:F-1}if(l.preventDefault(),L=T(L,L>=E?1:-1,F),L!==E)t(L)}),b.push((l)=>{if(J.id)return;let F=l.target.closest("[data-index]");if(!F)return;let E=parseInt(F.dataset.index??"-1",10);if(E<0)return;let L=J.dm?.getItem(E)??J.it[E];if(!L||L.__groupHeader)return;$=!1,Q.root.focus({preventScroll:!0}),s(E,!1)}),G.push(()=>{Q.root.removeEventListener("focusin",h),Q.root.removeEventListener("focusout",I)})};var FJ=200,x0=50;var M1=50,O1=12,E1=2,m0=16000000;var A1="x",L1=20,TJ="_isPlaceholder",R0="__placeholder_";var w0=(J,Q,Y)=>{if(String(Y).startsWith(R0))return!1;let q=R0+Q;if(J.has(q))return J.delete(q),J.add(Y),!0;return!1},F1=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),d0=(J,Q,Y)=>{if(Y==="none")return J;let q=new Set(J.selected);if(Y==="single"){if(q.clear(),Q.length>0)q.add(Q[0])}else for(let K of Q)q.add(K);return{...J,selected:q}},bJ=(J,Q)=>{let Y=new Set(J.selected);for(let q of Q)Y.delete(q);return{...J,selected:Y}},c0=(J,Q,Y)=>{if(Y==="none")return J;if(J.selected.has(Q))return bJ(J,[Q]);else return d0(J,[Q],Y)},HJ=(J,Q,Y)=>{if(Y!=="multiple")return J;return{...J,selected:new Set(Q.map((q)=>q.id))}},kJ=(J)=>({...J,selected:new Set}),I0=(J,Q)=>{return J.focusedIndex=Q,J},KJ=(J,Q,Y=!1,q=1)=>{if(Q===0)return J;let K=J.focusedIndex-q;if(K<0)K=Y?Q-1:0;return J.focusedIndex=K,J},UJ=(J,Q,Y=!1,q=1)=>{if(Q===0)return J;let K=J.focusedIndex+q;if(K>=Q)K=Y?0:Q-1;return J.focusedIndex=K,J},T1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=0,J},b1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=Q-1,J},$J=(J,Q,Y,q)=>{if(Q===0)return J;let K=q==="up"?J.focusedIndex-Y:J.focusedIndex+Y;return K=Math.max(0,Math.min(Q-1,K)),J.focusedIndex=K,J};var yJ=(J)=>{return Array.from(J.selected)},PJ=(J,Q)=>{let Y=[];for(let q of J.selected){let K=Q(q);if(K)Y.push(K)}return Y};var ZJ=(J,Q,Y,q,K)=>{if(K!=="multiple")return J;let j=Math.min(Y,q),U=Math.max(Y,q),_=[];for(let W=j;W<=U;W++){let Z=Q[W];if(Z)_.push(Z.id)}return d0(J,_,K)};var RJ=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,z0=(J)=>{let Q=typeof J==="object"&&J?J:null;return{align:typeof J==="string"?J:Q?.align??"start",behavior:Q?.behavior??"auto",duration:Q?.duration??300}},l0=(J,Q)=>{let Y=null,q=()=>{if(Y!==null)cancelAnimationFrame(Y),Y=null};return{animateScroll:(j,U,_)=>{if(q(),Math.abs(U-j)<1){J.scrollTo(U);return}let W=performance.now(),Z=(V)=>{let b=V-W,G=Math.min(b/_,1),H=j+(U-j)*RJ(G);if(J.scrollTo(H),Q(),G<1)Y=requestAnimationFrame(Z);else Y=null};Y=requestAnimationFrame(Z)},cancelScroll:q}};var H1=(J,Q,Y,q,K,j,U,_,W,Z,V,b,G,H,S,$,M,w)=>{let z=(D)=>{{if(!Array.isArray(D)){console.warn("[vlist] setItems() expects an array, got:",typeof D);return}if(D.length>0&&D[0]&&!("id"in D[0]))console.warn('[vlist] Items must have an "id" property. First item:',D[0]);let A=Math.min(D.length,1e4),N=new Set;for(let y=0;y<A;y++){let O=D[y];if(O&&"id"in O){if(N.has(O.id)){console.warn(`[vlist] Duplicate item ID "${O.id}" at index ${y}. updateItem() and removeItem() will only match the first occurrence.`);break}N.add(O.id)}}}L(),W.dataManager.setItems(D,0,D.length)},C=(D)=>{let A=Z&&J.sab(2);if(W.dataManager.setItems(D,J.it.length),A&&J.it.length>0){let N=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(N),J.ls=N,J.rfn()}},r=(D)=>{let A=Z?J.sgt():0,N=Z?J.hc.getTotalSize():0,y=[...J.it];if(W.dataManager.clear(),W.dataManager.setItems([...D,...y],0),Z){let O=J.hc.getTotalSize()-N;if(O>0)J.sst(A+O),J.ls=A+O}},v=null,g=null,P=null,m=!1,t=()=>{if(m)return;m=!0,v=j.get("_updateRenderedItem")??null,g=j.get("_getSelectedIds")??null,P=j.get("_getFocusedIndex")??null},s=(D,A)=>{{let y=J.vtf();if(D<0||D>=y)console.warn(`[vlist] updateItem() index ${D} is out of range (0–${y-1}).`)}if(W.dataManager.updateItem(D,A),t(),!v)return;let N=W.dataManager.getItem(D);if(N){let O=(g?g():J.ss).has(N.id),k=(P?P():J.fi)===D;v(D,N,O,k)}},T=!1,h=(D)=>{let A=typeof document<"u"?document.activeElement:null,N=A&&Q.items.contains(A)?parseInt(A.dataset?.index??"-1",10):-1;if(!W.dataManager.removeItem(D))return console.warn(`[vlist] removeItem() could not find item with id "${D}".`),!1;if(Y.emit("data:change",{type:"remove",id:D}),W.forceRender(),!T){let O=W.dataManager;if(typeof O.ensureRange==="function")T=!0,queueMicrotask(()=>{T=!1;let k=W.dataManager.getTotal(),{start:x,end:n}=W.state.viewportState.renderRange;if(k>0&&n>=x)O.ensureRange(x,n).catch(()=>{})})}if(N>=0){let O=J.vtf();if(O>0)q.get(Math.min(N,O-1))?.focus()}return!0},I=(D)=>{return W.dataManager.getItem(D)},l=(D)=>{return W.dataManager.getIndexById?.(D)??-1},F=async(D)=>{if(W.dataManager.reload)await W.dataManager.reload()},E=null,L=()=>{if(E!==null)cancelAnimationFrame(E),E=null},f=(D,A,N,y)=>{if(L(),Math.abs(A-D)<1){J.sst(A),J.ls=A,J.rfn();return}let O=performance.now(),k=(x)=>{let n=x-O,e=Math.min(n/N,1),J0=y?y():A,j0=D+(J0-D)*RJ(e);if(J.sst(j0),J.ls=j0,J.rfn(),e<1)E=requestAnimationFrame(k);else E=null};E=requestAnimationFrame(k)},a=(D,A)=>{{let e=J.vtf();if(e>0&&(D<0||D>=e))console.warn(`[vlist] scrollToIndex(${D}) is out of range (0–${e-1}).`)}let{align:N,behavior:y,duration:O}=z0(A),k=J.vtf(),x=D;if(V&&k>0)x=(x%k+k)%k;let n=J.gsp(x,J.hc,J.ch,k,N);if(y==="smooth"){let e=x,J0=N;f(J.sgt(),n,O,()=>J.gsp(e,J.hc,J.ch,J.vtf(),J0))}else L(),J.sst(n)},c=()=>J.sgt(),u=(D,A)=>{return Y.on(D,A)},p=(D,A)=>{Y.off(D,A)},B=()=>{if(J.id)return;if(J.id=!0,W.state.isDestroyed=!0,Q.items.removeEventListener("click",b),Q.items.removeEventListener("dblclick",G),Q.root.removeEventListener("keydown",H),J.st.removeEventListener("scroll",S),$.disconnect(),M(),J.wh)Q.viewport.removeEventListener("wheel",J.wh);w();let D=[];for(let A=0;A<_.length;A++)try{_[A]()}catch(N){D.push(N instanceof Error?N:Error(String(N)))}for(let A of U)if(A.destroy)try{A.destroy()}catch(N){D.push(N instanceof Error?N:Error(String(N)))}L();for(let[,A]of q)A.remove(),K.release(A);q.clear(),K.clear(),Y.emit("destroy",void 0);for(let A of D)Y.emit("error",{error:A,context:"destroy"});Y.clear(),Q.root.remove()},X=(D,A)=>j.has(D)?j.get(D):A,R={get element(){return Q.root},get items(){let D=j.get("_getItems");return D?D():J.it},get total(){let D=j.get("_getTotal");return D?D():J.vtf()},setItems:X("setItems",z),appendItems:X("appendItems",C),prependItems:X("prependItems",r),updateItem:X("updateItem",s),removeItem:X("removeItem",h),reload:X("reload",F),getItemAt:I,getIndexById:l,scrollToIndex:X("scrollToIndex",a),cancelScroll:X("cancelScroll",L),getScrollPosition:X("getScrollPosition",c),on:u,off:p,destroy:B};for(let[D,A]of j){if(D.charCodeAt(0)===95||D==="setItems"||D==="appendItems"||D==="prependItems"||D==="updateItem"||D==="removeItem"||D==="reload"||D==="scrollToIndex"||D==="scrollToItem"||D==="cancelScroll"||D==="getScrollPosition")continue;R[D]=A}return R};var Y4=3,j4="vlist",X4=150,K4=16000000,U4=0,wJ=(J)=>{if(!J.container)throw Error("[vlist] Container is required");if(!J.item)throw Error("[vlist] item configuration is required");let Q=J.orientation==="horizontal",Y=Q?"width":"height",q=Q?"estimatedWidth":"estimatedHeight",K=Q?J.item.width:J.item.height,j=Q?J.item.estimatedWidth:J.item.estimatedHeight;if(K==null&&j==null)throw Error(`[vlist] item.${Y} or item.${q} is required${Q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist] item.${Y} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist] item.${Y} must be a number or a function (index) => number`)}else if(j!=null){if(typeof j!=="number"||j<=0)throw Error(`[vlist] item.${q} must be a positive number`)}if(!J.item.template)throw Error("[vlist] item.template is required");if(Q&&J.reverse)throw Error("[vlist] horizontal direction cannot be combined with reverse mode");let U=new Map,_=!1,W={use(Z){if(_)throw Error("[vlist] Cannot call .use() after .build()");return U.set(Z.name,Z),W},build(){if(_)throw Error("[vlist] .build() can only be called once");return _=!0,Z4(J,U,Q,K,j??null)}};return W};function Z4(J,Q,Y,q,K){let{item:j,items:U,overscan:_=Y4,classPrefix:W=j4,ariaLabel:Z,padding:V,reverse:b=!1,scroll:G,accessible:H,interactive:S}=J,$=S??H??!0,M=G,w=M?.wheel??!0,z=M?.wrap??!1,C=b,r=`${W}-${U4++}`,v=Q.has("withGrid")||Q.has("withMasonry")?0:j.gap??0,g=q??K,P=q==null&&K!=null,m=Y?typeof j.height==="number"?j.height:void 0:typeof j.width==="number"?j.width:void 0,t={overscan:_,classPrefix:W,reverse:C,wrap:z,horizontal:Y,ariaIdPrefix:r,interactive:$},s=Array.from(Q.values()).sort((d,i)=>(d.priority??50)-(i.priority??50)),T=new Set(s.map((d)=>d.name));for(let d of s)if(d.conflicts){for(let i of d.conflicts)if(T.has(i))throw Error(`[vlist] ${d.name} and ${i} cannot be combined`)}if(C){if(T.has("withGrid"))throw Error("[vlist] withGrid cannot be used with reverse: true")}let h=K1(J.container),I=U1(h,W,Z,Y,$);if(M?.wheel===!1)if(Y)I.viewport.style.overflowX="hidden";else I.viewport.style.overflow="hidden";if(M?.scrollbar==="none")I.viewport.classList.add(`${W}-viewport--no-scrollbar`);if(M?.gutter==="stable")I.viewport.classList.add(`${W}-viewport--gutter-stable`);let l=T.has("withGrid")||T.has("withMasonry");if(Y&&m!=null&&M?.scrollbar!=="none"&&!l){I.root.style.height=`${m}px`;let d=I.viewport.style.overflowX;I.viewport.style.overflowX="scroll";let i=I.viewport.offsetHeight-I.viewport.clientHeight;if(I.viewport.style.overflowX=d,i>0)I.root.style.height=`${m+i}px`}let F=y0(V),E=u0(F,Y);if(F.top||F.right||F.bottom||F.left)I.content.style.boxSizing="border-box",I.content.style.padding=`${F.top}px ${F.right}px ${F.bottom}px ${F.left}px`;let L=X1(),f=U||[],a=typeof g==="function"&&(Q.has("withGrid")||Q.has("withMasonry")),c=v>0?typeof g==="function"?(d)=>g(d)+v:g+v:g,u=P?K+v:c,p=f0(u,a?0:f.length);if(v>0){let d=p.getTotalSize;p.getTotalSize=()=>{let i=d();return i>0?i-v:0}}let B=Z1(),X={it:f,hc:p,ch:I.viewport.clientHeight,cw:I.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:q1(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Y?()=>I.viewport.scrollLeft:()=>I.viewport.scrollTop,sst:Y?(d)=>{I.viewport.scrollLeft=d}:(d)=>{I.viewport.scrollTop=d},sab:(d=2)=>{let i=X.hc.getTotalSize();return X.ls+X.ch>=i-d},sic:!1,rfn:null,ffn:null,gvr:(d,i,Y0,G0,F0)=>{B1(d,i,Y0,G0,F0)},gsp:(d,i,Y0,G0,F0)=>{return W1(d,i,Y0,G0,F0,X.mp)},pef:null,at:j.template,vre:!0,st:I.viewport,wh:null,gcw:()=>X.cw,gch:()=>X.ch,gp:v,mp:E,sif:(d)=>d,i2s:(d)=>d,uic:(d,i,Y0)=>{let G0=x.get(d);if(!G0)return;q0(G0,i,Y0)},csi:null};X.vtf=()=>X.dm?X.dm.getTotal():X.it.length;let R=null,D=!1,A={start:0,end:0},N={start:0,end:0},y={start:-1,end:-1},O={viewportState:{scrollPosition:0,containerSize:Y?X.cw:X.ch,totalSize:X.hc.getTotalSize(),actualSize:X.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},k=()=>({...O.viewportState,totalItems:X.vtf()}),x=new Map,n=()=>{g0(I.items,x.keys(),(d)=>x.get(d))},e=()=>{let d=X.hc.getTotalSize(),Y0=`${(X.sic?d:Math.min(d,K4))+E}px`;if(Y)I.content.style.width=Y0;else I.content.style.height=Y0},J0={selected:!1,focused:!1},j0=`${W}-item`,o=`${W}-item--selected`,Q0=`${W}-item--focused`,q0=(d,i,Y0)=>{d.classList.toggle(o,i),d.classList.toggle(Q0,Y0),d.ariaSelected=i?"true":"false"},U0=j.striped,Z0=!!U0,N0=U0==="data"||U0==="even"||U0==="odd",D0=`${W}-item--odd`,E0=`${W}-item--placeholder`,X0=`${W}-item--replaced`,V0=`${W}--scrolling`,K0=[],_0=[],W0=[],B0=[],A0=[],O0=[],L0=[],$0=[],P0=new Map,WJ="__placeholder_",VJ={scrollPosition:0,direction:"down"},h0={velocity:0,reliable:!1},_J={range:{start:0,end:0}},GJ=null,DJ=null,aJ=!1,r1=()=>{if(aJ)return;aJ=!0,GJ=P0.get("_getSelectedIds")??null,DJ=P0.get("_getFocusedIndex")??null},e0=(d,i,Y0)=>{if(!i)console.warn(`[vlist] Template returned falsy value${Y0!==void 0?` for item at index ${Y0}`:""}. The element will render as blank.`);else if(typeof i==="string"&&i==="")console.warn(`[vlist] Template returned empty string${Y0!==void 0?` for item at index ${Y0}`:""}. The element will render as blank.`);if(typeof i==="string")d.innerHTML=i;else d.replaceChildren(i)},a1=(d,i)=>{let Y0=Math.round(X.hc.getOffset(i));if(Y)d.style.transform=`translateX(${Y0}px)`;else d.style.transform=`translateY(${Y0}px)`};X.pef=a1;let s1=(d,i)=>{let Y0=B.acquire();Y0.className=j0;let G0=!X.csi||X.csi(d);if(Y){if(G0)Y0.style.width=`${X.hc.getSize(d)-v}px`;else Y0.style.width="";if(m!=null)Y0.style.height=`${m}px`}else if(G0)Y0.style.height=`${X.hc.getSize(d)-v}px`;else Y0.style.height="";if(Y0.dataset.index=String(d),Y0.dataset.id=String(i.id),Y0.ariaSelected="false",Y0.id=`${r}-item-${d}`,X.la=String(X.vtf()),Y0.setAttribute("aria-setsize",X.la),Y0.setAttribute("aria-posinset",String(d+1)),String(i.id).startsWith(WJ))Y0.classList.add(E0);if(Z0)if(N0){let b0=X.sif(d);if(b0<0)Y0.classList.remove(D0);else Y0.classList.toggle(D0,(b0&1)===1)}else Y0.classList.toggle(D0,(d&1)===1);try{e0(Y0,X.at(i,d,J0),d)}catch(b0){let T0=b0 instanceof Error?b0:Error(String(b0));L.emit("error",{error:T0,context:`tpl(${d},${i.id})`,viewport:k()}),Y0.textContent=""}return X.pef(Y0,d),Y0},o1=()=>{if(X.id)return;let d=Y?X.cw:X.ch;if(d<=0)return;r1();let i=GJ?GJ():X.ss,Y0=DJ?DJ():X.fi,G0=X.vtf();if(X.gvr(X.ls,d,X.hc,G0,A),N1(A,_,G0,N),N.start===y.start&&N.end===y.end){if(X.sic)for(let[M0,H0]of x)X.pef(H0,M0);O.viewportState.scrollPosition=X.ls,O.viewportState.containerSize=d,O.viewportState.visibleRange.start=A.start,O.viewportState.visibleRange.end=A.end,O.viewportState.renderRange.start=N.start,O.viewportState.renderRange.end=N.end;return}let F0=String(G0),b0=F0!==X.la;X.la=F0;for(let[M0,H0]of x)if(M0<N.start||M0>N.end)H0.remove(),B.release(H0),x.delete(M0);let T0=document.createDocumentFragment(),v0=!1,s0=L0.length>0?[]:null;for(let M0=N.start;M0<=N.end;M0++){let H0=X.dm?X.dm.getItem(M0):X.it[M0];if(H0===void 0)continue;let k0=x.get(M0);if(k0){let S0=k0.dataset.id,p0=String(H0.id);if(S0!==p0){let e1=S0?.startsWith(WJ),EJ=p0.startsWith(WJ);try{e0(k0,X.at(H0,M0,J0),M0)}catch(AJ){let J4=AJ instanceof Error?AJ:Error(String(AJ));L.emit("error",{error:J4,context:`tpl(${M0},${H0.id})`,viewport:k()}),k0.textContent=""}k0.dataset.id=p0;let J1=!X.csi||X.csi(M0);if(Y)k0.style.width=J1?`${X.hc.getSize(M0)-v}px`:"";else k0.style.height=J1?`${X.hc.getSize(M0)-v}px`:"";if(EJ)k0.classList.add(E0);else k0.classList.remove(E0);if(e1&&!EJ)k0.classList.add(X0),setTimeout(()=>{k0.classList.remove(X0)},300);if(X.dm&&!EJ)w0(i,M0,H0.id)}X.pef(k0,M0);let qJ=i.has(H0.id);if(q0(k0,qJ,M0===Y0),b0)k0.setAttribute("aria-setsize",X.la)}else{let S0=s1(M0,H0);if(s0)s0.push({index:M0,element:S0});if(X.dm)w0(i,M0,H0.id);let p0=i.has(H0.id),qJ=M0===Y0;if(p0||qJ)q0(S0,p0,qJ);T0.appendChild(S0),x.set(M0,S0),v0=!0}}if(v0)I.items.appendChild(T0);if(s0&&s0.length>0)for(let M0=0;M0<L0.length;M0++)L0[M0](s0);y.start=N.start,y.end=N.end,O.lastRenderRange.start=N.start,O.lastRenderRange.end=N.end,O.viewportState.scrollPosition=X.ls,O.viewportState.visibleRange.start=A.start,O.viewportState.visibleRange.end=A.end,O.viewportState.renderRange.start=N.start,O.viewportState.renderRange.end=N.end,_J.range.start=N.start,_J.range.end=N.end,L.emit("range:change",_J)},n1=()=>{y.start=-1,y.end=-1,X.rfn()};X.rfn=o1,X.ffn=n1;let i1=()=>{I.root.classList.remove(V0),D=!1,X.vt.velocity=0,X.vt.sampleCount=0,h0.velocity=0,h0.reliable=!1,L.emit("velocity:change",h0),n();for(let d=0;d<_0.length;d++)_0[d]();L.emit("scroll:idle",{scrollPosition:X.ls})},t1=()=>{if(R)clearTimeout(R);R=setTimeout(i1,M?.idleTimeout??X4)},a0=()=>{if(X.id)return;let d=X.sgt();if(d===X.ls&&D)return;let i=d>=X.ls?"down":"up";if(X.vt=Y1(X.vt,d),!I.root.classList.contains(V0))I.root.classList.add(V0);D=!0,X.ls=d,X.rfn(),VJ.scrollPosition=d,VJ.direction=i,L.emit("scroll",VJ),h0.velocity=X.vt.velocity,h0.reliable=X.vt.sampleCount>=Q1,L.emit("velocity:change",h0);for(let Y0=0;Y0<K0.length;Y0++)K0[Y0](d,i);t1()},JJ=null;if(X.st.addEventListener("scroll",a0,{passive:!0}),w){let d=I.viewport;if(Y)JJ=(i)=>{if(O.viewportState.isCompressed)return;if(Math.abs(i.deltaX)>Math.abs(i.deltaY))return;let Y0=X.sgt(),G0=d.scrollWidth-d.clientWidth,F0=Math.max(0,Math.min(Y0+i.deltaY,G0));if(Math.abs(F0-Y0)<1)return;i.preventDefault(),X.sst(F0),a0()};else JJ=(i)=>{if(O.viewportState.isCompressed)return;let Y0=d.scrollWidth>d.clientWidth;if(Y0&&Math.abs(i.deltaX)>Math.abs(i.deltaY))return;if(Y0&&i.deltaX!==0)i.preventDefault(),d.scrollLeft+=i.deltaX;let G0=X.sgt(),F0=d.scrollHeight-d.clientHeight,b0=Math.max(0,Math.min(G0+i.deltaY,F0));if(Math.abs(b0-G0)<1)return;i.preventDefault(),X.sst(b0),a0()};X.wh=JJ,d.addEventListener("wheel",JJ,{passive:!1})}let sJ=(d)=>{let i=d.target.closest("[data-index]");if(!i)return null;let Y0=parseInt(i.dataset.index??"-1",10);if(Y0<0)return null;let G0=X.dm?.getItem(Y0)??X.it[Y0];if(!G0||G0.__groupHeader)return null;return{item:G0,index:Y0}},oJ=(d)=>{let i=sJ(d);if(i)L.emit("item:click",{item:i.item,index:i.index,event:d});for(let Y0=0;Y0<W0.length;Y0++)W0[Y0](d)},nJ=(d)=>{let i=sJ(d);if(i)L.emit("item:dblclick",{item:i.item,index:i.index,event:d})},iJ=(d)=>{for(let i=0;i<B0.length;i++)B0[i](d)};if(I.items.addEventListener("click",oJ),I.items.addEventListener("dblclick",nJ),I.root.addEventListener("keydown",iJ),$){let d=null,i=(Y0)=>{if(d)clearTimeout(d);d=setTimeout(()=>{if(d=null,X.id)return;let G0=X.vtf();I.liveRegion.textContent=`Showing items ${Y0.range.start+1} to ${Math.min(Y0.range.end+1,G0)} of ${G0}`},300)};L.on("range:change",i),$0.push(()=>{if(d)clearTimeout(d);L.off("range:change",i)})}let MJ=new ResizeObserver((d)=>{if(X.id)return;for(let i of d){let Y0=i.contentRect.height,G0=i.contentRect.width,F0=Y?G0:Y0,b0=Y?X.cw:X.ch;if(X.cw=G0,X.ch=Y0,Math.abs(F0-b0)>1){if(O.viewportState.containerSize=F0,X.ii){let T0=O.cachedCompression;if(T0&&T0.state.isCompressed){let v0=`${T0.state.virtualSize+E}px`;if(Y)I.content.style.width=v0;else I.content.style.height=v0}else e();X.rfn(),L.emit("resize",{height:Y0,width:G0})}}if(X.ii)for(let T0=0;T0<A0.length;T0++)A0[T0](G0,Y0)}});if(X.vre)MJ.observe(I.viewport);let OJ={dom:I,emitter:L,resolvedConfig:t,rawConfig:J,rendered:x,pool:B,itemState:J0,sharedState:O,renderRange:N,isHorizontal:Y,classPrefix:W,contentSizeHandlers:O0,idleHandlers:_0,afterScroll:K0,clickHandlers:W0,keydownHandlers:B0,resizeHandlers:A0,destroyHandlers:$0,methods:P0,onScrollFrame:a0,resizeObserver:MJ,afterRenderBatch:L0,applyTemplate:e0,updateContentSize:e},QJ=V1(X,OJ);X.dm=_1(X,OJ,QJ),X.sc=G1(X,OJ),P0.set("_updateRenderedItem",(d,i,Y0,G0)=>{let F0=x.get(d);if(!F0)return;let b0={selected:Y0,focused:G0};try{let T0=X.at(i,d,b0);e0(F0,T0,d)}catch(T0){let v0=T0 instanceof Error?T0:Error(String(T0));L.emit("error",{error:v0,context:`tpl(${d},${i.id})`,viewport:k()})}F0.dataset.id=String(i.id),q0(F0,Y0,G0)});let tJ=new WeakSet;P0.set("_setSizeCache",(d)=>{if(X.hc=d,X.gp>0&&!tJ.has(d)){tJ.add(d);let i=X.hc.getTotalSize,Y0=X.gp;X.hc.getTotalSize=()=>{let G0=i();return G0>0?G0-Y0:0}}}),P0.set("_setConstrainSize",(d)=>{X.csi=d});let eJ=new Map;for(let d of s)if(d.methods)for(let i of d.methods){let Y0=eJ.get(i);if(Y0)throw Error(`[vlist] Method "${i}" is registered by both "${Y0}" and "${d.name}"`);eJ.set(i,d.name)}for(let d of s)try{d.setup(QJ)}catch(i){let Y0=i instanceof Error?i:Error(String(i));console.error(`[vlist] Feature "${d.name}" setup failed:`,Y0),L.emit("error",{error:Y0,context:d.name,viewport:k()})}if(P&&!Q.has("withAutoSize"))console.warn("[vlist] estimatedHeight/estimatedWidth requires .use(withAutoSize()). Items will use the estimated size as a fixed size.");if($&&!P0.has("_getFocusedIndex")){let d=Y?F.left:F.top,i=Y?F.right:F.bottom;D1(X,I,W,r,Y,d,i,z,P0,x,B0,W0,$0,!!J.focusOnClick)}if(X.ii=!0,QJ.state.isInitialized=!0,e(),X.rfn(),C&&X.it.length>0){let d=X.gsp(X.it.length-1,X.hc,X.ch,X.it.length,"end");X.sst(d),X.ls=d,X.rfn()}return H1(X,I,L,x,B,P0,s,$0,QJ,C,z,oJ,nJ,iJ,a0,MJ,()=>{},()=>{if(R)clearTimeout(R)})}var n0=(J,Q,Y)=>{let q=Q.getTotalSize(),K=Y===!0||q>m0,j=q>m0?m0:q,U=q>0?j/q:1;return{isCompressed:K,actualSize:q,virtualSize:j,ratio:U}},k1=(J,Q,Y,q,K,j)=>{if(q===0||Q===0)return j.start=0,j.end=-1,j;if(!K.isCompressed||K.ratio===1){let G=Y.indexAtOffset(J),H=Y.indexAtOffset(J+Q);if(H<q-1)H++;return j.start=Math.max(0,G),j.end=Math.min(q-1,Math.max(0,H)),j}let{virtualSize:U}=K,W=J/U*q,Z=Math.floor(W),V=j1(Y,Math.max(0,Z),Q,q),b=Math.ceil(W)+V;return j.start=Math.max(0,Z),j.end=Math.min(q-1,Math.max(0,b)),j};var r0=(J,Q,Y,q,K,j,U)=>{if(!j.isCompressed||q===0)return Y.getOffset(J);if(j.ratio===1)return Y.getOffset(J)-Q;let{virtualSize:_}=j,W=Q/_,Z=Y.getTotalSize(),V=W*Z;return Y.getOffset(J)-V},$1=(J,Q,Y,q,K,j="start")=>{if(q===0)return 0;let U;if(K.isCompressed&&K.ratio!==1){U=J/q*K.virtualSize;let V=Q.getSize(J);switch(j){case"center":U-=(Y-V)/2*K.ratio;break;case"end":U-=(Y-V)*K.ratio;break}return Math.max(0,U)}U=Q.getOffset(J);let _=Q.getSize(J);switch(j){case"center":U-=(Y-_)/2;break;case"end":U-=Y-_;break}let W=K.virtualSize-Y;return Math.max(0,Math.min(U,W))};var B4=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},i0=(J,Q,Y={},q="vlist",K=!1)=>{let{autoHide:j=!0,autoHideDelay:U=1000,minThumbSize:_=15,showOnHover:W=!0,showOnViewportEnter:Z=!0,clickBehavior:V="page"}=Y,b=B4(Y.padding),G=K?b.left:b.top,H=K?b.right:b.bottom,S=K?b.bottom:b.right,$=Y.hoverZoneWidth??S+16,M=0,w=0,z=0,C=0,r=!1,v=!1,g=0,P=0,m=0,t=null,s=!1,T=null,h=null,I=0,l=0,F=null,E=null,L=null,f=K?"width":"height",a=K?"translateX":"translateY",c=K?(K0)=>K0.clientX:(K0)=>K0.clientY,u=K?"left":"top",p=document.createElement("div"),B=document.createElement("div"),X=document.createElement("div"),R=()=>{if(p.className=`${q}-scrollbar`,B.className=`${q}-scrollbar-thumb`,K)p.classList.add(`${q}-scrollbar--horizontal`);if(Y.padding!==void 0)J.style.setProperty("--vlist-custom-scrollbar-padding-top",`${b.top}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-right",`${b.right}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${b.bottom}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-left",`${b.left}px`);if(Y.minThumbSize!==void 0)p.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${_}px`);if(p.appendChild(B),J.appendChild(p),X.className=`${q}-scrollbar-hover`,K)X.classList.add(`${q}-scrollbar-hover--horizontal`),X.style.height=`${$}px`;else X.style.width=`${$}px`;J.appendChild(X)},D=()=>{if(t)clearTimeout(t),t=null},A=()=>{if(!j)return;D(),t=setTimeout(y,U)},N=()=>{if(M<=w)return;if(D(),!s)p.classList.add(`${q}-scrollbar--visible`),s=!0;if(j&&!r&&!v)A()},y=()=>{if(r||v)return;p.classList.remove(`${q}-scrollbar--visible`),s=!1},O=(K0,_0)=>{M=K0,w=_0;let W0=M>w;if(p.style.display=W0?"":"none",!W0){y();return}let B0=Math.max(0,w-G-H),A0=w/M;z=Math.max(_,A0*B0),B.style[f]=`${z}px`,C=B0-z,k(m)},k=(K0)=>{if(m=K0,M<=w||C<=0)return;let _0=M-w,B0=Math.min(1,Math.max(0,K0/_0))*C;B.style.transform=`${a}(${B0}px)`},x=(K0)=>{if(K0.target===B||V!=="jump"||C<=0)return;let _0=M-w,W0=p.getBoundingClientRect(),B0=c(K0)-W0[u],A0=Math.max(0,Math.min(B0-z/2,C));Q(A0/C*_0),N()},n=()=>{if(F!==null)clearTimeout(F),F=null;if(E!==null)cancelAnimationFrame(E),E=null;L=null},e=(K0)=>{let _0=C>0?l/K0*C:0;if(I<_0)return-1;if(I>=_0+z)return 1;return 0},J0=()=>{let K0=M-w,_0=e(K0);if(_0===0){n();return}if(_0===-1){if(l<=0){n();return}let W0=Math.max(0,l-w);l=W0,Q(W0)}else{if(l>=K0){n();return}let W0=Math.min(K0,l+w);l=W0,Q(W0)}N()},j0=(K0)=>{if(L===null){L=K0,E=requestAnimationFrame(j0);return}let _0=M-w,W0=K0-L;L=K0;let B0=e(_0);if(B0===0){n();return}let A0=12*w/1000,O0=Math.min(A0*W0,w);if(B0===-1){if(l<=0){n();return}let L0=Math.max(0,l-O0);l=L0,Q(L0)}else{if(l>=_0){n();return}let L0=Math.min(_0,l+O0);l=L0,Q(L0)}D(),E=requestAnimationFrame(j0)},o=()=>{n(),A(),document.removeEventListener("mouseup",o)},Q0=(K0)=>{if(K0.target===B||V!=="page")return;K0.preventDefault();let _0=p.getBoundingClientRect();I=c(K0)-_0[u],l=m,J0(),F=setTimeout(()=>{E=requestAnimationFrame(j0)},350),document.addEventListener("mouseup",o)},q0=(K0)=>{K0.preventDefault(),K0.stopPropagation(),r=!0,g=c(K0),P=m,D(),p.classList.add(`${q}-scrollbar--dragging`),document.addEventListener("mousemove",U0),document.addEventListener("mouseup",Z0)},U0=(K0)=>{if(!r)return;let _0=c(K0)-g,W0=C>0?_0/C:0,B0=M-w,A0=W0*B0,O0=Math.max(0,Math.min(P+A0,B0)),$0=O0/B0*C;if(B.style.transform=`${a}(${$0}px)`,h=O0,T===null)T=requestAnimationFrame(()=>{if(h!==null)Q(h);T=null})},Z0=()=>{if(r=!1,T!==null)cancelAnimationFrame(T),T=null;if(h!==null)Q(h),h=null;if(p.classList.remove(`${q}-scrollbar--dragging`),j&&!v)A();document.removeEventListener("mousemove",U0),document.removeEventListener("mouseup",Z0)},N0=()=>{if(Z)N()},D0=()=>{if(!r){if(v=!1,j)A()}},E0=()=>{v=!0,D(),N()},X0=()=>{if(v=!1,!r&&j)A()},V0=()=>{if(D(),n(),T!==null)cancelAnimationFrame(T),T=null;if(p.removeEventListener("click",x),p.removeEventListener("mousedown",Q0),p.removeEventListener("mouseenter",E0),document.removeEventListener("mouseup",o),p.removeEventListener("mouseleave",X0),B.removeEventListener("mousedown",q0),J.removeEventListener("mouseenter",N0),J.removeEventListener("mouseleave",D0),document.removeEventListener("mousemove",U0),document.removeEventListener("mouseup",Z0),X.removeEventListener("click",x),X.removeEventListener("mousedown",Q0),W)X.removeEventListener("mouseenter",E0),X.removeEventListener("mouseleave",X0);if(X.parentNode)X.parentNode.removeChild(X);if(J.style.removeProperty("--vlist-custom-scrollbar-padding-top"),J.style.removeProperty("--vlist-custom-scrollbar-padding-right"),J.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),J.style.removeProperty("--vlist-custom-scrollbar-padding-left"),p.parentNode)p.parentNode.removeChild(p)};if(R(),p.addEventListener("click",x),p.addEventListener("mousedown",Q0),p.addEventListener("mouseenter",E0),p.addEventListener("mouseleave",X0),B.addEventListener("mousedown",q0),J.addEventListener("mouseenter",N0),J.addEventListener("mouseleave",D0),X.addEventListener("click",x),X.addEventListener("mousedown",Q0),W)X.addEventListener("mouseenter",E0),X.addEventListener("mouseleave",X0);return{show:N,hide:y,updateBounds:O,updatePosition:k,isVisible:()=>s,destroy:V0}};var zJ=(J)=>{let Q=null;return{name:"withScrollbar",priority:30,setup(Y){let{dom:q,config:K}=Y,{classPrefix:j,horizontal:U}=K;if(Q=i0(q.viewport,(W)=>Y.scrollController.scrollTo(W),J??{},j,U),!q.viewport.classList.contains(`${j}-viewport--custom-scrollbar`))q.viewport.classList.add(`${j}-viewport--custom-scrollbar`);if(J?.gutter)q.viewport.classList.add(`${j}-viewport--gutter`);Q.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize);let _=Q;Y.afterScroll.push((W,Z)=>{_.updatePosition(W),_.show()}),Y.resizeHandlers.push((W,Z)=>{if(_)_.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.contentSizeHandlers.push(()=>{if(_)_.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.destroyHandlers.push(()=>{if(_)_.destroy()})},destroy(){if(Q)Q.destroy(),Q=null}}};var N4=0.65,W4=0.5,y1=1.7,V4=0.95,_4=0.1,G4=5,D4=100,P1=(J,Q,Y,q=0)=>{if(J<=0)return 0;let K=Q-q;return Math.max(0,K*(1-Y)+q)},CJ=(J)=>{let Q=J?.force??!1,Y=null,q=0,K=!1,j=0,U=0,_=null,W=0,Z=0,V=null,b=[];return{name:"withScale",priority:20,setup(G){let{dom:H,config:S}=G,{classPrefix:$,horizontal:M}=S,w=y0(G.rawConfig.padding),z=M?w.left+w.right:w.top+w.bottom,C=()=>{let s=G.getVirtualTotal(),T=n0(s,G.sizeCache,Q);if(T.isCompressed&&!K){K=!0,G.scrollController.enableCompression(T);let I=M?H.viewport.scrollLeft:H.viewport.scrollTop;if(M)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(M)H.viewport.scrollLeft=0;else H.viewport.scrollTop=0;if(I>0)q=I,U=I;j=P1(T.virtualSize,G.state.viewportState.containerSize,T.ratio,z),G.updateContentSize(T.virtualSize+j),G.setScrollFns(()=>q,(B)=>{if(q=B,U=B,_!==null)cancelAnimationFrame(_),_=null});let l=()=>{let B=U-q;if(G.getVirtualTotal()===0){q=0,U=0,_=null,G.scrollController.scrollTo(0);return}if(Math.abs(B)<W4){let X=G.getCachedCompression(),R=Math.max(0,X.virtualSize+j-G.state.viewportState.containerSize);q=Math.max(0,Math.min(U,R)),U=q,_=null}else{q+=B*N4;let R=G.getCachedCompression().virtualSize+j-G.state.viewportState.containerSize;q=Math.max(0,Math.min(q,R)),_=requestAnimationFrame(l)}G.scrollController.scrollTo(q)},F=H.viewport,E=(B)=>{B.preventDefault();let X=G.getCachedCompression(),R=X.virtualSize+j-G.state.viewportState.containerSize;if(U=Math.max(0,Math.min(U+B.deltaY*X.ratio*y1,R)),_===null)_=requestAnimationFrame(l)};F.addEventListener("wheel",E,{passive:!1});let L=()=>{if(V!==null)cancelAnimationFrame(V),V=null},f=(B)=>{if(L(),_!==null)cancelAnimationFrame(_),_=null;let X=B.touches[0];if(!X)return;let R=M?X.clientX:X.clientY;W=R,Z=q,b=[{time:performance.now(),y:R}]},a=(B)=>{B.preventDefault();let X=B.touches[0];if(!X)return;let R=M?X.clientX:X.clientY,D=performance.now();if(b.push({time:D,y:R}),b.length>G4)b.shift();let A=W-R,N=G.getCachedCompression(),y=N.virtualSize+j-G.state.viewportState.containerSize,O=Math.max(0,Math.min(Z+A*N.ratio*y1,y));q=O,U=O,G.scrollController.scrollTo(O)},c=(B)=>{let X=performance.now(),R=b.filter((y)=>X-y.time<D4),D=0;if(R.length>=2){let y=R[0],O=R[R.length-1],k=O.time-y.time;if(k>0)D=(y.y-O.y)/k}if(b=[],Math.abs(D)<_4)return;let A=D*16,N=()=>{if(A*=V4,Math.abs(A)<0.5){V=null;return}let O=G.getCachedCompression().virtualSize+j-G.state.viewportState.containerSize,k=q+A;if(k=Math.max(0,Math.min(k,O)),k<=0&&A<0||k>=O&&A>0){q=k,U=k,G.scrollController.scrollTo(k),V=null;return}q=k,U=k,G.scrollController.scrollTo(k),V=requestAnimationFrame(N)};V=requestAnimationFrame(N)};F.addEventListener("touchstart",f,{passive:!0}),F.addEventListener("touchmove",a,{passive:!1}),F.addEventListener("touchend",c,{passive:!0}),F.addEventListener("touchcancel",c,{passive:!0}),G.destroyHandlers.push(()=>{F.removeEventListener("wheel",E),F.removeEventListener("touchstart",f),F.removeEventListener("touchmove",a),F.removeEventListener("touchend",c),F.removeEventListener("touchcancel",c)});let u=H.viewport.querySelector(`.${$}-scrollbar`),p=()=>{if((M?H.viewport.scrollLeft:H.viewport.scrollTop)!==0)if(M)H.viewport.scrollLeft=0;else H.viewport.scrollTop=0};if(F.addEventListener("scroll",p,{passive:!0}),G.destroyHandlers.push(()=>{F.removeEventListener("scroll",p)}),!u){if(Y=i0(H.viewport,(X)=>G.scrollController.scrollTo(X),{},$,M),!H.viewport.classList.contains(`${$}-viewport--custom-scrollbar`))H.viewport.classList.add(`${$}-viewport--custom-scrollbar`);Y.updateBounds(T.virtualSize,G.state.viewportState.containerSize);let B=Y;G.afterScroll.push((X,R)=>{if(B)B.updatePosition(X),B.show()}),G.resizeHandlers.push((X,R)=>{if(B){let D=G.getCachedCompression();B.updateBounds(D.virtualSize,G.state.viewportState.containerSize)}})}}else if(!T.isCompressed&&K){if(K=!1,_!==null)cancelAnimationFrame(_),_=null;if(V!==null)cancelAnimationFrame(V),V=null;if(q=0,U=0,b=[],G.setScrollFns(M?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,M?(I)=>{H.viewport.scrollLeft=I}:(I)=>{H.viewport.scrollTop=I}),M)H.viewport.scrollLeft=0;else H.viewport.scrollTop=0;if(G.scrollController.disableCompression(),M)H.viewport.style.overflowX="auto";else H.viewport.style.overflow="auto";if(Y)Y.destroy(),Y=null;j=0,G.updateContentSize(T.actualSize)}else if(T.isCompressed)G.scrollController.updateConfig({compression:T}),j=P1(T.virtualSize,G.state.viewportState.containerSize,T.ratio,z),G.updateContentSize(T.virtualSize+j);if(Y)Y.updateBounds(T.virtualSize+j,G.state.viewportState.containerSize);let h=G.state.viewportState;if(h.isCompressed=T.isCompressed,h.compressionRatio=T.ratio,h.totalSize=T.virtualSize+j,h.actualSize=T.actualSize,G.state.cachedCompression={state:T,totalItems:s},K){let I=Math.max(0,T.virtualSize+j-G.state.viewportState.containerSize),l=q;if(l>I)l=I;else if(l<0)l=0;if(l!==q){if(_!==null)cancelAnimationFrame(_),_=null;if(V!==null)cancelAnimationFrame(V),V=null;G.scrollController.scrollTo(l)}}for(let I=0;I<G.contentSizeHandlers.length;I++)G.contentSizeHandlers[I]()};G.updateCompressionMode=C;let r=G.getCachedCompression.bind(G);G.getCachedCompression=()=>{if(G.state.cachedCompression)return G.state.cachedCompression.state;return r()},G.setVisibleRangeFn((s,T,h,I,l)=>{v=null,g=null;let F=n0(I,h,Q);k1(s,T,h,I,F,l)}),G.setScrollToPosFn((s,T,h,I,l)=>{let F=n0(I,T,Q);return $1(s,T,h,I,F,l)});let v=null,g=null;G.setPositionElementFn((s,T)=>{let h=G.getVirtualTotal(),I=n0(h,G.sizeCache,Q);if(I.isCompressed){let l=G.scrollController.getScrollTop();if(v===null||T<g)g=T,v=Math.round(r0(T,l,G.sizeCache,h,G.state.viewportState.containerSize,I));let F=v+G.sizeCache.getOffset(T)-G.sizeCache.getOffset(g),E=G.config.horizontal;s.style.transform=E?`translateX(${F}px)`:`translateY(${F}px)`}else{let l=Math.round(G.sizeCache.getOffset(T)),F=G.config.horizontal;s.style.transform=F?`translateX(${l}px)`:`translateY(${l}px)`}});let P=M?w.left:w.top,m=M?w.right:w.bottom,t=G.getItemToScrollIndexFn();G.methods.set("_scrollItemIntoView",(s)=>{let T=G.getCachedCompression(),h=G.state.viewportState.containerSize,I=G.state.viewportState.scrollPosition,l=G.getVirtualTotal(),{visibleRange:F}=G.state.viewportState,E=t(s),L=XJ(E,G.sizeCache,I,h,P,m,T,l,F);if(L!==I)G.scrollController.scrollTo(L)}),C(),G.destroyHandlers.push(()=>{if(Y)Y.destroy(),Y=null;if(_!==null)cancelAnimationFrame(_),_=null;if(V!==null)cancelAnimationFrame(V),V=null})}}};var R1=(J={})=>{let{chunkSize:Q=100,maxCachedItems:Y=5000,evictionBuffer:q=200,onEvict:K}=J,j=new Map,U=0,_=0,W=(F)=>{let E=j.get(F);if(!E)E={items:Array(Q),count:0,lastAccess:Date.now()},j.set(F,E);else E.lastAccess=Date.now();return E},Z=(F)=>{return Math.floor(F/Q)},V=(F)=>{return F%Q},b=()=>U,G=(F)=>{U=F},H=(F)=>{if(F<0||F>=U)return;let E=Z(F),L=j.get(E);if(!L)return;return L.items[V(F)]},S=(F)=>{if(F<0||F>=U)return!1;let E=Z(F),L=j.get(E);if(!L)return!1;return L.items[V(F)]!==void 0},$=(F,E)=>{let L=Z(F),f=W(L),a=V(F),c=f.items[a]===void 0;if(f.items[a]=E,c)f.count++,_++;if(F>=U)U=F+1},M=(F,E)=>{for(let L=0;L<E.length;L++){let f=E[L];if(f!==void 0)$(F+L,f)}},w=(F)=>{if(F<0||F>=U)return!1;let E=Z(F),L=j.get(E),f=V(F);if(!(L!==void 0&&L.items[f]!==void 0))return!1;let c=E,u=Array.from(j.keys()).filter((B)=>B>=c).sort((B,X)=>B-X),p=[];for(let B of u){let X=j.get(B),R=B*Q;for(let D=0;D<Q;D++){if(X.items[D]===void 0)continue;let A=R+D;if(A<=F)continue;p.push({oldIndex:A,item:X.items[D]})}}if(L.items[f]=void 0,L.count--,_--,L.count===0)j.delete(E);for(let{oldIndex:B}of p){let X=Z(B),R=j.get(X);if(!R)continue;let D=V(B);if(R.items[D]!==void 0){if(R.items[D]=void 0,R.count--,_--,R.count===0)j.delete(X)}}for(let{oldIndex:B,item:X}of p){let R=B-1,D=Z(R),A=W(D),N=V(R);A.items[N]=X,A.count++,_++}return U--,!0},z=(F,E)=>{let L=[];for(let f=F;f<=E&&f<U;f++)L.push(H(f));return L},C=(F,E)=>{for(let L=F;L<=E&&L<U;L++)if(!S(L))return!1;return!0},r=()=>{let F=[],E=null,L=Array.from(j.keys()).sort((f,a)=>f-a);for(let f of L){let a=j.get(f);if(!a)continue;let c=f*Q;for(let u=0;u<Q;u++){let p=c+u;if(p>=U)break;if(a.items[u]!==void 0)if(E===null)E={start:p,end:p};else if(p===E.end+1)E.end=p;else F.push(E),E={start:p,end:p};else if(E!==null)F.push(E),E=null}}if(E!==null)F.push(E);return F},v=(F,E)=>{let L=[],f=null;for(let a=F;a<=E&&a<U;a++)if(!S(a))if(f===null)f={start:a,end:a};else f.end=a;else if(f!==null)L.push(f),f=null;if(f!==null)L.push(f);return L},g=(F)=>{return j.has(F)},P=(F)=>{let E=j.get(F);if(E)E.lastAccess=Date.now()},m=(F,E)=>{if(F>E||j.size===0)return;let L=Date.now(),f=Z(Math.max(0,F)),a=Z(Math.min(U-1,E));for(let c=f;c<=a;c++){let u=j.get(c);if(u)u.lastAccess=L}},t=(F,E)=>{if(_<=Y)return 0;let L=Math.max(0,F-q),f=Math.min(U-1,E+q),a=Z(L),c=Z(f),u=0,p=[];for(let[B,X]of j)if(B<a||B>c)u+=X.count,p.push(B),_-=X.count,j.delete(B);if(u>0&&K)K(u,p);return u},s=()=>{if(_<=Y)return 0;let F=Array.from(j.entries()).sort(([,f],[,a])=>f.lastAccess-a.lastAccess),E=0,L=[];for(let[f,a]of F){if(_<=Y)break;E+=a.count,_-=a.count,L.push(f),j.delete(f)}if(E>0&&K)K(E,L);return E},T=()=>{return{totalItems:U,cachedItems:_,cachedChunks:j.size,chunkSize:Q,maxCachedItems:Y,memoryEfficiency:U>0?1-_/U:1}},h=()=>_,I=()=>{j.clear(),_=0};return{chunkSize:Q,maxCachedItems:Y,getTotal:b,setTotal:G,get:H,has:S,set:$,setRange:M,delete:w,getRange:z,isRangeLoaded:C,getLoadedRanges:r,findUnloadedRanges:v,getChunkIndex:Z,isChunkLoaded:g,touchChunk:P,touchChunksForRange:m,evictDistant:t,evictToLimit:s,getStats:T,getCachedCount:h,clear:I,reset:()=>{I(),U=0}}},M4=(J)=>{if(J.length===0)return[];let Q=[...J].sort((q,K)=>q.start-K.start),Y=[{...Q[0]}];for(let q=1;q<Q.length;q++){let K=Q[q],j=Y[Y.length-1];if(K.start<=j.end+1)j.end=Math.max(j.end,K.end);else Y.push({...K})}return Y},w1=(J,Q,Y)=>{let q=Math.floor(J.start/Y)*Y,K=Math.ceil((J.end+1)/Y)*Y-1,j={start:q,end:K};if(Q.length===0)return[j];let U=[],_=M4(Q),W=j.start;for(let Z of _){if(Z.end<W)continue;if(Z.start>j.end)break;if(Z.start>W)U.push({start:W,end:Math.min(Z.start-1,j.end)});if(W=Z.end+1,W>j.end)break}if(W<=j.end)U.push({start:W,end:j.end});return U};var z1=(J={})=>{let{maskCharacter:Q=A1,maxSampleSize:Y=L1}=J,q=[],K=!1,j=(V)=>{if(K||V.length===0)return;let b=Math.min(V.length,Y);for(let G=0;G<b;G++){let H=V[G];if(!H||typeof H!=="object")continue;let S={};for(let[$,M]of Object.entries(H)){if($.startsWith("_")||$==="id")continue;S[$]=String(M??"").length}if(Object.keys(S).length>0)q.push(S)}K=!0},U=()=>K,_=(V)=>{let b={id:`${R0}${V}`,[TJ]:!0,_index:V};if(q.length===0)return b.label=Q.repeat(12),b;let G=q[V%q.length];for(let[H,S]of Object.entries(G))b[H]=Q.repeat(Math.max(1,S));return b};return{analyzeStructure:j,hasAnalyzedStructure:U,generate:_,generateRange:(V,b)=>{let G=[];for(let H=V;H<=b;H++)G.push(_(H));return G},clear:()=>{q=[],K=!1}}},BJ=(J)=>{if(!J||typeof J!=="object")return!1;return J[TJ]===!0};var O4=50,C1=(J={})=>{let{adapter:Q,initialItems:Y,initialTotal:q,storage:K,placeholder:j,pageSize:U=O4,onStateChange:_,onItemsLoaded:W,onItemsEvicted:Z}=J,V=R1({...K,onEvict:(o,Q0)=>{Z?.(o),m()}}),b=null,G=()=>{if(!b)b=z1(j);return b},H=new Map,S=!1,$,M=!0,w,z,C=[],r=0,v=new Map,g=new Map,P=()=>{for(let o of g.values())o.abort();g.clear(),v.clear()},m=()=>{_?.(L())},t=()=>{H.clear();let o=V.getLoadedRanges();for(let Q0 of o)for(let q0=Q0.start;q0<=Q0.end;q0++){let U0=V.get(q0);if(U0&&!BJ(U0))H.set(U0.id,q0)}},s=(o,Q0)=>{if(!BJ(Q0))H.set(Q0.id,o)},T=(o)=>{H.delete(o)},h=(o,Q0)=>{return`${o}-${Q0}`},I=()=>V.getTotal(),l=()=>V.getCachedCount(),F=()=>S,E=()=>M,L=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:S,pendingRanges:C,error:$,hasMore:M,cursor:w}),f=()=>V,a=()=>G(),c=(o)=>{let Q0=V.get(o);if(Q0!==void 0)return Q0;if(o>=0&&o<V.getTotal())return G().generate(o);return},u=(o)=>{let Q0=H.get(o);if(Q0===void 0)return;return V.get(Q0)},p=(o)=>{return H.get(o)??-1},B=(o)=>{let Q0=V.get(o);return Q0!==void 0&&!BJ(Q0)},X=(o,Q0)=>{let q0=[],U0=V.getTotal(),Z0=0,N0=0;V.touchChunksForRange(o,Math.min(Q0,U0-1));for(let D0=o;D0<=Q0&&D0<U0;D0++){let E0=V.get(D0);if(E0!==void 0)q0.push(E0),Z0++;else q0.push(G().generate(D0)),N0++}return q0},R=(o)=>{V.setTotal(o),M=V.getCachedCount()<o,m()},D=(o,Q0=0,q0)=>{if(Q&&o.length>0){let U0=G();if(!U0.hasAnalyzedStructure())U0.analyzeStructure(o)}for(let U0=0;U0<o.length;U0++){let Z0=o[U0];if(Z0!==void 0){let N0=Q0+U0;V.set(N0,Z0),s(N0,Z0)}}if(q0!==void 0)V.setTotal(q0);else if(Q0+o.length>V.getTotal())V.setTotal(Q0+o.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)M=!1;m(),W?.(o,Q0,V.getTotal())},A=(o,Q0)=>{let q0=V.get(o);if(!q0)return!1;let U0=q0.id,Z0={...q0,...Q0};if(V.set(o,Z0),Q0.id!==void 0&&Q0.id!==U0)T(U0);return s(o,Z0),m(),!0},N=(o)=>{let Q0=H.get(o);if(Q0===void 0)return!1;if(!V.delete(Q0))return!1;return t(),P(),m(),!0},y=async(o,Q0)=>{if(!Q)return;let q0=h(o,Q0);if(v.has(q0))return;let U0=V.getLoadedRanges(),Z0=w1({start:o,end:Q0},U0,V.chunkSize);if(Z0.length===0)return;let N0=V.chunkSize,D0=N0*2;for(let[V0,K0]of g){let _0=V0.indexOf("-"),W0=parseInt(V0.slice(0,_0),10);if(Math.abs(W0-o)>D0)K0.abort(),g.delete(V0),v.delete(V0)}let E0=[];for(let V0 of Z0){let K0=Math.floor(V0.start/N0),_0=Math.floor(V0.end/N0);for(let W0=K0;W0<=_0;W0++){let B0=W0*N0,A0=B0+N0-1,O0=h(B0,A0);if(!E0.some((L0)=>L0.start===B0)&&!v.has(O0))E0.push({start:B0,end:A0})}}let X0=[];for(let V0 of Z0){let K0=Math.floor(V0.start/N0),_0=Math.floor(V0.end/N0);for(let W0=K0;W0<=_0;W0++){let B0=W0*N0,A0=B0+N0-1,O0=h(B0,A0);if(v.has(O0)){let L0=v.get(O0);if(!X0.includes(L0))X0.push(L0)}}}for(let V0 of E0){let K0=h(V0.start,V0.end),_0=new AbortController;g.set(K0,_0);let W0=(async()=>{C.push(V0),S=!0,$=void 0,m();try{let B0=V0.end-V0.start+1,A0={offset:V0.start,limit:B0,cursor:V0.start===z?w:void 0,signal:_0.signal},O0=await Q.read(A0);if(D(O0.items,V0.start,O0.total),O0.cursor)w=O0.cursor,z=V0.start+O0.items.length;let L0=V0.start+O0.items.length;if(L0>=r){if(r=L0,O0.hasMore!==void 0)M=O0.hasMore;else if(O0.total!==void 0)M=L0<O0.total}}catch(B0){if(B0?.name==="AbortError")return;$=B0 instanceof Error?B0:Error(String(B0))}finally{v.delete(K0),g.delete(K0),C=C.filter((B0)=>B0.start!==V0.start||B0.end!==V0.end),S=v.size>0,m()}})();v.set(K0,W0),X0.push(W0)}await Promise.all(X0)},O=async(o,Q0)=>{if(V.isRangeLoaded(o,Q0))return;await y(o,Q0)},k=async()=>{if(!Q)return;await y(0,U-1)},x=async()=>{if(!Q||S||!M)return!1;let o=V.getCachedCount(),Q0=V.getTotal(),q0=o,U0=Math.min(q0+U-1,Q0>0?Q0-1:q0+U-1);if(q0>=Q0&&Q0>0)return M=!1,!1;return await y(q0,U0),V.getCachedCount()>o},n=async()=>{if(V.clear(),V.setTotal(0),H.clear(),b)b.clear();P(),C=[],S=!1,w=void 0,z=void 0,M=!0,r=0,$=void 0,m()},e=(o,Q0)=>{if(V.evictDistant(o,Q0)>0)t()},J0=()=>{V.clear(),H.clear(),w=void 0,z=void 0,$=void 0,C=[],S=!1,m()},j0=()=>{if(V.reset(),H.clear(),b)b.clear();w=void 0,z=void 0,M=!0,r=0,$=void 0,C=[],S=!1,m()};if(Y&&Y.length>0)D(Y,0,q??Y.length);else if(q!==void 0)V.setTotal(q),m();return{getState:L,getTotal:I,getCached:l,getIsLoading:F,getHasMore:E,getStorage:f,getPlaceholders:a,getItem:c,getItemById:u,getIndexById:p,isItemLoaded:B,getItemsInRange:X,setTotal:R,setItems:D,updateItem:A,removeItem:N,loadRange:y,ensureRange:O,loadInitial:k,loadMore:x,reload:n,evictDistant:e,clear:J0,reset:j0}};var vJ=(J)=>{let{adapter:Q,loading:Y,storage:q,total:K,autoLoad:j=!0}=J,U=Y?.cancelThreshold??O1,_=Y?.preloadThreshold??E1,W=Y?.preloadAhead??M1;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Z){let{emitter:V}=Z,b=Z.config.reverse,G=Z.methods.get("_getGridLayout"),H=(T)=>{if(G){let h=G();if(h){let I=Z.dataManager.getTotal();return h.getItemRange(T.start,T.end,I)}}return T},S=C1({adapter:Q,...K!==void 0&&{initialTotal:K},pageSize:q?.chunkSize??x0,...q&&{storage:{...q.chunkSize!==void 0&&{chunkSize:q.chunkSize},...q.maxCachedItems!==void 0&&{maxCachedItems:q.maxCachedItems}}},onStateChange:()=>{if(Z.state.isInitialized){let T=Z.getVirtualTotal();Z.sizeCache.rebuild(T),Z.updateCompressionMode();let h=Z.getCachedCompression();Z.state.viewportState.totalSize=h.virtualSize,Z.state.viewportState.actualSize=h.actualSize,Z.state.viewportState.isCompressed=h.isCompressed,Z.state.viewportState.compressionRatio=h.ratio,Z.updateContentSize(h.virtualSize),Z.renderIfNeeded()}},onItemsLoaded:(T,h,I)=>{if(Z.state.isInitialized)Z.forceRender(),V.emit("load:end",{items:T,total:I,offset:h})}});Z.replaceDataManager(S);let $=null,M=null,w=0,z=!1,C=null,r=120,v=(T=!1)=>{if(z=!1,M=null,T)$=null;if(C!==null)clearTimeout(C),C=null},g=()=>{if(!M)return;M=null;let{renderRange:T}=Z.state.viewportState;if(T.end<T.start)return;$=null;let h=H(T);Z.dataManager.ensureRange(h.start,h.end).catch((I)=>{V.emit("error",{error:I,context:"ensureRange"})})};Z.afterScroll.push((T,h)=>{if(Z.state.isDestroyed)return;let I=Z.scrollController.getVelocity(),F=Z.scrollController.isTracking()&&I<=U;if(w>U&&I<=U)z=!0;else if(z&&I>U)v();if(z&&I<0.5)v(!0);if(w=I,(Z.scrollController.isAtTop()||Z.scrollController.isAtBottom())&&(z||M))v(!0),F=!0;let L=z&&I>0.5;if(F&&!Z.dataManager.getIsLoading()&&Z.dataManager.getHasMore()){if(b){if(T<FJ)V.emit("load:start",{offset:Z.dataManager.getCached(),limit:x0}),Z.dataManager.loadMore().catch((c)=>{V.emit("error",{error:c,context:"loadMore"})})}else if(Z.state.viewportState.totalSize-T-Z.state.viewportState.containerSize<FJ)V.emit("load:start",{offset:Z.dataManager.getCached(),limit:x0}),Z.dataManager.loadMore().catch((u)=>{V.emit("error",{error:u,context:"loadMore"})})}let{renderRange:f}=Z.state.viewportState;if(!$||f.start!==$.start||f.end!==$.end){if($={start:f.start,end:f.end},F&&!L){if(M=null,C!==null)clearTimeout(C),C=null;let c=H(f),u=c.start,p=c.end,B=G?Z.dataManager.getTotal():Z.getVirtualTotal();if(I>_)if(h==="down")p=Math.min(c.end+W,B-1);else u=Math.max(c.start-W,0);Z.dataManager.ensureRange(u,p).catch((X)=>{V.emit("error",{error:X,context:"ensureRange"})})}else if(M={start:f.start,end:f.end},L){if(C!==null)clearTimeout(C);C=setTimeout(()=>{C=null,g(),v()},r)}}});let P=200,m=null;Z.afterScroll.push((T,h)=>{if(m!==null)clearTimeout(m);m=setTimeout(()=>{m=null,g(),v()},P)}),Z.destroyHandlers.push(()=>{if(m!==null)clearTimeout(m),m=null;v()});let t=()=>{if(Z.state.isDestroyed)return;$=null;let{renderRange:T}=Z.state.viewportState;if(T.end>0){let h=H(T);Z.dataManager.ensureRange(h.start,h.end).catch((I)=>{V.emit("error",{error:I,context:"ensureRange"})})}g()};window.addEventListener("online",t),Z.destroyHandlers.push(()=>{window.removeEventListener("online",t)}),V.on("load:start",()=>{Z.dom.root.setAttribute("aria-busy","true")}),V.on("load:end",()=>{Z.dom.root.removeAttribute("aria-busy")}),Z.methods.set("loadVisibleRange",async()=>{$=null,M=null,Z.forceRender();let{renderRange:T}=Z.state.viewportState;if(T.end>0){let h=H(T);V.emit("load:start",{offset:h.start,limit:h.end-h.start+1}),await Z.dataManager.ensureRange(h.start,h.end)}}),Z.methods.set("reload",async(T)=>{$=null,M=null;let h=T?.snapshot,I=h!=null&&(h.total??0)>0&&h.index>0,l=I||T?.skipInitialLoad===!0;if(Z.invalidateRendered(),await Z.dataManager.reload(),!I)Z.scrollController.scrollTo(0);if(!l){V.emit("load:start",{offset:0,limit:x0}),await Z.dataManager.loadInitial(),Z.forceRender();let{renderRange:F}=Z.state.viewportState;if(F.end>0){let E=H(F);await Z.dataManager.ensureRange(E.start,E.end)}}if(I){let F=Z.methods.get("restoreScroll");if(F)F(h)}});let s=!1;if(Z.methods.set("_cancelAutoLoad",()=>{s=!0}),j)queueMicrotask(()=>{if(s)return;V.emit("load:start",{offset:0,limit:x0}),Z.dataManager.loadInitial().catch((T)=>{V.emit("error",{error:T,context:"loadInitial"})})});else if(K!==void 0)Z.dataManager.setTotal(K)}}};var NJ=(J)=>J==null?0:typeof J==="function"?J():J,SJ=(J)=>{let Q=null,Y=J?.scrollPadding;return{name:"withPage",priority:5,setup(q){let{dom:K,state:j,config:U,emitter:_}=q;if(K.root.style.overflow="visible",K.root.style.height="auto",U.horizontal)K.viewport.style.overflowX="visible",K.viewport.style.overflowY="visible";else K.viewport.style.overflow="visible";if(K.viewport.classList.remove(`${U.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let b=K.viewport.getBoundingClientRect();return Math.max(0,U.horizontal?-b.left:-b.top)},(b)=>{let G=K.viewport.getBoundingClientRect();if(U.horizontal){let H=G.left+window.scrollX;window.scrollTo({left:H+b,top:window.scrollY,behavior:"instant"})}else{let H=G.top+window.scrollY;window.scrollTo({left:window.scrollX,top:H+b,behavior:"instant"})}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight,Y){let b=U.horizontal,G=q.getItemToScrollIndexFn();q.setScrollToPosFn((H,S,$,M,w)=>{let z=NJ(b?Y.left:Y.top),C=NJ(b?Y.right:Y.bottom);if(M===0)return 0;let r=Math.max(0,Math.min(H,M-1)),v=S.getOffset(r),g=S.getSize(r),P=S.getTotalSize(),m=Math.max(0,P-$+C),t;switch(w){case"start":t=v-z;break;case"center":{let s=$-z-C;t=v-z-(s-g)/2;break}case"end":t=v-$+g+C;break}return Math.max(-z,Math.min(t,m))}),q.methods.set("_scrollItemIntoView",(H)=>{let S=G(H),$=b?window.innerWidth:window.innerHeight,M=NJ(b?Y.left:Y.top),w=NJ(b?Y.right:Y.bottom),z=K.viewport.getBoundingClientRect(),C=b?window.scrollX:window.scrollY,r=(b?z.left:z.top)+C,v=r-C,g=q.sizeCache.getOffset(S),P=q.sizeCache.getSize(S),m=v+g,t=m+P,s=M,T=$-w,h=C;if(m<s)h=r+g-s;else if(t>T)h=r+g+P-T;if(h!==C)if(b)window.scrollTo({left:h,top:window.scrollY,behavior:"instant"});else window.scrollTo({left:window.scrollX,top:h,behavior:"instant"})})}let{innerHeight:W,innerWidth:Z}=window,V=()=>{let{innerWidth:b,innerHeight:G}=window,H=U.horizontal?b:G,S=U.horizontal?Z:W;if(Math.abs(H-S)<=1)return;W=G,Z=b,j.viewportState.containerSize=G,_.emit("resize",{width:b,height:G});for(let $=0;$<q.resizeHandlers.length;$++)q.resizeHandlers[$](b,G);q.renderIfNeeded()};window.addEventListener("resize",V,{passive:!0}),Q=()=>{window.removeEventListener("resize",V)},q.destroyHandlers.push(Q)},destroy(){if(Q)Q(),Q=null}}};var fJ=(J,Q)=>{let Y=0,q=J.length-1;while(Y<q){let K=Y+q+1>>>1;if(J[K].headerLayoutIndex<=Q)Y=K;else q=K-1}return Y},v1=(J,Q)=>{let Y=0,q=J.length-1;while(Y<q){let K=Y+q+1>>>1;if(J[K].firstDataIndex<=Q)Y=K;else q=K-1}return Y},S1=(J,Q)=>{if(J===0)return[];let Y=[],q=Q(0),K=0,j=0;for(let U=1;U<J;U++){let _=Q(U);if(_!==q){let W=U-K;Y.push({key:q,groupIndex:Y.length,headerLayoutIndex:j,firstDataIndex:K,count:W}),j=j+1+W,q=_,K=U}}return Y.push({key:q,groupIndex:Y.length,headerLayoutIndex:j,firstDataIndex:K,count:J-K}),Y},IJ=(J,Q)=>{if(J.length===0||Q.length===0)return[];let Y=J.length+Q.length,q=Array(Y),K=0;for(let j of Q){q[K]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},K++;for(let U=0;U<j.count;U++)q[K]=J[j.firstDataIndex+U],K++}return q},hJ=(J,Q,Y=!1)=>{let q=typeof Q==="number"?(K)=>Q:Q;return(K)=>{let j=J.getEntry(K);if(j.type==="header"){if(Y&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return q(j.dataIndex)}},f1=(J,Q)=>{let Y=S1(J,Q.getGroupForIndex),q=J+Y.length,K=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return q},get groupCount(){return Y.length},get groups(){return Y},getEntry:(G)=>{if(Y.length===0)return{type:"item",dataIndex:G,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let H=fJ(Y,G),S=Y[H];if(G===S.headerLayoutIndex)return{type:"header",group:S};let $=G-S.headerLayoutIndex-1;return{type:"item",dataIndex:S.firstDataIndex+$,group:S}},layoutToDataIndex:(G)=>{if(Y.length===0)return G;let H=fJ(Y,G),S=Y[H];if(G===S.headerLayoutIndex)return-1;let $=G-S.headerLayoutIndex-1;return S.firstDataIndex+$},dataToLayoutIndex:(G)=>{if(Y.length===0)return G;let H=v1(Y,G),S=Y[H],$=G-S.firstDataIndex;return S.headerLayoutIndex+1+$},getGroupAtLayoutIndex:(G)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let H=fJ(Y,G);return Y[H]},getGroupAtDataIndex:(G)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let H=v1(Y,G);return Y[H]},getHeaderHeight:typeof K==="number"?(G)=>K:(G)=>{let H=Y[G];if(!H)return 0;return K(H.key,G)},rebuild:(G)=>{Y=S1(G,Q.getGroupForIndex),q=G+Y.length}}};var I1=(J,Q,Y,q,K,j=!1,U=0)=>{let _=j?"width":"height",W=j?"height":"width",Z=j?"X":"Y",V=(X,R)=>{X.style[_]=`${R}px`},b=document.createElement("div");b.className=`${K}-sticky-header`,b.setAttribute("role","presentation"),b.setAttribute("aria-hidden","true"),b.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(j?`top:0;bottom:0;left:${U||0}px`:`top:${U||0}px`);let G=()=>{let X=document.createElement("div");return X.className="sticky-group",X.style.position="absolute",X.style.willChange="transform",X.style[W]="100%",X},H=G(),S=G();b.append(H,S),J.insertBefore(b,J.firstChild);let $=H,M=S,w=Q.groups,z=[],C=[],r=0,v=()=>{w=Q.groups,r=w.length,z=Array(r),C=Array(r);for(let X=0;X<r;X++)z[X]=Y.getOffset(w[X].headerLayoutIndex),C[X]=Q.getHeaderHeight(X)};v();let g=-1,P=0,m=-1,t=!1,s=0,T=!1,h=(X,R)=>{q(X,R);let D=C[R];return V(X,D),D},I=(X)=>{X.replaceChildren(),X.style.transform=""},l=(X)=>{if(X===g)return;if(g=X,P=0,X<0||X>=r){I($);return}P=h($,X),V(b,P),$.style.transform=""},F=(X)=>{if(X===s)return;s=X;let R=Math.round(X);$.style.transform=`translate${Z}(${R}px)`,M.style.transform=`translate${Z}(${R+P}px)`},E=()=>{s=0,$.style.transform="",M.style.transform=""},L=()=>{if(!T)return;let X=$;$=M,M=X,g=m,P=g>=0?C[g]:0,V(b,P),I(M),m=-1,T=!1,E()},f=()=>{if(!T)return;I(M),m=-1,T=!1,E()},a=()=>{if(t)return;t=!0,b.style.display=""},c=()=>{if(!t)return;t=!1,b.style.display="none",I($),g=-1,P=0,f()},u=(X)=>{if(r===0){c();return}if(X<z[0]){c();return}let R=0,D=r-1;while(R<D){let N=R+D+1>>>1;if(z[N]+C[N]<=X)R=N;else D=N-1}if(!t)a();l(R);let A=R+1;if(A<r){let N=z[A]-X;if(N<=0&&N>-P){if(m!==A||!T)m=A,h(M,A),T=!0;F(N)}else if(N<=-P){if(T)L()}else if(T)f()}else if(T)f()},p=()=>{v();let X=g;if(g=-1,P=0,X>=0)l(X)},B=()=>{b.remove(),g=-1,P=0,m=-1,t=!1,T=!1};return b.style.display="none",{update:u,refresh:p,show:a,hide:c,destroy:B}};var C0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var h1=(J,Q,Y,q,K,j)=>{if(q===0)return 0;let U=Math.max(0,Math.min(J,q-1)),_=Q.getOffset(U),W=Q.getSize(U),Z=Q.getTotalSize(),V=Math.max(0,Z-Y),b;switch(j){case"center":b=_-Y/2+W/2;break;case"end":b=_-Y+W;break;case"start":default:b=_;break}return Math.max(0,Math.min(b,V))};var t0=(J,Q,Y,q,K="start",j,U=h1)=>{return U(J,Q,Y,q,j,K)};var E4=(J,Q)=>{if(J.header){let Y=Q?J.header.width??J.header.height:J.header.height??J.header.width;return{...J,header:{...J.header,height:Y}}}if(J.headerHeight!=null&&J.headerTemplate)return{...J,header:{height:J.headerHeight,template:J.headerTemplate}};return J},pJ=(J)=>{let Q=J.header,Y=Q?Q.height??Q.width:J.headerHeight,q=Q?.template??J.headerTemplate;if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(Y==null||Y<=0)throw Error("[vlist/builder] withGroups: header.height must be a positive number");if(!q)throw Error("[vlist/builder] withGroups: header.template is required");let K=null,j=null,U=[],_=[];return{name:"withGroups",priority:10,setup(W){let{dom:Z,config:V,rawConfig:b}=W,{classPrefix:G}=V,H=E4(J,V.horizontal),$=b.item.height;U=b.items?[...b.items]:[];let M=U.length,w={getGroupForIndex:H.getGroupForIndex,header:{height:H.header.height,template:H.header.template},sticky:H.sticky??!1};K=f1(M,w),_=IJ(U,K.groups);let z=H.sticky!==!1,C=hJ(K,$,z);W.setSizeConfig(C),W.rebuildSizeCache(_.length),W.dataManager.setItems(_,0,_.length);let r=b.item.template,{template:v}=H.header,g=(c,u,p)=>{if(C0(c))return v(c.groupKey,c.groupIndex);return r(c,u,p)},P=W.methods.get("_getGridLayout"),m=W.methods.get("_replaceGridRenderer"),t=W.methods.get("_updateGridLayoutForGroups"),s=W.methods.get("_createGridRenderer"),T=W.methods.get("_getTableLayout"),h=W.methods.get("_updateTableForGroups"),I=W.methods.get("_getTableHeaderHeight");if(P&&m&&s){if(t)t((p)=>{let B=_[p];return!!(B&&C0(B))});let c=P(),u=s(Z.items,g,W.sizeCache,c,G,W.getContainerWidth(),()=>W.dataManager.getTotal(),V.ariaIdPrefix);m(u)}else if(T&&h)h((c)=>C0(c),H.header.template);else W.replaceTemplate(g);let l=I?I():0;if(Z.root.classList.add(`${G}--grouped`),H.sticky!==!1)if(W.methods.set("_getStickyHeaderHeight",()=>H.header.height),!V.horizontal)Z.viewport.style.height=`calc(100% - ${H.header.height}px)`;else Z.viewport.style.width=`calc(100% - ${H.header.height}px)`;if(H.sticky!==!1){let c=H.header.template,u=(B,X)=>{let R=K.groups[X];if(!R)return;let D=c(R.key,R.groupIndex);if(typeof D==="string")B.innerHTML=D;else B.replaceChildren(D)};j=I1(Z.root,K,W.sizeCache,u,G,V.horizontal,l);let p=j;W.afterScroll.push((B,X)=>{p.update(B)}),j.update(W.scrollController.getScrollTop())}let F=b.item?.striped,E=()=>{if(F!=="data"&&F!=="even"&&F!=="odd")return;let c=new Int32Array(_.length),u=F==="odd"?1:0,p=0;for(let B=0;B<_.length;B++)if(C0(_[B])){if(c[B]=-1,F==="even"||F==="odd")p=0}else c[B]=p+++u;W.setStripeIndexFn((B)=>{if(B<0||B>=c.length)return B;return c[B]})};E();let L=()=>{if(!K)return;K.rebuild(U.length),_=IJ(U,K.groups);let c=hJ(K,$,z);if(W.setSizeConfig(c),W.rebuildSizeCache(_.length),W.dataManager.setItems(_,0,_.length),E(),j)j.refresh()};W.methods.set("setItems",(c)=>{U=c.slice(),L()}),W.methods.set("appendItems",(c)=>{U.push(...c),L()}),W.methods.set("prependItems",(c)=>{U.unshift(...c),L()}),W.methods.set("removeItem",(c)=>{U=U.filter((u)=>u.id!==c),L()});let{animateScroll:f,cancelScroll:a}=l0(W.scrollController,W.renderIfNeeded);W.methods.set("scrollToIndex",(c,u)=>{let p=K.dataToLayoutIndex(c),{align:B,behavior:X,duration:R}=z0(u),D=W.dataManager.getTotal(),A=W.adjustScrollPosition(t0(p,W.sizeCache,W.state.viewportState.containerSize,D,B,W.getCachedCompression()));if(X==="smooth")f(W.scrollController.getScrollTop(),A,R);else a(),W.scrollController.scrollTo(A)}),W.methods.set("_getItems",()=>U),W.methods.set("_getTotal",()=>U.length),W.methods.set("_isGroupHeader",(c)=>{let u=_[c];return!!(u&&C0(u))}),W.destroyHandlers.push(()=>{if(a(),j)j.destroy(),j=null;Z.root.classList.remove(`${G}--grouped`)})},destroy(){if(j)j.destroy(),j=null}}};var p1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,q=J.isHeaderFn,K={row:0,col:0},j=(S)=>{if(S<=0)return 0;if(!q)return Math.ceil(S/Q);let $=0,M=0,w=0;for(let z=0;z<S;z++)if(q(z)){if(w++,M>0)$++,M=0;$++,M=0}else if(M++,M>=Q)$++,M=0;if(M>0)$++;return $},U=(S)=>{return K.row=_(S),K.col=W(S),K},_=(S)=>{if(!q)return Math.floor(S/Q);let $=0,M=0;for(let w=0;w<=S;w++)if(q(w)){if(M>0)$++,M=0;if(w===S)return $;$++,M=0}else{if(w===S)return $;if(M++,M>=Q)$++,M=0}return console.warn(`⚠️ getRow(${S}) fell through - returning ${$}`),$},W=(S)=>{if(!q)return S%Q;if(q(S))return 0;let $=0;for(let M=0;M<=S;M++)if(q(M))$=0;else{if(M===S)return $;if($++,$>=Q)$=0}return $},Z=(S,$,M)=>{if(M<=0)return{start:0,end:-1};if(!q){let v=Math.max(0,S*Q),g=Math.min(M-1,($+1)*Q-1);return{start:v,end:g}}let w=-1,z=-1,C=0,r=0;for(let v=0;v<M;v++){if(q(v)){if(r>0)C++,r=0;if(C>=S&&C<=$){if(w===-1)w=v;z=v}C++,r=0}else{if(C>=S&&C<=$){if(w===-1)w=v;z=v}if(r++,r>=Q)C++,r=0}if(C>$&&r===0)break}if(w===-1)return{start:0,end:-1};return{start:w,end:z}},V=(S,$,M)=>{if($<0||$>=Q)return-1;let w=S*Q+$;if(w<0||w>=M)return-1;return w},b=(S)=>{let $=(Q-1)*Y;return Math.max(0,(S-$)/Q)};return{get columns(){return Q},get gap(){return Y},update:(S)=>{if(S.columns!==void 0)Q=Math.max(1,Math.floor(S.columns));if(S.gap!==void 0)Y=S.gap;if(S.isHeaderFn!==void 0)q=S.isHeaderFn},getTotalRows:j,getPosition:U,getRow:_,getCol:W,getItemRange:Z,getItemIndex:V,getColumnWidth:b,getColumnOffset:(S,$)=>{let M=b($);return S*(M+Y)}}};var A4=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),Q.push(j)},clear:()=>{Q.length=0}}},L4=1,uJ=(J,Q,Y,q,K,j,U,_,W=!1)=>{let Z=A4(),V=new Map,b=j,G=!1,H=0,S="",$=-1,M={selected:!1,focused:!1},w=(B,X)=>{return M.selected=B,M.focused=X,M},z=`${K}-item ${K}-grid-item`,C=`${K}-item--selected`,r=`${K}-item--focused`,v=`${K}-item--placeholder`,g=`${K}-item--replaced`,P=(B,X)=>{if(typeof X==="string")B.innerHTML=X;else B.replaceChildren(X)},m=(B,X,R)=>{B.classList.toggle(C,X),B.classList.toggle(r,R)},t=(B,X)=>{let R=q.getRow(B);if(X?.compression?.isCompressed)return r0(R,X.scrollPosition,Y,X.totalItems,X.containerSize,X.compression,X.rangeStart);return Y.getOffset(R)},s=(B,X)=>{let R=G&&q.getCol(B)===0,D=R?0:q.getCol(B),A=R?0:q.getColumnOffset(D,b),N;if(G){let y=q.getRow(B),O=0,k=new Set;for(let x=0;x<B;x++){let n=q.getRow(x);if(n<y&&!k.has(n)){let e=Y.getSize(x);O+=e,k.add(n)}}N=O}else N=t(B,X);if(W)return`translate(${Math.round(N)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(N)}px)`},T=(B,X)=>{B.style.transform=X},h=(B,X)=>{let R=B.dataset.id?.startsWith("__group_header"),D=R?b:q.getColumnWidth(b),A;if(G||R)A=Y.getSize(X)-q.gap;else{let N=q.getRow(X);A=Y.getSize(N)-q.gap}if(W)B.style.width=`${A}px`,B.style.height=`${D}px`;else B.style.width=`${D}px`,B.style.height=`${A}px`},I=(B,X,R,D,A)=>{let N=Z.acquire(),y=w(R,D);if(N.className=z,N.dataset.index=String(B),N.dataset.id=String(X.id),N.dataset.row=String(q.getRow(B)),N.dataset.col=String(q.getCol(B)),N.ariaSelected=String(R),_)N.id=`${_}-item-${B}`;if(U){let x=U();if(x!==$)$=x,S=String(x);N.setAttribute("aria-setsize",S),N.setAttribute("aria-posinset",String(B+1))}h(N,B);let O=Q(X,B,y);if(P(N,O),String(X.id).startsWith(R0))N.classList.add(v);return m(N,R,D),T(N,A),{element:N,lastItemId:X.id,lastSelected:R,lastFocused:D,lastTransform:A,lastSeenFrame:H}},l=(B,X,R,D,A)=>{if(H++,X.start===0&&B.length>0)G=C0(B[0]);for(let[O,k]of V)if(O>=X.start&&O<=X.end)k.lastSeenFrame=H;else if(H-k.lastSeenFrame>L4)Z.release(k.element),V.delete(O);let N=!1;if(U){let O=U();if(O!==$)$=O,S=String(O),N=!0}let y=null;for(let O=X.start;O<=X.end;O++){let k=O-X.start,x=B[k];if(!x){console.warn(`⚠️ RENDER: Missing item at index ${O} (range: ${X.start}-${X.end}, items.length: ${B.length})`);continue}let n=R.has(x.id),e=O===D,J0=V.get(O);if(J0){let j0=J0.lastItemId!==x.id,o=J0.lastSelected!==n,Q0=J0.lastFocused!==e;if(j0){let U0=String(J0.lastItemId),Z0=String(x.id),N0=U0.startsWith(R0),D0=Z0.startsWith(R0);if(!D0&&w0(R,O,x.id))n=!0;let E0=w(n,e),X0=Q(x,O,E0);if(P(J0.element,X0),J0.element.dataset.id=Z0,J0.element.dataset.row=String(q.getRow(O)),J0.element.dataset.col=String(q.getCol(O)),h(J0.element,O),J0.element.classList.toggle(v,D0),N0&&!D0)J0.element.classList.add(g),setTimeout(()=>J0.element.classList.remove(g),300);J0.lastItemId=x.id}if(j0||o||Q0)m(J0.element,n,e),J0.element.ariaSelected=String(n),J0.lastSelected=n,J0.lastFocused=e;let q0=s(O,A);if(J0.lastTransform!==q0)T(J0.element,q0),J0.lastTransform=q0;if(N)J0.element.setAttribute("aria-setsize",S)}else{if(w0(R,O,x.id))n=!0;let j0=s(O,A),o=I(O,x,n,e,j0);if(!y)y=document.createDocumentFragment();y.appendChild(o.element),V.set(O,o)}}if(y)J.appendChild(y)},F=(B)=>{for(let[X,R]of V){let D=s(X,B);if(R.lastTransform!==D)T(R.element,D),R.lastTransform=D}},E=(B,X,R,D)=>{let A=V.get(B);if(!A)return;let N=w(R,D),y=Q(X,B,N);P(A.element,y),m(A.element,R,D),A.element.dataset.id=String(X.id),A.element.ariaSelected=String(R),h(A.element,B),A.lastItemId=X.id,A.lastSelected=R,A.lastFocused=D},L=(B,X,R)=>{let D=V.get(B);if(!D)return;let A=D.lastSelected!==X,N=D.lastFocused!==R;if(A||N)m(D.element,X,R),D.lastSelected=X,D.lastFocused=R},f=(B)=>{return V.get(B)?.element},a=(B)=>{if(Math.abs(B-b)<1)return;b=B;for(let[X,R]of V){h(R.element,X);let D=s(X);T(R.element,D),R.lastTransform=D}},c=()=>{g0(J,V.keys(),(B)=>V.get(B)?.element)},u=()=>{for(let[,B]of V)Z.release(B.element);V.clear()};return{render:l,updatePositions:F,updateItem:E,updateItemClasses:L,getElement:f,sortDOM:c,updateContainerWidth:a,clear:u,destroy:()=>{u(),Z.clear()}}};var F4=new Set,gJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let Q=null,Y=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(q){let{dom:K,emitter:j,config:U,rawConfig:_}=q,{classPrefix:W}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Z=U.horizontal,V=jJ(y0(_.padding),Z),b=()=>{return(Z?K.viewport.clientHeight:q.getContainerWidth())-V},G=_.items?.some((u)=>u.__groupHeader===!0),H={columns:J.columns,gap:J.gap??0};if(G)H.isHeaderFn=(u)=>{let p=q.dataManager.getItem(u);return!!(p&&p.__groupHeader===!0)};Q=p1(H);let S=Q.gap;q.setVirtualTotalFn(()=>{let u=q.dataManager.getTotal();return Q.getTotalRows(u)}),q.setItemToScrollIndexFn((u)=>Math.floor(u/H.columns)),q.methods.set("_getNavTotal",()=>q.dataManager.getTotal()),q.methods.set("_getNavDelta",()=>Z?{ud:1,lr:H.columns,cols:H.columns}:{ud:H.columns,lr:1,cols:H.columns});let $=_.item,M=U.horizontal?$.width:$.height,w={containerWidth:b(),columns:Q.columns,gap:Q.gap},z={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof M==="function")q.setSizeConfig((u)=>{let p=w.containerWidth-2,B=(w.columns-1)*w.gap;return z.containerWidth=w.containerWidth,z.columns=w.columns,z.gap=w.gap,z.columnWidth=(p-B)/w.columns,z.row=Q.getRow(u),z.column=Q.getCol(u),z.totalRows=Q.getTotalRows(q.dataManager.getTotal()),z.totalColumns=w.columns,M(u,z)+w.gap});else if(S>0)q.setSizeConfig(M+S);if(q.rebuildSizeCache(),S>0){let u=q.sizeCache.getTotalSize;q.sizeCache.getTotalSize=()=>{let p=u();return p>0?p-w.gap:0}}K.root.classList.add(`${W}--grid`);let C=b(),r=_.item.template,v=()=>{Y=uJ(K.items,r,q.sizeCache,Q,W,C,()=>q.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),q.replaceRenderer(Y)};v(),q.setUpdateItemClassesFn((u,p,B)=>{Y?.updateItemClasses(u,p,B)}),q.methods.set("_updateRenderedItem",(u,p,B,X)=>{Y?.updateItem(u,p,B,X)}),q.methods.set("_getGridLayout",()=>Q),q.methods.set("_getGridConfig",()=>H),q.methods.set("_replaceGridRenderer",(u)=>{Y=u}),q.methods.set("_createGridRenderer",uJ),q.methods.set("_updateGridLayoutForGroups",(u)=>{Q.update({isHeaderFn:u});let p=q.dataManager.getTotal(),B=0;for(let X=0;X<p;X++)if(Q.getCol(X)===0){let R=q.sizeCache.getSize(X);B+=R}q.sizeCache.getTotalSize=()=>B,q.updateContentSize(B),v()}),q.methods.set("updateGrid",(u)=>{if(u.columns!==void 0){if(!Number.isInteger(u.columns)||u.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");H.columns=u.columns}if(u.gap!==void 0){if(u.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");H.gap=u.gap}if(Q)Q.update(H);let p=b();if(w.containerWidth=p,w.columns=H.columns,w.gap=H.gap??0,Y)Y.updateContainerWidth(p);q.rebuildSizeCache(),q.updateContentSize(q.sizeCache.getTotalSize()),q.updateCompressionMode();for(let B=0;B<q.contentSizeHandlers.length;B++)q.contentSizeHandlers[B]();if(Y)Y.clear();q.forceRender()});let g=null,P=null,m=!1,t=()=>{if(m)return;m=!0,g=q.methods.get("_getSelectedIds")??null,P=q.methods.get("_getFocusedIndex")??null},s=-1,T=-1,h=!0,I=U.overscan,l={start:0,end:0},F={start:0,end:0},E=()=>{if(q.state.isDestroyed)return;let u=q.scrollController.getScrollTop(),p=q.state.viewportState.containerSize;if(!h&&u===s&&p===T)return;s=u,T=p,h=!1;let B=q.getVirtualTotal();q.getVisibleRange(u,p,B,l),F.start=Math.max(0,l.start-I),F.end=Math.min(B-1,l.end+I);let X=q.state.viewportState;X.scrollPosition=u,X.visibleRange.start=l.start,X.visibleRange.end=l.end,X.renderRange.start=F.start,X.renderRange.end=F.end;let R=q.state.lastRenderRange,D=X.isCompressed,A=R.start!==F.start||R.end!==F.end;if(!A&&D){Y.updatePositions(q.getCompressionContext());return}let N=q.dataManager.getTotal(),y=Q.getItemRange(F.start,F.end,N),O=q.dataManager.getItemsInRange(y.start,y.end),k=D?q.getCompressionContext():void 0;t();let x=g?g():F4,n=P?P():-1;if(Y.render(O,y,x,n,k),A)R.start=F.start,R.end=F.end,j.emit("range:change",{range:{start:F.start,end:F.end}})},L=()=>{if(q.state.isDestroyed)return;q.state.lastRenderRange.start=-1,q.state.lastRenderRange.end=-1,h=!0,E()};q.setRenderFns(E,L);let f=typeof M==="function";q.resizeHandlers.push((u,p)=>{let B=(Z?p:u)-V;if(Math.abs(B-w.containerWidth)<1)return;if(w.containerWidth=B,Y)Y.updateContainerWidth(B);if(f){q.rebuildSizeCache(),q.updateContentSize(q.sizeCache.getTotalSize()),q.updateCompressionMode();for(let X=0;X<q.contentSizeHandlers.length;X++)q.contentSizeHandlers[X]();if(Y)Y.clear();q.forceRender()}});let{animateScroll:a,cancelScroll:c}=l0(q.scrollController,q.renderIfNeeded);if(q.methods.set("cancelScroll",c),q.methods.set("scrollToIndex",(u,p)=>{let B=Math.floor(u/J.columns),{align:X,behavior:R,duration:D}=z0(p),A=q.dataManager.getState(),N=Q.getTotalRows(A.total),y=Math.max(0,Math.min(B,N-1)),O=q.adjustScrollPosition(t0(y,q.sizeCache,q.state.viewportState.containerSize,N,X,q.getCachedCompression()));if(R==="smooth")a(q.scrollController.getScrollTop(),O,D);else c(),q.scrollController.scrollTo(O)}),!q.methods.has("_getTotal"))q.methods.set("_getTotal",()=>q.dataManager.getTotal());q.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),q.destroyHandlers.push(()=>{if(c(),Y)Y.destroy(),Y=null;K.root.classList.remove(`${W}--grid`)})},destroy(){if(Y)Y.destroy(),Y=null}}};var u1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,q=J.containerSize,K=0,j=[],U=()=>{let M=(Q-1)*Y;K=Math.max(0,(q-M)/Q),j=Array(Q);let w=K+Y;for(let z=0;z<Q;z++)j[z]=z*w};U();let _=[],W=0,Z=[],V=(M)=>{let w=0,z=M[0];for(let C=1;C<M.length;C++){let r=M[C];if(r<z)z=r,w=C}return w},b=(M,w)=>{if(M<=0)return W=0,_=[],[];let z=Array(Q).fill(0),C=Array(Q);for(let g=0;g<Q;g++)C[g]=[];let r=Array(M);for(let g=0;g<M;g++){let P=V(z),m=w(g),t=z[P];r[g]={index:g,x:j[P],y:t,lane:P,size:m,crossSize:K},C[P].push(g),z[P]=t+m+Y}_=C;let v=0;for(let g=0;g<Q;g++){let P=z[g],m=P>0?P-Y:0;if(m>v)v=m}return W=v,r},G=(M)=>{if(M.length===0)return W>0?W:0;if(W>0)return W;let w=Array(Q).fill(0);for(let C of M){let r=C.y+C.size,v=w[C.lane];if(r>v)w[C.lane]=r}let z=0;for(let C=0;C<Q;C++)if(w[C]>z)z=w[C];return z},H=(M,w,z)=>{if(M.length===0||z<=w)return Z.length=0,Z;if(_.length===0||_.length!==Q)return S(M,w,z);Z.length=0;for(let C=0;C<Q;C++){let r=_[C],v=r.length;if(v===0)continue;let g=0,P=v;while(g<P){let m=g+P>>>1,t=M[r[m]];if(t.y+t.size<=w)g=m+1;else P=m}for(let m=g;m<v;m++){let t=M[r[m]];if(t.y>=z)break;Z.push(t)}}return Z},S=(M,w,z)=>{let C=[];for(let r of M)if(r.y+r.size>w&&r.y<z)C.push(r);return C};return{get columns(){return Q},get gap(){return Y},get containerSize(){return q},update:(M)=>{let w=!1;if(M.columns!==void 0){let z=Math.max(1,Math.floor(M.columns));if(z!==Q)Q=z,w=!0}if(M.gap!==void 0&&M.gap!==Y)Y=M.gap,w=!0;if(M.containerSize!==void 0&&M.containerSize!==q)q=M.containerSize,w=!0;if(w)U()},calculateLayout:b,getTotalSize:G,getVisibleItems:H}};var T4=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let U=document.createElement("div");return U.setAttribute("role","option"),U},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),Q.push(j)},clear:()=>{Q.length=0}}},b4=1,g1=(J,Q,Y,q=!1,K,j)=>{let U=T4(),_=new Map,W=new Set,Z=0,V="",b=-1,G={selected:!1,focused:!1},H=(T,h)=>{return G.selected=T,G.focused=h,G},S=`${Y}-item ${Y}-masonry-item`,$=`${Y}-item--selected`,M=`${Y}-item--focused`,w=(T,h)=>{if(typeof h==="string")T.innerHTML=h;else T.replaceChildren(h)},z=(T,h,I)=>{T.classList.toggle($,h),T.classList.toggle(M,I)},C=(T,h)=>{if(q)T.style.transform=`translate(${Math.round(h.y)}px, ${Math.round(h.x)}px)`;else T.style.transform=`translate(${Math.round(h.x)}px, ${Math.round(h.y)}px)`},r=(T,h)=>{if(q)T.style.width=`${h.size}px`,T.style.height=`${h.crossSize}px`;else T.style.width=`${h.crossSize}px`,T.style.height=`${h.size}px`},v=(T,h,I,l,F)=>{let E=U.acquire(),L=H(l,F);if(E.className=S,E.dataset.index=String(T),E.dataset.id=String(h.id),E.dataset.lane=String(I.lane),E.ariaSelected=String(l),j)E.id=`${j}-item-${T}`;if(K){let a=K();if(a!==b)b=a,V=String(a);E.setAttribute("aria-setsize",V),E.setAttribute("aria-posinset",String(T+1))}r(E,I);let f=Q(h,T,L);return w(E,f),z(E,l,F),C(E,I),{element:E,lastItemId:h.id,lastSelected:l,lastFocused:F,lastY:I.y,lastX:I.x,lastSize:I.size,lastCrossSize:I.crossSize,lastSeenFrame:Z}},g=(T,h,I,l)=>{Z++,W.clear();for(let E=0;E<h.length;E++)W.add(h[E].index);for(let[E,L]of _)if(W.has(E))L.lastSeenFrame=Z;else if(Z-L.lastSeenFrame>b4)U.release(L.element),_.delete(E);let F=null;for(let E=0;E<h.length;E++){let L=h[E],f=L.index,a=T(f);if(!a)continue;let c=I.has(a.id),u=f===l,p=_.get(f);if(p){let B=p.lastItemId!==a.id,X=p.lastSelected!==c,R=p.lastFocused!==u,D=p.lastY!==L.y||p.lastX!==L.x,A=p.lastSize!==L.size||p.lastCrossSize!==L.crossSize;if(B){let N=H(c,u),y=Q(a,f,N);w(p.element,y),p.element.dataset.id=String(a.id),p.lastItemId=a.id}if(B||X||R)z(p.element,c,u),p.element.ariaSelected=String(c),p.lastSelected=c,p.lastFocused=u;if(A)r(p.element,L),p.lastSize=L.size,p.lastCrossSize=L.crossSize;if(D)C(p.element,L),p.lastY=L.y,p.lastX=L.x}else{let B=v(f,a,L,c,u);if(!F)F=document.createDocumentFragment();F.appendChild(B.element),_.set(f,B)}}if(F)J.appendChild(F)},P=()=>{for(let{element:T}of _.values())U.release(T);_.clear(),J.innerHTML=""};return{render:g,getElement:(T)=>_.get(T)?.element,updateItemClasses:(T,h,I)=>{let l=_.get(T);if(!l)return;let F=l.lastSelected!==h,E=l.lastFocused!==I;if(F||E)z(l.element,h,I),l.lastSelected=h,l.lastFocused=I},sortDOM:()=>{g0(J,_.keys(),(T)=>_.get(T)?.element)},clear:P,destroy:()=>{P(),U.clear()}}};var H4=new Set,k4=100,xJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let Q=null,Y=null,q=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(K){let{dom:j,emitter:U,config:_,rawConfig:W}=K,Z=_.classPrefix,V=_.horizontal;if(_.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");j.root.classList.add(`${Z}--masonry`);let b=y0(W.padding),G=jJ(b,V),H=u0(b,V),S=()=>{return(V?j.viewport.clientHeight:j.viewport.clientWidth)-G},$={columns:J.columns,gap:J.gap??0,containerSize:S()};Q=u1($);let M=W.item,w=V&&W.item.width?W.item.width:M.height,z={containerWidth:0,columns:0,gap:0,columnWidth:0},C=typeof w==="function"?(N)=>w(N,z):()=>w,r=()=>{let N=K.dataManager.getTotal(),y=Q;z.containerWidth=y.containerSize,z.columns=y.columns,z.gap=y.gap;let O=(y.columns-1)*y.gap;z.columnWidth=Math.max(0,(z.containerWidth-O)/y.columns),q=y.calculateLayout(N,C),t();let k=Q.getTotalSize(q);K.sizeCache.getTotalSize=()=>k,K.updateContentSize(k)},v=W.item.template;Y=g1(j.items,v,Z,V,()=>K.dataManager.getTotal(),_.ariaIdPrefix),K.setUpdateItemClassesFn((N,y,O)=>{Y?.updateItemClasses(N,y,O)});let g=[],P=new Int32Array(0),m=[],t=()=>{let N=$.columns,y=q.length;if(g=Array.from({length:N},()=>[]),P.length<y)P=new Int32Array(y);for(let O=0;O<y;O++){let k=q[O],x=g[k.lane].length;g[k.lane].push(O),P[O]=x}m=Array(N);for(let O=0;O<N;O++){let k=g[O],x=new Float64Array(k.length);for(let n=0;n<k.length;n++){let e=q[k[n]];x[n]=e.y+e.size*0.5}m[O]=x}};K.methods.set("_getNavTotal",()=>K.dataManager.getTotal());let s=(N,y)=>{let O=N.length;if(O===0)return-1;if(O===1)return 0;let k=0,x=O-1;while(k<x){let n=k+x>>1;if(N[n]<y)k=n+1;else x=n}if(k>0&&Math.abs(N[k-1]-y)<=Math.abs(N[k]-y))return k-1;return k};K.methods.set("_navigate",(N,y,O)=>{let k=q[N];if(!k)return N;let x=k.lane,n=$.columns,e=P[N],J0=g[x];switch(V?y==="ArrowDown"?"ArrowRight":y==="ArrowUp"?"ArrowLeft":y==="ArrowRight"?"ArrowDown":y==="ArrowLeft"?"ArrowUp":y:y){case"ArrowDown":{if(e+1<J0.length)return J0[e+1];return N}case"ArrowUp":{if(e>0)return J0[e-1];return N}case"ArrowRight":{if(x>=n-1)return N;let o=x+1,Q0=k.y+k.size*0.5,q0=g[o];if(q0.length===0)return N;let U0=s(m[o],Q0);return U0>=0?q0[U0]:N}case"ArrowLeft":{if(x<=0)return N;let o=x-1,Q0=k.y+k.size*0.5,q0=g[o];if(q0.length===0)return N;let U0=s(m[o],Q0);return U0>=0?q0[U0]:N}case"Home":return 0;case"End":return O-1;case"PageDown":{let o=K.state.viewportState.containerSize,Q0=k.size>0?k.size:150,q0=Math.max(1,Math.floor(o/Q0)),U0=Math.min(e+q0,J0.length-1);return J0[U0]}case"PageUp":{let o=K.state.viewportState.containerSize,Q0=k.size>0?k.size:150,q0=Math.max(1,Math.floor(o/Q0)),U0=Math.max(0,e-q0);return J0[U0]}}return N}),K.methods.set("_scrollItemIntoView",(N)=>{let y=q[N];if(!y)return;let O=K.scrollController.getScrollTop(),k=K.state.viewportState.containerSize,x=y.y,n=x+y.size,e=O+k;if(x<O)K.scrollController.scrollTo(K.adjustScrollPosition(Math.max(0,x)));else if(n>e)K.scrollController.scrollTo(K.adjustScrollPosition(n-k))});let T=null,h=null,I=!1,l=()=>{if(I)return;I=!0,T=K.methods.get("_getSelectedIds")??null,h=K.methods.get("_getFocusedIndex")??null},F=(N)=>K.dataManager.getItem(N),E=-1,L=-1,f=!0,a=_.overscan*k4,c=()=>{if(K.state.isDestroyed)return;l();let N=K.scrollController.getScrollTop(),y=K.state.viewportState.containerSize;if(!f&&N===E&&y===L)return;E=N,L=y,f=!1;let O=Math.max(0,N-a),k=N+y+a,x=Q.getVisibleItems(q,O,k),n=T?T():H4,e=h?h():-1;if(Y&&x.length>0)Y.render(F,x,n,e);let J0=K.state.viewportState;J0.scrollPosition=N;let j0=x.length,o=j0>0?x[0].index:0,Q0=j0>0?x[j0-1].index:0;J0.visibleRange.start=o,J0.visibleRange.end=Q0,J0.renderRange.start=o,J0.renderRange.end=Q0;let q0=K.state.lastRenderRange;if(q0.start!==o||q0.end!==Q0)q0.start=o,q0.end=Q0,U.emit("range:change",{range:{start:o,end:Q0}})},u=()=>{K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,f=!0,c()};K.setRenderFns(c,u);let p=(N,y)=>{let O=(V?y:N)-G;if(Q&&Q.containerSize!==O){if(Q.update({containerSize:O}),r(),Y)Y.clear();u()}};K.resizeHandlers.push(p);let B=()=>{r(),u()},X=K.dataManager,R=(N)=>{if(typeof X[N]!=="function")return;let y=X[N].bind(X);X[N]=(...O)=>{y(...O),B()}};R("setItems"),R("appendItems"),R("prependItems"),R("updateItem"),R("removeItem");let{animateScroll:D,cancelScroll:A}=l0(K.scrollController,K.renderIfNeeded);K.methods.set("cancelScroll",A),K.methods.set("scrollToIndex",(N,y)=>{let O=q[N];if(!O)return;let{align:k,behavior:x,duration:n}=z0(y),e=O.y,J0=K.state.viewportState.containerSize,j0=e;if(k==="center")j0=e-J0/2+O.size/2;else if(k==="end"){j0=e-J0+O.size;let o=Q.getTotalSize(q);if(N===q.length-1)j0=Math.max(0,o+H-J0)}if(j0=Math.max(0,j0),j0=K.adjustScrollPosition(j0),x==="smooth")D(K.scrollController.getScrollTop(),j0,n);else A(),K.scrollController.scrollTo(j0)}),r(),K.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),K.destroyHandlers.push(()=>{if(A(),Y)Y.destroy();j.root.classList.remove(`${Z}--masonry`)})}}};var mJ=(J)=>{let Q=J?.mode??"single",Y=J?.followFocus??!1,q=J?.initial,K=J?.shiftArrowToggle??"origin",j=J?.focusOnClick??!1,U=F1(q),_=null,W=-1;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems","selectNext","selectPrevious"],setup(Z){let{dom:V,emitter:b,config:G}=Z,{classPrefix:H,ariaIdPrefix:S}=G;if(Q==="none"){Z.methods.set("select",()=>{}),Z.methods.set("deselect",()=>{}),Z.methods.set("toggleSelect",()=>{}),Z.methods.set("selectAll",()=>{}),Z.methods.set("clearSelection",()=>{}),Z.methods.set("getSelected",()=>[]),Z.methods.set("getSelectedItems",()=>[]),Z.methods.set("setSelectionMode",()=>{}),Z.methods.set("selectNext",()=>{}),Z.methods.set("selectPrevious",()=>{}),Z.methods.set("_focusById",()=>{}),Z.methods.set("_getFocusedId",()=>{return});return}V.root.classList.add(`${H}--selectable`);let $=Z.methods.get("_isGroupHeader"),M=(B)=>$?$(B):!1,w=(B,X,R)=>{if(!$)return B;let D=B;while(D>=0&&D<R){if(!M(D))return D;D+=X}D=B-X;while(D>=0&&D<R){if(!M(D))return D;D-=X}return B},z=new Map,C=()=>{z.clear();let B=Z.dataManager.getTotal(),X=Z.dataManager.getCached();if(X===0)return;if(X>=B){for(let D=0;D<B;D++){let A=Z.dataManager.getItem(D);if(A)z.set(A.id,D)}return}let R=Z.dataManager.getStorage();if(R&&typeof R.getLoadedRanges==="function"){let D=R.getLoadedRanges();for(let A of D)for(let N=A.start;N<=A.end;N++){let y=Z.dataManager.getItem(N);if(y&&!y._isPlaceholder)z.set(y.id,N)}}};b.on("data:change",({type:B,id:X})=>{if(B==="remove")U.selected.delete(X),C()}),b.on("load:end",({items:B,offset:X})=>{if(!B||B.length===0)return;if(X!==void 0)for(let R=0;R<B.length;R++){let D=B[R];if(D&&D.id!==void 0)z.set(D.id,X+R)}else C()}),C(),Z.methods.set("_getSelectedIds",()=>{return U.selected}),Z.methods.set("_getFocusedIndex",()=>{return U.focusVisible?U.focusedIndex:-1});let{forceRender:r}=Z.getRenderFns(),v=()=>{r();let B=(X)=>{let R=z.get(X);if(R===void 0)return;return Z.dataManager.getItem(R)};b.emit("selection:change",{selected:yJ(U),items:PJ(U,B)})},g=y0(Z.rawConfig.padding),P=G.horizontal?g.left:g.top,m=G.horizontal?g.right:g.bottom,t=Z.getItemToScrollIndexFn(),s=null,T=null,h=null,I=!1,l=()=>{if(I)return;I=!0,s=Z.methods.get("_getNavDelta")??null,T=Z.methods.get("_navigate")??null,h=Z.methods.get("_scrollItemIntoView")??null},F=()=>{return l(),s?s():{ud:1,lr:0,cols:0}},E=(B)=>{if(B<0)return;if(l(),h)h(B);else{let X=Z.state.viewportState.containerSize,R=Z.state.viewportState.scrollPosition,D=Z.dataManager.getTotal(),A=Z.getCachedCompression(),{visibleRange:N}=Z.state.viewportState,y=t(B),O=XJ(y,Z.sizeCache,R,X,P,m,A,D,N);if(O!==R)Z.scrollController.scrollTo(Z.adjustScrollPosition(O))}},L=()=>{let B=t(Math.max(0,U.focusedIndex)),X=Z.sizeCache.getSize(B),{ud:R}=F();return Math.max(R,Math.floor(Z.state.viewportState.containerSize/X)*R)};_=document.createElement("div"),_.setAttribute("aria-live","polite"),_.setAttribute("aria-atomic","true"),_.className=`${H}-live-region`,_.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",(V.root.getAttribute("role")==="grid"?V.root.parentElement??V.root:V.root).appendChild(_);let a=_;b.on("selection:change",({selected:B})=>{let X=B.length;if(X===0)a.textContent="";else if(X===1)a.textContent="1 item selected";else a.textContent=`${X} items selected`});let c=()=>{if(Z.state.isDestroyed)return;if(!V.root.matches(":focus-visible"))return;let B=Z.dataManager.getTotal();if(B===0)return;let X=U.focusedIndex>=0?Math.min(U.focusedIndex,B-1):0;X=w(X,1,B),U=I0(U,X),U.focusVisible=!0,V.root.setAttribute("aria-activedescendant",`${S}-item-${X}`),E(X);let R=Z.dataManager.getItem(X);if(R)Z.renderer.updateItemClasses(X,U.selected.has(R.id),!0)};if(G.interactive)V.root.addEventListener("focusin",c);let u=(B)=>{if(Z.state.isDestroyed)return;let X=B.relatedTarget;if(X&&V.root.contains(X))return;let R=U.focusedIndex;if(U.focusVisible=!1,V.root.removeAttribute("aria-activedescendant"),R>=0){let D=Z.dataManager.getItem(R);if(D)Z.renderer.updateItemClasses(R,U.selected.has(D.id),!1)}};if(G.interactive)V.root.addEventListener("focusout",u);if(Z.clickHandlers.push((B)=>{if(Z.state.isDestroyed)return;let R=B.target.closest("[data-index]");if(!R)return;let D=parseInt(R.dataset.index??"-1",10);if(D<0)return;let A=Z.dataManager.getItem(D);if(!A)return;if(M(D))return;if(b.emit("item:click",{item:A,index:D,event:B}),Q==="multiple"&&B.shiftKey&&U.focusedIndex>=0){let N=W>=0?W:U.focusedIndex,y=Z.getAllLoadedItems();U=ZJ(U,y,N,D,Q),U=I0(U,D),U.focusVisible=j,W=D,V.root.setAttribute("aria-activedescendant",`${S}-item-${D}`),v();return}W=D,U=I0(U,D),U.focusVisible=j,V.root.setAttribute("aria-activedescendant",`${S}-item-${D}`),U=c0(U,A.id,Q),v()}),G.interactive)Z.keydownHandlers.push((B)=>{if(Z.state.isDestroyed)return;let X=Z.dataManager.getTotal(),R=U.focusedIndex,D=!1,A=!1,N=U;if(l(),T)switch(B.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":{let y=T(U.focusedIndex,B.key,X);if(y!==U.focusedIndex)N=I0(U,y),N.focusVisible=!0,D=!0,A=!0;else{B.preventDefault();return}break}}if(!D)switch(B.key){case"ArrowUp":N=KJ(U,X,G.wrap,F().ud),N.focusVisible=!0,D=!0,A=!0;break;case"ArrowDown":N=UJ(U,X,G.wrap,F().ud),N.focusVisible=!0,D=!0,A=!0;break;case"ArrowLeft":{let{lr:y}=F();if(y)N=KJ(U,X,G.wrap,y),N.focusVisible=!0,D=!0,A=!0;break}case"ArrowRight":{let{lr:y}=F();if(y)N=UJ(U,X,G.wrap,y),N.focusVisible=!0,D=!0,A=!0;break}case"PageUp":N=$J(U,X,L(),"up"),N.focusVisible=!0,D=!0,A=!0;break;case"PageDown":N=$J(U,X,L(),"down"),N.focusVisible=!0,D=!0,A=!0;break;case"Home":{N=T1(U,X),N.focusVisible=!0,D=!0,A=!0;break}case"End":{N=b1(U,X),N.focusVisible=!0,D=!0,A=!0;break}}switch(B.key){case" ":case"Enter":if(B.key===" "&&B.shiftKey&&Q==="multiple"&&U.focusedIndex>=0){if(W>=0){let y=Z.getAllLoadedItems();N=ZJ(N,y,W,U.focusedIndex,Q)}N.focusVisible=!0,D=!0;break}if(U.focusedIndex>=0&&!M(U.focusedIndex)){let y=Z.dataManager.getItem(U.focusedIndex);if(y)N=c0(U,y.id,Q),N.focusVisible=!0;W=U.focusedIndex,D=!0}break;case"a":if((B.ctrlKey||B.metaKey)&&Q==="multiple"){let y=Z.getAllLoadedItems();if(U.selected.size===y.length)N=kJ(N);else N=HJ(N,y,Q);N.focusVisible=!0,D=!0,A=!1}break}if(A&&$){let y=N.focusedIndex>R?1:-1;N.focusedIndex=w(N.focusedIndex,y,X)}if(B.shiftKey&&Q==="multiple"&&A&&N.focusedIndex>=0){let y=B.key==="ArrowUp"||B.key==="ArrowDown"||B.key==="ArrowLeft"||B.key==="ArrowRight",O=(B.ctrlKey||B.metaKey)&&(B.key==="Home"||B.key==="End");if(y){if(K==="origin"){if(R>=0){let k=Z.dataManager.getItem(R);if(k)N=c0(N,k.id,Q)}}else{let k=Z.dataManager.getItem(N.focusedIndex);if(k)N=c0(N,k.id,Q)}W=N.focusedIndex,A=!1}else if(O){let k=Z.getAllLoadedItems(),x=R>=0?R:N.focusedIndex;N=ZJ(N,k,x,N.focusedIndex,Q),W=N.focusedIndex,A=!1}}if(Y&&Q==="single"&&A&&N.focusedIndex>=0){let y=Z.dataManager.getItem(N.focusedIndex);if(y)N=d0(N,[y.id],Q);A=!1}if(D){B.preventDefault(),U=N;let y=U.focusedIndex;if(y>=0)E(y),V.root.setAttribute("aria-activedescendant",`${S}-item-${y}`);else V.root.removeAttribute("aria-activedescendant");if(A){let{selected:O}=U;if(R>=0&&R!==y){let k=Z.dataManager.getItem(R);if(k)Z.renderer.updateItemClasses(R,O.has(k.id),!1)}if(y>=0){let k=Z.dataManager.getItem(y);if(k)Z.renderer.updateItemClasses(y,O.has(k.id),!0)}}else v();if(y>=0&&y!==R){let O=Z.dataManager.getItem(y);if(O)b.emit("focus:change",{id:O.id,index:y})}}});Z.methods.set("select",(...B)=>{U=d0(U,B,Q),v()}),Z.methods.set("deselect",(...B)=>{U=bJ(U,B),v()}),Z.methods.set("toggleSelect",(B)=>{U=c0(U,B,Q),v()}),Z.methods.set("selectAll",()=>{if(Q!=="multiple")return;let B=Z.getAllLoadedItems();U=HJ(U,B,Q),C(),v()}),Z.methods.set("clearSelection",()=>{U=kJ(U),v()}),Z.methods.set("getSelected",()=>{return yJ(U)}),Z.methods.set("getSelectedItems",()=>{return PJ(U,(X)=>{let R=z.get(X);return R===void 0?void 0:Z.dataManager.getItem(R)})});let p=(B)=>{let X=Z.dataManager.getTotal();if(X===0)return;if(l(),T){let N=B==="next"?"ArrowDown":"ArrowUp",y=T(U.focusedIndex,N,X);U=I0(U,y)}else{let{ud:N}=F();U=B==="next"?UJ(U,X,G.wrap,N):KJ(U,X,G.wrap,N)}let R=B==="next"?1:-1;U.focusedIndex=w(U.focusedIndex,R,X);let D=U.focusedIndex,A=Z.dataManager.getItem(D);if(!A)return;U=d0(U,[A.id],Q),E(D),v()};Z.methods.set("selectNext",()=>{p("next")}),Z.methods.set("selectPrevious",()=>{p("previous")}),Z.methods.set("_focusById",(B)=>{let X=z.get(B);if(X===void 0)return;U=I0(U,X);let R=Z.dataManager.getItem(X);if(R)b.emit("focus:change",{id:R.id,index:X})}),Z.methods.set("_getFocusedId",()=>{let B=U.focusedIndex;if(B<0)return;return Z.dataManager.getItem(B)?.id}),Z.destroyHandlers.push(()=>{if(a&&a.parentNode)a.remove();V.root.removeEventListener("focusin",c),V.root.removeEventListener("focusout",u)})},destroy(){if(_&&_.parentNode)_.remove();_=null}}};var $4=(J)=>{try{let Q=sessionStorage.getItem(J);if(!Q)return;return JSON.parse(Q)}catch{return}},dJ=(J)=>{let Q=J?.autoSave,Y=Q?$4(Q):J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let j=q.scrollController.getScrollTop(),U=q.getCachedCompression(),_=q.getVirtualTotal(),W=q.methods.get("getSelected"),Z=W&&W().length>0?W():void 0;if(_===0){let S={index:0,offsetInItem:0,total:0};if(Z)S.selectedIds=Z;return S}let V,b;if(U.isCompressed){let $=j/U.virtualSize*_;V=Math.max(0,Math.min(Math.floor($),_-1)),b=($-V)*q.sizeCache.getSize(V)}else V=q.sizeCache.indexAtOffset(j),b=j-q.sizeCache.getOffset(V);b=Math.max(0,b);let G={index:V,offsetInItem:b,total:_};if(Z)G.selectedIds=Z;let H=q.methods.get("_getFocusedId");if(H){let S=H();if(S!==void 0)G.focusedId=S}return G});let K=(j)=>{let{index:U,offsetInItem:_,selectedIds:W,focusedId:Z}=j,V=q.getVirtualTotal();if(V===0&&j.total&&j.total>0){q.dataManager.setTotal(j.total),q.sizeCache.rebuild(j.total),q.updateCompressionMode();let v=q.getCachedCompression();if(!v.isCompressed)q.updateContentSize(v.virtualSize)}else if(V===0)return;if(!Number.isFinite(U)||!Number.isFinite(_))return;let b=q.getVirtualTotal();if(q.sizeCache.getTotal()!==b){q.sizeCache.rebuild(b),q.updateCompressionMode();let v=q.getCachedCompression();if(!v.isCompressed)q.updateContentSize(v.virtualSize)}let H=q.getCachedCompression(),S=Math.max(0,Math.min(U,b-1)),$;if(H.isCompressed){let v=q.sizeCache.getSize(S),g=v>0?_/v:0;$=(S+g)/b*H.virtualSize}else $=q.sizeCache.getOffset(S)+_;let M=q.state.viewportState.containerSize,w=H.isCompressed?q.state.viewportState.totalSize:H.virtualSize,z=Math.max(0,w-M);if($=Math.max(0,Math.min($,z)),q.scrollController.scrollTo($),W&&W.length>0){let v=q.methods.get("select");if(v)v(...W)}let C=q.methods.get("loadVisibleRange"),r=()=>{if(Z===void 0)return;let v=q.methods.get("_focusById");if(v)v(Z)};if(C){let g=0,P=$,m=()=>{g++;let t=q.state.viewportState.containerSize,s=q.scrollController.getScrollTop();if(t>0){if(Math.abs(s-P)>1)q.scrollController.scrollTo(P);C().then(r)}else if(g<10)requestAnimationFrame(m)};requestAnimationFrame(m)}else{let v=q.methods.get("reload");if(v)requestAnimationFrame(()=>{v().then(r)});else requestAnimationFrame(r)}};if(q.methods.set("restoreScroll",K),Q){let j=!!Y,U=()=>{if(j)return;let _=q.methods.get("getScrollSnapshot");if(!_)return;let W=_();try{sessionStorage.setItem(Q,JSON.stringify(W))}catch{}};if(q.idleHandlers.push(()=>{if(j)j=!1;U()}),q.emitter.on("selection:change",U),q.emitter.on("focus:change",U),Y&&Y.total&&Y.total>0){let _=q.methods.get("_cancelAutoLoad");if(_)_();q.dataManager.setTotal(Y.total)}}if(Y)queueMicrotask(()=>{K(Y)})}}};var x1=(J,Q=50,Y=1/0,q=!0)=>{let K=J,j=[],U=0,_=()=>{j=K.map((M,w)=>({def:M,index:w,width:0,minWidth:y4(M.minWidth??Q,1),maxWidth:M.maxWidth??Y,resizable:M.resizable??q,offset:0}))},W=(M)=>{if(j.length===0){U=0;return}let w=0,z=0;for(let C=0;C<j.length;C++){let r=j[C],v=r.def;if(v.width!==void 0)r.width=cJ(v.width,r.minWidth,r.maxWidth),w+=r.width;else z++}if(z>0){let r=Math.max(0,M-w)/z;for(let v=0;v<j.length;v++){let g=j[v];if(g.def.width===void 0)g.width=cJ(r,g.minWidth,g.maxWidth)}}Z()},Z=()=>{let M=0;for(let w=0;w<j.length;w++){let z=j[w];z.offset=M,M+=z.width}U=M},V=(M,w)=>{if(M<0||M>=j.length)return 0;let z=j[M];if(!z.resizable)return z.width;let C=cJ(w,z.minWidth,z.maxWidth);return z.width=C,Z(),C},b=(M)=>{return j[M]},G=(M)=>{if(j.length===0)return;if(M<0)return j[0];if(M>=U)return j[j.length-1];let w=0,z=j.length-1;while(w<z){let C=w+z>>>1,r=j[C];if(M<r.offset)z=C-1;else if(M>=r.offset+r.width)w=C+1;else return r}return j[w]},H=(M)=>{if(M<0||M>=j.length)return 0;return j[M].offset},S=(M)=>{if(M<0||M>=j.length)return 0;return j[M].width},$=(M)=>{K=M,_()};return _(),{get columns(){return j},get totalWidth(){return U},resolve:W,updateColumns:$,resizeColumn:V,getColumn:b,getColumnAtX:G,getColumnOffset:H,getColumnWidth:S}},cJ=(J,Q,Y)=>Math.min(Y,Math.max(Q,J)),y4=(J,Q)=>Math.max(Q,J);var m1=(J,Q,Y,q,K,j)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let _=document.createElement("div");_.className=`${Y}-table-header`,_.setAttribute("role","row"),_.setAttribute("aria-rowindex","1"),_.style.height=`${Q}px`;let W=document.createElement("div");W.className=`${Y}-table-header-scroll`,W.setAttribute("role","presentation"),_.appendChild(W),U.appendChild(_),J.insertBefore(U,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let Z=[],V=[],b=[],G=!0,H=null,S="asc",$=null,M=!1,w=-1,z=0,C=0,r=(E,L)=>{let f=document.createElement("div");f.className=`${Y}-table-header-cell`,f.setAttribute("role","columnheader"),f.setAttribute("aria-colindex",String(L+1)),f.dataset.columnKey=E.def.key;let a=E.def.align;if(a==="center")f.classList.add(`${Y}-table-header-cell--center`);else if(a==="right")f.classList.add(`${Y}-table-header-cell--right`);let c=document.createElement("div");c.className=`${Y}-table-header-content`;let u=E.def.header?E.def.header(E.def):E.def.label;if(typeof u==="string")c.textContent=u;else c.appendChild(u);if(f.appendChild(c),E.def.sortable){let p=document.createElement("span");p.className=`${Y}-table-header-sort`,p.setAttribute("aria-hidden","true"),f.appendChild(p),b.push(p),f.classList.add(`${Y}-table-header-cell--sortable`)}else b.push(null);if(E.resizable){let p=document.createElement("div");p.className=`${Y}-table-header-resize`,p.dataset.resizeIndex=String(L),f.appendChild(p),V.push(p)}return f},v=(E)=>{$=E,W.textContent="",Z=[],V=[],b=[];let L=E.columns;for(let f=0;f<L.length;f++){let a=L[f],c=r(a,f);Z.push(c),W.appendChild(c)}if(g(E),H)P(H,S)},g=(E)=>{$=E;let L=E.columns;W.style.width=`${E.totalWidth}px`;for(let f=0;f<Z.length&&f<L.length;f++){let a=Z[f],c=L[f];a.style.width=`${c.width}px`}},P=(E,L)=>{if(H=E,S=L,!$)return;let f=$.columns;for(let a=0;a<b.length&&a<f.length;a++){let c=b[a];if(!c)continue;if(f[a].def.key===E&&E!==null)c.textContent=L==="asc"?"▲":"▼",c.style.opacity="0.7",Z[a].setAttribute("aria-sort",L==="asc"?"ascending":"descending");else c.textContent="",c.style.opacity="0",Z[a].removeAttribute("aria-sort")}},m=(E)=>{W.style.transform=`translateX(${-E}px)`},t=(E)=>{let L=E.target;if(!L.dataset.resizeIndex)return;if(E.preventDefault(),E.stopPropagation(),w=parseInt(L.dataset.resizeIndex,10),!$)return;let f=$.getColumn(w);if(!f||!f.resizable)return;M=!0,z=E.clientX,C=f.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",L.classList.add(`${Y}-table-header-resize--active`),L.setPointerCapture(E.pointerId),L.addEventListener("pointermove",s),L.addEventListener("pointerup",T),L.addEventListener("pointercancel",T)},s=(E)=>{if(!M||!$)return;let L=E.clientX-z;if(Math.abs(L)<1)return;let f=Math.max(0,C+L);q(w,f)},T=(E)=>{if(!M)return;let L=E.target;L.removeEventListener("pointermove",s),L.removeEventListener("pointerup",T),L.removeEventListener("pointercancel",T);try{L.releasePointerCapture(E.pointerId)}catch{}L.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",M=!1,w=-1},h=(E)=>{let L=E.target;if(L.dataset.resizeIndex!==void 0)return;if(M)return;let f=L;while(f&&!f.dataset.columnKey)if(f=f.parentElement,f===_||f===null)return;if(!f||!f.dataset.columnKey)return;let a=f.dataset.columnKey;if(!$)return;let c=$.columns,u=-1;for(let B=0;B<c.length;B++)if(c[B].def.key===a){u=B;break}if(u===-1)return;let p=c[u];if(j)j({key:a,index:u,event:E});if(p.def.sortable&&K){let B;if(H===a)if(S==="asc")B="desc";else B=null;else B="asc";K({key:a,index:u,direction:B})}};return _.addEventListener("pointerdown",t),_.addEventListener("click",h),{element:_,update:g,updateSort:P,rebuild:v,show:()=>{if(G)return;G=!0,_.style.display=""},hide:()=>{if(!G)return;G=!1,_.style.display="none"},destroy:()=>{_.removeEventListener("pointerdown",t),_.removeEventListener("click",h),J.style.removeProperty("--vlist-table-header-height"),U.remove(),Z=[],V=[],b=[],$=null,G=!1},syncScroll:m}};var P4=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)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="",J.push(Q)},clear:()=>{J.length=0}}},d1=(J,Q,Y,q,K,j,U,_,W)=>{let Z=P4(),V=new Map,b=-1,G=Y,H=null,S=null,$=null,M=(O,k)=>{S=O,$=k},w=(O,k)=>{if(k)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},z=(O,k,x,n)=>{O.setAttribute("role",k),O.setAttribute("data-id",String(x)),O.setAttribute("data-index",String(n))},C=(O)=>String(O).startsWith("__placeholder_"),r=`${K}-item ${K}-table-row`,v=`${K}-item--selected`,g=`${K}-item--focused`,P=`${K}-table-cell`,m=`${K}-table-cell--center`,t=`${K}-table-cell--right`,s=`${K}-item--odd`,T=`${K}-item--placeholder`,h=`${K}-item--replaced`,I=`${K}-item ${K}-table-row ${K}-table-group-header`,l=`${K}-table-group-header-content`,F=(O,k,x,n,e=!1)=>{if(x.def.cell){let J0=x.def.cell(k,x.def,n);if(typeof J0==="string")O.innerHTML=J0;else O.replaceChildren(J0)}else{let J0=k[x.def.key],j0=J0!=null?String(J0):"";if(e&&j0)O.innerHTML=`<span>${j0}</span>`;else O.textContent=j0}},E=(O,k,x,n,e=!1)=>{let J0=r;if(_){if(H){let j0=H(k);if(j0>=0&&(j0&1)===1)J0+=` ${s}`}else if((k&1)===1)J0+=` ${s}`}if(e)J0+=` ${T}`;if(x)J0+=` ${v}`;if(n)J0+=` ${g}`;O.className=J0},L=(O,k,x)=>{if(x?.compression?.isCompressed)return Math.round(r0(O,x.scrollPosition,k,x.totalItems,x.containerSize,x.compression,x.rangeStart));return k.getOffset(O)},f=(O,k)=>{let x=k.def.align;if(x==="center")O.classList.add(m),O.classList.remove(t);else if(x==="right")O.classList.add(t),O.classList.remove(m);else O.classList.remove(m,t)},a=(O,k)=>{let n=G.columns.length;if(k.length===n)return k;let e=[];for(let J0=0;J0<n;J0++){let j0;if(J0<k.length)j0=k[J0];else j0=document.createElement("div"),j0.className=P,O.appendChild(j0);e.push(j0)}for(let J0=n;J0<k.length;J0++)k[J0].remove();return e},c=(O,k,x,n)=>{let e=Z.acquire(),J0=O,j0=x.getSize(k),o=L(k,x,n);e.style.cssText=`width:${G.totalWidth}px;height:${j0}px;transform:translateY(${o}px)`,e.className=I,z(e,"presentation",O.id,k),e.removeAttribute("aria-selected"),e.removeAttribute("aria-rowindex"),e.replaceChildren();let Q0=document.createElement("div");if(Q0.className=l,$){let q0=$(J0.groupKey,J0.groupIndex);if(typeof q0==="string")Q0.innerHTML=q0;else Q0.appendChild(q0)}return e.appendChild(Q0),{element:e,cells:[],index:k,isGroupHeader:!0,lastItemId:O.id,lastSelected:!1,lastFocused:!1,lastOffset:o,lastHeight:j0}},u=(O,k,x,n,e,J0)=>{let j0=Z.acquire(),o=e.getSize(k),Q0=L(k,e,J0),q0=C(O.id);j0.style.cssText=`width:${G.totalWidth}px;height:${o}px;transform:translateY(${Q0}px)`,E(j0,k,x,n,q0),z(j0,"row",O.id,k),j0.id=`${j}-${k}`,j0.setAttribute("aria-rowindex",String(k+2)),w(j0,x);let U0=a(j0,[]),Z0=G.columns;for(let N0=0;N0<U0.length&&N0<Z0.length;N0++){let D0=U0[N0],E0=Z0[N0];D0.style.cssText=`left:${E0.offset}px;width:${E0.width}px`,D0.setAttribute("role","gridcell"),D0.setAttribute("aria-colindex",String(N0+1)),f(D0,E0),F(D0,O,E0,k,q0)}return{element:j0,cells:U0,index:k,isGroupHeader:!1,lastItemId:O.id,lastSelected:x,lastFocused:n,lastOffset:Q0,lastHeight:o}},p=(O,k,x,n,e)=>{for(let[q0,U0]of V)if(q0<k.start||q0>k.end)Z.release(U0.element),V.delete(q0);let J0=!1,j0=U();if(j0!==b)b=j0,J0=!0;let o=null,Q0=Q();H=typeof _==="string"&&W?W():null;for(let q0=k.start;q0<=k.end;q0++){let U0=q0-k.start,Z0=O[U0];if(!Z0)continue;let N0=x.has(Z0.id),D0=q0===n,E0=S?S(Z0):!1,X0=V.get(q0);if(X0){if(X0.isGroupHeader!==E0){Z.release(X0.element),V.delete(q0);let V0=E0?c(Z0,q0,Q0,e):u(Z0,q0,N0,D0,Q0,e);if(V.set(q0,V0),!o)o=document.createDocumentFragment();o.appendChild(V0.element);continue}if(E0){if(X0.lastItemId!==Z0.id){let W0=Z0,B0=X0.element.firstElementChild;if(B0&&$){let A0=$(W0.groupKey,W0.groupIndex);if(typeof A0==="string")B0.innerHTML=A0;else B0.replaceChildren(A0)}X0.element.setAttribute("data-id",String(Z0.id)),X0.lastItemId=Z0.id}let K0=L(q0,Q0,e);if(X0.lastOffset!==K0)X0.lastOffset=K0,X0.element.style.transform=`translateY(${K0}px)`;let _0=Q0.getSize(q0);if(X0.lastHeight!==_0)X0.lastHeight=_0,X0.element.style.height=`${_0}px`}else{let V0=X0.lastItemId!==Z0.id,K0=X0.lastSelected!==N0,_0=X0.lastFocused!==D0;if(V0){let A0=X0.lastItemId!=null&&C(X0.lastItemId),O0=C(Z0.id);if(!O0&&w0(x,q0,Z0.id))N0=!0;let L0=G.columns;for(let $0=0;$0<X0.cells.length&&$0<L0.length;$0++)F(X0.cells[$0],Z0,L0[$0],q0,O0);if(E(X0.element,q0,N0,D0,O0),X0.element.setAttribute("data-id",String(Z0.id)),w(X0.element,N0),A0&&!O0)X0.element.classList.add(h),setTimeout(()=>{X0.element.classList.remove(h)},300);X0.lastItemId=Z0.id,X0.lastSelected=N0,X0.lastFocused=D0}else if(K0||_0)E(X0.element,q0,N0,D0,C(Z0.id)),w(X0.element,N0),X0.lastSelected=N0,X0.lastFocused=D0;let W0=L(q0,Q0,e);if(X0.lastOffset!==W0)X0.lastOffset=W0,X0.element.style.transform=`translateY(${W0}px)`;let B0=Q0.getSize(q0);if(X0.lastHeight!==B0)X0.lastHeight=B0,X0.element.style.height=`${B0}px`;if(J0)X0.element.setAttribute("aria-rowindex",String(q0+2))}}else{if(w0(x,q0,Z0.id))N0=!0;let V0=E0?c(Z0,q0,Q0,e):u(Z0,q0,N0,D0,Q0,e);if(V.set(q0,V0),!o)o=document.createDocumentFragment();o.appendChild(V0.element)}}if(o)J.appendChild(o)},B=(O)=>{let k=Q();for(let[x,n]of V){let e=L(x,k,O);if(n.lastOffset!==e)n.lastOffset=e,n.element.style.transform=`translateY(${e}px)`}},X=(O,k,x,n)=>{let e=V.get(O);if(!e)return;if(e.isGroupHeader)return;let J0=G.columns;for(let j0=0;j0<e.cells.length&&j0<J0.length;j0++)F(e.cells[j0],k,J0[j0],O);e.element.setAttribute("data-id",String(k.id)),e.lastItemId=k.id,E(e.element,O,x,n),w(e.element,x),e.lastSelected=x,e.lastFocused=n},R=(O,k,x)=>{let n=V.get(O);if(!n)return;if(n.isGroupHeader)return;let e=n.lastSelected!==k,J0=n.lastFocused!==x;if(e||J0)E(n.element,O,k,x),w(n.element,k),n.lastSelected=k,n.lastFocused=x},D=(O)=>{G=O;let k=O.columns;for(let[,x]of V)if(x.element.style.width=`${O.totalWidth}px`,x.cells.length>0)for(let n=0;n<x.cells.length&&n<k.length;n++){let e=x.cells[n],J0=k[n];e.style.left=`${J0.offset}px`,e.style.width=`${J0.width}px`}},A=(O)=>{return V.get(O)?.element},N=()=>{for(let[,O]of V)Z.release(O.element);V.clear(),b=-1};return{render:p,updatePositions:B,updateItem:X,updateItemClasses:R,getElement:A,updateColumnLayout:D,setGroupHeaderFn:M,clear:N,destroy:()=>{N(),Z.clear()}}};var R4=new Set,lJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist] withTable: either rowHeight or estimatedRowHeight is required");let Q=null,Y=null,q=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(K){let{dom:j,emitter:U,config:_}=K,{classPrefix:W}=_;if(_.horizontal)throw Error("[vlist] withTable cannot be used with orientation: 'horizontal'");if(_.reverse)throw Error("[vlist] withTable cannot be used with reverse: true");let Z=J.resizable??!0,V=J.minColumnWidth??50,b=J.maxColumnWidth??1/0,G=J.columnBorders??!1,H=J.rowBorders??!0,S=J.rowHeight,$=K.rawConfig.padding,M=!$?0:typeof $==="number"?$*2:$.length===2?$[1]*2:$[1]+$[3],w=J.headerHeight??(typeof S==="number"?S:40),z=J.sort?.key??null,C=J.sort?.direction??"asc";if(Q=x1(J.columns,V,b,Z),typeof S==="function")K.setSizeConfig(S);else if(typeof S==="number")K.setSizeConfig(S);if(K.rebuildSizeCache(),j.root.classList.add(`${W}--table`),H)j.root.classList.add(`${W}--table-row-borders`);if(G)j.root.classList.add(`${W}--table-col-borders`);j.root.setAttribute("role","grid"),j.root.setAttribute("aria-colcount",String(J.columns.length));let r=-1,v=j.items.getAttribute("aria-label");if(v)j.root.setAttribute("aria-label",v),j.items.removeAttribute("aria-label");j.items.setAttribute("role","rowgroup"),j.viewport.setAttribute("role","none"),j.content.setAttribute("role","none"),j.viewport.removeAttribute("tabindex");let g=K.getContainerWidth()-M;Q.resolve(g);let P=(A,N)=>{if(!Q)return;let y=Q.getColumn(A);if(!y)return;let O=y.width,k=Q.resizeColumn(A,N);if(Y)Y.update(Q);if(q)q.updateColumnLayout(Q);s(),U.emit("column:resize",{key:y.def.key,index:A,previousWidth:O,width:k})},m=(A)=>{if(A.direction===null)z=null,C="asc";else z=A.key,C=A.direction;if(Y)Y.updateSort(z,C);U.emit("column:sort",A)},t=(A)=>{U.emit("column:click",A)};if(Y=m1(j.root,w,W,P,m,t),Y.rebuild(Q),z)Y.updateSort(z,C);let s=()=>{if(!Q)return;let A=Q.totalWidth;j.content.style.minWidth=`${A}px`,j.items.style.minWidth=`${A}px`};s(),q=d1(j.items,()=>K.sizeCache,Q,J.columns,W,_.ariaIdPrefix,()=>K.dataManager.getTotal(),K.rawConfig.item?.striped,()=>K.getStripeIndexFn());let T=null,h=null,I=!1,l=()=>{if(I)return;I=!0,T=K.methods.get("_getSelectedIds")??null,h=K.methods.get("_getFocusedIndex")??null},F=-1,E=-1,L=-1,f=!0,a=_.overscan,c={start:0,end:0},u={start:0,end:0},p=()=>{if(K.state.isDestroyed)return;let A=K.scrollController.getScrollTop(),N=K.state.viewportState.containerSize,y=K.getVirtualTotal(),O=K.state.viewportState.isCompressed;if(!f&&A===F&&N===E&&y===L)return;F=A,E=N,L=y,f=!1;let k=y+1;if(k!==r)r=k,j.root.setAttribute("aria-rowcount",String(k));K.getVisibleRange(A,N,y,c),u.start=Math.max(0,c.start-a),u.end=Math.min(y-1,c.end+a);let x=K.state.viewportState;x.scrollPosition=A,x.visibleRange.start=c.start,x.visibleRange.end=c.end,x.renderRange.start=u.start,x.renderRange.end=u.end;let n=K.state.lastRenderRange,e=n.start!==u.start||n.end!==u.end;if(!e&&O){q.updatePositions(K.getCompressionContext());return}if(!e)return;let J0=O?K.getCompressionContext():void 0,j0=K.dataManager.getItemsInRange(u.start,u.end);l();let o=T?T():R4,Q0=h?h():-1;q.render(j0,u,o,Q0,J0),n.start=u.start,n.end=u.end,U.emit("range:change",{range:{start:u.start,end:u.end}})},B=()=>{if(K.state.isDestroyed)return;K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,f=!0,p()};K.setRenderFns(p,B),K.setUpdateItemClassesFn((A,N,y)=>{q?.updateItemClasses(A,N,y)});let X=Y,R=-1,D=()=>{let A=j.viewport.scrollLeft;if(A!==R){if(R=A,X.syncScroll)X.syncScroll(A)}};K.afterScroll.push(D),j.viewport.addEventListener("scroll",D,{passive:!0}),K.resizeHandlers.push((A,N)=>{if(!Q)return;if(Q.resolve(A-M),Y)Y.update(Q);if(q)q.updateColumnLayout(Q);s()}),K.methods.set("updateColumns",(A)=>{if(!Q||!Y)return;if(Q.updateColumns(A),Q.resolve(K.getContainerWidth()-M),Y.rebuild(Q),z)Y.updateSort(z,C);if(s(),q)q.updateColumnLayout(Q),q.clear();K.forceRender()}),K.methods.set("resizeColumn",(A,N)=>{if(!Q)return;let y;if(typeof A==="string"){let O=Q.columns;y=-1;for(let k=0;k<O.length;k++)if(O[k].def.key===A){y=k;break}if(y===-1)return}else y=A;P(y,N)}),K.methods.set("getColumnWidths",()=>{if(!Q)return{};let A={},N=Q.columns;for(let y=0;y<N.length;y++)A[N[y].def.key]=N[y].width;return A}),K.methods.set("setSort",(A,N)=>{if(z=A,C=N??"asc",Y)Y.updateSort(z,C)}),K.methods.set("getSort",()=>{return{key:z,direction:C}}),K.methods.set("_getTableLayout",()=>Q),K.methods.set("_updateRenderedItem",(A,N,y,O)=>{q?.updateItem(A,N,y,O)}),K.methods.set("_replaceTableRenderer",(A)=>{q=A}),K.methods.set("_updateTableForGroups",(A,N)=>{if(q)q.setGroupHeaderFn(A,N)}),K.methods.set("_getTableHeaderHeight",()=>w),K.keydownHandlers.push((A)=>{if(A.key!=="ArrowLeft"&&A.key!=="ArrowRight")return;if(!Q)return;let N=Q.columns;if(N.length===0)return;let y=j.viewport.clientWidth;if(Q.totalWidth<=y)return;let O=j.viewport.scrollLeft;if(A.key==="ArrowRight"){for(let k=0;k<N.length;k++)if(N[k].offset>O+1){j.viewport.scrollLeft=N[k].offset,A.preventDefault();return}}else{for(let k=N.length-1;k>=0;k--)if(N[k].offset<O-1){j.viewport.scrollLeft=N[k].offset,A.preventDefault();return}if(O>0)j.viewport.scrollLeft=0,A.preventDefault()}}),K.contentSizeHandlers.push(()=>{s()}),K.destroyHandlers.push(()=>{if(j.viewport.removeEventListener("scroll",D),Y)Y.destroy(),Y=null;if(q)q.destroy(),q=null;j.content.style.minWidth="",j.items.style.minWidth="",j.root.classList.remove(`${W}--table`),j.root.removeAttribute("role"),j.root.removeAttribute("aria-colcount"),j.viewport.removeAttribute("role"),j.viewport.setAttribute("tabindex","-1"),j.content.removeAttribute("role");let A=j.root.getAttribute("aria-label");if(A)j.items.setAttribute("aria-label",A),j.root.removeAttribute("aria-label");j.root.removeAttribute("aria-rowcount"),j.items.setAttribute("role","listbox")})},destroy(){if(Y)Y.destroy(),Y=null;if(q)q.destroy(),q=null}}};var c1=(J,Q)=>{let Y=new Map,q=(j)=>{let U=Y.get(j);return U!==void 0?U:J},K=f0(q,Q);return{getOffset(j){return K.getOffset(j)},getSize(j){return q(j)},indexAtOffset(j){return K.indexAtOffset(j)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(j){if(j<K.getTotal()){for(let U of Y.keys())if(U>=j)Y.delete(U)}K=f0(q,j)},isVariable(){return!0},setMeasuredSize(j,U){Y.set(j,U)},isMeasured(j){return Y.has(j)},getEstimatedSize(){return J},measuredCount(){return Y.size}}};var rJ=()=>{let J=null;return{name:"withAutoSize",priority:5,setup(Q){let Y=Q.config.horizontal,K=Q.rawConfig.item,j=Y?K.estimatedWidth:K.estimatedHeight;if(j==null||j<=0)throw Error("[vlist/withAutoSize] Requires item.estimatedHeight (or item.estimatedWidth for horizontal)");let U=K.gap??0,_=Q.getVirtualTotal(),W=y0(Q.rawConfig.padding),Z=u0(W,Y),V=c1(j+U,_),b=Q.methods.get("_setSizeCache"),G=Q.methods.get("_setConstrainSize");if(!b||!G)throw Error("[vlist/withAutoSize] Incompatible builder version");b(V),G((v)=>V.isMeasured(v));let H=new WeakMap,S=0,$=!1,M=2,w=(v)=>{let g=Q.scrollController.getScrollTop(),P=Q.state.viewportState.containerSize;if(P<=0)return!1;let m=Math.max(0,v+Z-P);return g>=m-M},z=()=>{let v=V.getTotalSize(),g=Q.state.viewportState.containerSize;if(g<=0)return;let P=Math.max(0,v+Z-g),m=Q.scrollController.getScrollTop();if(P>m)Q.scrollController.scrollTo(P)},C=()=>{let v=V.getTotalSize();Q.updateContentSize(v)},r=()=>{if($){let v=Q.dom.viewport,g=v.scrollHeight,P=g-v.clientHeight,m=Q.scrollController.getScrollTop(),t=P>0&&m>=P-M,s=Q.getVirtualTotal(),T=Q.state.viewportState.renderRange.end,h=s>0&&T>=s-1,I=V.getTotalSize()+Z,l=Math.abs(I-g),F=h&&P>0&&m>=P-l-M,E=t||F;if(C(),$=!1,E)v.scrollHeight,z(),Q.forceRender()}};J=new ResizeObserver((v)=>{if(Q.state.isDestroyed)return;let g=!1,P=Q.state.viewportState.visibleRange.start;for(let L of v){let f=H.get(L.target);if(f===void 0)continue;let a=Y?L.borderBoxSize[0].inlineSize:L.borderBoxSize[0].blockSize;if(!V.isMeasured(f)){let c=a+U,u=V.getSize(f);if(V.setMeasuredSize(f,c),g=!0,f<P&&c!==u)S+=c-u;J.unobserve(L.target);let p=L.target;if(Y)p.style.width=`${a}px`;else p.style.height=`${a}px`}}if(!g)return;let m=V.getTotalSize();if(V.rebuild(Q.getVirtualTotal()),S!==0){let L=Q.scrollController.getScrollTop();Q.scrollController.scrollTo(L+S),S=0}let t=w(m),s=Q.getVirtualTotal(),T=Q.state.viewportState.renderRange.end,h=s>0&&T>=s-1,I=Q.dom.viewport,l=I.scrollHeight-I.clientHeight,F=Q.scrollController.getScrollTop(),E=l>0&&F>=l-M;if(t||h||!Q.scrollController.isScrolling()){if(C(),$=!1,t||h&&E)I.scrollHeight,z()}else $=!0;Q.forceRender()}),Q.afterRenderBatch.push((v)=>{for(let{index:g,element:P}of v)if(!V.isMeasured(g))H.set(P,g),J.observe(P)}),Q.idleHandlers.push(r),Q.destroyHandlers.push(()=>{if(J)J.disconnect(),J=null})},destroy(){if(J)J.disconnect(),J=null}}};var w4=50,z4=0.1;function l1(J){let Q=0,Y=0,q=0;function K(){return q>0?Y/q:0}function j(W){if(Q=W,W>z4&&W<w4)Y+=W,q++}function U(){let W=J.getTotal();if(W===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let V=J.getContainerSize();if(V<=0)return 0;let b=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,S=Math.ceil(W/G)*Z,M=Math.min(S,m0)-V,w=S-V,z=M>0?w/M:1,C=b*z,r=Math.ceil((C+V)/Z);return Math.min(r*G,W)}function _(){let W=J.getTotal(),Z=U();return{progress:W>0?Math.min(100,Math.max(0,Z/W*100)):0,velocity:Q,velocityAvg:K(),itemCount:Z,total:W}}return{getState:_,onVelocity:j}}export{lJ as withTable,dJ as withSnapshots,mJ as withSelection,zJ as withScrollbar,CJ as withScale,SJ as withPage,xJ as withMasonry,pJ as withGroups,gJ as withGrid,rJ as withAutoSize,vJ as withAsync,wJ as vlist,l1 as createStats};
|
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var T2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var v2=(J,Q)=>{let $=0,Y=J.length-1;while($<Y){let q=$+Y+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else Y=q-1}return $},x2=(J,Q)=>{let $=0,Y=J.length-1;while($<Y){let q=$+Y+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else Y=q-1}return $},g2=(J,Q)=>{if(J===0)return[];let $=[],Y=Q(0),q=0,j=0;for(let B=1;B<J;B++){let D=Q(B);if(D!==Y){let b=B-q;$.push({key:Y,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:q,count:b}),j=j+1+b,Y=D,q=B}}return $.push({key:Y,groupIndex:$.length,headerLayoutIndex:j,firstDataIndex:q,count:J-q}),$},u2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,Y=Array($),q=0;for(let j of Q){Y[q]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},q++;for(let B=0;B<j.count;B++)Y[q]=J[j.firstDataIndex+B],q++}return Y},m2=(J,Q,$=!1)=>{let Y=typeof Q==="number"?(q)=>Q:Q;return(q)=>{let j=J.getEntry(q);if(j.type==="header"){if($&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return Y(j.dataIndex)}},d2=(J,Q)=>{let $=g2(J,Q.getGroupForIndex),Y=J+$.length,q=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return Y},get groupCount(){return $.length},get groups(){return $},getEntry:(W)=>{if($.length===0)return{type:"item",dataIndex:W,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let P=v2($,W),Z=$[P];if(W===Z.headerLayoutIndex)return{type:"header",group:Z};let G=W-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+G,group:Z}},layoutToDataIndex:(W)=>{if($.length===0)return W;let P=v2($,W),Z=$[P];if(W===Z.headerLayoutIndex)return-1;let G=W-Z.headerLayoutIndex-1;return Z.firstDataIndex+G},dataToLayoutIndex:(W)=>{if($.length===0)return W;let P=x2($,W),Z=$[P],G=W-Z.firstDataIndex;return Z.headerLayoutIndex+1+G},getGroupAtLayoutIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let P=v2($,W);return $[P]},getGroupAtDataIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let P=x2($,W);return $[P]},getHeaderHeight:typeof q==="number"?(W)=>q:(W)=>{let P=$[W];if(!P)return 0;return q(P.key,W)},rebuild:(W)=>{$=g2(W,Q.getGroupForIndex),Y=W+$.length}}};var c2=(J,Q,$,Y,q,j=!1,B=0)=>{let D=j?"width":"height",b=j?"height":"width",_=j?"X":"Y",K=(X,f)=>{X.style[D]=`${f}px`},E=document.createElement("div");E.className=`${q}-sticky-header`,E.setAttribute("role","presentation"),E.setAttribute("aria-hidden","true"),E.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(j?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`);let W=()=>{let X=document.createElement("div");return X.className="sticky-group",X.style.position="absolute",X.style.willChange="transform",X.style[b]="100%",X},P=W(),Z=W();E.append(P,Z),J.insertBefore(E,J.firstChild);let G=P,U=Z,V=Q.groups,T=[],R=[],z=0,r=()=>{V=Q.groups,z=V.length,T=Array(z),R=Array(z);for(let X=0;X<z;X++)T[X]=$.getOffset(V[X].headerLayoutIndex),R[X]=Q.getHeaderHeight(X)};r();let I=-1,s=0,a=-1,$2=!1,B2=0,m=!1,C=(X,f)=>{Y(X,f);let c=R[f];return K(X,c),c},o=(X)=>{X.replaceChildren(),X.style.transform=""},J2=(X)=>{if(X===I)return;if(I=X,s=0,X<0||X>=z){o(G);return}s=C(G,X),K(E,s),G.style.transform=""},k=(X)=>{if(X===B2)return;B2=X;let f=Math.round(X);G.style.transform=`translate${_}(${f}px)`,U.style.transform=`translate${_}(${f+s}px)`},O=()=>{B2=0,G.style.transform="",U.style.transform=""},N=()=>{if(!m)return;let X=G;G=U,U=X,I=a,s=I>=0?R[I]:0,K(E,s),o(U),a=-1,m=!1,O()},A=()=>{if(!m)return;o(U),a=-1,m=!1,O()},H=()=>{if($2)return;$2=!0,E.style.display=""},n=()=>{if(!$2)return;$2=!1,E.style.display="none",o(G),I=-1,s=0,A()},l=(X)=>{if(z===0){n();return}if(X<T[0]){n();return}let f=0,c=z-1;while(f<c){let w=f+c+1>>>1;if(T[w]+R[w]<=X)f=w;else c=w-1}if(!$2)H();J2(f);let y=f+1;if(y<z){let w=T[y]-X;if(w<=0&&w>-s){if(a!==y||!m)a=y,C(U,y),m=!0;k(w)}else if(w<=-s){if(m)N()}else if(m)A()}else if(m)A()},d=()=>{r();let X=I;if(I=-1,s=0,X>=0)J2(X)},M=()=>{E.remove(),I=-1,s=0,a=-1,$2=!1,m=!1};return E.style.display="none",{update:l,refresh:d,show:H,hide:n,destroy:M}};var r2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,Y=J.isHeaderFn,q={row:0,col:0},j=(Z)=>{if(Z<=0)return 0;if(!Y)return Math.ceil(Z/Q);let G=0,U=0,V=0;for(let T=0;T<Z;T++)if(Y(T)){if(V++,U>0)G++,U=0;G++,U=0}else if(U++,U>=Q)G++,U=0;if(U>0)G++;return G},B=(Z)=>{return q.row=D(Z),q.col=b(Z),q},D=(Z)=>{if(!Y)return Math.floor(Z/Q);let G=0,U=0;for(let V=0;V<=Z;V++)if(Y(V)){if(U>0)G++,U=0;if(V===Z)return G;G++,U=0}else{if(V===Z)return G;if(U++,U>=Q)G++,U=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${G}`),G},b=(Z)=>{if(!Y)return Z%Q;if(Y(Z))return 0;let G=0;for(let U=0;U<=Z;U++)if(Y(U))G=0;else{if(U===Z)return G;if(G++,G>=Q)G=0}return G},_=(Z,G,U)=>{if(U<=0)return{start:0,end:-1};if(!Y){let r=Math.max(0,Z*Q),I=Math.min(U-1,(G+1)*Q-1);return{start:r,end:I}}let V=-1,T=-1,R=0,z=0;for(let r=0;r<U;r++){if(Y(r)){if(z>0)R++,z=0;if(R>=Z&&R<=G){if(V===-1)V=r;T=r}R++,z=0}else{if(R>=Z&&R<=G){if(V===-1)V=r;T=r}if(z++,z>=Q)R++,z=0}if(R>G&&z===0)break}if(V===-1)return{start:0,end:-1};return{start:V,end:T}},K=(Z,G,U)=>{if(G<0||G>=Q)return-1;let V=Z*Q+G;if(V<0||V>=U)return-1;return V},E=(Z)=>{let G=(Q-1)*$;return Math.max(0,(Z-G)/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)Y=Z.isHeaderFn},getTotalRows:j,getPosition:B,getRow:D,getCol:b,getItemRange:_,getItemIndex:K,getColumnWidth:E,getColumnOffset:(Z,G)=>{let U=E(G);return Z*(U+$)}}};var W2=16000000;var l2="x",a2=20,C2="_isPlaceholder",M2="__placeholder_";var E2=(J,Q,$)=>{if(String($).startsWith(M2))return!1;let Y=M2+Q;if(J.has(Y))return J.delete(Y),J.add($),!0;return!1},s2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),S2=(J,Q,$)=>{if($==="none")return J;let Y=new Set(J.selected);if($==="single"){if(Y.clear(),Q.length>0)Y.add(Q[0])}else for(let q of Q)Y.add(q);return{...J,selected:Y}},f2=(J,Q)=>{let $=new Set(J.selected);for(let Y of Q)$.delete(Y);return{...J,selected:$}},n2=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return f2(J,[Q]);else return S2(J,[Q],$)},o2=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((Y)=>Y.id))}},i2=(J)=>({...J,selected:new Set});var t2=(J,Q)=>{return J.selected.has(Q)},e2=(J)=>{return Array.from(J.selected)},JJ=(J,Q)=>{let $=[];for(let Y of J.selected){let q=Q(Y);if(q)$.push(q)}return $};var vJ=(J,Q)=>{let $=Q;return{getOffset:(Y)=>Y*J,getSize:(Y)=>J,indexAtOffset:(Y)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(Y/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(Y)=>{$=Y},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,Y=new Float64Array(0),q=(B)=>{$=B,Y=new Float64Array(B+1),Y[0]=0;for(let D=0;D<B;D++)Y[D+1]=Y[D]+J(D)};q(Q);let j=(B)=>{if($===0)return 0;if(B<=0)return 0;if(B>=Y[$])return $-1;let D=0,b=$-1;while(D<b){let _=D+b+1>>>1;if(Y[_]<=B)D=_;else b=_-1}return D};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=$)return Y[$];return Y[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>j(B),getTotalSize:()=>Y[$]??0,getTotal:()=>$,rebuild:(B)=>q(B),isVariable:()=>!0}},F2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},I2=(J,Q,$,Y)=>{if(Y===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,j=0,B=Q;while(B<Y&&j<$)j+=J.getSize(B),q++,B++;return Math.max(1,q)};var H2=(J,Q,$)=>{let Y=Q.getTotalSize(),q=$===!0||Y>W2,j=Y>W2?W2:Y,B=Y>0?j/Y:1;return{isCompressed:q,actualSize:Y,virtualSize:j,ratio:B}},QJ=(J,Q,$,Y,q,j)=>{if(Y===0||Q===0)return j.start=0,j.end=-1,j;if(!q.isCompressed||q.ratio===1){let W=$.indexAtOffset(J),P=$.indexAtOffset(J+Q);if(P<Y-1)P++;return j.start=Math.max(0,W),j.end=Math.min(Y-1,Math.max(0,P)),j}let{virtualSize:B}=q,b=J/B*Y,_=Math.floor(b),K=I2($,Math.max(0,_),Q,Y),E=Math.ceil(b)+K;return j.start=Math.max(0,_),j.end=Math.min(Y-1,Math.max(0,E)),j},$J=(J,Q,$,Y)=>{if($===0)return Y.start=0,Y.end=-1,Y;return Y.start=Math.max(0,J.start-Q),Y.end=Math.min($-1,J.end+Q),Y},A2=(J,Q,$,Y,q,j,B)=>{if(!j.isCompressed||Y===0)return $.getOffset(J);if(j.ratio===1)return $.getOffset(J)-Q;let{virtualSize:D}=j,b=Q/D,_=$.getTotalSize(),K=b*_;return $.getOffset(J)-K},YJ=(J,Q,$,Y,q,j="start")=>{if(Y===0)return 0;let B;if(q.isCompressed&&q.ratio!==1){B=J/Y*q.virtualSize;let K=Q.getSize(J);switch(j){case"center":B-=($-K)/2*q.ratio;break;case"end":B-=($-K)*q.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let D=Q.getSize(J);switch(j){case"center":B-=($-D)/2;break;case"end":B-=$-D;break}let b=q.virtualSize-$;return Math.max(0,Math.min(B,b))},jJ=(J,Q,$,Y)=>{if($===0)return 0;if(Y.isCompressed&&Y.ratio!==1){let q=J/Y.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},qJ=(J,Q)=>{if(typeof Q==="number")return J*Q>W2;return Q.getTotalSize()>W2},BJ=(J)=>{if(J<=0)return 0;return Math.floor(W2/J)},UJ=(J,Q,$)=>{let Y=H2(J,Q,$);if(!Y.isCompressed)return`No compression needed (${J} items, ${(Y.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(Y.ratio*100).toFixed(1)}% (${J} items, ${(Y.actualSize/1e6).toFixed(1)}M px → ${(Y.virtualSize/1e6).toFixed(1)}M px virtual)`};var R2=(J,Q,$)=>{let Y=Array.from(Q).sort((B,D)=>B-D);if(Y.length<=1)return;let q=[];for(let B=0;B<Y.length;B++){let D=$(Y[B]);if(D)q.push(D)}if(q.length<=1)return;let j=J.firstChild;for(let B=0;B<q.length;B++){let D=q[B];if(D===j)j=j.nextSibling;else J.insertBefore(D,j)}};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),Q.push(j)},clear:()=>{Q.length=0}}},fJ=1,KJ=(J,Q,$,Y,q,j,B,D,b=!1)=>{let _=SJ(),K=new Map,E=j,W=!1,P=0,Z="",G=-1,U={selected:!1,focused:!1},V=(M,X)=>{return U.selected=M,U.focused=X,U},T=`${q}-item ${q}-grid-item`,R=`${q}-item--selected`,z=`${q}-item--focused`,r=`${q}-item--placeholder`,I=`${q}-item--replaced`,s=(M,X)=>{if(typeof X==="string")M.innerHTML=X;else M.replaceChildren(X)},a=(M,X,f)=>{M.classList.toggle(R,X),M.classList.toggle(z,f)},$2=(M,X)=>{let f=Y.getRow(M);if(X?.compression?.isCompressed)return A2(f,X.scrollPosition,$,X.totalItems,X.containerSize,X.compression,X.rangeStart);return $.getOffset(f)},B2=(M,X)=>{let f=W&&Y.getCol(M)===0,c=f?0:Y.getCol(M),y=f?0:Y.getColumnOffset(c,E),w;if(W){let i=Y.getRow(M),L=0,F=new Set;for(let S=0;S<M;S++){let u=Y.getRow(S);if(u<i&&!F.has(u)){let x=$.getSize(S);L+=x,F.add(u)}}w=L}else w=$2(M,X);if(b)return`translate(${Math.round(w)}px, ${Math.round(y)}px)`;return`translate(${Math.round(y)}px, ${Math.round(w)}px)`},m=(M,X)=>{M.style.transform=X},C=(M,X)=>{let f=M.dataset.id?.startsWith("__group_header"),c=f?E:Y.getColumnWidth(E),y;if(W||f)y=$.getSize(X)-Y.gap;else{let w=Y.getRow(X);y=$.getSize(w)-Y.gap}if(b)M.style.width=`${y}px`,M.style.height=`${c}px`;else M.style.width=`${c}px`,M.style.height=`${y}px`},o=(M,X,f,c,y)=>{let w=_.acquire(),i=V(f,c);if(w.className=T,w.dataset.index=String(M),w.dataset.id=String(X.id),w.dataset.row=String(Y.getRow(M)),w.dataset.col=String(Y.getCol(M)),w.ariaSelected=String(f),D)w.id=`${D}-item-${M}`;if(B){let S=B();if(S!==G)G=S,Z=String(S);w.setAttribute("aria-setsize",Z),w.setAttribute("aria-posinset",String(M+1))}C(w,M);let L=Q(X,M,i);if(s(w,L),String(X.id).startsWith(M2))w.classList.add(r);return a(w,f,c),m(w,y),{element:w,lastItemId:X.id,lastSelected:f,lastFocused:c,lastTransform:y,lastSeenFrame:P}},J2=(M,X,f,c,y)=>{if(P++,X.start===0&&M.length>0)W=T2(M[0]);for(let[L,F]of K)if(L>=X.start&&L<=X.end)F.lastSeenFrame=P;else if(P-F.lastSeenFrame>fJ)_.release(F.element),K.delete(L);let w=!1;if(B){let L=B();if(L!==G)G=L,Z=String(L),w=!0}let i=null;for(let L=X.start;L<=X.end;L++){let F=L-X.start,S=M[F];if(!S){console.warn(`⚠️ RENDER: Missing item at index ${L} (range: ${X.start}-${X.end}, items.length: ${M.length})`);continue}let u=f.has(S.id),x=L===c,h=K.get(L);if(h){let e=h.lastItemId!==S.id,v=h.lastSelected!==u,p=h.lastFocused!==x;if(e){let q2=String(h.lastItemId),Q2=String(S.id),Y2=q2.startsWith(M2),U2=Q2.startsWith(M2);if(!U2&&E2(f,L,S.id))u=!0;let Z2=V(u,x),t=Q(S,L,Z2);if(s(h.element,t),h.element.dataset.id=Q2,h.element.dataset.row=String(Y.getRow(L)),h.element.dataset.col=String(Y.getCol(L)),C(h.element,L),h.element.classList.toggle(r,U2),Y2&&!U2)h.element.classList.add(I),setTimeout(()=>h.element.classList.remove(I),300);h.lastItemId=S.id}if(e||v||p)a(h.element,u,x),h.element.ariaSelected=String(u),h.lastSelected=u,h.lastFocused=x;let g=B2(L,y);if(h.lastTransform!==g)m(h.element,g),h.lastTransform=g;if(w)h.element.setAttribute("aria-setsize",Z)}else{if(E2(f,L,S.id))u=!0;let e=B2(L,y),v=o(L,S,u,x,e);if(!i)i=document.createDocumentFragment();i.appendChild(v.element),K.set(L,v)}}if(i)J.appendChild(i)},k=(M)=>{for(let[X,f]of K){let c=B2(X,M);if(f.lastTransform!==c)m(f.element,c),f.lastTransform=c}},O=(M,X,f,c)=>{let y=K.get(M);if(!y)return;let w=V(f,c),i=Q(X,M,w);s(y.element,i),a(y.element,f,c),y.element.dataset.id=String(X.id),y.element.ariaSelected=String(f),C(y.element,M),y.lastItemId=X.id,y.lastSelected=f,y.lastFocused=c},N=(M,X,f)=>{let c=K.get(M);if(!c)return;let y=c.lastSelected!==X,w=c.lastFocused!==f;if(y||w)a(c.element,X,f),c.lastSelected=X,c.lastFocused=f},A=(M)=>{return K.get(M)?.element},H=(M)=>{if(Math.abs(M-E)<1)return;E=M;for(let[X,f]of K){C(f.element,X);let c=B2(X);m(f.element,c),f.lastTransform=c}},n=()=>{R2(J,K.keys(),(M)=>K.get(M)?.element)},l=()=>{for(let[,M]of K)_.release(M.element);K.clear()};return{render:J2,updatePositions:k,updateItem:O,updateItemClasses:N,getElement:A,sortDOM:n,updateContainerWidth:H,clear:l,destroy:()=>{l(),_.clear()}}};var XJ=(J,Q=50,$=1/0,Y=!0)=>{let q=J,j=[],B=0,D=()=>{j=q.map((U,V)=>({def:U,index:V,width:0,minWidth:IJ(U.minWidth??Q,1),maxWidth:U.maxWidth??$,resizable:U.resizable??Y,offset:0}))},b=(U)=>{if(j.length===0){B=0;return}let V=0,T=0;for(let R=0;R<j.length;R++){let z=j[R],r=z.def;if(r.width!==void 0)z.width=p2(r.width,z.minWidth,z.maxWidth),V+=z.width;else T++}if(T>0){let z=Math.max(0,U-V)/T;for(let r=0;r<j.length;r++){let I=j[r];if(I.def.width===void 0)I.width=p2(z,I.minWidth,I.maxWidth)}}_()},_=()=>{let U=0;for(let V=0;V<j.length;V++){let T=j[V];T.offset=U,U+=T.width}B=U},K=(U,V)=>{if(U<0||U>=j.length)return 0;let T=j[U];if(!T.resizable)return T.width;let R=p2(V,T.minWidth,T.maxWidth);return T.width=R,_(),R},E=(U)=>{return j[U]},W=(U)=>{if(j.length===0)return;if(U<0)return j[0];if(U>=B)return j[j.length-1];let V=0,T=j.length-1;while(V<T){let R=V+T>>>1,z=j[R];if(U<z.offset)T=R-1;else if(U>=z.offset+z.width)V=R+1;else return z}return j[V]},P=(U)=>{if(U<0||U>=j.length)return 0;return j[U].offset},Z=(U)=>{if(U<0||U>=j.length)return 0;return j[U].width},G=(U)=>{q=U,D()};return D(),{get columns(){return j},get totalWidth(){return B},resolve:b,updateColumns:G,resizeColumn:K,getColumn:E,getColumnAtX:W,getColumnOffset:P,getColumnWidth:Z}},p2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var NJ=(J,Q,$,Y,q,j,B)=>{let D=document.createElement("div");D.setAttribute("role","rowgroup");let b=document.createElement("div");b.className=`${Y}-table-header`,b.setAttribute("role","row"),b.setAttribute("aria-rowindex","1"),b.style.height=`${$}px`;let _=document.createElement("div");_.className=`${Y}-table-header-scroll`,_.setAttribute("role","presentation"),b.appendChild(_),D.appendChild(b),J.insertBefore(D,J.firstChild),Q.style.cssText=`position:absolute;top:${$}px;left:0px;right:0px;bottom:0px;height:auto`;let K=[],E=[],W=[],P=!0,Z=null,G="asc",U=null,V=!1,T=-1,R=0,z=0,r=(N,A)=>{let H=document.createElement("div");H.className=`${Y}-table-header-cell`,H.setAttribute("role","columnheader"),H.setAttribute("aria-colindex",String(A+1)),H.dataset.columnKey=N.def.key;let n=N.def.align;if(n==="center")H.classList.add(`${Y}-table-header-cell--center`);else if(n==="right")H.classList.add(`${Y}-table-header-cell--right`);let l=document.createElement("div");l.className=`${Y}-table-header-content`;let d=N.def.header?N.def.header(N.def):N.def.label;if(typeof d==="string")l.textContent=d;else l.appendChild(d);if(H.appendChild(l),N.def.sortable){let M=document.createElement("span");M.className=`${Y}-table-header-sort`,M.setAttribute("aria-hidden","true"),H.appendChild(M),W.push(M),H.classList.add(`${Y}-table-header-cell--sortable`)}else W.push(null);if(N.resizable){let M=document.createElement("div");M.className=`${Y}-table-header-resize`,M.dataset.resizeIndex=String(A),H.appendChild(M),E.push(M)}return H},I=(N)=>{U=N,_.textContent="",K=[],E=[],W=[];let A=N.columns;for(let H=0;H<A.length;H++){let n=A[H],l=r(n,H);K.push(l),_.appendChild(l)}if(s(N),Z)a(Z,G)},s=(N)=>{U=N;let A=N.columns;_.style.width=`${N.totalWidth}px`;for(let H=0;H<K.length&&H<A.length;H++){let n=K[H],l=A[H];n.style.width=`${l.width}px`}},a=(N,A)=>{if(Z=N,G=A,!U)return;let H=U.columns;for(let n=0;n<W.length&&n<H.length;n++){let l=W[n];if(!l)continue;if(H[n].def.key===N&&N!==null)l.textContent=A==="asc"?"▲":"▼",l.style.opacity="0.7",K[n].setAttribute("aria-sort",A==="asc"?"ascending":"descending");else l.textContent="",l.style.opacity="0",K[n].removeAttribute("aria-sort")}},$2=(N)=>{_.style.transform=`translateX(${-N}px)`},B2=(N)=>{let A=N.target;if(!A.dataset.resizeIndex)return;if(N.preventDefault(),N.stopPropagation(),T=parseInt(A.dataset.resizeIndex,10),!U)return;let H=U.getColumn(T);if(!H||!H.resizable)return;V=!0,R=N.clientX,z=H.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",A.classList.add(`${Y}-table-header-resize--active`),A.setPointerCapture(N.pointerId),A.addEventListener("pointermove",m),A.addEventListener("pointerup",C),A.addEventListener("pointercancel",C)},m=(N)=>{if(!V||!U)return;let A=N.clientX-R;if(Math.abs(A)<1)return;let H=Math.max(0,z+A);q(T,H)},C=(N)=>{if(!V)return;let A=N.target;A.removeEventListener("pointermove",m),A.removeEventListener("pointerup",C),A.removeEventListener("pointercancel",C);try{A.releasePointerCapture(N.pointerId)}catch{}A.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",V=!1,T=-1},o=(N)=>{let A=N.target;if(A.dataset.resizeIndex!==void 0)return;if(V)return;let H=A;while(H&&!H.dataset.columnKey)if(H=H.parentElement,H===b||H===null)return;if(!H||!H.dataset.columnKey)return;let n=H.dataset.columnKey;if(!U)return;let l=U.columns,d=-1;for(let X=0;X<l.length;X++)if(l[X].def.key===n){d=X;break}if(d===-1)return;let M=l[d];if(B)B({key:n,index:d,event:N});if(M.def.sortable&&j){let X;if(Z===n)if(G==="asc")X="desc";else X=null;else X="asc";j({key:n,index:d,direction:X})}};return b.addEventListener("pointerdown",B2),b.addEventListener("click",o),{element:b,update:s,updateSort:a,rebuild:I,show:()=>{if(P)return;P=!0,b.style.display=""},hide:()=>{if(!P)return;P=!1,b.style.display="none"},destroy:()=>{b.removeEventListener("pointerdown",B2),b.removeEventListener("click",o),Q.style.cssText="",D.remove(),K=[],E=[],W=[],U=null,P=!1},syncScroll:$2}};var pJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)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="",J.push(Q)},clear:()=>{J.length=0}}},ZJ=(J,Q,$,Y,q,j,B,D,b)=>{let _=pJ(),K=new Map,E=-1,W=$,P=null,Z=null,G=null,U=(L,F)=>{Z=L,G=F},V=(L,F)=>{if(F)L.setAttribute("aria-selected","true");else L.removeAttribute("aria-selected")},T=(L,F,S,u)=>{L.setAttribute("role",F),L.setAttribute("data-id",String(S)),L.setAttribute("data-index",String(u))},R=(L)=>String(L).startsWith("__placeholder_"),z=`${q}-item ${q}-table-row`,r=`${q}-item--selected`,I=`${q}-item--focused`,s=`${q}-table-cell`,a=`${q}-table-cell--center`,$2=`${q}-table-cell--right`,B2=`${q}-item--odd`,m=`${q}-item--placeholder`,C=`${q}-item--replaced`,o=`${q}-item ${q}-table-row ${q}-table-group-header`,J2=`${q}-table-group-header-content`,k=(L,F,S,u,x=!1)=>{if(S.def.cell){let h=S.def.cell(F,S.def,u);if(typeof h==="string")L.innerHTML=h;else L.replaceChildren(h)}else{let h=F[S.def.key],e=h!=null?String(h):"";if(x&&e)L.innerHTML=`<span>${e}</span>`;else L.textContent=e}},O=(L,F,S,u,x=!1)=>{let h=z;if(D){if(P){let e=P(F);if(e>=0&&(e&1)===1)h+=` ${B2}`}else if((F&1)===1)h+=` ${B2}`}if(x)h+=` ${m}`;if(S)h+=` ${r}`;if(u)h+=` ${I}`;L.className=h},N=(L,F,S)=>{if(S?.compression?.isCompressed)return Math.round(A2(L,S.scrollPosition,F,S.totalItems,S.containerSize,S.compression,S.rangeStart));return F.getOffset(L)},A=(L,F)=>{let S=F.def.align;if(S==="center")L.classList.add(a),L.classList.remove($2);else if(S==="right")L.classList.add($2),L.classList.remove(a);else L.classList.remove(a,$2)},H=(L,F)=>{let u=W.columns.length;if(F.length===u)return F;let x=[];for(let h=0;h<u;h++){let e;if(h<F.length)e=F[h];else e=document.createElement("div"),e.className=s,L.appendChild(e);x.push(e)}for(let h=u;h<F.length;h++)F[h].remove();return x},n=(L,F,S,u)=>{let x=_.acquire(),h=L,e=S.getSize(F),v=N(F,S,u);x.style.cssText=`width:${W.totalWidth}px;height:${e}px;transform:translateY(${v}px)`,x.className=o,T(x,"presentation",L.id,F),x.removeAttribute("aria-selected"),x.removeAttribute("aria-rowindex"),x.replaceChildren();let p=document.createElement("div");if(p.className=J2,G){let g=G(h.groupKey,h.groupIndex);if(typeof g==="string")p.innerHTML=g;else p.appendChild(g)}return x.appendChild(p),{element:x,cells:[],index:F,isGroupHeader:!0,lastItemId:L.id,lastSelected:!1,lastFocused:!1,lastOffset:v,lastHeight:e}},l=(L,F,S,u,x,h)=>{let e=_.acquire(),v=x.getSize(F),p=N(F,x,h),g=R(L.id);e.style.cssText=`width:${W.totalWidth}px;height:${v}px;transform:translateY(${p}px)`,O(e,F,S,u,g),T(e,"row",L.id,F),e.id=`${j}-${F}`,e.setAttribute("aria-rowindex",String(F+2)),V(e,S);let q2=H(e,[]),Q2=W.columns;for(let Y2=0;Y2<q2.length&&Y2<Q2.length;Y2++){let U2=q2[Y2],Z2=Q2[Y2];U2.style.cssText=`left:${Z2.offset}px;width:${Z2.width}px`,U2.setAttribute("role","gridcell"),U2.setAttribute("aria-colindex",String(Y2+1)),A(U2,Z2),k(U2,L,Z2,F,g)}return{element:e,cells:q2,index:F,isGroupHeader:!1,lastItemId:L.id,lastSelected:S,lastFocused:u,lastOffset:p,lastHeight:v}},d=(L,F,S,u,x)=>{for(let[g,q2]of K)if(g<F.start||g>F.end)_.release(q2.element),K.delete(g);let h=!1,e=B();if(e!==E)E=e,h=!0;let v=null,p=Q();P=typeof D==="string"&&b?b():null;for(let g=F.start;g<=F.end;g++){let q2=g-F.start,Q2=L[q2];if(!Q2)continue;let Y2=S.has(Q2.id),U2=g===u,Z2=Z?Z(Q2):!1,t=K.get(g);if(t){if(t.isGroupHeader!==Z2){_.release(t.element),K.delete(g);let j2=Z2?n(Q2,g,p,x):l(Q2,g,Y2,U2,p,x);if(K.set(g,j2),!v)v=document.createDocumentFragment();v.appendChild(j2.element);continue}if(Z2){if(t.lastItemId!==Q2.id){let N2=Q2,K2=t.element.firstElementChild;if(K2&&G){let _2=G(N2.groupKey,N2.groupIndex);if(typeof _2==="string")K2.innerHTML=_2;else K2.replaceChildren(_2)}t.element.setAttribute("data-id",String(Q2.id)),t.lastItemId=Q2.id}let G2=N(g,p,x);if(t.lastOffset!==G2)t.lastOffset=G2,t.element.style.transform=`translateY(${G2}px)`;let D2=p.getSize(g);if(t.lastHeight!==D2)t.lastHeight=D2,t.element.style.height=`${D2}px`}else{let j2=t.lastItemId!==Q2.id,G2=t.lastSelected!==Y2,D2=t.lastFocused!==U2;if(j2){let _2=t.lastItemId!=null&&R(t.lastItemId),X2=R(Q2.id);if(!X2&&E2(S,g,Q2.id))Y2=!0;let V2=W.columns;for(let L2=0;L2<t.cells.length&&L2<V2.length;L2++)k(t.cells[L2],Q2,V2[L2],g,X2);if(O(t.element,g,Y2,U2,X2),t.element.setAttribute("data-id",String(Q2.id)),V(t.element,Y2),_2&&!X2)t.element.classList.add(C),setTimeout(()=>{t.element.classList.remove(C)},300);t.lastItemId=Q2.id,t.lastSelected=Y2,t.lastFocused=U2}else if(G2||D2)O(t.element,g,Y2,U2,R(Q2.id)),V(t.element,Y2),t.lastSelected=Y2,t.lastFocused=U2;let N2=N(g,p,x);if(t.lastOffset!==N2)t.lastOffset=N2,t.element.style.transform=`translateY(${N2}px)`;let K2=p.getSize(g);if(t.lastHeight!==K2)t.lastHeight=K2,t.element.style.height=`${K2}px`;if(h)t.element.setAttribute("aria-rowindex",String(g+2))}}else{if(E2(S,g,Q2.id))Y2=!0;let j2=Z2?n(Q2,g,p,x):l(Q2,g,Y2,U2,p,x);if(K.set(g,j2),!v)v=document.createDocumentFragment();v.appendChild(j2.element)}}if(v)J.appendChild(v)},M=(L)=>{let F=Q();for(let[S,u]of K){let x=N(S,F,L);if(u.lastOffset!==x)u.lastOffset=x,u.element.style.transform=`translateY(${x}px)`}},X=(L,F,S,u)=>{let x=K.get(L);if(!x)return;if(x.isGroupHeader)return;let h=W.columns;for(let e=0;e<x.cells.length&&e<h.length;e++)k(x.cells[e],F,h[e],L);x.element.setAttribute("data-id",String(F.id)),x.lastItemId=F.id,O(x.element,L,S,u),V(x.element,S),x.lastSelected=S,x.lastFocused=u},f=(L,F,S)=>{let u=K.get(L);if(!u)return;if(u.isGroupHeader)return;let x=u.lastSelected!==F,h=u.lastFocused!==S;if(x||h)O(u.element,L,F,S),V(u.element,F),u.lastSelected=F,u.lastFocused=S},c=(L)=>{W=L;let F=L.columns;for(let[,S]of K)if(S.element.style.width=`${L.totalWidth}px`,S.cells.length>0)for(let u=0;u<S.cells.length&&u<F.length;u++){let x=S.cells[u],h=F[u];x.style.left=`${h.offset}px`,x.style.width=`${h.width}px`}},y=(L)=>{return K.get(L)?.element},w=()=>{for(let[,L]of K)_.release(L.element);K.clear(),E=-1};return{render:d,updatePositions:M,updateItem:X,updateItemClasses:f,getElement:y,updateColumnLayout:c,setGroupHeaderFn:U,clear:w,destroy:()=>{w(),_.clear()}}};var GJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,Y=J.containerSize,q=0,j=[],B=()=>{let U=(Q-1)*$;q=Math.max(0,(Y-U)/Q),j=Array(Q);let V=q+$;for(let T=0;T<Q;T++)j[T]=T*V};B();let D=[],b=0,_=[],K=(U)=>{let V=0,T=U[0];for(let R=1;R<U.length;R++){let z=U[R];if(z<T)T=z,V=R}return V},E=(U,V)=>{if(U<=0)return b=0,D=[],[];let T=Array(Q).fill(0),R=Array(Q);for(let I=0;I<Q;I++)R[I]=[];let z=Array(U);for(let I=0;I<U;I++){let s=K(T),a=V(I),$2=T[s];z[I]={index:I,x:j[s],y:$2,lane:s,size:a,crossSize:q},R[s].push(I),T[s]=$2+a+$}D=R;let r=0;for(let I=0;I<Q;I++){let s=T[I],a=s>0?s-$:0;if(a>r)r=a}return b=r,z},W=(U)=>{if(U.length===0)return b>0?b:0;if(b>0)return b;let V=Array(Q).fill(0);for(let R of U){let z=R.y+R.size,r=V[R.lane];if(z>r)V[R.lane]=z}let T=0;for(let R=0;R<Q;R++)if(V[R]>T)T=V[R];return T},P=(U,V,T)=>{if(U.length===0||T<=V)return _.length=0,_;if(D.length===0||D.length!==Q)return Z(U,V,T);_.length=0;for(let R=0;R<Q;R++){let z=D[R],r=z.length;if(r===0)continue;let I=0,s=r;while(I<s){let a=I+s>>>1,$2=U[z[a]];if($2.y+$2.size<=V)I=a+1;else s=a}for(let a=I;a<r;a++){let $2=U[z[a]];if($2.y>=T)break;_.push($2)}}return _},Z=(U,V,T)=>{let R=[];for(let z of U)if(z.y+z.size>V&&z.y<T)R.push(z);return R};return{get columns(){return Q},get gap(){return $},get containerSize(){return Y},update:(U)=>{let V=!1;if(U.columns!==void 0){let T=Math.max(1,Math.floor(U.columns));if(T!==Q)Q=T,V=!0}if(U.gap!==void 0&&U.gap!==$)$=U.gap,V=!0;if(U.containerSize!==void 0&&U.containerSize!==Y)Y=U.containerSize,V=!0;if(V)B()},calculateLayout:E,getTotalSize:W,getVisibleItems:P}};var hJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),Q.push(j)},clear:()=>{Q.length=0}}},xJ=1,DJ=(J,Q,$,Y=!1,q,j)=>{let B=hJ(),D=new Map,b=new Set,_=0,K="",E=-1,W={selected:!1,focused:!1},P=(m,C)=>{return W.selected=m,W.focused=C,W},Z=`${$}-item ${$}-masonry-item`,G=`${$}-item--selected`,U=`${$}-item--focused`,V=(m,C)=>{if(typeof C==="string")m.innerHTML=C;else m.replaceChildren(C)},T=(m,C,o)=>{m.classList.toggle(G,C),m.classList.toggle(U,o)},R=(m,C)=>{if(Y)m.style.transform=`translate(${Math.round(C.y)}px, ${Math.round(C.x)}px)`;else m.style.transform=`translate(${Math.round(C.x)}px, ${Math.round(C.y)}px)`},z=(m,C)=>{if(Y)m.style.width=`${C.size}px`,m.style.height=`${C.crossSize}px`;else m.style.width=`${C.crossSize}px`,m.style.height=`${C.size}px`},r=(m,C,o,J2,k)=>{let O=B.acquire(),N=P(J2,k);if(O.className=Z,O.dataset.index=String(m),O.dataset.id=String(C.id),O.dataset.lane=String(o.lane),O.ariaSelected=String(J2),j)O.id=`${j}-item-${m}`;if(q){let H=q();if(H!==E)E=H,K=String(H);O.setAttribute("aria-setsize",K),O.setAttribute("aria-posinset",String(m+1))}z(O,o);let A=Q(C,m,N);return V(O,A),T(O,J2,k),R(O,o),{element:O,lastItemId:C.id,lastSelected:J2,lastFocused:k,lastY:o.y,lastX:o.x,lastSize:o.size,lastCrossSize:o.crossSize,lastSeenFrame:_}},I=(m,C,o,J2)=>{_++,b.clear();for(let O=0;O<C.length;O++)b.add(C[O].index);for(let[O,N]of D)if(b.has(O))N.lastSeenFrame=_;else if(_-N.lastSeenFrame>xJ)B.release(N.element),D.delete(O);let k=null;for(let O=0;O<C.length;O++){let N=C[O],A=N.index,H=m(A);if(!H)continue;let n=o.has(H.id),l=A===J2,d=D.get(A);if(d){let M=d.lastItemId!==H.id,X=d.lastSelected!==n,f=d.lastFocused!==l,c=d.lastY!==N.y||d.lastX!==N.x,y=d.lastSize!==N.size||d.lastCrossSize!==N.crossSize;if(M){let w=P(n,l),i=Q(H,A,w);V(d.element,i),d.element.dataset.id=String(H.id),d.lastItemId=H.id}if(M||X||f)T(d.element,n,l),d.element.ariaSelected=String(n),d.lastSelected=n,d.lastFocused=l;if(y)z(d.element,N),d.lastSize=N.size,d.lastCrossSize=N.crossSize;if(c)R(d.element,N),d.lastY=N.y,d.lastX=N.x}else{let M=r(A,H,N,n,l);if(!k)k=document.createDocumentFragment();k.appendChild(M.element),D.set(A,M)}}if(k)J.appendChild(k)},s=()=>{for(let{element:m}of D.values())B.release(m);D.clear(),J.innerHTML=""};return{render:I,getElement:(m)=>D.get(m)?.element,updateItemClasses:(m,C,o)=>{let J2=D.get(m);if(!J2)return;let k=J2.lastSelected!==C,O=J2.lastFocused!==o;if(k||O)T(J2.element,C,o),J2.lastSelected=C,J2.lastFocused=o},sortDOM:()=>{R2(J,D.keys(),(m)=>D.get(m)?.element)},clear:s,destroy:()=>{s(),B.clear()}}};var _J=(J,Q)=>{let $=new Map,Y=(j)=>{let B=$.get(j);return B!==void 0?B:J},q=F2(Y,Q);return{getOffset(j){return q.getOffset(j)},getSize(j){return Y(j)},indexAtOffset(j){return q.indexAtOffset(j)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(j){if(j<q.getTotal()){for(let B of $.keys())if(B>=j)$.delete(B)}q=F2(Y,j)},isVariable(){return!0},setMeasuredSize(j,B){$.set(j,B)},isMeasured(j){return $.has(j)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var VJ=(J,Q,$,Y,q,j)=>{if(Y===0||Q===0)return j.start=0,j.end=-1,j;let B=$.indexAtOffset(J),D=$.indexAtOffset(J+Q);if(D<Y-1)D++;return j.start=Math.max(0,B),j.end=Math.min(Y-1,Math.max(0,D)),j},WJ=(J,Q,$,Y)=>{if($===0)return Y.start=0,Y.end=-1,Y;return Y.start=Math.max(0,J.start-Q),Y.end=Math.min($-1,J.end+Q),Y},MJ=(J,Q,$,Y,q,j)=>{if(Y===0)return 0;let B=Math.max(0,Math.min(J,Y-1)),D=Q.getOffset(B),b=Q.getSize(B),_=Q.getTotalSize(),K=Math.max(0,_-$),E;switch(j){case"center":E=D-$/2+b/2;break;case"end":E=D-$+b;break;case"start":default:E=D;break}return Math.max(0,Math.min(E,K))},OJ=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},EJ=(J,Q)=>{return Q.getTotalSize()},AJ=(J,Q)=>{return Q.getOffset(J)},LJ=(J,Q,$)=>{let Y=Math.max(0,Q-$);return Math.max(0,Math.min(J,Y))};var FJ=(J,Q,$,Y,q="start",j,B=MJ)=>{return B(J,Q,$,Y,j,q)},HJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},bJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},TJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var RJ=(J,Q)=>{let $=[],Y=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)Y.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:Y}};var yJ=()=>{let J={},Q=(j,B)=>{if(!J[j])J[j]=new Set;return J[j].add(B),()=>$(j,B)},$=(j,B)=>{J[j]?.delete(B)};return{on:Q,off:$,emit:(j,B)=>{J[j]?.forEach((D)=>{try{D(B)}catch(b){console.error(`[vlist] Error in event handler for "${String(j)}":`,b)}})},clear:(j)=>{if(j)delete J[j];else for(let B in J)delete J[B]}}};var y2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:Y=200,onEvict:q}=J,j=new Map,B=0,D=0,b=(k)=>{let O=j.get(k);if(!O)O={items:Array(Q),count:0,lastAccess:Date.now()},j.set(k,O);else O.lastAccess=Date.now();return O},_=(k)=>{return Math.floor(k/Q)},K=(k)=>{return k%Q},E=()=>B,W=(k)=>{B=k},P=(k)=>{if(k<0||k>=B)return;let O=_(k),N=j.get(O);if(!N)return;return N.items[K(k)]},Z=(k)=>{if(k<0||k>=B)return!1;let O=_(k),N=j.get(O);if(!N)return!1;return N.items[K(k)]!==void 0},G=(k,O)=>{let N=_(k),A=b(N),H=K(k),n=A.items[H]===void 0;if(A.items[H]=O,n)A.count++,D++;if(k>=B)B=k+1},U=(k,O)=>{for(let N=0;N<O.length;N++){let A=O[N];if(A!==void 0)G(k+N,A)}},V=(k)=>{if(k<0||k>=B)return!1;let O=_(k),N=j.get(O),A=K(k);if(!(N!==void 0&&N.items[A]!==void 0))return!1;let n=O,l=Array.from(j.keys()).filter((M)=>M>=n).sort((M,X)=>M-X),d=[];for(let M of l){let X=j.get(M),f=M*Q;for(let c=0;c<Q;c++){if(X.items[c]===void 0)continue;let y=f+c;if(y<=k)continue;d.push({oldIndex:y,item:X.items[c]})}}if(N.items[A]=void 0,N.count--,D--,N.count===0)j.delete(O);for(let{oldIndex:M}of d){let X=_(M),f=j.get(X);if(!f)continue;let c=K(M);if(f.items[c]!==void 0){if(f.items[c]=void 0,f.count--,D--,f.count===0)j.delete(X)}}for(let{oldIndex:M,item:X}of d){let f=M-1,c=_(f),y=b(c),w=K(f);y.items[w]=X,y.count++,D++}return B--,!0},T=(k,O)=>{let N=[];for(let A=k;A<=O&&A<B;A++)N.push(P(A));return N},R=(k,O)=>{for(let N=k;N<=O&&N<B;N++)if(!Z(N))return!1;return!0},z=()=>{let k=[],O=null,N=Array.from(j.keys()).sort((A,H)=>A-H);for(let A of N){let H=j.get(A);if(!H)continue;let n=A*Q;for(let l=0;l<Q;l++){let d=n+l;if(d>=B)break;if(H.items[l]!==void 0)if(O===null)O={start:d,end:d};else if(d===O.end+1)O.end=d;else k.push(O),O={start:d,end:d};else if(O!==null)k.push(O),O=null}}if(O!==null)k.push(O);return k},r=(k,O)=>{let N=[],A=null;for(let H=k;H<=O&&H<B;H++)if(!Z(H))if(A===null)A={start:H,end:H};else A.end=H;else if(A!==null)N.push(A),A=null;if(A!==null)N.push(A);return N},I=(k)=>{return j.has(k)},s=(k)=>{let O=j.get(k);if(O)O.lastAccess=Date.now()},a=(k,O)=>{if(k>O||j.size===0)return;let N=Date.now(),A=_(Math.max(0,k)),H=_(Math.min(B-1,O));for(let n=A;n<=H;n++){let l=j.get(n);if(l)l.lastAccess=N}},$2=(k,O)=>{if(D<=$)return 0;let N=Math.max(0,k-Y),A=Math.min(B-1,O+Y),H=_(N),n=_(A),l=0,d=[];for(let[M,X]of j)if(M<H||M>n)l+=X.count,d.push(M),D-=X.count,j.delete(M);if(l>0&&q)q(l,d);return l},B2=()=>{if(D<=$)return 0;let k=Array.from(j.entries()).sort(([,A],[,H])=>A.lastAccess-H.lastAccess),O=0,N=[];for(let[A,H]of k){if(D<=$)break;O+=H.count,D-=H.count,N.push(A),j.delete(A)}if(O>0&&q)q(O,N);return O},m=()=>{return{totalItems:B,cachedItems:D,cachedChunks:j.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:B>0?1-D/B:1}},C=()=>D,o=()=>{j.clear(),D=0};return{chunkSize:Q,maxCachedItems:$,getTotal:E,setTotal:W,get:P,has:Z,set:G,setRange:U,delete:V,getRange:T,isRangeLoaded:R,getLoadedRanges:z,findUnloadedRanges:r,getChunkIndex:_,isChunkLoaded:I,touchChunk:s,touchChunksForRange:a,evictDistant:$2,evictToLimit:B2,getStats:m,getCachedCount:C,clear:o,reset:()=>{o(),B=0}}},P2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((Y,q)=>Y.start-q.start),$=[{...Q[0]}];for(let Y=1;Y<Q.length;Y++){let q=Q[Y],j=$[$.length-1];if(q.start<=j.end+1)j.end=Math.max(j.end,q.end);else $.push({...q})}return $},b2=(J,Q,$)=>{let Y=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,j={start:Y,end:q};if(Q.length===0)return[j];let B=[],D=P2(Q),b=j.start;for(let _ of D){if(_.end<b)continue;if(_.start>j.end)break;if(_.start>b)B.push({start:b,end:Math.min(_.start-1,j.end)});if(b=_.end+1,b>j.end)break}if(b<=j.end)B.push({start:b,end:j.end});return B};var k2=(J={})=>{let{maskCharacter:Q=l2,maxSampleSize:$=a2}=J,Y=[],q=!1,j=(K)=>{if(q||K.length===0)return;let E=Math.min(K.length,$);for(let W=0;W<E;W++){let P=K[W];if(!P||typeof P!=="object")continue;let Z={};for(let[G,U]of Object.entries(P)){if(G.startsWith("_")||G==="id")continue;Z[G]=String(U??"").length}if(Object.keys(Z).length>0)Y.push(Z)}q=!0},B=()=>q,D=(K)=>{let E={id:`${M2}${K}`,[C2]:!0,_index:K};if(Y.length===0)return E.label=Q.repeat(12),E;let W=Y[K%Y.length];for(let[P,Z]of Object.entries(W))E[P]=Q.repeat(Math.max(1,Z));return E};return{analyzeStructure:j,hasAnalyzedStructure:B,generate:D,generateRange:(K,E)=>{let W=[];for(let P=K;P<=E;P++)W.push(D(P));return W},clear:()=>{Y=[],q=!1}}},O2=(J)=>{if(!J||typeof J!=="object")return!1;return J[C2]===!0},h2=(J)=>{return J.filter((Q)=>!O2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:Y,storage:q,placeholder:j,pageSize:B=uJ,onStateChange:D,onItemsLoaded:b,onItemsEvicted:_}=J,K=y2({...q,onEvict:(v,p)=>{_?.(v),a()}}),E=null,W=()=>{if(!E)E=k2(j);return E},P=new Map,Z=!1,G,U=!0,V,T,R=[],z=0,r=new Map,I=new Map,s=()=>{for(let v of I.values())v.abort();I.clear(),r.clear()},a=()=>{D?.(N())},$2=()=>{P.clear();let v=K.getLoadedRanges();for(let p of v)for(let g=p.start;g<=p.end;g++){let q2=K.get(g);if(q2&&!O2(q2))P.set(q2.id,g)}},B2=(v,p)=>{if(!O2(p))P.set(p.id,v)},m=(v)=>{P.delete(v)},C=(v,p)=>{return`${v}-${p}`},o=()=>K.getTotal(),J2=()=>K.getCachedCount(),k=()=>Z,O=()=>U,N=()=>({total:K.getTotal(),cached:K.getCachedCount(),isLoading:Z,pendingRanges:R,error:G,hasMore:U,cursor:V}),A=()=>K,H=()=>W(),n=(v)=>{let p=K.get(v);if(p!==void 0)return p;if(v>=0&&v<K.getTotal())return W().generate(v);return},l=(v)=>{let p=P.get(v);if(p===void 0)return;return K.get(p)},d=(v)=>{return P.get(v)??-1},M=(v)=>{let p=K.get(v);return p!==void 0&&!O2(p)},X=(v,p)=>{let g=[],q2=K.getTotal(),Q2=0,Y2=0;K.touchChunksForRange(v,Math.min(p,q2-1));for(let U2=v;U2<=p&&U2<q2;U2++){let Z2=K.get(U2);if(Z2!==void 0)g.push(Z2),Q2++;else g.push(W().generate(U2)),Y2++}return g},f=(v)=>{K.setTotal(v),U=K.getCachedCount()<v,a()},c=(v,p=0,g)=>{if(Q&&v.length>0){let q2=W();if(!q2.hasAnalyzedStructure())q2.analyzeStructure(v)}for(let q2=0;q2<v.length;q2++){let Q2=v[q2];if(Q2!==void 0){let Y2=p+q2;K.set(Y2,Q2),B2(Y2,Q2)}}if(g!==void 0)K.setTotal(g);else if(p+v.length>K.getTotal())K.setTotal(p+v.length);if(K.getCachedCount()>=K.getTotal()&&K.getTotal()>0)U=!1;a(),b?.(v,p,K.getTotal())},y=(v,p)=>{let g=K.get(v);if(!g)return!1;let q2=g.id,Q2={...g,...p};if(K.set(v,Q2),p.id!==void 0&&p.id!==q2)m(q2);return B2(v,Q2),a(),!0},w=(v)=>{let p=P.get(v);if(p===void 0)return!1;if(!K.delete(p))return!1;return $2(),s(),a(),!0},i=async(v,p)=>{if(!Q)return;let g=C(v,p);if(r.has(g))return;let q2=K.getLoadedRanges(),Q2=b2({start:v,end:p},q2,K.chunkSize);if(Q2.length===0)return;let Y2=K.chunkSize,U2=Y2*2;for(let[j2,G2]of I){let D2=j2.indexOf("-"),N2=parseInt(j2.slice(0,D2),10);if(Math.abs(N2-v)>U2)G2.abort(),I.delete(j2),r.delete(j2)}let Z2=[];for(let j2 of Q2){let G2=Math.floor(j2.start/Y2),D2=Math.floor(j2.end/Y2);for(let N2=G2;N2<=D2;N2++){let K2=N2*Y2,_2=K2+Y2-1,X2=C(K2,_2);if(!Z2.some((V2)=>V2.start===K2)&&!r.has(X2))Z2.push({start:K2,end:_2})}}let t=[];for(let j2 of Q2){let G2=Math.floor(j2.start/Y2),D2=Math.floor(j2.end/Y2);for(let N2=G2;N2<=D2;N2++){let K2=N2*Y2,_2=K2+Y2-1,X2=C(K2,_2);if(r.has(X2)){let V2=r.get(X2);if(!t.includes(V2))t.push(V2)}}}for(let j2 of Z2){let G2=C(j2.start,j2.end),D2=new AbortController;I.set(G2,D2);let N2=(async()=>{R.push(j2),Z=!0,G=void 0,a();try{let K2=j2.end-j2.start+1,_2={offset:j2.start,limit:K2,cursor:j2.start===T?V:void 0,signal:D2.signal},X2=await Q.read(_2);if(c(X2.items,j2.start,X2.total),X2.cursor)V=X2.cursor,T=j2.start+X2.items.length;let V2=j2.start+X2.items.length;if(V2>=z){if(z=V2,X2.hasMore!==void 0)U=X2.hasMore;else if(X2.total!==void 0)U=V2<X2.total}}catch(K2){if(K2?.name==="AbortError")return;G=K2 instanceof Error?K2:Error(String(K2))}finally{r.delete(G2),I.delete(G2),R=R.filter((K2)=>K2.start!==j2.start||K2.end!==j2.end),Z=r.size>0,a()}})();r.set(G2,N2),t.push(N2)}await Promise.all(t)},L=async(v,p)=>{if(K.isRangeLoaded(v,p))return;await i(v,p)},F=async()=>{if(!Q)return;await i(0,B-1)},S=async()=>{if(!Q||Z||!U)return!1;let v=K.getCachedCount(),p=K.getTotal(),g=v,q2=Math.min(g+B-1,p>0?p-1:g+B-1);if(g>=p&&p>0)return U=!1,!1;return await i(g,q2),K.getCachedCount()>v},u=async()=>{if(K.clear(),K.setTotal(0),P.clear(),E)E.clear();s(),R=[],Z=!1,V=void 0,T=void 0,U=!0,z=0,G=void 0,a()},x=(v,p)=>{if(K.evictDistant(v,p)>0)$2()},h=()=>{K.clear(),P.clear(),V=void 0,T=void 0,G=void 0,R=[],Z=!1,a()},e=()=>{if(K.reset(),P.clear(),E)E.clear();V=void 0,T=void 0,U=!0,z=0,G=void 0,R=[],Z=!1,a()};if($&&$.length>0)c($,0,Y??$.length);else if(Y!==void 0)K.setTotal(Y),a();return{getState:N,getTotal:o,getCached:J2,getIsLoading:k,getHasMore:O,getStorage:A,getPlaceholders:H,getItem:n,getItemById:l,getIndexById:d,isItemLoaded:M,getItemsInRange:X,setTotal:f,setItems:c,updateItem:y,removeItem:w,loadRange:i,ensureRange:L,loadInitial:F,loadMore:S,reload:u,evictDistant:x,clear:h,reset:e}};var kJ=(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}},z2=(J,Q)=>{let $=performance.now(),Y=$-J.lastTime;if(Y===0)return J;if(Y>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let j=J.samples[0];return j.position=Q,j.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 j=(J.sampleIndex-J.sampleCount+8)%8,B=J.samples[j],D=Q-B.position,b=$-B.time;J.velocity=b>0?D/b:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,zJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:Y=1,smoothing:q=!1,idleTimeout:j=150,onScroll:B,onIdle:D,scrollElement:b,horizontal:_=!1}=Q,K=!!b,E=0,W=0,P=K?_?window.innerWidth:window.innerHeight:_?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,G=Q.compression,U=kJ(),V=!1,T=null,z=w2(()=>{let y=_?J.scrollLeft:J.scrollTop,w=y>=E?"down":"up";if(U=z2(U,y),E=y,B)B({scrollTop:E,direction:w,velocity:U.velocity});B2()}),I=w2(()=>{let y=J.getBoundingClientRect(),w=_?Math.max(0,-y.left):Math.max(0,-y.top),i=w>=E?"down":"up";if(U=z2(U,w),E=w,!V)V=!0;if(B)B({scrollTop:E,direction:i,velocity:U.velocity});B2()}),s=(y)=>{y.preventDefault()},a=(y)=>{if(y.deltaX)return;y.preventDefault(),J.scrollLeft+=y.deltaY},$2=(y)=>{if(!Z)return;y.preventDefault();let w=(_?y.deltaX||y.deltaY:y.deltaY)*Y,i=E+w;if(q)i=E+w*0.3;if(i=Math.max(0,Math.min(i,W)),i!==E){let F=i>=E?"down":"up";if(U=z2(U,i),E=i,!V)V=!0;if(B)B({scrollTop:E,direction:F,velocity:U.velocity});B2()}},B2=()=>{if(T)clearTimeout(T);T=setTimeout(()=>{if(V=!1,U=kJ(E),D)D()},j)},m=(y)=>{if(Z)return;if(Z=!0,G=y,W=y.virtualSize-P,K)return;if(z.cancel(),J.removeEventListener("scroll",z),!$)J.removeEventListener("wheel",s);else if(_)J.removeEventListener("wheel",a);if(_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1});let w=_?J.scrollLeft:J.scrollTop;if(w>0){let i=_?G?.actualSize??J.scrollWidth:G?.actualSize??J.scrollHeight;E=w/i*W}if(_)J.scrollLeft=0;else J.scrollTop=0},C=()=>{if(!Z)return;if(Z=!1,K){G=void 0;return}if(J.removeEventListener("wheel",$2),_)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",s,{passive:!1});else if(_)J.addEventListener("wheel",a,{passive:!1});if(G&&E>0){let w=E/W*(G.actualSize-P);if(_)J.scrollLeft=w;else J.scrollTop=w}G=void 0},o=()=>{if(K||Z)return E;return _?J.scrollLeft:J.scrollTop},J2=(y,w=!1)=>{let i=Math.max(0,Math.min(y,W||1/0));if(K){let L=J.getBoundingClientRect();if(_){let F=L.left+window.scrollX;window.scrollTo({left:F+i,behavior:w?"smooth":"auto"})}else{let F=L.top+window.scrollY;window.scrollTo({top:F+i,behavior:w?"smooth":"auto"})}}else if(Z){if(i===E)return;let F=i>=E?"down":"up";if(U=z2(U,i),E=i,!V)V=!0;if(B)B({scrollTop:E,direction:F,velocity:U.velocity});B2()}else if(_)J.scrollTo({left:i,behavior:w?"smooth":"auto"});else J.scrollTo({top:i,behavior:w?"smooth":"auto"})},k=(y)=>{J2(o()+y)},O=()=>{return o()<=0},N=(y=0)=>{let w=o(),i=K||Z?W:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return w>=i-y},A=()=>{let y=o(),w=K||Z?W:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(w<=0)return 0;return Math.min(1,Math.max(0,y/w))},H=(y)=>{if(y.compression)G=y.compression,W=G.virtualSize-P},n=()=>Z,l=()=>Math.abs(U.velocity),d=()=>mJ(U),M=()=>V,X=()=>K,f=(y)=>{if(P=y,G)W=G.virtualSize-P},c=()=>{if(T)clearTimeout(T);if(K)I.cancel(),window.removeEventListener("scroll",I);else z.cancel(),J.removeEventListener("scroll",z),J.removeEventListener("wheel",$2),J.removeEventListener("wheel",s),J.removeEventListener("wheel",a)};if(K){if(Z&&G)W=G.virtualSize-P;window.addEventListener("scroll",I,{passive:!0})}else if(Z&&G){if(W=G.virtualSize-P,_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1})}else{if(_)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",s,{passive:!1});else if(_)J.addEventListener("wheel",a,{passive:!1})}return{getScrollTop:o,scrollTo:J2,scrollBy:k,isAtTop:O,isAtBottom:N,getScrollPercentage:A,getVelocity:l,isTracking:d,isScrolling:M,updateConfig:H,enableCompression:m,disableCompression:C,isCompressed:n,isWindowMode:X,updateContainerHeight:f,destroy:c}},w2=(J)=>{let Q=null,$=null,Y=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return Y.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},Y};var wJ=(J,Q,$={},Y="vlist",q=!1)=>{let{autoHide:j=!0,autoHideDelay:B=1000,minThumbSize:D=30,showOnHover:b=!0,hoverZoneWidth:_=16,showOnViewportEnter:K=!0}=$,E=0,W=0,P=0,Z=0,G=!1,U=!1,V=0,T=0,R=0,z=null,r=!1,I=null,s=null,a=q?"width":"height",$2=q?"translateX":"translateY",B2=q?(F)=>F.clientX:(F)=>F.clientY,m=q?"left":"top",C=document.createElement("div"),o=document.createElement("div"),J2=b?document.createElement("div"):null,k=()=>{if(C.className=`${Y}-scrollbar`,o.className=`${Y}-scrollbar-thumb`,q)C.classList.add(`${Y}-scrollbar--horizontal`);if(C.appendChild(o),J.appendChild(C),J2){if(J2.className=`${Y}-scrollbar-hover`,q)J2.classList.add(`${Y}-scrollbar-hover--horizontal`),J2.style.height=`${_}px`;else J2.style.width=`${_}px`;J.appendChild(J2)}},O=()=>{if(z)clearTimeout(z),z=null},N=()=>{if(!j)return;O(),z=setTimeout(H,B)},A=()=>{if(E<=W)return;if(O(),!r)C.classList.add(`${Y}-scrollbar--visible`),r=!0;if(j&&!G&&!U)N()},H=()=>{if(G||U)return;C.classList.remove(`${Y}-scrollbar--visible`),r=!1},n=(F,S)=>{E=F,W=S;let u=E>W;if(C.style.display=u?"":"none",!u){H();return}let x=W/E;P=Math.max(D,x*W),o.style[a]=`${P}px`,Z=W-P,l(R)},l=(F)=>{if(R=F,E<=W||Z<=0)return;let S=E-W,x=Math.min(1,Math.max(0,F/S))*Z;o.style.transform=`${$2}(${x}px)`},d=(F)=>{if(F.target===o)return;let S=C.getBoundingClientRect(),h=B2(F)-S[m]-P/2,v=Math.max(0,Math.min(h,Z))/Z,p=E-W,g=v*p;Q(g),A()},M=(F)=>{F.preventDefault(),F.stopPropagation(),G=!0,V=B2(F),T=R,O(),C.classList.add(`${Y}-scrollbar--dragging`),document.addEventListener("mousemove",X),document.addEventListener("mouseup",f)},X=(F)=>{if(!G)return;let S=B2(F)-V,u=Z>0?S/Z:0,x=E-W,h=u*x,e=Math.max(0,Math.min(T+h,x)),p=e/x*Z;if(o.style.transform=`${$2}(${p}px)`,s=e,I===null)I=requestAnimationFrame(()=>{if(s!==null)Q(s);I=null})},f=()=>{if(G=!1,I!==null)cancelAnimationFrame(I),I=null;if(s!==null)Q(s),s=null;if(C.classList.remove(`${Y}-scrollbar--dragging`),j&&!U)N();document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",f)},c=()=>{if(K)A()},y=()=>{if(!G){if(U=!1,j)N()}},w=()=>{U=!0,O(),A()},i=()=>{if(U=!1,!G&&j)N()},L=()=>{if(O(),I!==null)cancelAnimationFrame(I),I=null;if(C.removeEventListener("click",d),C.removeEventListener("mouseenter",w),C.removeEventListener("mouseleave",i),o.removeEventListener("mousedown",M),J.removeEventListener("mouseenter",c),J.removeEventListener("mouseleave",y),document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",f),J2){if(J2.removeEventListener("mouseenter",w),J2.removeEventListener("mouseleave",i),J2.parentNode)J2.parentNode.removeChild(J2)}if(C.parentNode)C.parentNode.removeChild(C)};if(k(),C.addEventListener("click",d),C.addEventListener("mouseenter",w),C.addEventListener("mouseleave",i),o.addEventListener("mousedown",M),J.addEventListener("mouseenter",c),J.addEventListener("mouseleave",y),J2)J2.addEventListener("mouseenter",w),J2.addEventListener("mouseleave",i);return{show:A,hide:H,updateBounds:n,updatePosition:l,isVisible:()=>r,destroy:L}};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,Y=0;function q(){return Y>0?$/Y:0}function j(b){if(Q=b,b>cJ&&b<dJ)$+=b,Y++}function B(){let b=J.getTotal();if(b===0)return 0;let _=J.getItemSize();if(_<=0)return 0;let K=J.getContainerSize();if(K<=0)return 0;let E=J.getScrollPosition(),W=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(b/W)*_,U=Math.min(Z,W2)-K,V=Z-K,T=U>0?V/U:1,R=E*T,z=Math.ceil((R+K)/_);return Math.min(z*W,b)}function D(){let b=J.getTotal(),_=B();return{progress:b>0?Math.min(100,Math.max(0,_/b*100)):0,velocity:Q,velocityAvg:q(),itemCount:_,total:b}}return{getState:D,onVelocity:j}}export{n2 as toggleSelection,VJ as simpleVisibleRange,S2 as selectItems,o2 as selectAll,HJ as rangesEqual,w2 as rafThrottle,qJ as needsScaling,P2 as mergeRanges,t2 as isSelected,O2 as isPlaceholderItem,bJ as isInRange,T2 as isGroupHeader,JJ as getSelectedItems,e2 as getSelectedIds,H2 as getScaleState,UJ as getScaleInfo,H2 as getScale,TJ as getRangeCount,BJ as getMaxItemsWithoutScaling,h2 as filterPlaceholders,RJ as diffRanges,f2 as deselectItems,ZJ as createTableRenderer,XJ as createTableLayout,NJ as createTableHeader,c2 as createStickyHeader,rJ as createStats,y2 as createSparseStorage,F2 as createSizeCache,s2 as createSelectionState,wJ as createScrollbar,zJ as createScrollController,k2 as createPlaceholderManager,_J as createMeasuredSizeCache,DJ as createMasonryRenderer,GJ as createMasonryLayout,m2 as createGroupedSizeFn,d2 as createGroupLayout,KJ as createGridRenderer,r2 as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,i2 as clearSelection,LJ as clampScrollPosition,OJ as calculateTotalSize,FJ as calculateScrollToIndex,QJ as calculateScaledVisibleRange,YJ as calculateScaledScrollToIndex,$J as calculateScaledRenderRange,A2 as calculateScaledItemPosition,WJ as calculateRenderRange,b2 as calculateMissingRanges,AJ as calculateItemOffset,jJ as calculateIndexFromScrollPosition,EJ as calculateActualSize,u2 as buildLayoutItems,W2 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var T2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var v2=(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 $},x2=(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 $},g2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let B=1;B<J;B++){let G=Q(B);if(G!==j){let b=B-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:b}),Y=Y+1+b,j=G,q=B}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},u2=(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 B=0;B<Y.count;B++)j[q]=J[Y.firstDataIndex+B],q++}return j},m2=(J,Q,$=!1)=>{let j=typeof Q==="number"?(q)=>Q:Q;return(q)=>{let Y=J.getEntry(q);if(Y.type==="header"){if($&&Y.group.groupIndex===0)return 0;return J.getHeaderHeight(Y.group.groupIndex)}return j(Y.dataIndex)}},d2=(J,Q)=>{let $=g2(J,Q.getGroupForIndex),j=J+$.length,q=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(L)=>{if($.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let v=v2($,L),V=$[v];if(L===V.headerLayoutIndex)return{type:"header",group:V};let D=L-V.headerLayoutIndex-1;return{type:"item",dataIndex:V.firstDataIndex+D,group:V}},layoutToDataIndex:(L)=>{if($.length===0)return L;let v=v2($,L),V=$[v];if(L===V.headerLayoutIndex)return-1;let D=L-V.headerLayoutIndex-1;return V.firstDataIndex+D},dataToLayoutIndex:(L)=>{if($.length===0)return L;let v=x2($,L),V=$[v],D=L-V.firstDataIndex;return V.headerLayoutIndex+1+D},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let v=v2($,L);return $[v]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let v=x2($,L);return $[v]},getHeaderHeight:typeof q==="number"?(L)=>q:(L)=>{let v=$[L];if(!v)return 0;return q(v.key,L)},rebuild:(L)=>{$=g2(L,Q.getGroupForIndex),j=L+$.length}}};var c2=(J,Q,$,j,q,Y=!1,B=0)=>{let G=Y?"width":"height",b=Y?"height":"width",M=Y?"X":"Y",N=(U,S)=>{U.style[G]=`${S}px`},E=document.createElement("div");E.className=`${q}-sticky-header`,E.setAttribute("role","presentation"),E.setAttribute("aria-hidden","true"),E.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(Y?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`);let L=()=>{let U=document.createElement("div");return U.className="sticky-group",U.style.position="absolute",U.style.willChange="transform",U.style[b]="100%",U},v=L(),V=L();E.append(v,V),J.insertBefore(E,J.firstChild);let D=v,K=V,Z=Q.groups,F=[],H=[],P=0,c=()=>{Z=Q.groups,P=Z.length,F=Array(P),H=Array(P);for(let U=0;U<P;U++)F[U]=$.getOffset(Z[U].headerLayoutIndex),H[U]=Q.getHeaderHeight(U)};c();let g=-1,n=0,l=-1,$2=!1,U2=0,I=!1,d=(U,S)=>{j(U,S);let u=H[S];return N(U,u),u},Y2=(U)=>{U.replaceChildren(),U.style.transform=""},J2=(U)=>{if(U===g)return;if(g=U,n=0,U<0||U>=P){Y2(D);return}n=d(D,U),N(E,n),D.style.transform=""},R=(U)=>{if(U===U2)return;U2=U;let S=Math.round(U);D.style.transform=`translate${M}(${S}px)`,K.style.transform=`translate${M}(${S+n}px)`},X=()=>{U2=0,D.style.transform="",K.style.transform=""},_=()=>{if(!I)return;let U=D;D=K,K=U,g=l,n=g>=0?H[g]:0,N(E,n),Y2(K),l=-1,I=!1,X()},O=()=>{if(!I)return;Y2(K),l=-1,I=!1,X()},C=()=>{if($2)return;$2=!0,E.style.display=""},a=()=>{if(!$2)return;$2=!1,E.style.display="none",Y2(D),g=-1,n=0,O()},i=(U)=>{if(P===0){a();return}if(U<F[0]){a();return}let S=0,u=P-1;while(S<u){let z=S+u+1>>>1;if(F[z]+H[z]<=U)S=z;else u=z-1}if(!$2)C();J2(S);let T=S+1;if(T<P){let z=F[T]-U;if(z<=0&&z>-n){if(l!==T||!I)l=T,d(K,T),I=!0;R(z)}else if(z<=-n){if(I)_()}else if(I)O()}else if(I)O()},y=()=>{c();let U=g;if(g=-1,n=0,U>=0)J2(U)},W=()=>{E.remove(),g=-1,n=0,l=-1,$2=!1,I=!1};return E.style.display="none",{update:i,refresh:y,show:C,hide:a,destroy:W}};var r2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(V)=>{if(V<=0)return 0;if(!j)return Math.ceil(V/Q);let D=0,K=0,Z=0;for(let F=0;F<V;F++)if(j(F)){if(Z++,K>0)D++,K=0;D++,K=0}else if(K++,K>=Q)D++,K=0;if(K>0)D++;return D},B=(V)=>{return q.row=G(V),q.col=b(V),q},G=(V)=>{if(!j)return Math.floor(V/Q);let D=0,K=0;for(let Z=0;Z<=V;Z++)if(j(Z)){if(K>0)D++,K=0;if(Z===V)return D;D++,K=0}else{if(Z===V)return D;if(K++,K>=Q)D++,K=0}return console.warn(`⚠️ getRow(${V}) fell through - returning ${D}`),D},b=(V)=>{if(!j)return V%Q;if(j(V))return 0;let D=0;for(let K=0;K<=V;K++)if(j(K))D=0;else{if(K===V)return D;if(D++,D>=Q)D=0}return D},M=(V,D,K)=>{if(K<=0)return{start:0,end:-1};if(!j){let c=Math.max(0,V*Q),g=Math.min(K-1,(D+1)*Q-1);return{start:c,end:g}}let Z=-1,F=-1,H=0,P=0;for(let c=0;c<K;c++){if(j(c)){if(P>0)H++,P=0;if(H>=V&&H<=D){if(Z===-1)Z=c;F=c}H++,P=0}else{if(H>=V&&H<=D){if(Z===-1)Z=c;F=c}if(P++,P>=Q)H++,P=0}if(H>D&&P===0)break}if(Z===-1)return{start:0,end:-1};return{start:Z,end:F}},N=(V,D,K)=>{if(D<0||D>=Q)return-1;let Z=V*Q+D;if(Z<0||Z>=K)return-1;return Z},E=(V)=>{let D=(Q-1)*$;return Math.max(0,(V-D)/Q)};return{get columns(){return Q},get gap(){return $},update:(V)=>{if(V.columns!==void 0)Q=Math.max(1,Math.floor(V.columns));if(V.gap!==void 0)$=V.gap;if(V.isHeaderFn!==void 0)j=V.isHeaderFn},getTotalRows:Y,getPosition:B,getRow:G,getCol:b,getItemRange:M,getItemIndex:N,getColumnWidth:E,getColumnOffset:(V,D)=>{let K=E(D);return V*(K+$)}}};var W2=16000000;var l2="x",a2=20,C2="_isPlaceholder",M2="__placeholder_";var A2=(J,Q,$)=>{if(String($).startsWith(M2))return!1;let j=M2+Q;if(J.has(j))return J.delete(j),J.add($),!0;return!1},s2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),S2=(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}},f2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},n2=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return f2(J,[Q]);else return S2(J,[Q],$)},o2=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},i2=(J)=>({...J,selected:new Set});var t2=(J,Q)=>{return J.selected.has(Q)},e2=(J)=>{return Array.from(J.selected)},JJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};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=(B)=>{$=B,j=new Float64Array(B+1),j[0]=0;for(let G=0;G<B;G++)j[G+1]=j[G]+J(G)};q(Q);let Y=(B)=>{if($===0)return 0;if(B<=0)return 0;if(B>=j[$])return $-1;let G=0,b=$-1;while(G<b){let M=G+b+1>>>1;if(j[M]<=B)G=M;else b=M-1}return G};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=$)return j[$];return j[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Y(B),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(B)=>q(B),isVariable:()=>!0}},L2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},I2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,B=Q;while(B<j&&Y<$)Y+=J.getSize(B),q++,B++;return Math.max(1,q)};var H2=(J,Q,$)=>{let j=Q.getTotalSize(),q=$===!0||j>W2,Y=j>W2?W2:j,B=j>0?Y/j:1;return{isCompressed:q,actualSize:j,virtualSize:Y,ratio:B}},QJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed||q.ratio===1){let L=$.indexAtOffset(J),v=$.indexAtOffset(J+Q);if(v<j-1)v++;return Y.start=Math.max(0,L),Y.end=Math.min(j-1,Math.max(0,v)),Y}let{virtualSize:B}=q,b=J/B*j,M=Math.floor(b),N=I2($,Math.max(0,M),Q,j),E=Math.ceil(b)+N;return Y.start=Math.max(0,M),Y.end=Math.min(j-1,Math.max(0,E)),Y},$J=(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},F2=(J,Q,$,j,q,Y,B)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);if(Y.ratio===1)return $.getOffset(J)-Q;let{virtualSize:G}=Y,b=Q/G,M=$.getTotalSize(),N=b*M;return $.getOffset(J)-N},YJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let B;if(q.isCompressed&&q.ratio!==1){B=J/j*q.virtualSize;let N=Q.getSize(J);switch(Y){case"center":B-=($-N)/2*q.ratio;break;case"end":B-=($-N)*q.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let G=Q.getSize(J);switch(Y){case"center":B-=($-G)/2;break;case"end":B-=$-G;break}let b=q.virtualSize-$;return Math.max(0,Math.min(B,b))},jJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed&&j.ratio!==1){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},qJ=(J,Q)=>{if(typeof Q==="number")return J*Q>W2;return Q.getTotalSize()>W2},BJ=(J)=>{if(J<=0)return 0;return Math.floor(W2/J)},KJ=(J,Q,$)=>{let j=H2(J,Q,$);if(!j.isCompressed)return`No compression needed (${J} items, ${(j.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(j.ratio*100).toFixed(1)}% (${J} items, ${(j.actualSize/1e6).toFixed(1)}M px → ${(j.virtualSize/1e6).toFixed(1)}M px virtual)`};var R2=(J,Q,$)=>{let j=Array.from(Q).sort((B,G)=>B-G);if(j.length<=1)return;let q=[];for(let B=0;B<j.length;B++){let G=$(j[B]);if(G)q.push(G)}if(q.length<=1)return;let Y=J.firstChild;for(let B=0;B<q.length;B++){let G=q[B];if(G===Y)Y=Y.nextSibling;else J.insertBefore(G,Y)}};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},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,XJ=(J,Q,$,j,q,Y,B,G,b=!1)=>{let M=SJ(),N=new Map,E=Y,L=!1,v=0,V="",D=-1,K={selected:!1,focused:!1},Z=(W,U)=>{return K.selected=W,K.focused=U,K},F=`${q}-item ${q}-grid-item`,H=`${q}-item--selected`,P=`${q}-item--focused`,c=`${q}-item--placeholder`,g=`${q}-item--replaced`,n=(W,U)=>{if(typeof U==="string")W.innerHTML=U;else W.replaceChildren(U)},l=(W,U,S)=>{W.classList.toggle(H,U),W.classList.toggle(P,S)},$2=(W,U)=>{let S=j.getRow(W);if(U?.compression?.isCompressed)return F2(S,U.scrollPosition,$,U.totalItems,U.containerSize,U.compression,U.rangeStart);return $.getOffset(S)},U2=(W,U)=>{let S=L&&j.getCol(W)===0,u=S?0:j.getCol(W),T=S?0:j.getColumnOffset(u,E),z;if(L){let t=j.getRow(W),A=0,k=new Set;for(let f=0;f<W;f++){let m=j.getRow(f);if(m<t&&!k.has(m)){let r=$.getSize(f);A+=r,k.add(m)}}z=A}else z=$2(W,U);if(b)return`translate(${Math.round(z)}px, ${Math.round(T)}px)`;return`translate(${Math.round(T)}px, ${Math.round(z)}px)`},I=(W,U)=>{W.style.transform=U},d=(W,U)=>{let S=W.dataset.id?.startsWith("__group_header"),u=S?E:j.getColumnWidth(E),T;if(L||S)T=$.getSize(U)-j.gap;else{let z=j.getRow(U);T=$.getSize(z)-j.gap}if(b)W.style.width=`${T}px`,W.style.height=`${u}px`;else W.style.width=`${u}px`,W.style.height=`${T}px`},Y2=(W,U,S,u,T)=>{let z=M.acquire(),t=Z(S,u);if(z.className=F,z.dataset.index=String(W),z.dataset.id=String(U.id),z.dataset.row=String(j.getRow(W)),z.dataset.col=String(j.getCol(W)),z.ariaSelected=String(S),G)z.id=`${G}-item-${W}`;if(B){let f=B();if(f!==D)D=f,V=String(f);z.setAttribute("aria-setsize",V),z.setAttribute("aria-posinset",String(W+1))}d(z,W);let A=Q(U,W,t);if(n(z,A),String(U.id).startsWith(M2))z.classList.add(c);return l(z,S,u),I(z,T),{element:z,lastItemId:U.id,lastSelected:S,lastFocused:u,lastTransform:T,lastSeenFrame:v}},J2=(W,U,S,u,T)=>{if(v++,U.start===0&&W.length>0)L=T2(W[0]);for(let[A,k]of N)if(A>=U.start&&A<=U.end)k.lastSeenFrame=v;else if(v-k.lastSeenFrame>fJ)M.release(k.element),N.delete(A);let z=!1;if(B){let A=B();if(A!==D)D=A,V=String(A),z=!0}let t=null;for(let A=U.start;A<=U.end;A++){let k=A-U.start,f=W[k];if(!f){console.warn(`⚠️ RENDER: Missing item at index ${A} (range: ${U.start}-${U.end}, items.length: ${W.length})`);continue}let m=S.has(f.id),r=A===u,h=N.get(A);if(h){let e=h.lastItemId!==f.id,w=h.lastSelected!==m,p=h.lastFocused!==r;if(e){let B2=String(h.lastItemId),Q2=String(f.id),q2=B2.startsWith(M2),Z2=Q2.startsWith(M2);if(!Z2&&A2(S,A,f.id))m=!0;let _2=Z(m,r),s=Q(f,A,_2);if(n(h.element,s),h.element.dataset.id=Q2,h.element.dataset.row=String(j.getRow(A)),h.element.dataset.col=String(j.getCol(A)),d(h.element,A),h.element.classList.toggle(c,Z2),q2&&!Z2)h.element.classList.add(g),setTimeout(()=>h.element.classList.remove(g),300);h.lastItemId=f.id}if(e||w||p)l(h.element,m,r),h.element.ariaSelected=String(m),h.lastSelected=m,h.lastFocused=r;let x=U2(A,T);if(h.lastTransform!==x)I(h.element,x),h.lastTransform=x;if(z)h.element.setAttribute("aria-setsize",V)}else{if(A2(S,A,f.id))m=!0;let e=U2(A,T),w=Y2(A,f,m,r,e);if(!t)t=document.createDocumentFragment();t.appendChild(w.element),N.set(A,w)}}if(t)J.appendChild(t)},R=(W)=>{for(let[U,S]of N){let u=U2(U,W);if(S.lastTransform!==u)I(S.element,u),S.lastTransform=u}},X=(W,U,S,u)=>{let T=N.get(W);if(!T)return;let z=Z(S,u),t=Q(U,W,z);n(T.element,t),l(T.element,S,u),T.element.dataset.id=String(U.id),T.element.ariaSelected=String(S),d(T.element,W),T.lastItemId=U.id,T.lastSelected=S,T.lastFocused=u},_=(W,U,S)=>{let u=N.get(W);if(!u)return;let T=u.lastSelected!==U,z=u.lastFocused!==S;if(T||z)l(u.element,U,S),u.lastSelected=U,u.lastFocused=S},O=(W)=>{return N.get(W)?.element},C=(W)=>{if(Math.abs(W-E)<1)return;E=W;for(let[U,S]of N){d(S.element,U);let u=U2(U);I(S.element,u),S.lastTransform=u}},a=()=>{R2(J,N.keys(),(W)=>N.get(W)?.element)},i=()=>{for(let[,W]of N)M.release(W.element);N.clear()};return{render:J2,updatePositions:R,updateItem:X,updateItemClasses:_,getElement:O,sortDOM:a,updateContainerWidth:C,clear:i,destroy:()=>{i(),M.clear()}}};var NJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],B=0,G=()=>{Y=q.map((K,Z)=>({def:K,index:Z,width:0,minWidth:IJ(K.minWidth??Q,1),maxWidth:K.maxWidth??$,resizable:K.resizable??j,offset:0}))},b=(K)=>{if(Y.length===0){B=0;return}let Z=0,F=0;for(let H=0;H<Y.length;H++){let P=Y[H],c=P.def;if(c.width!==void 0)P.width=p2(c.width,P.minWidth,P.maxWidth),Z+=P.width;else F++}if(F>0){let P=Math.max(0,K-Z)/F;for(let c=0;c<Y.length;c++){let g=Y[c];if(g.def.width===void 0)g.width=p2(P,g.minWidth,g.maxWidth)}}M()},M=()=>{let K=0;for(let Z=0;Z<Y.length;Z++){let F=Y[Z];F.offset=K,K+=F.width}B=K},N=(K,Z)=>{if(K<0||K>=Y.length)return 0;let F=Y[K];if(!F.resizable)return F.width;let H=p2(Z,F.minWidth,F.maxWidth);return F.width=H,M(),H},E=(K)=>{return Y[K]},L=(K)=>{if(Y.length===0)return;if(K<0)return Y[0];if(K>=B)return Y[Y.length-1];let Z=0,F=Y.length-1;while(Z<F){let H=Z+F>>>1,P=Y[H];if(K<P.offset)F=H-1;else if(K>=P.offset+P.width)Z=H+1;else return P}return Y[Z]},v=(K)=>{if(K<0||K>=Y.length)return 0;return Y[K].offset},V=(K)=>{if(K<0||K>=Y.length)return 0;return Y[K].width},D=(K)=>{q=K,G()};return G(),{get columns(){return Y},get totalWidth(){return B},resolve:b,updateColumns:D,resizeColumn:N,getColumn:E,getColumnAtX:L,getColumnOffset:v,getColumnWidth:V}},p2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var UJ=(J,Q,$,j,q,Y)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let G=document.createElement("div");G.className=`${$}-table-header`,G.setAttribute("role","row"),G.setAttribute("aria-rowindex","1"),G.style.height=`${Q}px`;let b=document.createElement("div");b.className=`${$}-table-header-scroll`,b.setAttribute("role","presentation"),G.appendChild(b),B.appendChild(G),J.insertBefore(B,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let M=[],N=[],E=[],L=!0,v=null,V="asc",D=null,K=!1,Z=-1,F=0,H=0,P=(X,_)=>{let O=document.createElement("div");O.className=`${$}-table-header-cell`,O.setAttribute("role","columnheader"),O.setAttribute("aria-colindex",String(_+1)),O.dataset.columnKey=X.def.key;let C=X.def.align;if(C==="center")O.classList.add(`${$}-table-header-cell--center`);else if(C==="right")O.classList.add(`${$}-table-header-cell--right`);let a=document.createElement("div");a.className=`${$}-table-header-content`;let i=X.def.header?X.def.header(X.def):X.def.label;if(typeof i==="string")a.textContent=i;else a.appendChild(i);if(O.appendChild(a),X.def.sortable){let y=document.createElement("span");y.className=`${$}-table-header-sort`,y.setAttribute("aria-hidden","true"),O.appendChild(y),E.push(y),O.classList.add(`${$}-table-header-cell--sortable`)}else E.push(null);if(X.resizable){let y=document.createElement("div");y.className=`${$}-table-header-resize`,y.dataset.resizeIndex=String(_),O.appendChild(y),N.push(y)}return O},c=(X)=>{D=X,b.textContent="",M=[],N=[],E=[];let _=X.columns;for(let O=0;O<_.length;O++){let C=_[O],a=P(C,O);M.push(a),b.appendChild(a)}if(g(X),v)n(v,V)},g=(X)=>{D=X;let _=X.columns;b.style.width=`${X.totalWidth}px`;for(let O=0;O<M.length&&O<_.length;O++){let C=M[O],a=_[O];C.style.width=`${a.width}px`}},n=(X,_)=>{if(v=X,V=_,!D)return;let O=D.columns;for(let C=0;C<E.length&&C<O.length;C++){let a=E[C];if(!a)continue;if(O[C].def.key===X&&X!==null)a.textContent=_==="asc"?"▲":"▼",a.style.opacity="0.7",M[C].setAttribute("aria-sort",_==="asc"?"ascending":"descending");else a.textContent="",a.style.opacity="0",M[C].removeAttribute("aria-sort")}},l=(X)=>{b.style.transform=`translateX(${-X}px)`},$2=(X)=>{let _=X.target;if(!_.dataset.resizeIndex)return;if(X.preventDefault(),X.stopPropagation(),Z=parseInt(_.dataset.resizeIndex,10),!D)return;let O=D.getColumn(Z);if(!O||!O.resizable)return;K=!0,F=X.clientX,H=O.width,J.classList.add(`${$}--col-resizing`),J.style.cursor="col-resize",_.classList.add(`${$}-table-header-resize--active`),_.setPointerCapture(X.pointerId),_.addEventListener("pointermove",U2),_.addEventListener("pointerup",I),_.addEventListener("pointercancel",I)},U2=(X)=>{if(!K||!D)return;let _=X.clientX-F;if(Math.abs(_)<1)return;let O=Math.max(0,H+_);j(Z,O)},I=(X)=>{if(!K)return;let _=X.target;_.removeEventListener("pointermove",U2),_.removeEventListener("pointerup",I),_.removeEventListener("pointercancel",I);try{_.releasePointerCapture(X.pointerId)}catch{}_.classList.remove(`${$}-table-header-resize--active`),J.classList.remove(`${$}--col-resizing`),J.style.cursor="",K=!1,Z=-1},d=(X)=>{let _=X.target;if(_.dataset.resizeIndex!==void 0)return;if(K)return;let O=_;while(O&&!O.dataset.columnKey)if(O=O.parentElement,O===G||O===null)return;if(!O||!O.dataset.columnKey)return;let C=O.dataset.columnKey;if(!D)return;let a=D.columns,i=-1;for(let W=0;W<a.length;W++)if(a[W].def.key===C){i=W;break}if(i===-1)return;let y=a[i];if(Y)Y({key:C,index:i,event:X});if(y.def.sortable&&q){let W;if(v===C)if(V==="asc")W="desc";else W=null;else W="asc";q({key:C,index:i,direction:W})}};return G.addEventListener("pointerdown",$2),G.addEventListener("click",d),{element:G,update:g,updateSort:n,rebuild:c,show:()=>{if(L)return;L=!0,G.style.display=""},hide:()=>{if(!L)return;L=!1,G.style.display="none"},destroy:()=>{G.removeEventListener("pointerdown",$2),G.removeEventListener("click",d),J.style.removeProperty("--vlist-table-header-height"),B.remove(),M=[],N=[],E=[],D=null,L=!1},syncScroll:l}};var pJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)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="",J.push(Q)},clear:()=>{J.length=0}}},ZJ=(J,Q,$,j,q,Y,B,G,b)=>{let M=pJ(),N=new Map,E=-1,L=$,v=null,V=null,D=null,K=(A,k)=>{V=A,D=k},Z=(A,k)=>{if(k)A.setAttribute("aria-selected","true");else A.removeAttribute("aria-selected")},F=(A,k,f,m)=>{A.setAttribute("role",k),A.setAttribute("data-id",String(f)),A.setAttribute("data-index",String(m))},H=(A)=>String(A).startsWith("__placeholder_"),P=`${q}-item ${q}-table-row`,c=`${q}-item--selected`,g=`${q}-item--focused`,n=`${q}-table-cell`,l=`${q}-table-cell--center`,$2=`${q}-table-cell--right`,U2=`${q}-item--odd`,I=`${q}-item--placeholder`,d=`${q}-item--replaced`,Y2=`${q}-item ${q}-table-row ${q}-table-group-header`,J2=`${q}-table-group-header-content`,R=(A,k,f,m,r=!1)=>{if(f.def.cell){let h=f.def.cell(k,f.def,m);if(typeof h==="string")A.innerHTML=h;else A.replaceChildren(h)}else{let h=k[f.def.key],e=h!=null?String(h):"";if(r&&e)A.innerHTML=`<span>${e}</span>`;else A.textContent=e}},X=(A,k,f,m,r=!1)=>{let h=P;if(G){if(v){let e=v(k);if(e>=0&&(e&1)===1)h+=` ${U2}`}else if((k&1)===1)h+=` ${U2}`}if(r)h+=` ${I}`;if(f)h+=` ${c}`;if(m)h+=` ${g}`;A.className=h},_=(A,k,f)=>{if(f?.compression?.isCompressed)return Math.round(F2(A,f.scrollPosition,k,f.totalItems,f.containerSize,f.compression,f.rangeStart));return k.getOffset(A)},O=(A,k)=>{let f=k.def.align;if(f==="center")A.classList.add(l),A.classList.remove($2);else if(f==="right")A.classList.add($2),A.classList.remove(l);else A.classList.remove(l,$2)},C=(A,k)=>{let m=L.columns.length;if(k.length===m)return k;let r=[];for(let h=0;h<m;h++){let e;if(h<k.length)e=k[h];else e=document.createElement("div"),e.className=n,A.appendChild(e);r.push(e)}for(let h=m;h<k.length;h++)k[h].remove();return r},a=(A,k,f,m)=>{let r=M.acquire(),h=A,e=f.getSize(k),w=_(k,f,m);r.style.cssText=`width:${L.totalWidth}px;height:${e}px;transform:translateY(${w}px)`,r.className=Y2,F(r,"presentation",A.id,k),r.removeAttribute("aria-selected"),r.removeAttribute("aria-rowindex"),r.replaceChildren();let p=document.createElement("div");if(p.className=J2,D){let x=D(h.groupKey,h.groupIndex);if(typeof x==="string")p.innerHTML=x;else p.appendChild(x)}return r.appendChild(p),{element:r,cells:[],index:k,isGroupHeader:!0,lastItemId:A.id,lastSelected:!1,lastFocused:!1,lastOffset:w,lastHeight:e}},i=(A,k,f,m,r,h)=>{let e=M.acquire(),w=r.getSize(k),p=_(k,r,h),x=H(A.id);e.style.cssText=`width:${L.totalWidth}px;height:${w}px;transform:translateY(${p}px)`,X(e,k,f,m,x),F(e,"row",A.id,k),e.id=`${Y}-${k}`,e.setAttribute("aria-rowindex",String(k+2)),Z(e,f);let B2=C(e,[]),Q2=L.columns;for(let q2=0;q2<B2.length&&q2<Q2.length;q2++){let Z2=B2[q2],_2=Q2[q2];Z2.style.cssText=`left:${_2.offset}px;width:${_2.width}px`,Z2.setAttribute("role","gridcell"),Z2.setAttribute("aria-colindex",String(q2+1)),O(Z2,_2),R(Z2,A,_2,k,x)}return{element:e,cells:B2,index:k,isGroupHeader:!1,lastItemId:A.id,lastSelected:f,lastFocused:m,lastOffset:p,lastHeight:w}},y=(A,k,f,m,r)=>{for(let[x,B2]of N)if(x<k.start||x>k.end)M.release(B2.element),N.delete(x);let h=!1,e=B();if(e!==E)E=e,h=!0;let w=null,p=Q();v=typeof G==="string"&&b?b():null;for(let x=k.start;x<=k.end;x++){let B2=x-k.start,Q2=A[B2];if(!Q2)continue;let q2=f.has(Q2.id),Z2=x===m,_2=V?V(Q2):!1,s=N.get(x);if(s){if(s.isGroupHeader!==_2){M.release(s.element),N.delete(x);let X2=_2?a(Q2,x,p,r):i(Q2,x,q2,Z2,p,r);if(N.set(x,X2),!w)w=document.createDocumentFragment();w.appendChild(X2.element);continue}if(_2){if(s.lastItemId!==Q2.id){let K2=Q2,j2=s.element.firstElementChild;if(j2&&D){let D2=D(K2.groupKey,K2.groupIndex);if(typeof D2==="string")j2.innerHTML=D2;else j2.replaceChildren(D2)}s.element.setAttribute("data-id",String(Q2.id)),s.lastItemId=Q2.id}let o=_(x,p,r);if(s.lastOffset!==o)s.lastOffset=o,s.element.style.transform=`translateY(${o}px)`;let N2=p.getSize(x);if(s.lastHeight!==N2)s.lastHeight=N2,s.element.style.height=`${N2}px`}else{let X2=s.lastItemId!==Q2.id,o=s.lastSelected!==q2,N2=s.lastFocused!==Z2;if(X2){let D2=s.lastItemId!=null&&H(s.lastItemId),G2=H(Q2.id);if(!G2&&A2(f,x,Q2.id))q2=!0;let V2=L.columns;for(let E2=0;E2<s.cells.length&&E2<V2.length;E2++)R(s.cells[E2],Q2,V2[E2],x,G2);if(X(s.element,x,q2,Z2,G2),s.element.setAttribute("data-id",String(Q2.id)),Z(s.element,q2),D2&&!G2)s.element.classList.add(d),setTimeout(()=>{s.element.classList.remove(d)},300);s.lastItemId=Q2.id,s.lastSelected=q2,s.lastFocused=Z2}else if(o||N2)X(s.element,x,q2,Z2,H(Q2.id)),Z(s.element,q2),s.lastSelected=q2,s.lastFocused=Z2;let K2=_(x,p,r);if(s.lastOffset!==K2)s.lastOffset=K2,s.element.style.transform=`translateY(${K2}px)`;let j2=p.getSize(x);if(s.lastHeight!==j2)s.lastHeight=j2,s.element.style.height=`${j2}px`;if(h)s.element.setAttribute("aria-rowindex",String(x+2))}}else{if(A2(f,x,Q2.id))q2=!0;let X2=_2?a(Q2,x,p,r):i(Q2,x,q2,Z2,p,r);if(N.set(x,X2),!w)w=document.createDocumentFragment();w.appendChild(X2.element)}}if(w)J.appendChild(w)},W=(A)=>{let k=Q();for(let[f,m]of N){let r=_(f,k,A);if(m.lastOffset!==r)m.lastOffset=r,m.element.style.transform=`translateY(${r}px)`}},U=(A,k,f,m)=>{let r=N.get(A);if(!r)return;if(r.isGroupHeader)return;let h=L.columns;for(let e=0;e<r.cells.length&&e<h.length;e++)R(r.cells[e],k,h[e],A);r.element.setAttribute("data-id",String(k.id)),r.lastItemId=k.id,X(r.element,A,f,m),Z(r.element,f),r.lastSelected=f,r.lastFocused=m},S=(A,k,f)=>{let m=N.get(A);if(!m)return;if(m.isGroupHeader)return;let r=m.lastSelected!==k,h=m.lastFocused!==f;if(r||h)X(m.element,A,k,f),Z(m.element,k),m.lastSelected=k,m.lastFocused=f},u=(A)=>{L=A;let k=A.columns;for(let[,f]of N)if(f.element.style.width=`${A.totalWidth}px`,f.cells.length>0)for(let m=0;m<f.cells.length&&m<k.length;m++){let r=f.cells[m],h=k[m];r.style.left=`${h.offset}px`,r.style.width=`${h.width}px`}},T=(A)=>{return N.get(A)?.element},z=()=>{for(let[,A]of N)M.release(A.element);N.clear(),E=-1};return{render:y,updatePositions:W,updateItem:U,updateItemClasses:S,getElement:T,updateColumnLayout:u,setGroupHeaderFn:K,clear:z,destroy:()=>{z(),M.clear()}}};var GJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],B=()=>{let K=(Q-1)*$;q=Math.max(0,(j-K)/Q),Y=Array(Q);let Z=q+$;for(let F=0;F<Q;F++)Y[F]=F*Z};B();let G=[],b=0,M=[],N=(K)=>{let Z=0,F=K[0];for(let H=1;H<K.length;H++){let P=K[H];if(P<F)F=P,Z=H}return Z},E=(K,Z)=>{if(K<=0)return b=0,G=[],[];let F=Array(Q).fill(0),H=Array(Q);for(let g=0;g<Q;g++)H[g]=[];let P=Array(K);for(let g=0;g<K;g++){let n=N(F),l=Z(g),$2=F[n];P[g]={index:g,x:Y[n],y:$2,lane:n,size:l,crossSize:q},H[n].push(g),F[n]=$2+l+$}G=H;let c=0;for(let g=0;g<Q;g++){let n=F[g],l=n>0?n-$:0;if(l>c)c=l}return b=c,P},L=(K)=>{if(K.length===0)return b>0?b:0;if(b>0)return b;let Z=Array(Q).fill(0);for(let H of K){let P=H.y+H.size,c=Z[H.lane];if(P>c)Z[H.lane]=P}let F=0;for(let H=0;H<Q;H++)if(Z[H]>F)F=Z[H];return F},v=(K,Z,F)=>{if(K.length===0||F<=Z)return M.length=0,M;if(G.length===0||G.length!==Q)return V(K,Z,F);M.length=0;for(let H=0;H<Q;H++){let P=G[H],c=P.length;if(c===0)continue;let g=0,n=c;while(g<n){let l=g+n>>>1,$2=K[P[l]];if($2.y+$2.size<=Z)g=l+1;else n=l}for(let l=g;l<c;l++){let $2=K[P[l]];if($2.y>=F)break;M.push($2)}}return M},V=(K,Z,F)=>{let H=[];for(let P of K)if(P.y+P.size>Z&&P.y<F)H.push(P);return H};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(K)=>{let Z=!1;if(K.columns!==void 0){let F=Math.max(1,Math.floor(K.columns));if(F!==Q)Q=F,Z=!0}if(K.gap!==void 0&&K.gap!==$)$=K.gap,Z=!0;if(K.containerSize!==void 0&&K.containerSize!==j)j=K.containerSize,Z=!0;if(Z)B()},calculateLayout:E,getTotalSize:L,getVisibleItems:v}};var hJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},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}}},xJ=1,_J=(J,Q,$,j=!1,q,Y)=>{let B=hJ(),G=new Map,b=new Set,M=0,N="",E=-1,L={selected:!1,focused:!1},v=(I,d)=>{return L.selected=I,L.focused=d,L},V=`${$}-item ${$}-masonry-item`,D=`${$}-item--selected`,K=`${$}-item--focused`,Z=(I,d)=>{if(typeof d==="string")I.innerHTML=d;else I.replaceChildren(d)},F=(I,d,Y2)=>{I.classList.toggle(D,d),I.classList.toggle(K,Y2)},H=(I,d)=>{if(j)I.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else I.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},P=(I,d)=>{if(j)I.style.width=`${d.size}px`,I.style.height=`${d.crossSize}px`;else I.style.width=`${d.crossSize}px`,I.style.height=`${d.size}px`},c=(I,d,Y2,J2,R)=>{let X=B.acquire(),_=v(J2,R);if(X.className=V,X.dataset.index=String(I),X.dataset.id=String(d.id),X.dataset.lane=String(Y2.lane),X.ariaSelected=String(J2),Y)X.id=`${Y}-item-${I}`;if(q){let C=q();if(C!==E)E=C,N=String(C);X.setAttribute("aria-setsize",N),X.setAttribute("aria-posinset",String(I+1))}P(X,Y2);let O=Q(d,I,_);return Z(X,O),F(X,J2,R),H(X,Y2),{element:X,lastItemId:d.id,lastSelected:J2,lastFocused:R,lastY:Y2.y,lastX:Y2.x,lastSize:Y2.size,lastCrossSize:Y2.crossSize,lastSeenFrame:M}},g=(I,d,Y2,J2)=>{M++,b.clear();for(let X=0;X<d.length;X++)b.add(d[X].index);for(let[X,_]of G)if(b.has(X))_.lastSeenFrame=M;else if(M-_.lastSeenFrame>xJ)B.release(_.element),G.delete(X);let R=null;for(let X=0;X<d.length;X++){let _=d[X],O=_.index,C=I(O);if(!C)continue;let a=Y2.has(C.id),i=O===J2,y=G.get(O);if(y){let W=y.lastItemId!==C.id,U=y.lastSelected!==a,S=y.lastFocused!==i,u=y.lastY!==_.y||y.lastX!==_.x,T=y.lastSize!==_.size||y.lastCrossSize!==_.crossSize;if(W){let z=v(a,i),t=Q(C,O,z);Z(y.element,t),y.element.dataset.id=String(C.id),y.lastItemId=C.id}if(W||U||S)F(y.element,a,i),y.element.ariaSelected=String(a),y.lastSelected=a,y.lastFocused=i;if(T)P(y.element,_),y.lastSize=_.size,y.lastCrossSize=_.crossSize;if(u)H(y.element,_),y.lastY=_.y,y.lastX=_.x}else{let W=c(O,C,_,a,i);if(!R)R=document.createDocumentFragment();R.appendChild(W.element),G.set(O,W)}}if(R)J.appendChild(R)},n=()=>{for(let{element:I}of G.values())B.release(I);G.clear(),J.innerHTML=""};return{render:g,getElement:(I)=>G.get(I)?.element,updateItemClasses:(I,d,Y2)=>{let J2=G.get(I);if(!J2)return;let R=J2.lastSelected!==d,X=J2.lastFocused!==Y2;if(R||X)F(J2.element,d,Y2),J2.lastSelected=d,J2.lastFocused=Y2},sortDOM:()=>{R2(J,G.keys(),(I)=>G.get(I)?.element)},clear:n,destroy:()=>{n(),B.clear()}}};var DJ=(J,Q)=>{let $=new Map,j=(Y)=>{let B=$.get(Y);return B!==void 0?B:J},q=L2(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 B of $.keys())if(B>=Y)$.delete(B)}q=L2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,B){$.set(Y,B)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var VJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let B=$.indexAtOffset(J),G=$.indexAtOffset(J+Q);if(G<j-1)G++;return Y.start=Math.max(0,B),Y.end=Math.min(j-1,Math.max(0,G)),Y},WJ=(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},MJ=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),G=Q.getOffset(B),b=Q.getSize(B),M=Q.getTotalSize(),N=Math.max(0,M-$),E;switch(Y){case"center":E=G-$/2+b/2;break;case"end":E=G-$+b;break;case"start":default:E=G;break}return Math.max(0,Math.min(E,N))},OJ=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},EJ=(J,Q)=>{return Q.getTotalSize()},AJ=(J,Q)=>{return Q.getOffset(J)},FJ=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var LJ=(J,Q,$,j,q="start",Y,B=MJ)=>{return B(J,Q,$,j,Y,q)},HJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},bJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},TJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var RJ=(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}};var yJ=()=>{let J={},Q=(Y,B)=>{if(!J[Y])J[Y]=new Set;return J[Y].add(B),()=>$(Y,B)},$=(Y,B)=>{J[Y]?.delete(B)};return{on:Q,off:$,emit:(Y,B)=>{J[Y]?.forEach((G)=>{try{G(B)}catch(b){console.error(`[vlist] Error in event handler for "${String(Y)}":`,b)}})},clear:(Y)=>{if(Y)delete J[Y];else for(let B in J)delete J[B]}}};var y2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,B=0,G=0,b=(R)=>{let X=Y.get(R);if(!X)X={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(R,X);else X.lastAccess=Date.now();return X},M=(R)=>{return Math.floor(R/Q)},N=(R)=>{return R%Q},E=()=>B,L=(R)=>{B=R},v=(R)=>{if(R<0||R>=B)return;let X=M(R),_=Y.get(X);if(!_)return;return _.items[N(R)]},V=(R)=>{if(R<0||R>=B)return!1;let X=M(R),_=Y.get(X);if(!_)return!1;return _.items[N(R)]!==void 0},D=(R,X)=>{let _=M(R),O=b(_),C=N(R),a=O.items[C]===void 0;if(O.items[C]=X,a)O.count++,G++;if(R>=B)B=R+1},K=(R,X)=>{for(let _=0;_<X.length;_++){let O=X[_];if(O!==void 0)D(R+_,O)}},Z=(R)=>{if(R<0||R>=B)return!1;let X=M(R),_=Y.get(X),O=N(R);if(!(_!==void 0&&_.items[O]!==void 0))return!1;let a=X,i=Array.from(Y.keys()).filter((W)=>W>=a).sort((W,U)=>W-U),y=[];for(let W of i){let U=Y.get(W),S=W*Q;for(let u=0;u<Q;u++){if(U.items[u]===void 0)continue;let T=S+u;if(T<=R)continue;y.push({oldIndex:T,item:U.items[u]})}}if(_.items[O]=void 0,_.count--,G--,_.count===0)Y.delete(X);for(let{oldIndex:W}of y){let U=M(W),S=Y.get(U);if(!S)continue;let u=N(W);if(S.items[u]!==void 0){if(S.items[u]=void 0,S.count--,G--,S.count===0)Y.delete(U)}}for(let{oldIndex:W,item:U}of y){let S=W-1,u=M(S),T=b(u),z=N(S);T.items[z]=U,T.count++,G++}return B--,!0},F=(R,X)=>{let _=[];for(let O=R;O<=X&&O<B;O++)_.push(v(O));return _},H=(R,X)=>{for(let _=R;_<=X&&_<B;_++)if(!V(_))return!1;return!0},P=()=>{let R=[],X=null,_=Array.from(Y.keys()).sort((O,C)=>O-C);for(let O of _){let C=Y.get(O);if(!C)continue;let a=O*Q;for(let i=0;i<Q;i++){let y=a+i;if(y>=B)break;if(C.items[i]!==void 0)if(X===null)X={start:y,end:y};else if(y===X.end+1)X.end=y;else R.push(X),X={start:y,end:y};else if(X!==null)R.push(X),X=null}}if(X!==null)R.push(X);return R},c=(R,X)=>{let _=[],O=null;for(let C=R;C<=X&&C<B;C++)if(!V(C))if(O===null)O={start:C,end:C};else O.end=C;else if(O!==null)_.push(O),O=null;if(O!==null)_.push(O);return _},g=(R)=>{return Y.has(R)},n=(R)=>{let X=Y.get(R);if(X)X.lastAccess=Date.now()},l=(R,X)=>{if(R>X||Y.size===0)return;let _=Date.now(),O=M(Math.max(0,R)),C=M(Math.min(B-1,X));for(let a=O;a<=C;a++){let i=Y.get(a);if(i)i.lastAccess=_}},$2=(R,X)=>{if(G<=$)return 0;let _=Math.max(0,R-j),O=Math.min(B-1,X+j),C=M(_),a=M(O),i=0,y=[];for(let[W,U]of Y)if(W<C||W>a)i+=U.count,y.push(W),G-=U.count,Y.delete(W);if(i>0&&q)q(i,y);return i},U2=()=>{if(G<=$)return 0;let R=Array.from(Y.entries()).sort(([,O],[,C])=>O.lastAccess-C.lastAccess),X=0,_=[];for(let[O,C]of R){if(G<=$)break;X+=C.count,G-=C.count,_.push(O),Y.delete(O)}if(X>0&&q)q(X,_);return X},I=()=>{return{totalItems:B,cachedItems:G,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:B>0?1-G/B:1}},d=()=>G,Y2=()=>{Y.clear(),G=0};return{chunkSize:Q,maxCachedItems:$,getTotal:E,setTotal:L,get:v,has:V,set:D,setRange:K,delete:Z,getRange:F,isRangeLoaded:H,getLoadedRanges:P,findUnloadedRanges:c,getChunkIndex:M,isChunkLoaded:g,touchChunk:n,touchChunksForRange:l,evictDistant:$2,evictToLimit:U2,getStats:I,getCachedCount:d,clear:Y2,reset:()=>{Y2(),B=0}}},P2=(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 $},b2=(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 B=[],G=P2(Q),b=Y.start;for(let M of G){if(M.end<b)continue;if(M.start>Y.end)break;if(M.start>b)B.push({start:b,end:Math.min(M.start-1,Y.end)});if(b=M.end+1,b>Y.end)break}if(b<=Y.end)B.push({start:b,end:Y.end});return B};var k2=(J={})=>{let{maskCharacter:Q=l2,maxSampleSize:$=a2}=J,j=[],q=!1,Y=(N)=>{if(q||N.length===0)return;let E=Math.min(N.length,$);for(let L=0;L<E;L++){let v=N[L];if(!v||typeof v!=="object")continue;let V={};for(let[D,K]of Object.entries(v)){if(D.startsWith("_")||D==="id")continue;V[D]=String(K??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},B=()=>q,G=(N)=>{let E={id:`${M2}${N}`,[C2]:!0,_index:N};if(j.length===0)return E.label=Q.repeat(12),E;let L=j[N%j.length];for(let[v,V]of Object.entries(L))E[v]=Q.repeat(Math.max(1,V));return E};return{analyzeStructure:Y,hasAnalyzedStructure:B,generate:G,generateRange:(N,E)=>{let L=[];for(let v=N;v<=E;v++)L.push(G(v));return L},clear:()=>{j=[],q=!1}}},O2=(J)=>{if(!J||typeof J!=="object")return!1;return J[C2]===!0},h2=(J)=>{return J.filter((Q)=>!O2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:B=uJ,onStateChange:G,onItemsLoaded:b,onItemsEvicted:M}=J,N=y2({...q,onEvict:(w,p)=>{M?.(w),l()}}),E=null,L=()=>{if(!E)E=k2(Y);return E},v=new Map,V=!1,D,K=!0,Z,F,H=[],P=0,c=new Map,g=new Map,n=()=>{for(let w of g.values())w.abort();g.clear(),c.clear()},l=()=>{G?.(_())},$2=()=>{v.clear();let w=N.getLoadedRanges();for(let p of w)for(let x=p.start;x<=p.end;x++){let B2=N.get(x);if(B2&&!O2(B2))v.set(B2.id,x)}},U2=(w,p)=>{if(!O2(p))v.set(p.id,w)},I=(w)=>{v.delete(w)},d=(w,p)=>{return`${w}-${p}`},Y2=()=>N.getTotal(),J2=()=>N.getCachedCount(),R=()=>V,X=()=>K,_=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:V,pendingRanges:H,error:D,hasMore:K,cursor:Z}),O=()=>N,C=()=>L(),a=(w)=>{let p=N.get(w);if(p!==void 0)return p;if(w>=0&&w<N.getTotal())return L().generate(w);return},i=(w)=>{let p=v.get(w);if(p===void 0)return;return N.get(p)},y=(w)=>{return v.get(w)??-1},W=(w)=>{let p=N.get(w);return p!==void 0&&!O2(p)},U=(w,p)=>{let x=[],B2=N.getTotal(),Q2=0,q2=0;N.touchChunksForRange(w,Math.min(p,B2-1));for(let Z2=w;Z2<=p&&Z2<B2;Z2++){let _2=N.get(Z2);if(_2!==void 0)x.push(_2),Q2++;else x.push(L().generate(Z2)),q2++}return x},S=(w)=>{N.setTotal(w),K=N.getCachedCount()<w,l()},u=(w,p=0,x)=>{if(Q&&w.length>0){let B2=L();if(!B2.hasAnalyzedStructure())B2.analyzeStructure(w)}for(let B2=0;B2<w.length;B2++){let Q2=w[B2];if(Q2!==void 0){let q2=p+B2;N.set(q2,Q2),U2(q2,Q2)}}if(x!==void 0)N.setTotal(x);else if(p+w.length>N.getTotal())N.setTotal(p+w.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)K=!1;l(),b?.(w,p,N.getTotal())},T=(w,p)=>{let x=N.get(w);if(!x)return!1;let B2=x.id,Q2={...x,...p};if(N.set(w,Q2),p.id!==void 0&&p.id!==B2)I(B2);return U2(w,Q2),l(),!0},z=(w)=>{let p=v.get(w);if(p===void 0)return!1;if(!N.delete(p))return!1;return $2(),n(),l(),!0},t=async(w,p)=>{if(!Q)return;let x=d(w,p);if(c.has(x))return;let B2=N.getLoadedRanges(),Q2=b2({start:w,end:p},B2,N.chunkSize);if(Q2.length===0)return;let q2=N.chunkSize,Z2=q2*2;for(let[X2,o]of g){let N2=X2.indexOf("-"),K2=parseInt(X2.slice(0,N2),10);if(Math.abs(K2-w)>Z2)o.abort(),g.delete(X2),c.delete(X2)}let _2=[];for(let X2 of Q2){let o=Math.floor(X2.start/q2),N2=Math.floor(X2.end/q2);for(let K2=o;K2<=N2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=d(j2,D2);if(!_2.some((V2)=>V2.start===j2)&&!c.has(G2))_2.push({start:j2,end:D2})}}let s=[];for(let X2 of Q2){let o=Math.floor(X2.start/q2),N2=Math.floor(X2.end/q2);for(let K2=o;K2<=N2;K2++){let j2=K2*q2,D2=j2+q2-1,G2=d(j2,D2);if(c.has(G2)){let V2=c.get(G2);if(!s.includes(V2))s.push(V2)}}}for(let X2 of _2){let o=d(X2.start,X2.end),N2=new AbortController;g.set(o,N2);let K2=(async()=>{H.push(X2),V=!0,D=void 0,l();try{let j2=X2.end-X2.start+1,D2={offset:X2.start,limit:j2,cursor:X2.start===F?Z:void 0,signal:N2.signal},G2=await Q.read(D2);if(u(G2.items,X2.start,G2.total),G2.cursor)Z=G2.cursor,F=X2.start+G2.items.length;let V2=X2.start+G2.items.length;if(V2>=P){if(P=V2,G2.hasMore!==void 0)K=G2.hasMore;else if(G2.total!==void 0)K=V2<G2.total}}catch(j2){if(j2?.name==="AbortError")return;D=j2 instanceof Error?j2:Error(String(j2))}finally{c.delete(o),g.delete(o),H=H.filter((j2)=>j2.start!==X2.start||j2.end!==X2.end),V=c.size>0,l()}})();c.set(o,K2),s.push(K2)}await Promise.all(s)},A=async(w,p)=>{if(N.isRangeLoaded(w,p))return;await t(w,p)},k=async()=>{if(!Q)return;await t(0,B-1)},f=async()=>{if(!Q||V||!K)return!1;let w=N.getCachedCount(),p=N.getTotal(),x=w,B2=Math.min(x+B-1,p>0?p-1:x+B-1);if(x>=p&&p>0)return K=!1,!1;return await t(x,B2),N.getCachedCount()>w},m=async()=>{if(N.clear(),N.setTotal(0),v.clear(),E)E.clear();n(),H=[],V=!1,Z=void 0,F=void 0,K=!0,P=0,D=void 0,l()},r=(w,p)=>{if(N.evictDistant(w,p)>0)$2()},h=()=>{N.clear(),v.clear(),Z=void 0,F=void 0,D=void 0,H=[],V=!1,l()},e=()=>{if(N.reset(),v.clear(),E)E.clear();Z=void 0,F=void 0,K=!0,P=0,D=void 0,H=[],V=!1,l()};if($&&$.length>0)u($,0,j??$.length);else if(j!==void 0)N.setTotal(j),l();return{getState:_,getTotal:Y2,getCached:J2,getIsLoading:R,getHasMore:X,getStorage:O,getPlaceholders:C,getItem:a,getItemById:i,getIndexById:y,isItemLoaded:W,getItemsInRange:U,setTotal:S,setItems:u,updateItem:T,removeItem:z,loadRange:t,ensureRange:A,loadInitial:k,loadMore:f,reload:m,evictDistant:r,clear:h,reset:e}};var kJ=(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}},z2=(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,B=J.samples[Y],G=Q-B.position,b=$-B.time;J.velocity=b>0?G/b:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,zJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:B,onIdle:G,scrollElement:b,horizontal:M=!1}=Q,N=!!b,E=0,L=0,v=N?M?window.innerWidth:window.innerHeight:M?J.clientWidth:J.clientHeight,V=Q.compressed??!1,D=Q.compression,K=kJ(),Z=!1,F=null,P=w2(()=>{let T=M?J.scrollLeft:J.scrollTop,z=T>=E?"down":"up";if(K=z2(K,T),E=T,B)B({scrollTop:E,direction:z,velocity:K.velocity});U2()}),g=w2(()=>{let T=J.getBoundingClientRect(),z=M?Math.max(0,-T.left):Math.max(0,-T.top),t=z>=E?"down":"up";if(K=z2(K,z),E=z,!Z)Z=!0;if(B)B({scrollTop:E,direction:t,velocity:K.velocity});U2()}),n=(T)=>{T.preventDefault()},l=(T)=>{if(T.deltaX)return;T.preventDefault(),J.scrollLeft+=T.deltaY},$2=(T)=>{if(!V)return;T.preventDefault();let z=(M?T.deltaX||T.deltaY:T.deltaY)*j,t=E+z;if(q)t=E+z*0.3;if(t=Math.max(0,Math.min(t,L)),t!==E){let k=t>=E?"down":"up";if(K=z2(K,t),E=t,!Z)Z=!0;if(B)B({scrollTop:E,direction:k,velocity:K.velocity});U2()}},U2=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(Z=!1,K=kJ(E),G)G()},Y)},I=(T)=>{if(V)return;if(V=!0,D=T,L=T.virtualSize-v,N)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",n);else if(M)J.removeEventListener("wheel",l);if(M)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1});let z=M?J.scrollLeft:J.scrollTop;if(z>0){let t=M?D?.actualSize??J.scrollWidth:D?.actualSize??J.scrollHeight;E=z/t*L}if(M)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!V)return;if(V=!1,N){D=void 0;return}if(J.removeEventListener("wheel",$2),M)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",n,{passive:!1});else if(M)J.addEventListener("wheel",l,{passive:!1});if(D&&E>0){let z=E/L*(D.actualSize-v);if(M)J.scrollLeft=z;else J.scrollTop=z}D=void 0},Y2=()=>{if(N||V)return E;return M?J.scrollLeft:J.scrollTop},J2=(T,z=!1)=>{let t=Math.max(0,Math.min(T,L||1/0));if(N){let A=J.getBoundingClientRect();if(M){let k=A.left+window.scrollX;window.scrollTo({left:k+t,behavior:z?"smooth":"auto"})}else{let k=A.top+window.scrollY;window.scrollTo({top:k+t,behavior:z?"smooth":"auto"})}}else if(V){if(t===E)return;let k=t>=E?"down":"up";if(K=z2(K,t),E=t,!Z)Z=!0;if(B)B({scrollTop:E,direction:k,velocity:K.velocity});U2()}else if(M)J.scrollTo({left:t,behavior:z?"smooth":"auto"});else J.scrollTo({top:t,behavior:z?"smooth":"auto"})},R=(T)=>{J2(Y2()+T)},X=()=>{return Y2()<=0},_=(T=0)=>{let z=Y2(),t=N||V?L:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return z>=t-T},O=()=>{let T=Y2(),z=N||V?L:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(z<=0)return 0;return Math.min(1,Math.max(0,T/z))},C=(T)=>{if(T.compression)D=T.compression,L=D.virtualSize-v},a=()=>V,i=()=>Math.abs(K.velocity),y=()=>mJ(K),W=()=>Z,U=()=>N,S=(T)=>{if(v=T,D)L=D.virtualSize-v},u=()=>{if(F)clearTimeout(F);if(N)g.cancel(),window.removeEventListener("scroll",g);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",$2),J.removeEventListener("wheel",n),J.removeEventListener("wheel",l)};if(N){if(V&&D)L=D.virtualSize-v;window.addEventListener("scroll",g,{passive:!0})}else if(V&&D){if(L=D.virtualSize-v,M)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",$2,{passive:!1})}else{if(M)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",n,{passive:!1});else if(M)J.addEventListener("wheel",l,{passive:!1})}return{getScrollTop:Y2,scrollTo:J2,scrollBy:R,isAtTop:X,isAtBottom:_,getScrollPercentage:O,getVelocity:i,isTracking:y,isScrolling:W,updateConfig:C,enableCompression:I,disableCompression:d,isCompressed:a,isWindowMode:U,updateContainerHeight:S,destroy:u}},w2=(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=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},wJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:B=1000,minThumbSize:G=15,showOnHover:b=!0,showOnViewportEnter:M=!0,clickBehavior:N="page"}=$,E=dJ($.padding),L=q?E.left:E.top,v=q?E.right:E.bottom,V=q?E.bottom:E.right,D=$.hoverZoneWidth??V+16,K=0,Z=0,F=0,H=0,P=!1,c=!1,g=0,n=0,l=0,$2=null,U2=!1,I=null,d=null,Y2=0,J2=0,R=null,X=null,_=null,O=q?"width":"height",C=q?"translateX":"translateY",a=q?(o)=>o.clientX:(o)=>o.clientY,i=q?"left":"top",y=document.createElement("div"),W=document.createElement("div"),U=document.createElement("div"),S=()=>{if(y.className=`${j}-scrollbar`,W.className=`${j}-scrollbar-thumb`,q)y.classList.add(`${j}-scrollbar--horizontal`);if($.padding!==void 0)J.style.setProperty("--vlist-custom-scrollbar-padding-top",`${E.top}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-right",`${E.right}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${E.bottom}px`),J.style.setProperty("--vlist-custom-scrollbar-padding-left",`${E.left}px`);if($.minThumbSize!==void 0)y.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${G}px`);if(y.appendChild(W),J.appendChild(y),U.className=`${j}-scrollbar-hover`,q)U.classList.add(`${j}-scrollbar-hover--horizontal`),U.style.height=`${D}px`;else U.style.width=`${D}px`;J.appendChild(U)},u=()=>{if($2)clearTimeout($2),$2=null},T=()=>{if(!Y)return;u(),$2=setTimeout(t,B)},z=()=>{if(K<=Z)return;if(u(),!U2)y.classList.add(`${j}-scrollbar--visible`),U2=!0;if(Y&&!P&&!c)T()},t=()=>{if(P||c)return;y.classList.remove(`${j}-scrollbar--visible`),U2=!1},A=(o,N2)=>{K=o,Z=N2;let K2=K>Z;if(y.style.display=K2?"":"none",!K2){t();return}let j2=Math.max(0,Z-L-v),D2=Z/K;F=Math.max(G,D2*j2),W.style[O]=`${F}px`,H=j2-F,k(l)},k=(o)=>{if(l=o,K<=Z||H<=0)return;let N2=K-Z,j2=Math.min(1,Math.max(0,o/N2))*H;W.style.transform=`${C}(${j2}px)`},f=(o)=>{if(o.target===W||N!=="jump"||H<=0)return;let N2=K-Z,K2=y.getBoundingClientRect(),j2=a(o)-K2[i],D2=Math.max(0,Math.min(j2-F/2,H));Q(D2/H*N2),z()},m=()=>{if(R!==null)clearTimeout(R),R=null;if(X!==null)cancelAnimationFrame(X),X=null;_=null},r=(o)=>{let N2=H>0?J2/o*H:0;if(Y2<N2)return-1;if(Y2>=N2+F)return 1;return 0},h=()=>{let o=K-Z,N2=r(o);if(N2===0){m();return}if(N2===-1){if(J2<=0){m();return}let K2=Math.max(0,J2-Z);J2=K2,Q(K2)}else{if(J2>=o){m();return}let K2=Math.min(o,J2+Z);J2=K2,Q(K2)}z()},e=(o)=>{if(_===null){_=o,X=requestAnimationFrame(e);return}let N2=K-Z,K2=o-_;_=o;let j2=r(N2);if(j2===0){m();return}let D2=12*Z/1000,G2=Math.min(D2*K2,Z);if(j2===-1){if(J2<=0){m();return}let V2=Math.max(0,J2-G2);J2=V2,Q(V2)}else{if(J2>=N2){m();return}let V2=Math.min(N2,J2+G2);J2=V2,Q(V2)}u(),X=requestAnimationFrame(e)},w=()=>{m(),T(),document.removeEventListener("mouseup",w)},p=(o)=>{if(o.target===W||N!=="page")return;o.preventDefault();let N2=y.getBoundingClientRect();Y2=a(o)-N2[i],J2=l,h(),R=setTimeout(()=>{X=requestAnimationFrame(e)},350),document.addEventListener("mouseup",w)},x=(o)=>{o.preventDefault(),o.stopPropagation(),P=!0,g=a(o),n=l,u(),y.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",B2),document.addEventListener("mouseup",Q2)},B2=(o)=>{if(!P)return;let N2=a(o)-g,K2=H>0?N2/H:0,j2=K-Z,D2=K2*j2,G2=Math.max(0,Math.min(n+D2,j2)),E2=G2/j2*H;if(W.style.transform=`${C}(${E2}px)`,d=G2,I===null)I=requestAnimationFrame(()=>{if(d!==null)Q(d);I=null})},Q2=()=>{if(P=!1,I!==null)cancelAnimationFrame(I),I=null;if(d!==null)Q(d),d=null;if(y.classList.remove(`${j}-scrollbar--dragging`),Y&&!c)T();document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",Q2)},q2=()=>{if(M)z()},Z2=()=>{if(!P){if(c=!1,Y)T()}},_2=()=>{c=!0,u(),z()},s=()=>{if(c=!1,!P&&Y)T()},X2=()=>{if(u(),m(),I!==null)cancelAnimationFrame(I),I=null;if(y.removeEventListener("click",f),y.removeEventListener("mousedown",p),y.removeEventListener("mouseenter",_2),document.removeEventListener("mouseup",w),y.removeEventListener("mouseleave",s),W.removeEventListener("mousedown",x),J.removeEventListener("mouseenter",q2),J.removeEventListener("mouseleave",Z2),document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",Q2),U.removeEventListener("click",f),U.removeEventListener("mousedown",p),b)U.removeEventListener("mouseenter",_2),U.removeEventListener("mouseleave",s);if(U.parentNode)U.parentNode.removeChild(U);if(J.style.removeProperty("--vlist-custom-scrollbar-padding-top"),J.style.removeProperty("--vlist-custom-scrollbar-padding-right"),J.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),J.style.removeProperty("--vlist-custom-scrollbar-padding-left"),y.parentNode)y.parentNode.removeChild(y)};if(S(),y.addEventListener("click",f),y.addEventListener("mousedown",p),y.addEventListener("mouseenter",_2),y.addEventListener("mouseleave",s),W.addEventListener("mousedown",x),J.addEventListener("mouseenter",q2),J.addEventListener("mouseleave",Z2),U.addEventListener("click",f),U.addEventListener("mousedown",p),b)U.addEventListener("mouseenter",_2),U.addEventListener("mouseleave",s);return{show:z,hide:t,updateBounds:A,updatePosition:k,isVisible:()=>U2,destroy:X2}};var cJ=50,rJ=0.1;function lJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(b){if(Q=b,b>rJ&&b<cJ)$+=b,j++}function B(){let b=J.getTotal();if(b===0)return 0;let M=J.getItemSize();if(M<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let E=J.getScrollPosition(),L=typeof J.getColumns==="function"?J.getColumns():1,V=Math.ceil(b/L)*M,K=Math.min(V,W2)-N,Z=V-N,F=K>0?Z/K:1,H=E*F,P=Math.ceil((H+N)/M);return Math.min(P*L,b)}function G(){let b=J.getTotal(),M=B();return{progress:b>0?Math.min(100,Math.max(0,M/b*100)):0,velocity:Q,velocityAvg:q(),itemCount:M,total:b}}return{getState:G,onVelocity:Y}}export{n2 as toggleSelection,VJ as simpleVisibleRange,S2 as selectItems,o2 as selectAll,HJ as rangesEqual,w2 as rafThrottle,qJ as needsScaling,P2 as mergeRanges,t2 as isSelected,O2 as isPlaceholderItem,bJ as isInRange,T2 as isGroupHeader,JJ as getSelectedItems,e2 as getSelectedIds,H2 as getScaleState,KJ as getScaleInfo,H2 as getScale,TJ as getRangeCount,BJ as getMaxItemsWithoutScaling,h2 as filterPlaceholders,RJ as diffRanges,f2 as deselectItems,ZJ as createTableRenderer,NJ as createTableLayout,UJ as createTableHeader,c2 as createStickyHeader,lJ as createStats,y2 as createSparseStorage,L2 as createSizeCache,s2 as createSelectionState,wJ as createScrollbar,zJ as createScrollController,k2 as createPlaceholderManager,DJ as createMeasuredSizeCache,_J as createMasonryRenderer,GJ as createMasonryLayout,m2 as createGroupedSizeFn,d2 as createGroupLayout,XJ as createGridRenderer,r2 as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,i2 as clearSelection,FJ as clampScrollPosition,OJ as calculateTotalSize,LJ as calculateScrollToIndex,QJ as calculateScaledVisibleRange,YJ as calculateScaledScrollToIndex,$J as calculateScaledRenderRange,F2 as calculateScaledItemPosition,WJ as calculateRenderRange,b2 as calculateMissingRanges,AJ as calculateItemOffset,jJ as calculateIndexFromScrollPosition,EJ as calculateActualSize,u2 as buildLayoutItems,W2 as MAX_VIRTUAL_SIZE};
|
package/dist/size.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"base":{"minified":"27.5","gzipped":"10.6"},"withGrid":{"minified":"39.5","gzipped":"14.4"},"withMasonry":{"minified":"37.1","gzipped":"13.9"},"withGroups":{"minified":"35.9","gzipped":"13.3"},"withAsync":{"minified":"40.5","gzipped":"15.1"},"withSelection":{"minified":"37.
|
|
1
|
+
{"base":{"minified":"27.5","gzipped":"10.6"},"withGrid":{"minified":"39.5","gzipped":"14.4"},"withMasonry":{"minified":"37.1","gzipped":"13.9"},"withGroups":{"minified":"35.9","gzipped":"13.3"},"withAsync":{"minified":"40.5","gzipped":"15.1"},"withSelection":{"minified":"37.9","gzipped":"13.4"},"withScale":{"minified":"40.5","gzipped":"14.2"},"withScrollbar":{"minified":"33.6","gzipped":"12.3"},"withPage":{"minified":"29.8","gzipped":"11.3"},"withSnapshots":{"minified":"30.2","gzipped":"11.4"},"withTable":{"minified":"45.1","gzipped":"16.1"},"withAutoSize":{"minified":"30.3","gzipped":"11.5"}}
|
package/dist/types.d.ts
CHANGED
|
@@ -226,6 +226,8 @@ export interface ScrollSnapshot {
|
|
|
226
226
|
total?: number;
|
|
227
227
|
/** Selected item IDs (optional, included for convenience) */
|
|
228
228
|
selectedIds?: Array<string | number>;
|
|
229
|
+
/** Focused item ID (optional, restores keyboard navigation position) */
|
|
230
|
+
focusedId?: string | number;
|
|
229
231
|
}
|
|
230
232
|
/** Options for scrollToIndex / scrollToItem */
|
|
231
233
|
export interface ScrollToOptions {
|
|
@@ -307,6 +309,17 @@ export interface ScrollbarOptions {
|
|
|
307
309
|
*/
|
|
308
310
|
showOnViewportEnter?: boolean;
|
|
309
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Per-side padding for the scrollbar track.
|
|
314
|
+
* Each side defaults to the global `PADDING` constant when omitted.
|
|
315
|
+
* A plain number is shorthand for all four sides.
|
|
316
|
+
*/
|
|
317
|
+
export type ScrollbarPadding = number | {
|
|
318
|
+
top?: number;
|
|
319
|
+
right?: number;
|
|
320
|
+
bottom?: number;
|
|
321
|
+
left?: number;
|
|
322
|
+
};
|
|
310
323
|
/**
|
|
311
324
|
* Scrollbar configuration.
|
|
312
325
|
* @deprecated Use `scroll.scrollbar` in `ScrollConfig` instead.
|
|
@@ -436,6 +449,11 @@ export interface VListEvents<T extends VListItem = VListItem> extends EventMap {
|
|
|
436
449
|
selected: Array<string | number>;
|
|
437
450
|
items: T[];
|
|
438
451
|
};
|
|
452
|
+
/** Focused item changed (keyboard navigation) */
|
|
453
|
+
"focus:change": {
|
|
454
|
+
id: string | number;
|
|
455
|
+
index: number;
|
|
456
|
+
};
|
|
439
457
|
/** Scroll position changed */
|
|
440
458
|
scroll: {
|
|
441
459
|
scrollPosition: number;
|
package/dist/vlist-table.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.vlist--table{overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{overflow:auto}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-
|
|
1
|
+
.vlist--table{display:flex;flex-direction:column;overflow:hidden;min-height:inherit}.vlist--table .vlist-viewport{flex:1;min-height:0;height:auto;overflow:auto}.vlist--table .vlist-table-header{position:static}.vlist--table .vlist-scrollbar{top:calc(var(--vlist-table-header-height,0px)+var(--vlist-custom-scrollbar-padding-top,2px))}.vlist--table .vlist-scrollbar-hover{top:var(--vlist-table-header-height,0px);height:calc(100% - var(--vlist-table-header-height,0px))}.vlist--table .vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:block;width:0}.vlist--table .vlist-items{contain:layout style}.vlist-table-header{position:absolute;top:0;left:0;right:0;z-index:5;overflow:hidden;display:flex;align-items:stretch;box-sizing:border-box;will-change:scroll-position;contain:layout style;background-color:var(--vlist-bg,#ffffff);border-bottom:1px solid var(--vlist-border,#e5e7eb);font-weight:600;font-size:0.8125rem;letter-spacing:0.01em;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-scroll{position:relative;display:flex;align-items:stretch;height:100%;min-width:100%;flex-shrink:0}.vlist-table-header-cell{position:relative;display:flex;align-items:center;height:100%;box-sizing:border-box;flex-shrink:0;user-select:none;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);border-right:1px solid transparent;transition:background-color 0.15s ease}.vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-header-cell--sortable{cursor:pointer}.vlist-table-header-cell--sortable:active{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-header-cell--center{justify-content:center}.vlist-table-header-cell--right{justify-content:flex-end}.vlist-table-header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;pointer-events:none}.vlist-table-header-sort{margin-left:4px;flex-shrink:0;opacity:0;font-size:0.7em;transition:opacity 0.15s ease;pointer-events:none;color:var(--vlist-text-muted,#6b7280)}.vlist-table-header-resize{position:absolute;top:0;right:-3px;bottom:0;width:5px;cursor:col-resize;z-index:2;touch-action:none;opacity:0;transition:opacity 0.15s ease}.vlist-table-header-resize::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;transform:translateX(-50%);background-color:var(--vlist-border,#e5e7eb);transition:background-color 0.15s ease}.vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}.vlist-table-header-cell:hover .vlist-table-header-resize{opacity:1}.vlist-table-header-resize--active{opacity:1}.vlist-table-header-resize--active::after{background-color:var(--vlist-border-selected,#3b82f6)}.vlist--col-resizing,.vlist--col-resizing *{cursor:col-resize !important;user-select:none !important}.vlist-table-row{position:absolute;top:0;left:0;display:flex;box-sizing:border-box;contain:content;border-bottom:none;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration,150ms) var(--vlist-transition-timing,ease-in-out);will-change:transform}.vlist--scrolling .vlist-table-row{transition:none}.vlist-table-row.vlist-item--odd{background:var( --vlist-bg-striped,var(--vlist-bg-hover,rgba(0,0,0,0.02)) )}.vlist--selectable .vlist-table-row{cursor:pointer}.vlist--selectable .vlist-table-row:hover{background-color:var(--vlist-bg-hover,rgba(0,0,0,0.04))}.vlist-table-row.vlist-item--selected{background-color:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist-table-row.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected,rgba(59,130,246,0.12))}.vlist--selectable .vlist-table-row.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover,rgba(59,130,246,0.18))}.vlist--selectable .vlist-table-row.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover,rgba(59,130,246,0.18))}.vlist-table-row.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-table-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem);font-size:0.875rem;color:var(--vlist-text,#111827)}.vlist-table-cell--center{text-align:center;justify-content:center}.vlist-table-cell--right{text-align:right;justify-content:flex-end}.vlist--table-row-borders .vlist-table-row{border-bottom:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-cell{border-right:1px solid var(--vlist-border,#e5e7eb)}.vlist--table-col-borders .vlist-table-header-cell{border-right-color:var(--vlist-border,#e5e7eb)}.vlist-table-group-header{display:flex;align-items:center;background-color:var(--vlist-bg,#ffffff);cursor:default;user-select:none;pointer-events:none}.vlist-table-group-header-content{flex:1;min-width:0;padding-left:var(--vlist-item-padding-x,0.75rem);padding-right:var(--vlist-item-padding-x,0.75rem)}.vlist--table-row-borders .vlist-table-group-header{border-bottom:none;border-top:1px solid var(--vlist-border,#e5e7eb)}.vlist--table.vlist--grouped .vlist-sticky-header{z-index:4}[data-theme-mode="dark"] .vlist-table-header,.dark .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-cell:hover,.dark .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(255,255,255,0.06))}[data-theme-mode="dark"] .vlist-table-header-resize::after,.dark .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}[data-theme-mode="dark"] .vlist-table-header-resize:hover::after,.dark .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}[data-theme-mode="dark"] .vlist-table-group-header,.dark .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header{background-color:var(--vlist-bg,#111827);color:var(--vlist-text-muted,#9ca3af);border-bottom-color:var(--vlist-border,#374151)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-cell:hover{background-color:var(--vlist-bg-hover,rgba(255,255,255,0.06))}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-resize::after{background-color:var(--vlist-border,#374151)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-header-resize:hover::after{background-color:var(--vlist-focus-ring,#3b82f6)}:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist-table-group-header{background-color:var(--vlist-bg,#111827)}}.vlist-table-row.vlist-item--placeholder .vlist-table-cell{color:transparent}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*{color:transparent;background-color:var(--vlist-border,#e5e7eb);border-radius:4px;animation:vlist-placeholder-pulse 2s ease-in-out infinite;line-height:1;min-width:1em}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*>*{visibility:hidden}.vlist-table-row.vlist-item--placeholder .vlist-table-cell>*[style]{background:var(--vlist-border,#e5e7eb) !important;color:transparent !important}[data-theme-mode="dark"] .vlist--table-row-borders .vlist-table-group-header,.dark .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]) .vlist--table-row-borders .vlist-table-group-header{border-top-color:var(--vlist-border,#374151)}}
|
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}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-width:8px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-radius:
|
|
1
|
+
@keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-scrollbar-width:8px;--vlist-scrollbar-track-color:transparent;--vlist-scrollbar-radius:4px;--vlist-custom-scrollbar-width:8px;--vlist-custom-scrollbar-track-color:transparent;--vlist-custom-scrollbar-radius:4px;--vlist-custom-scrollbar-padding-top:2px;--vlist-custom-scrollbar-padding-right:2px;--vlist-custom-scrollbar-padding-bottom:2px;--vlist-custom-scrollbar-padding-left:2px;--vlist-custom-scrollbar-min-thumb-size:15px;--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-bg:#ffffff;--vlist-bg-hover:rgba(0,0,0,0.04);--vlist-bg-striped:rgba(0,0,0,0.02);--vlist-bg-selected:rgba(59,130,246,0.12);--vlist-bg-selected-hover:rgba(59,130,246,0.18);--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#f3f4f6;--vlist-scrollbar-thumb-color:#d1d5db;--vlist-scrollbar-thumb-hover-color:#9ca3af;--vlist-custom-scrollbar-thumb-color:rgba(0,0,0,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(0,0,0,0.3);--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]):not([data-theme-mode="dark"]){--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--vlist-placeholder-bg:rgba(255,255,255,0.3)}}.dark{--vlist-bg:#111827;--vlist-bg-hover:rgba(255,255,255,0.06);--vlist-bg-striped:rgba(255,255,255,0.02);--vlist-bg-selected:rgba(59,130,246,0.2);--vlist-bg-selected-hover:rgba(59,130,246,0.28);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-focus-ring:#3b82f6;--vlist-group-header-bg:#1e2433;--vlist-scrollbar-thumb-color:#4b5563;--vlist-scrollbar-thumb-hover-color:#6b7280;--vlist-custom-scrollbar-thumb-color:rgba(255,255,255,0.2);--vlist-custom-scrollbar-thumb-hover-color:rgba(255,255,255,0.3);--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);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,.vlist:focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-color:var(--vlist-scrollbar-thumb-color) var(--vlist-scrollbar-track-color)}@supports (-moz-appearance:none) and (scrollbar-width:1px){.vlist-viewport{scrollbar-width:var(--vlist-scrollbar-width)}}.vlist-viewport::-webkit-scrollbar{width:var(--vlist-scrollbar-width);height:var(--vlist-scrollbar-width)}.vlist-viewport::-webkit-scrollbar-track{background:var(--vlist-scrollbar-track-color)}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb-color);border-radius:var(--vlist-scrollbar-radius)}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover-color)}.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.vlist-item--odd{background:var(--vlist-bg-striped)}.vlist-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist-item.vlist-item--odd.vlist-item--selected{background:var(--vlist-bg-selected)}.vlist-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--odd.vlist-item--selected:hover{background:var(--vlist-bg-selected-hover)}.vlist-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:vlist-fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:var(--vlist-custom-scrollbar-padding-top);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:var(--vlist-custom-scrollbar-width);background-color:var(--vlist-custom-scrollbar-track-color);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-custom-scrollbar-thumb-color);border-radius:var(--vlist-custom-scrollbar-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-custom-scrollbar-thumb-hover-color)}.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;overflow:hidden}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{left:0;right:0;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border)}.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;left:var(--vlist-custom-scrollbar-padding-left);right:var(--vlist-custom-scrollbar-padding-right);bottom:var(--vlist-custom-scrollbar-padding-bottom);width:auto;height:var(--vlist-custom-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--gutter{padding-right:calc(var(--vlist-custom-scrollbar-padding-right)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-left))}.vlist--horizontal .vlist-viewport--gutter{padding-right:0;padding-bottom:calc(var(--vlist-custom-scrollbar-padding-bottom)+var(--vlist-custom-scrollbar-width)+var(--vlist-custom-scrollbar-padding-top))}.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}.vlist-viewport--gutter-stable{scrollbar-gutter:stable}
|