@floor/vlist 1.3.6 → 1.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
4
4
 
5
- **v1.3.6** — [Changelog](./changelog.txt)
5
+ **v1.3.8** — [Changelog](./changelog.txt)
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/%40floor%2Fvlist.svg)](https://www.npmjs.com/package/@floor/vlist)
8
8
  [![CI](https://github.com/floor/vlist/actions/workflows/ci.yml/badge.svg)](https://github.com/floor/vlist/actions/workflows/ci.yml)
@@ -10,13 +10,13 @@ Lightweight, high-performance virtual list with zero dependencies and dimension-
10
10
 
11
11
  - **Zero dependencies** — no external libraries
12
12
  - **Ultra memory efficient** — ~0.1-0.2 MB constant overhead regardless of dataset size
13
- - **~9.4 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
13
+ - **~9.9 KB gzipped** — pay only for features you use (vs 20 KB+ monolithic alternatives)
14
14
  - **Builder API** — composable features with perfect tree-shaking
15
15
  - **Grid, masonry, table, groups, async, selection, scale** — all opt-in
16
16
  - **Horizontal & vertical** — semantically correct orientation support
17
17
  - **Gap & padding** — built-in item spacing and content inset (CSS shorthand convention)
18
18
  - **Reverse, page-scroll, wrap** — every layout mode
19
- - **Accessible** — WAI-ARIA, keyboard navigation, focus-visible, screen-reader DOM ordering
19
+ - **Accessible** — WAI-ARIA, keyboard navigation, focus-visible, screen-reader DOM ordering, ARIA live region
20
20
  - **React, Vue, Svelte** — framework adapters available
21
21
 
22
22
  **14+ interactive examples → [vlist.dev](https://vlist.dev)**
@@ -89,17 +89,17 @@ const list = vlist({
89
89
 
90
90
  | Feature | Size | Description |
91
91
  |---------|------|-------------|
92
- | **Base** | 9.4 KB | Core virtualization, gap & padding |
93
- | `withGrid()` | +4.0 KB | 2D grid layout with context injection |
92
+ | **Base** | 9.9 KB | Core virtualization, gap, padding, ARIA live region |
93
+ | `withGrid()` | +3.9 KB | 2D grid layout with context injection |
94
94
  | `withMasonry()` | +2.7 KB | Pinterest-style masonry layout |
95
- | `withGroups()` | +4.3 KB | Grouped lists with sticky/inline headers |
96
- | `withAsync()` | +4.0 KB | Lazy loading with adapters |
95
+ | `withGroups()` | +4.2 KB | Grouped lists with sticky/inline headers |
96
+ | `withAsync()` | +4.4 KB | Lazy loading with adapters |
97
97
  | `withSelection()` | +1.7 KB | Single/multiple selection + keyboard nav |
98
- | `withScale()` | +2.6 KB | 1M+ items via scroll compression |
99
- | `withScrollbar()` | +1.2 KB | Custom scrollbar UI |
100
- | `withTable()` | +5.0 KB | Data table with columns, resize, sort, groups |
98
+ | `withScale()` | +3.0 KB | 1M+ items via scroll compression |
99
+ | `withScrollbar()` | +1.1 KB | Custom scrollbar UI |
100
+ | `withTable()` | +5.1 KB | Data table with columns, resize, sort, groups |
101
101
  | `withPage()` | +0.4 KB | Document-level scrolling |
102
- | `withSnapshots()` | +0.5 KB | Scroll save/restore |
102
+ | `withSnapshots()` | +0.6 KB | Scroll save/restore |
103
103
 
104
104
  ## Examples
105
105
 
@@ -242,7 +242,10 @@ const list = vlist(config).use(...features).build()
242
242
  | `list.prependItems(items)` | Add to start (preserves scroll position) |
243
243
  | `list.updateItem(index, partial)` | Update a single item by index |
244
244
  | `list.removeItem(index)` | Remove by index |
245
+ | `list.getItemAt(index)` | Get item at index |
246
+ | `list.getIndexById(id)` | Get index by item ID |
245
247
  | `list.reload()` | Re-fetch from adapter (async) |
248
+ | `list.reload({ snapshot })` | Re-fetch and restore scroll position from snapshot |
246
249
 
247
250
  ### Navigation
248
251
 
@@ -309,6 +312,12 @@ list.on('load:error', ({ error, offset, limit }) => {})
309
312
  list.on('velocity:change', ({ velocity, reliable }) => {})
310
313
  ```
311
314
 
315
+ ### Statistics (with `createStats()`)
316
+
317
+ | Method | Description |
318
+ |--------|-------------|
319
+ | `createStats(list)` | Create a stats tracker for scroll performance metrics |
320
+
312
321
  ### Properties
313
322
 
314
323
  | Property | Description |
@@ -334,7 +343,8 @@ withGroups({ getGroupForIndex, headerHeight, headerTemplate, sticky?: true })
334
343
  withSelection({ mode: 'single' | 'multiple', initial?: [...ids] })
335
344
  withAsync({ adapter: { read }, loading?: { cancelThreshold? } })
336
345
  withTable({ columns, rowHeight, headerHeight?, resizable?, columnBorders?, rowBorders? })
337
- withScale() // no config — auto-activates at 16.7M px
346
+ withScale() // auto-activates at 16.7M px
347
+ withScale({ force: true }) // force compression on any list size
338
348
  withScrollbar({ autoHide?, autoHideDelay?, minThumbSize? })
339
349
  withPage() // no config — uses document scroll
340
350
  withSnapshots() // included by default
@@ -405,11 +415,11 @@ This makes the codebase clearer and eliminates semantic confusion when working w
405
415
 
406
416
  | Configuration | Gzipped |
407
417
  |---------------|---------|
408
- | Base only | 9.4 KB |
409
- | + Grid | 13.3 KB |
410
- | + Groups | 13.7 KB |
411
- | + Async | 13.4 KB |
412
- | + Table | 14.3 KB |
418
+ | Base only | 9.9 KB |
419
+ | + Grid | 13.8 KB |
420
+ | + Groups | 14.1 KB |
421
+ | + Async | 14.3 KB |
422
+ | + Table | 15.0 KB |
413
423
 
414
424
  ### Memory Efficiency
415
425
 
@@ -7,6 +7,8 @@ export interface DOMStructure {
7
7
  viewport: HTMLElement;
8
8
  content: HTMLElement;
9
9
  items: HTMLElement;
10
+ /** Visually-hidden live region for screen reader range announcements */
11
+ liveRegion: HTMLElement;
10
12
  }
11
13
  export declare const resolveContainer: (container: HTMLElement | string) => HTMLElement;
12
14
  export declare const createDOMStructure: (container: HTMLElement, classPrefix: string, ariaLabel?: string, horizontal?: boolean) => DOMStructure;
@@ -21,5 +21,5 @@
21
21
  * @packageDocumentation
22
22
  */
23
23
  export { vlist } from "./core";
24
- export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, FeatureFactory, BuilderContext, BuilderState, ResolvedBuilderConfig, } from "./types";
24
+ export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, FeatureFactory, BuilderContext, ReloadOptions, BuilderState, ResolvedBuilderConfig, } from "./types";
25
25
  //# sourceMappingURL=index.d.ts.map
@@ -8,6 +8,39 @@ import type { CompressionState } from "../rendering/viewport";
8
8
  import type { SimpleDataManager } from "./data";
9
9
  import type { ScrollController } from "../features/scrollbar/controller";
10
10
  import type { Emitter } from "../events";
11
+ /** Options for the reload() method. */
12
+ export interface ReloadOptions {
13
+ /**
14
+ * Skip the initial page-1 load after resetting state.
15
+ * When true, reload() clears data and DOM but does NOT call loadInitial().
16
+ * The caller is responsible for loading data (e.g. via restoreScroll).
17
+ *
18
+ * Automatically set to true when `snapshot` is provided with meaningful data.
19
+ */
20
+ skipInitialLoad?: boolean;
21
+ /**
22
+ * Snapshot to restore after resetting state.
23
+ *
24
+ * When provided with meaningful data (total > 0 and index > 0),
25
+ * reload() automatically:
26
+ * 1. Skips loadInitial() (no wasted page-1 request)
27
+ * 2. Calls restoreScroll(snapshot) to load data at the target position
28
+ *
29
+ * This eliminates the need for the consumer to manually coordinate
30
+ * skipInitialLoad and restoreScroll after reload.
31
+ *
32
+ * ```ts
33
+ * // Before: manual coordination
34
+ * const hasRestorable = snapshot && snapshot.total > 0 && snapshot.index > 0;
35
+ * await list.reload(hasRestorable ? { skipInitialLoad: true } : undefined);
36
+ * if (hasRestorable) list.restoreScroll(snapshot);
37
+ *
38
+ * // After: vlist handles it
39
+ * await list.reload({ snapshot });
40
+ * ```
41
+ */
42
+ snapshot?: ScrollSnapshot;
43
+ }
11
44
  /** Configuration accepted by the builder's vlist() factory */
12
45
  export interface BuilderConfig<T extends VListItem = VListItem> {
13
46
  /** Container element or selector */
@@ -352,7 +385,9 @@ export interface VList<T extends VListItem = VListItem> {
352
385
  prependItems: (items: T[]) => void;
353
386
  updateItem: (id: string | number, updates: Partial<T>) => void;
354
387
  removeItem: (id: string | number) => void;
355
- reload: () => Promise<void>;
388
+ getItemAt: (index: number) => T | undefined;
389
+ getIndexById: (id: string | number) => number;
390
+ reload: (options?: ReloadOptions) => Promise<void>;
356
391
  scrollToIndex: (index: number, alignOrOptions?: "start" | "center" | "end" | ScrollToOptions) => void;
357
392
  cancelScroll: () => void;
358
393
  getScrollPosition: () => number;
@@ -11,8 +11,9 @@
11
11
  * - Placeholder generation — creates skeleton items for unloaded ranges
12
12
  * - Request deduplication — prevents duplicate fetches for the same range
13
13
  * - Idle handler — loads any pending ranges when scrolling stops
14
+ * - Snapshot-aware reload — reload({ snapshot }) skips page-1 and auto-restores position
14
15
  *
15
- * Added methods: reload
16
+ * Added methods: reload, loadVisibleRange
16
17
  * Added events: load:start, load:end, error
17
18
  */
18
19
  import type { VListItem, VListAdapter } from "../../types";
@@ -20,6 +20,24 @@
20
20
  */
21
21
  import type { VListItem } from "../../types";
22
22
  import type { VListFeature } from "../../builder/types";
23
+ /** Configuration options for the scale feature */
24
+ export interface ScaleConfig {
25
+ /**
26
+ * Force compressed scroll mode even when the total size is below the
27
+ * browser's ~16.7M pixel limit.
28
+ *
29
+ * When `true`, the feature always activates compressed scrolling
30
+ * (custom wheel/touch handling, lerp-based smooth scroll, custom
31
+ * scrollbar fallback) regardless of the list size. This is useful for:
32
+ *
33
+ * - **Testing** — verify compression behaviour with a small item set
34
+ * - **Consistent UX** — prefer the smooth scroll physics for all lists
35
+ * - **Pre-emptive** — avoid the mode switch when items are added at runtime
36
+ *
37
+ * @default false
38
+ */
39
+ force?: boolean;
40
+ }
23
41
  /**
24
42
  * Create a compression feature for the builder.
25
43
  *
@@ -40,5 +58,5 @@ import type { VListFeature } from "../../builder/types";
40
58
  * .build()
41
59
  * ```
42
60
  */
43
- export declare const withScale: <T extends VListItem = VListItem>() => VListFeature<T>;
61
+ export declare const withScale: <T extends VListItem = VListItem>(config?: ScaleConfig) => VListFeature<T>;
44
62
  //# sourceMappingURL=feature.d.ts.map
@@ -6,5 +6,5 @@
6
6
  * Usage: import { withScale } from 'vlist/compression'
7
7
  */
8
8
  export { MAX_VIRTUAL_SIZE, getCompressionState, needsCompression, getMaxItemsWithoutCompression, getCompressionInfo, calculateCompressedVisibleRange, calculateCompressedRenderRange, calculateCompressedItemPosition, calculateCompressedScrollToIndex, calculateIndexFromScrollPosition, type CompressionState, } from "../../rendering/scale";
9
- export { withScale } from "./feature";
9
+ export { withScale, type ScaleConfig } from "./feature";
10
10
  //# sourceMappingURL=index.d.ts.map
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@
10
10
  */
11
11
  export { vlist } from "./builder";
12
12
  export { withScale } from "./features/scale";
13
+ export type { ScaleConfig } from "./features/scale";
13
14
  export { withAsync } from "./features/async";
14
15
  export { withScrollbar } from "./features/scrollbar";
15
16
  export { withPage } from "./features/page";
@@ -19,6 +20,8 @@ export { withMasonry } from "./features/masonry";
19
20
  export { withSelection } from "./features/selection";
20
21
  export { withSnapshots } from "./features/snapshots";
21
22
  export { withTable } from "./features/table";
23
+ export { createStats } from "./utils/stats";
24
+ export type { Stats, StatsConfig, StatsState } from "./utils/stats";
22
25
  export type { VListItem, VListEvents, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridSizeContext, GridHeightContext, } from "./types";
23
- export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, } from "./builder";
26
+ export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, ReloadOptions, } from "./builder";
24
27
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var{defineProperty:i0,getOwnPropertyNames:gJ,getOwnPropertyDescriptor:xJ}=Object,mJ=Object.prototype.hasOwnProperty;var T2=new WeakMap,dJ=(J)=>{var X=T2.get(J),q;if(X)return X;if(X=i0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")gJ(J).map((j)=>!mJ.call(X,j)&&i0(X,j,{get:()=>J[j],enumerable:!(q=xJ(J,j))||q.enumerable}));return T2.set(J,X),X};var cJ=(J,X)=>{for(var q in X)i0(J,q,{get:X[q],enumerable:!0,configurable:!0,set:(j)=>X[q]=()=>j})};var k2=(J,X)=>()=>(J&&(X=J(J=0)),X);var lJ=(J,X)=>{let q=X;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},rJ=(J,X)=>{let q=X,j=new Float64Array(0),Y=(K)=>{q=K,j=new Float64Array(K+1),j[0]=0;for(let B=0;B<K;B++)j[B+1]=j[B]+J(B)};Y(X);let Q=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=j[q])return q-1;let B=0,N=q-1;while(B<N){let U=B+N+1>>>1;if(j[U]<=K)B=U;else N=U-1}return B};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return j[q];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Q(K),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(K)=>Y(K),isVariable:()=>!0}},w0=(J,X)=>{if(typeof J==="number")return lJ(J,X);return rJ(J,X)},m0=(J,X,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let Y=0,Q=0,K=X;while(K<j&&Q<q)Q+=J.getSize(K),Y++,K++;return Math.max(1,Y)},t0=(J,X,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getSize(0));let j=0,Y=0;for(let Q=q-1;Q>=0;Q--){let K=J.getSize(Q);if(Y+K>X)break;Y+=K,j++}return Math.max(j,1)},$2=(J,X,q)=>{if(q===0)return 0;let j=Math.floor(X),Y=X-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+Y*J.getSize(Q)};var S0=(J,X,q)=>{let j=Array.from(X).sort((K,B)=>K-B);if(j.length<=1)return;let Y=[];for(let K=0;K<j.length;K++){let B=q(j[K]);if(B)Y.push(B)}if(Y.length<=1)return;let Q=J.firstChild;for(let K=0;K<Y.length;K++){let B=Y[K];if(B===Q)Q=Q.nextSibling;else J.insertBefore(B,Q)}};var x2=3,m2="vlist",J2=200,I0=50,d2=50,c2=5,l2=2,Q2=16000000,r2=150,a2="x",s2=20,j2="_isPlaceholder",o2="__placeholder_";var R0=(J,X)=>{let q=X.getTotalSize(),j=q>Q2,Y=j?Q2:q,Q=q>0?Y/q:1;return{isCompressed:j,actualSize:q,virtualSize:Y,ratio:Q}},i2=(J,X,q,j,Y,Q)=>{if(j===0||X===0)return Q.start=0,Q.end=-1,Q;if(!Y.isCompressed){let A=q.indexAtOffset(J),v=q.indexAtOffset(J+X);if(v<j-1)v++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,v)),Q}let{virtualSize:K}=Y,N=J/K*j,U=Math.floor(N),W=m0(q,Math.max(0,U),X,j),w=Math.ceil(N)+W,y=K-X-J;if(y<=X&&y>=-1){let A=t0(q,X,j),v=Math.max(0,j-A),_=Math.max(0,Math.min(1,1-y/X));U=Math.floor(U+(v-U)*_),w=y<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,w)),Q},l0=(J,X,q,j,Y,Q,K)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);let{virtualSize:B}=Q,N=B-Y,U=N-X;if(U<=Y&&U>=-1){if(X>=N-1){let T=q.getTotalSize()-q.getOffset(J);return Y-T}let y=t0(q,Y,j),A=Math.max(0,j-y),_=X/B*j,G=Math.max(0,Math.min(1,1-U/Y)),E=q.getOffset(J)-q.getOffset(A),D=q.getOffset(J)-$2(q,_,j);return D+(E-D)*G}let W=X/B,w=q.getTotalSize(),k=W*w;return q.getOffset(J)-k},t2=(J,X,q,j,Y,Q="start")=>{if(j===0)return 0;let K;if(Y.isCompressed){if(Q==="end"&&J===j-1)return Math.max(0,Y.virtualSize-q);K=J/j*Y.virtualSize}else K=X.getOffset(J);let B=X.getSize(J);switch(Q){case"center":K-=(q-B)/2;break;case"end":K-=q-B;break}let N=Y.virtualSize-q;return Math.max(0,Math.min(K,N))};var q2=()=>{};var v0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var WJ={};cJ(WJ,{createGridRenderer:()=>K2});var q1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),X.push(Q)},clear:()=>{X.length=0}}},X1=1,K2=(J,X,q,j,Y,Q,K,B,N=!1)=>{let U=q1(),W=new Map,w=Q,k=!1,y=null,A=0,v=0,_="",G=-1,E=(F)=>{if(y&&A===F)return y;return y=R0(F,q),A=F,y},D={selected:!1,focused:!1},T=(F,x)=>{return D.selected=F,D.focused=x,D},$=`${Y}-item ${Y}-grid-item`,V=`${Y}-item--selected`,u=`${Y}-item--focused`,c=(F,x)=>{if(typeof x==="string")F.innerHTML=x;else F.replaceChildren(x)},r=(F,x,z)=>{F.classList.toggle(V,x),F.classList.toggle(u,z)},S=(F,x)=>{let z=j.getRow(F);if(x){let O=x.totalItems,m=E(O);if(m.isCompressed)return l0(z,x.scrollPosition,q,O,x.containerSize,m,x.rangeStart)}return q.getOffset(z)},H=(F,x)=>{let z=k&&j.getCol(F)===0,O=z?0:j.getCol(F),m=z?0:j.getColumnOffset(O,w),I;if(k){let s=j.getRow(F),b=0,o=new Set;for(let j0=0;j0<F;j0++){let f=j.getRow(j0);if(f<s&&!o.has(f)){let n=q.getSize(j0);b+=n,o.add(f)}}I=b}else I=S(F,x);if(N)return`translate(${Math.round(I)}px, ${Math.round(m)}px)`;return`translate(${Math.round(m)}px, ${Math.round(I)}px)`},g=(F,x)=>{F.style.transform=x},t=(F,x)=>{let z=F.dataset.id?.startsWith("__group_header"),O=z?w:j.getColumnWidth(w),m;if(k||z)m=q.getSize(x)-j.gap;else{let I=j.getRow(x);m=q.getSize(I)-j.gap}if(N)F.style.width=`${m}px`,F.style.height=`${O}px`;else F.style.width=`${O}px`,F.style.height=`${m}px`},h=(F,x,z,O,m)=>{let I=U.acquire(),s=T(z,O);if(I.className=$,I.dataset.index=String(F),I.dataset.id=String(x.id),I.dataset.row=String(j.getRow(F)),I.dataset.col=String(j.getCol(F)),I.ariaSelected=String(z),B)I.id=`${B}-item-${F}`;if(K){let o=K();if(o!==G)G=o,_=String(o);I.setAttribute("aria-setsize",_),I.setAttribute("aria-posinset",String(F+1))}t(I,F);let b=X(x,F,s);return c(I,b),r(I,z,O),g(I,m),{element:I,lastItemId:x.id,lastSelected:z,lastFocused:O,lastTransform:m,lastSeenFrame:v}},R=(F,x,z,O,m)=>{if(v++,x.start===0&&F.length>0)k=v0(F[0]);for(let[b,o]of W)if(b>=x.start&&b<=x.end)o.lastSeenFrame=v;else if(v-o.lastSeenFrame>X1)U.release(o.element),W.delete(b);let I=!1;if(K){let b=K();if(b!==G)G=b,_=String(b),I=!0}let s=null;for(let b=x.start;b<=x.end;b++){let o=b-x.start,j0=F[o];if(!j0){console.warn(`⚠️ RENDER: Missing item at index ${b} (range: ${x.start}-${x.end}, items.length: ${F.length})`);continue}let f=z.has(j0.id),n=b===O,i=W.get(b);if(i){let q0=i.lastItemId!==j0.id,X0=i.lastSelected!==f,Y0=i.lastFocused!==n;if(q0||X0||Y0){if(q0){let Z0=T(f,n),K0=X(j0,b,Z0);c(i.element,K0),i.element.dataset.id=String(j0.id),i.element.dataset.row=String(j.getRow(b)),i.element.dataset.col=String(j.getCol(b)),t(i.element,b)}r(i.element,f,n),i.element.ariaSelected=String(f),i.lastItemId=j0.id,i.lastSelected=f,i.lastFocused=n}let e=H(b,m);if(i.lastTransform!==e)g(i.element,e),i.lastTransform=e;if(I)i.element.setAttribute("aria-setsize",_)}else{let q0=H(b,m),X0=h(b,j0,f,n,q0);if(!s)s=document.createDocumentFragment();s.appendChild(X0.element),W.set(b,X0)}}if(s)J.appendChild(s)},p=(F)=>{for(let[x,z]of W){let O=H(x,F);if(z.lastTransform!==O)g(z.element,O),z.lastTransform=O}},P=(F,x,z,O)=>{let m=W.get(F);if(!m)return;let I=m.lastItemId!==x.id,s=m.lastSelected!==z,b=m.lastFocused!==O;if(I||s||b){let o=T(z,O),j0=X(x,F,o);c(m.element,j0),r(m.element,z,O),m.element.dataset.id=String(x.id),m.element.ariaSelected=String(z),t(m.element,F),m.lastItemId=x.id,m.lastSelected=z,m.lastFocused=O}},M=(F,x,z)=>{let O=W.get(F);if(!O)return;let m=O.lastSelected!==x,I=O.lastFocused!==z;if(m||I)r(O.element,x,z),O.lastSelected=x,O.lastFocused=z},L=(F)=>{return W.get(F)?.element},Z=(F)=>{if(Math.abs(F-w)<1)return;w=F;for(let[x,z]of W){t(z.element,x);let O=H(x);g(z.element,O),z.lastTransform=O}},C=()=>{S0(J,W.keys(),(F)=>W.get(F)?.element)},a=()=>{for(let[,F]of W)U.release(F.element);W.clear()};return{render:R,updatePositions:p,updateItem:P,updateItemClasses:M,getElement:L,sortDOM:C,updateContainerWidth:Z,clear:a,destroy:()=>{a(),U.clear()}}};var B2=k2(()=>{q2()});var H2=2,b2=(J=0)=>{let X=[,,,,,];for(let q=0;q<5;q++)X[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},y2=(J,X)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=X,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,K=J.samples[Q],B=X-K.position,N=q-K.time;J.velocity=N>0?Math.abs(B)/N:0}return J.lastPosition=X,J.lastTime=q,J};var P2=(J,X)=>{let q=new Map,j=(Q)=>{let K=q.get(Q);return K!==void 0?K:J},Y=w0(j,X);return{getOffset(Q){return Y.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return Y.indexAtOffset(Q)},getTotalSize(){return Y.getTotalSize()},getTotal(){return Y.getTotal()},rebuild(Q){if(Q<Y.getTotal()){for(let K of q.keys())if(K>=Q)q.delete(K)}Y=w0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,K){q.set(Q,K)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var w2=()=>{let J={},X=(B,N)=>{if(!J[B])J[B]=new Set;return J[B].add(N),()=>q(B,N)},q=(B,N)=>{J[B]?.delete(N)};return{on:X,off:q,emit:(B,N)=>{J[B]?.forEach((U)=>{try{U(N)}catch(W){console.error(`[vlist] Error in event handler for "${String(B)}":`,W)}})},once:(B,N)=>{let U=(W)=>{q(B,U),N(W)};return X(B,U)},clear:(B)=>{if(B)delete J[B];else for(let N in J)delete J[N]},listenerCount:(B)=>{return J[B]?.size??0}}};var R2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},v2=(J,X,q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);Y.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${X}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let K=document.createElement("div");if(K.className=`${X}-content`,K.style.position="relative",j)K.style.height="100%";else K.style.width="100%";let B=document.createElement("div");if(B.className=`${X}-items`,B.setAttribute("role","listbox"),q)B.setAttribute("aria-label",q);if(j)B.setAttribute("aria-orientation","horizontal");if(B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";return K.appendChild(B),Q.appendChild(K),Y.appendChild(Q),J.appendChild(Y),{root:Y,viewport:Q,content:K,items:B}};var z2=(J=100)=>{let X=[];return{acquire:()=>{let q=X.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(X.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),X.push(q)},clear:()=>{X.length=0}}};var C2=(J,X,q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let Q=q.indexAtOffset(J),K=m0(q,Q,X,j),B=Q+K;Y.start=Math.max(0,Q),Y.end=Math.min(j-1,Math.max(0,B))},S2=(J,X,q,j)=>{if(q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(q-1,J.end+X)},f2=(J,X,q,j,Y,Q=0)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U+Q-q),w;switch(Y){case"center":w=B-(q-N)/2;break;case"end":w=Q>0&&B+N>=U?W:B-q+N;break;default:w=B}return Math.max(0,Math.min(w,W))};var d0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return d0;if(typeof J==="number")return J===0?d0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,K]=J;return Q===0&&K===0?d0:{top:Q,right:K,bottom:Q,left:K}}let[X,q,j,Y]=J;return X===0&&q===0&&j===0&&Y===0?d0:{top:X,right:q,bottom:j,left:Y}},c0=(J,X)=>X?J.left+J.right:J.top+J.bottom,C0=(J,X)=>X?J.top+J.bottom:J.left+J.right;var I2=(J,X)=>{let{dom:q,emitter:j,resolvedConfig:Y,rawConfig:Q,rendered:K,pool:B,sharedState:N,isHorizontal:U,classPrefix:W,contentSizeHandlers:w,idleHandlers:k,afterScroll:y,clickHandlers:A,keydownHandlers:v,resizeHandlers:_,destroyHandlers:G,methods:E,onScrollFrame:D,resizeObserver:T,renderRange:$}=X;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return Y},get rawConfig(){return Q},adjustScrollPosition(V){if(J.mp===0)return V;let u=U?J.cw:J.ch,c=J.hc.getTotalSize(),r=Math.max(0,c-u),S=Math.max(0,c+J.mp-u);if(V>=r)return S;return Math.min(V,S)},get renderer(){return{render:(V,u,c,r,S)=>{J.ss=c,J.fi=r,J.ffn()},updateItemClasses:(V,u,c)=>{let r=K.get(V);if(!r)return;r.classList.toggle(`${W}-item--selected`,u),r.classList.toggle(`${W}-item--focused`,c),r.ariaSelected=u?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(V)=>K.get(V)??null,clear:()=>{},destroy:()=>{}}},set renderer(V){},get dataManager(){return J.dm},set dataManager(V){J.dm=V},get scrollController(){return J.sc},set scrollController(V){J.sc=V},state:N,getContainerWidth(){return J.cw},afterScroll:y,idleHandlers:k,clickHandlers:A,keydownHandlers:v,resizeHandlers:_,contentSizeHandlers:w,destroyHandlers:G,methods:E,replaceTemplate(V){J.at=V},replaceRenderer(V){},replaceDataManager(V){J.dm=V},replaceScrollController(V){J.sc=V},getItemsForRange(V){let{dm:u,it:c}=J,r=[];for(let S=V.start;S<=V.end;S++){let H=u?u.getItem(S):c[S];if(H)r.push(H)}return r},getAllLoadedItems(){let V=J.dm;if(V){let u=V.getTotal(),c=[];for(let r=0;r<u;r++){let S=V.getItem(r);if(S)c.push(S)}return c}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let V=J.hc;return{isCompressed:!1,actualSize:V.getTotalSize(),virtualSize:V.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:$.start}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,V]of K)V.remove(),B.release(V);K.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(V,u){J.rfn=V,J.ffn=u},setVirtualTotalFn(V){J.vtf=V},rebuildSizeCache(V){J.hc.rebuild(V??J.vtf())},setSizeConfig(V){if(J.hc=w0(V,J.vtf()),J.gp>0){let u=J.hc.getTotalSize,c=J.gp;J.hc.getTotalSize=()=>{let r=u();return r>0?r-c:0}}},updateContentSize(V){let u=`${V+J.mp}px`;if(U)q.content.style.width=u;else q.content.style.height=u},updateCompressionMode(){},setVisibleRangeFn(V){J.gvr=V},setScrollToPosFn(V){J.gsp=V},setPositionElementFn(V){J.pef=V},setScrollFns(V,u){J.sgt=V,J.sst=(c)=>{u(c),D()}},setScrollTarget(V){J.st.removeEventListener("scroll",D),J.st=V,J.st.addEventListener("scroll",D,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(V){J.gcw=V.width,J.gch=V.height,J.cw=V.width(),J.ch=V.height(),N.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,T.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(V){J.sif=V}}},p2=(J,X,q)=>{let{rendered:j,itemState:Y,contentSizeHandlers:Q,applyTemplate:K,updateContentSize:B}=X,N=()=>{J.hc.rebuild(J.vtf()),B(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let w=J.it,k=[],y=Math.max(0,U),A=Math.min(W,w.length-1);for(let v=y;v<=A;v++)k.push(w[v]);return k},setTotal:(U)=>{},setItems:(U,W=0,w)=>{let k=J.it;if(W===0&&(w!==void 0||k.length===0))J.it=U;else{let y=W+U.length;if(k.length<y)k.length=y;for(let A=0;A<U.length;A++)k[W+A]=U[A]}if(J.ii)N()},updateItem:(U,W)=>{let w=J.it;if(U<0||U>=w.length)return!1;let k=w[U];if(!k)return!1;w[U]={...k,...W};let y=j.get(U);if(y)K(y,J.at(w[U],U,Y)),y.dataset.id=String(w[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((w)=>w.id===U);if(W<0||W>=J.it.length)return!1;if(J.it.splice(W,1),J.ii)N();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},h2=(J,X)=>{let{dom:q,classPrefix:j}=X;return{getScrollTop:()=>J.sgt(),scrollTo:(Y)=>{J.sst(Y),J.ls=Y,J.rfn()},scrollBy:(Y)=>{let Q=J.sgt()+Y;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(Y=2)=>J.sab(Y),getScrollPercentage:()=>{let Y=J.hc.getTotalSize(),Q=Math.max(0,Y-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(Y)=>{J.ch=Y},destroy:()=>{}}};var u2=(J,X,q,j,Y,Q,K,B,N,U=0)=>{let W=(_,G=!1)=>{let E=q?X.viewport.scrollWidth-X.viewport.clientWidth:X.viewport.scrollHeight-X.viewport.clientHeight;if(E<=0||_<E-2)return!1;let D=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(D>_){if(J.sst(D),J.ls=D,G)J.rfn();return!0}return!1};if(!N||!B)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let w=new WeakMap,k=0,y=!1,A=null,v=()=>{if(y){let _=J.sgt();K(),y=!1,W(_,!0)}};return A=new ResizeObserver((_)=>{if(J.id)return;let G=!1,E=j.start;for(let D of _){let T=w.get(D.target);if(T===void 0)continue;let $=q?D.borderBoxSize[0].inlineSize:D.borderBoxSize[0].blockSize;if(!B.isMeasured(T)){let V=$+U,u=B.getSize(T);if(B.setMeasuredSize(T,V),G=!0,T<E&&V!==u)k+=V-u;A.unobserve(D.target);let c=D.target;if(q)c.style.width=`${$}px`;else c.style.height=`${$}px`}}if(!G)return;if(B.rebuild(J.vtf()),J.hc=B,k!==0){let D=J.sgt();J.sst(D+k),J.ls=D+k,k=0}if(Q())y=!0;else{let D=J.sgt();K(),y=!1,W(D)}Y.start=-1,Y.end=-1,J.rfn()}),{ob:A,ei:w,mc:B,fl:v,se:W}};var e0=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,y0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,X)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,K,B)=>{if(j(),Math.abs(K-Q)<1){J.scrollTo(K);return}let N=performance.now(),U=(W)=>{let w=W-N,k=Math.min(w/B,1),y=Q+(K-Q)*e0(k);if(J.scrollTo(y),X(),k<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var g2=(J,X,q,j,Y,Q,K,B,N,U,W,w,k,y,A,v,_,G)=>{let E=(M)=>{N.dataManager.setItems(M,0,M.length)},D=U?(M)=>{let L=J.sab(2),Z=J.it.length;if(N.dataManager.setItems(M,Z),L&&J.it.length>0){let C=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(C),J.ls=C,J.rfn()}}:(M)=>{let L=J.it.length;N.dataManager.setItems(M,L)},T=U?(M)=>{let L=J.sgt(),Z=J.hc.getTotalSize(),C=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...M,...C],0);let d=J.hc.getTotalSize()-Z;if(d>0)J.sst(L+d),J.ls=L+d}:(M)=>{let L=[...J.it];N.dataManager.clear(),N.dataManager.setItems([...M,...L],0)},$=(M,L)=>{N.dataManager.updateItem(M,L)},V=!1,u=(M)=>{let L=N.dataManager.removeItem(M);if(L){if(q.emit("data:change",{type:"remove",id:M}),N.forceRender(),!V){let Z=N.dataManager;if(typeof Z.ensureRange==="function")V=!0,queueMicrotask(()=>{V=!1;let{start:C,end:a}=N.state.viewportState.renderRange;if(a>=C)Z.ensureRange(C,a).catch(()=>{})})}}return L},c=async()=>{if(N.dataManager.reload)await N.dataManager.reload()},r=null,S=()=>{if(r!==null)cancelAnimationFrame(r),r=null},H=(M,L,Z)=>{if(S(),Math.abs(L-M)<1){J.sst(L),J.ls=L,J.rfn();return}let C=performance.now(),a=(d)=>{let F=d-C,x=Math.min(F/Z,1),z=M+(L-M)*e0(x);if(J.sst(z),J.ls=z,J.rfn(),x<1)r=requestAnimationFrame(a);else r=null};r=requestAnimationFrame(a)},g=(M,L)=>{let{align:Z,behavior:C,duration:a}=y0(L),d=J.vtf(),F=M;if(W&&d>0)F=(F%d+d)%d;let x=J.gsp(F,J.hc,J.ch,d,Z);if(C==="smooth")H(J.sgt(),x,a);else S(),J.sst(x)},t=()=>J.sgt(),h=(M,L)=>{return q.on(M,L)},R=(M,L)=>{q.off(M,L)},p=()=>{if(J.id)return;if(J.id=!0,N.state.isDestroyed=!0,X.items.removeEventListener("click",w),X.items.removeEventListener("dblclick",k),X.root.removeEventListener("keydown",y),J.st.removeEventListener("scroll",A),v.disconnect(),_(),J.wh)X.viewport.removeEventListener("wheel",J.wh);G();for(let M=0;M<B.length;M++)B[M]();for(let M of K)if(M.destroy)M.destroy();S();for(let[,M]of j)M.remove(),Y.release(M);j.clear(),Y.clear(),q.emit("destroy",void 0),q.clear(),X.root.remove()},P={get element(){return X.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):E,appendItems:Q.has("appendItems")?Q.get("appendItems"):D,prependItems:Q.has("prependItems")?Q.get("prependItems"):T,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):u,reload:Q.has("reload")?Q.get("reload"):c,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):g,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):S,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):t,on:h,off:R,destroy:p};for(let[M,L]of Q){if(M.charCodeAt(0)===95||M==="setItems"||M==="appendItems"||M==="prependItems"||M==="updateItem"||M==="removeItem"||M==="reload"||M==="scrollToIndex"||M==="scrollToItem"||M==="cancelScroll"||M==="getScrollPosition")continue;P[M]=L}return P};var aJ=0,n2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.orientation==="horizontal",q=X?"width":"height",j=X?"estimatedWidth":"estimatedHeight",Y=X?J.item.width:J.item.height,Q=X?J.item.estimatedWidth:J.item.estimatedHeight;if(Y==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${X?" when orientation is 'horizontal'":""}`);if(Y!=null){if(typeof Y==="number"&&Y<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof Y!=="number"&&typeof Y!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let K=new Map,B=!1,N={use(U){if(B)throw Error("[vlist/builder] Cannot call .use() after .build()");return K.set(U.name,U),N},build(){if(B)throw Error("[vlist/builder] .build() can only be called once");return B=!0,sJ(J,K,X,Y,Q??null)}};return N};function sJ(J,X,q,j,Y){let{item:Q,items:K,overscan:B=x2,classPrefix:N=m2,ariaLabel:U,padding:W,reverse:w=!1,scroll:k}=J,y=k,A=y?.wheel??!0,v=y?.wrap??!1,_=w,G=`${N}-${aJ++}`,E=X.has("withGrid")||X.has("withMasonry")?0:Q.gap??0,D=j??Y,T=j==null&&Y!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,V=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,u={overscan:B,classPrefix:N,reverse:_,wrap:v,horizontal:q,ariaIdPrefix:G},c=Array.from(X.values()).sort((l,J0)=>(l.priority??50)-(J0.priority??50)),r=new Set(c.map((l)=>l.name));for(let l of c)if(l.conflicts){for(let J0 of l.conflicts)if(r.has(J0))throw Error(`[vlist/builder] ${l.name} and ${J0} cannot be combined`)}if(_){if(r.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let S=R2(J.container),H=v2(S,N,U,q);if(y?.wheel===!1)if(q)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(y?.scrollbar==="none")H.viewport.classList.add(`${N}-viewport--no-scrollbar`);let g=b0(W),t=c0(g,q);if(g.top||g.right||g.bottom||g.left)H.content.style.boxSizing="border-box",H.content.style.padding=`${g.top}px ${g.right}px ${g.bottom}px ${g.left}px`;let h=w2(),R=K||[],p=typeof D==="function"&&(X.has("withGrid")||X.has("withMasonry")),P=E>0?typeof D==="function"?(l)=>D(l)+E:D+E:D,M=T?P2(Y+E,R.length):w0(P,p?0:R.length);if(E>0){let l=M.getTotalSize;M.getTotalSize=()=>{let J0=l();return J0>0?J0-E:0}}let L=z2(),Z={it:R,hc:M,ch:H.viewport.clientHeight,cw:H.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:b2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,sst:q?(l)=>{H.viewport.scrollLeft=l}:(l)=>{H.viewport.scrollTop=l},sab:(l=2)=>{let J0=Z.hc.getTotalSize();return Z.ls+Z.ch>=J0-l},sic:!1,rfn:null,ffn:null,gvr:(l,J0,Q0,_0,G0)=>{C2(l,J0,Q0,_0,G0)},gsp:(l,J0,Q0,_0,G0)=>{return f2(l,J0,Q0,_0,G0,Z.mp)},pef:null,at:Q.template,vre:!0,st:H.viewport,wh:null,gcw:()=>Z.cw,gch:()=>Z.ch,gp:E,mp:t,sif:(l)=>l};Z.vtf=()=>Z.dm?Z.dm.getTotal():Z.it.length;let C=null,a=!1,d={start:0,end:0},F={start:0,end:0},x={start:-1,end:-1},z={viewportState:{scrollPosition:0,containerSize:q?Z.cw:Z.ch,totalSize:Z.hc.getTotalSize(),actualSize:Z.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},O=new Map,m=()=>{S0(H.items,O.keys(),(l)=>O.get(l))},I=()=>{let l=`${Z.hc.getTotalSize()+t}px`;if(q)H.content.style.width=l;else H.content.style.height=l},b=u2(Z,H,q,d,x,()=>a,I,T?M:null,T,E),o={selected:!1,focused:!1},j0=`${N}-item`,f=Q.striped,n=!!f,i=f==="data"||f==="even"||f==="odd",q0=`${N}-item--odd`,X0=[],Y0=[],e=[],Z0=[],K0=[],A0=[],M0=[],U0=new Map,V0=null,N0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,V0=U0.get("_getSelectedIds")??null,N0=U0.get("_getFocusedIndex")??null},s0=(l,J0)=>{if(typeof J0==="string")l.innerHTML=J0;else l.replaceChildren(J0)},zJ=(l,J0)=>{let Q0=Math.round(Z.hc.getOffset(J0));if(q)l.style.transform=`translateX(${Q0}px)`;else l.style.transform=`translateY(${Q0}px)`};Z.pef=zJ;let CJ=(l,J0)=>{let Q0=L.acquire();Q0.className=j0;let _0=!T||b.mc&&b.mc.isMeasured(l);if(q){if(_0)Q0.style.width=`${Z.hc.getSize(l)-E}px`;else Q0.style.width="";if(V!=null)Q0.style.height=`${V}px`}else if(_0)Q0.style.height=`${Z.hc.getSize(l)-E}px`;else Q0.style.height="";if(Q0.dataset.index=String(l),Q0.dataset.id=String(J0.id),Q0.ariaSelected="false",Q0.id=`${G}-item-${l}`,Z.la=String(Z.vtf()),Q0.setAttribute("aria-setsize",Z.la),Q0.setAttribute("aria-posinset",String(l+1)),String(J0.id).startsWith("__placeholder_"))Q0.classList.add(`${N}-item--placeholder`);if(n)if(i){let D0=Z.sif(l);if(D0<0)Q0.classList.remove(q0);else Q0.classList.toggle(q0,(D0&1)===1)}else Q0.classList.toggle(q0,(l&1)===1);return s0(Q0,Z.at(J0,l,o)),Z.pef(Q0,l),Q0},SJ=()=>{if(Z.id)return;T0();let l=V0?V0():Z.ss,J0=N0?N0():Z.fi,Q0=Z.vtf(),_0=q?Z.cw:Z.ch;if(Z.gvr(Z.ls,_0,Z.hc,Q0,d),S2(d,B,Q0,F),F.start===x.start&&F.end===x.end){if(Z.sic)for(let[B0,O0]of O)Z.pef(O0,B0);return}let G0=String(Q0),D0=G0!==Z.la;Z.la=G0;for(let[B0,O0]of O)if(B0<F.start||B0>F.end)O0.remove(),L.release(O0),O.delete(B0);let W0=document.createDocumentFragment(),L0=[],k0=[];for(let B0=F.start;B0<=F.end;B0++){let O0=Z.dm?Z.dm.getItem(B0):Z.it[B0];if(O0===void 0)continue;let E0=O.get(B0);if(E0){let H0=E0.dataset.id,p0=String(O0.id);if(H0!==p0){let uJ=H0?.startsWith("__placeholder_"),F2=p0.startsWith("__placeholder_");s0(E0,Z.at(O0,B0,o)),E0.dataset.id=p0;let L2=!T||b.mc&&b.mc.isMeasured(B0);if(q)E0.style.width=L2?`${Z.hc.getSize(B0)-E}px`:"";else E0.style.height=L2?`${Z.hc.getSize(B0)-E}px`:"";if(F2)E0.classList.add(`${N}-item--placeholder`);else E0.classList.remove(`${N}-item--placeholder`);if(uJ&&!F2)E0.classList.add(`${N}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${N}-item--replaced`)},300)}Z.pef(E0,B0);let x0=l.has(O0.id),hJ=B0===J0;if(E0.classList.toggle(`${N}-item--selected`,x0),E0.classList.toggle(`${N}-item--focused`,hJ),E0.ariaSelected=x0?"true":"false",D0)E0.setAttribute("aria-setsize",Z.la)}else{let H0=CJ(B0,O0);k0.push({index:B0,element:H0});let p0=l.has(O0.id),x0=B0===J0;if(p0)H0.classList.add(`${N}-item--selected`),H0.ariaSelected="true";if(x0)H0.classList.add(`${N}-item--focused`);W0.appendChild(H0),L0.push({index:B0,element:H0})}}if(L0.length>0){H.items.appendChild(W0);for(let{index:B0,element:O0}of L0)O.set(B0,O0)}if(T&&b.ob&&b.mc&&b.ei){for(let{index:B0,element:O0}of k0)if(!b.mc.isMeasured(B0))b.ei.set(O0,B0),b.ob.observe(O0)}x.start=F.start,x.end=F.end,z.lastRenderRange.start=F.start,z.lastRenderRange.end=F.end,z.viewportState.scrollPosition=Z.ls,z.viewportState.visibleRange.start=d.start,z.viewportState.visibleRange.end=d.end,z.viewportState.renderRange.start=F.start,z.viewportState.renderRange.end=F.end,h.emit("range:change",{range:{start:F.start,end:F.end}})},fJ=()=>{x.start=-1,x.end=-1,Z.rfn()};Z.rfn=SJ,Z.ffn=fJ;let IJ=()=>{H.root.classList.remove(`${N}--scrolling`),a=!1,Z.vt.velocity=0,Z.vt.sampleCount=0,h.emit("velocity:change",{velocity:0,reliable:!1}),b.fl(),m();for(let l=0;l<Y0.length;l++)Y0[l]();h.emit("scroll:idle",{scrollPosition:Z.ls})},pJ=()=>{if(C)clearTimeout(C);C=setTimeout(IJ,y?.idleTimeout??r2)},u0=()=>{if(Z.id)return;let l=Z.sgt();if(l===Z.ls&&a)return;let J0=l>=Z.ls?"down":"up";if(Z.vt=y2(Z.vt,l),!H.root.classList.contains(`${N}--scrolling`))H.root.classList.add(`${N}--scrolling`);a=!0,Z.ls=l,Z.rfn(),h.emit("scroll",{scrollPosition:l,direction:J0}),h.emit("velocity:change",{velocity:Z.vt.velocity,reliable:Z.vt.sampleCount>=H2});for(let Q0=0;Q0<X0.length;Q0++)X0[Q0](l,J0);pJ()},z0=null;if(Z.st.addEventListener("scroll",u0,{passive:!0}),A&&!q&&!$)z0=(l)=>{if(z.viewportState.isCompressed)return;let J0=H.viewport.scrollWidth>H.viewport.clientWidth;if(J0&&Math.abs(l.deltaX)>Math.abs(l.deltaY))return;if(l.preventDefault(),J0&&l.deltaX!==0)H.viewport.scrollLeft+=l.deltaX;let Q0=Z.sgt(),_0=H.viewport.scrollHeight-H.viewport.clientHeight,G0=Math.max(0,Math.min(Q0+l.deltaY,_0));if(Math.abs(G0-Q0)<1)return;Z.sst(G0),u0()},Z.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(l)=>{if(l.deltaX)return;l.preventDefault(),H.viewport.scrollLeft+=l.deltaY},Z.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});let M2=(l)=>{let J0=l.target.closest("[data-index]");if(!J0)return null;let Q0=parseInt(J0.dataset.index??"-1",10);if(Q0<0)return null;let _0=Z.dm?.getItem(Q0)??Z.it[Q0];if(!_0||_0.__groupHeader)return null;return{item:_0,index:Q0}},G2=(l)=>{let J0=M2(l);if(J0)h.emit("item:click",{item:J0.item,index:J0.index,event:l});for(let Q0=0;Q0<e.length;Q0++)e[Q0](l)},O2=(l)=>{let J0=M2(l);if(J0)h.emit("item:dblclick",{item:J0.item,index:J0.index,event:l})},E2=(l)=>{for(let J0=0;J0<Z0.length;J0++)Z0[J0](l)};H.items.addEventListener("click",G2),H.items.addEventListener("dblclick",O2),H.root.addEventListener("keydown",E2);let o0=new ResizeObserver((l)=>{if(Z.id)return;for(let J0 of l){let Q0=J0.contentRect.height,_0=J0.contentRect.width,G0=q?_0:Q0,D0=q?Z.cw:Z.ch;if(Z.cw=_0,Z.ch=Q0,Math.abs(G0-D0)>1){if(z.viewportState.containerSize=G0,Z.ii)I(),Z.rfn(),h.emit("resize",{height:Q0,width:_0})}if(Z.ii)for(let W0=0;W0<K0.length;W0++)K0[W0](_0,Q0)}});if(Z.vre)o0.observe(H.viewport);let n0={dom:H,emitter:h,resolvedConfig:u,rawConfig:J,rendered:O,pool:L,itemState:o,sharedState:z,renderRange:F,isHorizontal:q,classPrefix:N,contentSizeHandlers:A0,idleHandlers:Y0,afterScroll:X0,clickHandlers:e,keydownHandlers:Z0,resizeHandlers:K0,destroyHandlers:M0,methods:U0,onScrollFrame:u0,resizeObserver:o0,applyTemplate:s0,updateContentSize:I},g0=I2(Z,n0);Z.dm=p2(Z,n0,g0),Z.sc=h2(Z,n0);let A2=new Map;for(let l of c)if(l.methods)for(let J0 of l.methods){let Q0=A2.get(J0);if(Q0)throw Error(`[vlist/builder] Method "${J0}" is registered by both "${Q0}" and "${l.name}"`);A2.set(J0,l.name)}for(let l of c)l.setup(g0);if(!U0.has("_getFocusedIndex")){let l=-1,J0=`${N}-item--focused`,Q0=(D0,W0)=>{let L0=Z.vtf();if(W0<0||W0>=L0)return;l=W0,H.root.setAttribute("aria-activedescendant",`${G}-item-${W0}`);let k0=q?Z.cw:Z.ch;if(Z.sst(Z.gsp(W0,Z.hc,k0,L0,"center")),Z.ls=Z.sgt(),Z.rfn(),D0>=0&&D0!==W0)O.get(D0)?.classList.remove(J0);O.get(W0)?.classList.add(J0)},_0=()=>{if(Z.id)return;if(!H.root.matches(":focus-visible"))return;let D0=Z.vtf();if(D0===0)return;Q0(-1,l>=0?Math.min(l,D0-1):0)};H.root.addEventListener("focusin",_0);let G0=(D0)=>{if(Z.id)return;let W0=D0.relatedTarget;if(W0&&H.root.contains(W0))return;if(l>=0)O.get(l)?.classList.remove(J0);H.root.removeAttribute("aria-activedescendant")};H.root.addEventListener("focusout",G0),Z0.push((D0)=>{if(Z.id)return;let W0=Z.vtf();if(W0===0)return;let L0=l,k0=L0;switch(D0.key){case"ArrowUp":k0=L0<=0?W0-1:L0-1;break;case"ArrowDown":k0=L0>=W0-1?0:L0+1;break;case"Home":k0=0;break;case"End":k0=W0-1;break;default:return}D0.preventDefault(),Q0(L0,k0)}),M0.push(()=>{H.root.removeEventListener("focusin",_0),H.root.removeEventListener("focusout",G0)})}if(Z.ii=!0,g0.state.isInitialized=!0,I(),Z.rfn(),_&&Z.it.length>0){let l=Z.gsp(Z.it.length-1,Z.hc,Z.ch,Z.it.length,"end");Z.sst(l),Z.ls=l,Z.rfn()}return g2(Z,H,h,O,L,U0,c,M0,g0,_,v,G2,O2,E2,u0,o0,()=>{if(b.ob)b.ob.disconnect()},()=>{if(C)clearTimeout(C)})}q2();var h0=(J,X,q={},j="vlist",Y=!1)=>{let{autoHide:Q=!0,autoHideDelay:K=1000,minThumbSize:B=30,showOnHover:N=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,w=0,k=0,y=0,A=0,v=!1,_=!1,G=0,E=0,D=0,T=null,$=!1,V=null,u=null,c=Y?"width":"height",r=Y?"translateX":"translateY",S=Y?(b)=>b.clientX:(b)=>b.clientY,H=Y?"left":"top",g=document.createElement("div"),t=document.createElement("div"),h=N?document.createElement("div"):null,R=()=>{if(g.className=`${j}-scrollbar`,t.className=`${j}-scrollbar-thumb`,Y)g.classList.add(`${j}-scrollbar--horizontal`);if(g.appendChild(t),J.appendChild(g),h){if(h.className=`${j}-scrollbar-hover`,Y)h.classList.add(`${j}-scrollbar-hover--horizontal`),h.style.height=`${U}px`;else h.style.width=`${U}px`;J.appendChild(h)}},p=()=>{if(T)clearTimeout(T),T=null},P=()=>{if(!Q)return;p(),T=setTimeout(L,K)},M=()=>{if(w<=k)return;if(p(),!$)g.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!v&&!_)P()},L=()=>{if(v||_)return;g.classList.remove(`${j}-scrollbar--visible`),$=!1},Z=(b,o)=>{w=b,k=o;let j0=w>k;if(g.style.display=j0?"":"none",!j0){L();return}let f=k/w;y=Math.max(B,f*k),t.style[c]=`${y}px`,A=k-y,C(D)},C=(b)=>{if(D=b,w<=k||A<=0)return;let o=w-k,f=Math.min(1,Math.max(0,b/o))*A;t.style.transform=`${r}(${f}px)`},a=(b)=>{if(b.target===t)return;let o=g.getBoundingClientRect(),n=S(b)-o[H]-y/2,q0=Math.max(0,Math.min(n,A))/A,X0=w-k,Y0=q0*X0;X(Y0),M()},d=(b)=>{b.preventDefault(),b.stopPropagation(),v=!0,G=S(b),E=D,p(),g.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",F),document.addEventListener("mouseup",x)},F=(b)=>{if(!v)return;let o=S(b)-G,j0=A>0?o/A:0,f=w-k,n=j0*f,i=Math.max(0,Math.min(E+n,f)),X0=i/f*A;if(t.style.transform=`${r}(${X0}px)`,u=i,V===null)V=requestAnimationFrame(()=>{if(u!==null)X(u);V=null})},x=()=>{if(v=!1,V!==null)cancelAnimationFrame(V),V=null;if(u!==null)X(u),u=null;if(g.classList.remove(`${j}-scrollbar--dragging`),Q&&!_)P();document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",x)},z=()=>{if(W)M()},O=()=>{if(!v){if(_=!1,Q)P()}},m=()=>{_=!0,p(),M()},I=()=>{if(_=!1,!v&&Q)P()},s=()=>{if(p(),V!==null)cancelAnimationFrame(V),V=null;if(g.removeEventListener("click",a),g.removeEventListener("mouseenter",m),g.removeEventListener("mouseleave",I),t.removeEventListener("mousedown",d),J.removeEventListener("mouseenter",z),J.removeEventListener("mouseleave",O),document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",x),h){if(h.removeEventListener("mouseenter",m),h.removeEventListener("mouseleave",I),h.parentNode)h.parentNode.removeChild(h)}if(g.parentNode)g.parentNode.removeChild(g)};if(R(),g.addEventListener("click",a),g.addEventListener("mouseenter",m),g.addEventListener("mouseleave",I),t.addEventListener("mousedown",d),J.addEventListener("mouseenter",z),J.addEventListener("mouseleave",O),h)h.addEventListener("mouseenter",m),h.addEventListener("mouseleave",I);return{show:M,hide:L,updateBounds:Z,updatePosition:C,isVisible:()=>$,destroy:s}};var e2=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:Y}=q,{classPrefix:Q,horizontal:K}=Y;if(X=h0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,K),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let B=q.getCachedCompression();X.updateBounds(B.virtualSize,q.state.viewportState.containerSize);let N=X;q.afterScroll.push((U,W)=>{N.updatePosition(U),N.show()}),q.resizeHandlers.push((U,W)=>{if(N){let w=q.getCachedCompression();N.updateBounds(w.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(N){let U=q.getCachedCompression();N.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(N)N.destroy()})},destroy(){if(X)X.destroy(),X=null}}};var oJ=0.65,nJ=0.5,iJ=0.95,tJ=0.1,eJ=5,J1=100,JJ=()=>{let J=null,X=0,q=!1,j=0,Y=null,Q=0,K=0,B=null,N=[];return{name:"withScale",priority:20,setup(U){let{dom:W,config:w}=U,{classPrefix:k,horizontal:y}=w,A=()=>{let E=U.getVirtualTotal(),D=R0(E,U.sizeCache);if(D.isCompressed&&!q){q=!0,U.scrollController.enableCompression(D),U.updateContentSize(D.virtualSize),U.setScrollFns(()=>X,(g)=>{if(X=g,j=g,Y!==null)cancelAnimationFrame(Y),Y=null});let T=()=>{let g=j-X;if(Math.abs(g)<nJ)X=j,Y=null;else{X+=g*oJ;let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;X=Math.max(0,Math.min(X,h)),Y=requestAnimationFrame(T)}U.scrollController.scrollTo(X)},$=W.viewport,V=(g)=>{g.preventDefault();let h=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize;if(j=Math.max(0,Math.min(j+g.deltaY,h)),Y===null)Y=requestAnimationFrame(T)};$.addEventListener("wheel",V,{passive:!1});let u=()=>{if(B!==null)cancelAnimationFrame(B),B=null},c=(g)=>{if(u(),Y!==null)cancelAnimationFrame(Y),Y=null;let t=g.touches[0];if(!t)return;let h=y?t.clientX:t.clientY;Q=h,K=X,N=[{time:performance.now(),y:h}]},r=(g)=>{g.preventDefault();let t=g.touches[0];if(!t)return;let h=y?t.clientX:t.clientY,R=performance.now();if(N.push({time:R,y:h}),N.length>eJ)N.shift();let p=Q-h,M=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,L=Math.max(0,Math.min(K+p,M));X=L,j=L,U.scrollController.scrollTo(L)},S=(g)=>{let t=performance.now(),h=N.filter((M)=>t-M.time<J1),R=0;if(h.length>=2){let M=h[0],L=h[h.length-1],Z=L.time-M.time;if(Z>0)R=(M.y-L.y)/Z}if(N=[],Math.abs(R)<tJ)return;let p=R*16,P=()=>{if(p*=iJ,Math.abs(p)<0.5){B=null;return}let L=U.getCachedCompression().virtualSize-U.state.viewportState.containerSize,Z=X+p;if(Z=Math.max(0,Math.min(Z,L)),Z<=0&&p<0||Z>=L&&p>0){X=Z,j=Z,U.scrollController.scrollTo(Z),B=null;return}X=Z,j=Z,U.scrollController.scrollTo(Z),B=requestAnimationFrame(P)};B=requestAnimationFrame(P)};if($.addEventListener("touchstart",c,{passive:!0}),$.addEventListener("touchmove",r,{passive:!1}),$.addEventListener("touchend",S,{passive:!0}),$.addEventListener("touchcancel",S,{passive:!0}),U.destroyHandlers.push(()=>{if($.removeEventListener("wheel",V),$.removeEventListener("touchstart",c),$.removeEventListener("touchmove",r),$.removeEventListener("touchend",S),$.removeEventListener("touchcancel",S),u(),Y!==null)cancelAnimationFrame(Y),Y=null}),!W.viewport.querySelector(`.${k}-scrollbar`)){if(J=h0(W.viewport,(t)=>U.scrollController.scrollTo(t),{},k,y),!W.viewport.classList.contains(`${k}-viewport--custom-scrollbar`))W.viewport.classList.add(`${k}-viewport--custom-scrollbar`);J.updateBounds(D.virtualSize,U.state.viewportState.containerSize);let g=J;U.afterScroll.push((t,h)=>{if(g)g.updatePosition(t),g.show()}),U.resizeHandlers.push((t,h)=>{if(g){let R=U.getCachedCompression();g.updateBounds(R.virtualSize,U.state.viewportState.containerSize)}})}}else if(!D.isCompressed&&q)q=!1,U.scrollController.disableCompression(),U.updateContentSize(D.actualSize);else if(D.isCompressed)U.scrollController.updateConfig({compression:D}),U.updateContentSize(D.virtualSize);if(J)J.updateBounds(D.virtualSize,U.state.viewportState.containerSize);U.state.cachedCompression={state:D,totalItems:E}};U.updateCompressionMode=A;let v=U.getCachedCompression.bind(U);U.getCachedCompression=()=>{if(U.state.cachedCompression)return U.state.cachedCompression.state;return v()},U.setVisibleRangeFn((E,D,T,$,V)=>{_=null,G=null;let u=R0($,T);i2(E,D,T,$,u,V)}),U.setScrollToPosFn((E,D,T,$,V)=>{let u=R0($,D);return t2(E,D,T,$,u,V)});let _=null,G=null;U.setPositionElementFn((E,D)=>{let T=U.getVirtualTotal(),$=R0(T,U.sizeCache);if($.isCompressed){let V=U.scrollController.getScrollTop();if(_===null||D<G)G=D,_=Math.round(l0(D,V,U.sizeCache,T,U.state.viewportState.containerSize,$));let u=_+U.sizeCache.getOffset(D)-U.sizeCache.getOffset(G),c=U.config.horizontal;E.style.transform=c?`translateX(${u}px)`:`translateY(${u}px)`}else{let V=Math.round(U.sizeCache.getOffset(D)),u=U.config.horizontal;E.style.transform=u?`translateX(${V}px)`:`translateY(${V}px)`}}),A(),U.destroyHandlers.push(()=>{if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null})},destroy(){if(J)J.destroy(),J=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;if(B!==null)cancelAnimationFrame(B),B=null}}};var QJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:Y}=J,Q=new Map,K=0,B=0,N=(R)=>{let p=Q.get(R);if(!p)p={items:Array(X),count:0,lastAccess:Date.now()},Q.set(R,p);else p.lastAccess=Date.now();return p},U=(R)=>{return Math.floor(R/X)},W=(R)=>{return R%X},w=()=>K,k=(R)=>{K=R},y=(R)=>{if(R<0||R>=K)return;let p=U(R),P=Q.get(p);if(!P)return;return P.items[W(R)]},A=(R)=>{if(R<0||R>=K)return!1;let p=U(R),P=Q.get(p);if(!P)return!1;return P.items[W(R)]!==void 0},v=(R,p)=>{let P=U(R),M=N(P),L=W(R),Z=M.items[L]===void 0;if(M.items[L]=p,Z)M.count++,B++;if(R>=K)K=R+1},_=(R,p)=>{for(let P=0;P<p.length;P++){let M=p[P];if(M!==void 0)v(R+P,M)}},G=(R)=>{if(R<0||R>=K)return!1;let p=U(R),P=Q.get(p),M=W(R);if(!(P!==void 0&&P.items[M]!==void 0))return!1;let Z=p,C=Array.from(Q.keys()).filter((d)=>d>=Z).sort((d,F)=>d-F),a=[];for(let d of C){let F=Q.get(d),x=d*X;for(let z=0;z<X;z++){if(F.items[z]===void 0)continue;let O=x+z;if(O<=R)continue;a.push({oldIndex:O,item:F.items[z]})}}if(P.items[M]=void 0,P.count--,B--,P.count===0)Q.delete(p);for(let{oldIndex:d}of a){let F=U(d),x=Q.get(F);if(!x)continue;let z=W(d);if(x.items[z]!==void 0){if(x.items[z]=void 0,x.count--,B--,x.count===0)Q.delete(F)}}for(let{oldIndex:d,item:F}of a){let x=d-1,z=U(x),O=N(z),m=W(x);O.items[m]=F,O.count++,B++}return K--,!0},E=(R,p)=>{let P=[];for(let M=R;M<=p&&M<K;M++)P.push(y(M));return P},D=(R,p)=>{for(let P=R;P<=p&&P<K;P++)if(!A(P))return!1;return!0},T=()=>{let R=[],p=null,P=Array.from(Q.keys()).sort((M,L)=>M-L);for(let M of P){let L=Q.get(M);if(!L)continue;let Z=M*X;for(let C=0;C<X;C++){let a=Z+C;if(a>=K)break;if(L.items[C]!==void 0)if(p===null)p={start:a,end:a};else if(a===p.end+1)p.end=a;else R.push(p),p={start:a,end:a};else if(p!==null)R.push(p),p=null}}if(p!==null)R.push(p);return R},$=(R,p)=>{let P=[],M=null;for(let L=R;L<=p&&L<K;L++)if(!A(L))if(M===null)M={start:L,end:L};else M.end=L;else if(M!==null)P.push(M),M=null;if(M!==null)P.push(M);return P},V=(R)=>{return Q.has(R)},u=(R)=>{let p=Q.get(R);if(p)p.lastAccess=Date.now()},c=(R,p)=>{if(R>p||Q.size===0)return;let P=Date.now(),M=U(Math.max(0,R)),L=U(Math.min(K-1,p));for(let Z=M;Z<=L;Z++){let C=Q.get(Z);if(C)C.lastAccess=P}},r=(R,p)=>{if(B<=q)return 0;let P=Math.max(0,R-j),M=Math.min(K-1,p+j),L=U(P),Z=U(M),C=0,a=[];for(let[d,F]of Q)if(d<L||d>Z)C+=F.count,a.push(d),B-=F.count,Q.delete(d);if(C>0&&Y)Y(C,a);return C},S=()=>{if(B<=q)return 0;let R=Array.from(Q.entries()).sort(([,M],[,L])=>M.lastAccess-L.lastAccess),p=0,P=[];for(let[M,L]of R){if(B<=q)break;p+=L.count,B-=L.count,P.push(M),Q.delete(M)}if(p>0&&Y)Y(p,P);return p},H=()=>{return{totalItems:K,cachedItems:B,cachedChunks:Q.size,chunkSize:X,maxCachedItems:q,memoryEfficiency:K>0?1-B/K:1}},g=()=>B,t=()=>{Q.clear(),B=0};return{chunkSize:X,maxCachedItems:q,getTotal:w,setTotal:k,get:y,has:A,set:v,setRange:_,delete:G,getRange:E,isRangeLoaded:D,getLoadedRanges:T,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:V,touchChunk:u,touchChunksForRange:c,evictDistant:r,evictToLimit:S,getStats:H,getCachedCount:g,clear:t,reset:()=>{t(),K=0}}},Q1=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],Q=q[q.length-1];if(Y.start<=Q.end+1)Q.end=Math.max(Q.end,Y.end);else q.push({...Y})}return q},jJ=(J,X,q)=>{let j=Math.floor(J.start/q)*q,Y=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:Y};if(X.length===0)return[Q];let K=[],B=Q1(X),N=Q.start;for(let U of B){if(U.end<N)continue;if(U.start>Q.end)break;if(U.start>N)K.push({start:N,end:Math.min(U.start-1,Q.end)});if(N=U.end+1,N>Q.end)break}if(N<=Q.end)K.push({start:N,end:Q.end});return K};var qJ=(J={})=>{let{maskCharacter:X=a2,maxSampleSize:q=s2}=J,j=[],Y=!1,Q=0,K=(w)=>{if(Y||w.length===0)return;let k=Math.min(w.length,q);for(let y=0;y<k;y++){let A=w[y];if(!A||typeof A!=="object")continue;let v={};for(let[_,G]of Object.entries(A)){if(_.startsWith("_")||_==="id")continue;v[_]=String(G??"").length}if(Object.keys(v).length>0)j.push(v)}Y=!0},B=()=>Y,N=(w)=>{let k={id:`${o2}${Q++}`,[j2]:!0,_index:w};if(j.length===0)return k.label=X.repeat(12),k;let y=j[w%j.length];for(let[A,v]of Object.entries(y))k[A]=X.repeat(Math.max(1,v));return k};return{analyzeStructure:K,hasAnalyzedStructure:B,generate:N,generateRange:(w,k)=>{let y=[];for(let A=w;A<=k;A++)y.push(N(A));return y},clear:()=>{j=[],Y=!1,Q=0}}},r0=(J)=>{if(!J||typeof J!=="object")return!1;return J[j2]===!0};var j1=50,XJ=(J={})=>{let{adapter:X,initialItems:q,initialTotal:j,storage:Y,placeholder:Q,pageSize:K=j1,onStateChange:B,onItemsLoaded:N,onItemsEvicted:U}=J,W=QJ({...Y,onEvict:(f,n)=>{U?.(f),$()}}),w=null,k=()=>{if(!w)w=qJ(Q);return w},y=new Map,A=!1,v,_=!0,G,E=[],D=0,T=new Map,$=()=>{B?.(h())},V=()=>{y.clear();let f=W.getLoadedRanges();for(let n of f)for(let i=n.start;i<=n.end;i++){let q0=W.get(i);if(q0&&!r0(q0))y.set(q0.id,i)}},u=(f,n)=>{if(!r0(n))y.set(n.id,f)},c=(f)=>{y.delete(f)},r=(f,n)=>{return`${f}-${n}`},S=()=>W.getTotal(),H=()=>W.getCachedCount(),g=()=>A,t=()=>_,h=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:E,error:v,hasMore:_,cursor:G}),R=()=>W,p=()=>k(),P=(f)=>{let n=W.get(f);if(n!==void 0)return n;if(f>=0&&f<W.getTotal())return k().generate(f);return},M=(f)=>{let n=y.get(f);if(n===void 0)return;return W.get(n)},L=(f)=>{return y.get(f)??-1},Z=(f)=>{let n=W.get(f);return n!==void 0&&!r0(n)},C=(f,n)=>{let i=[],q0=W.getTotal(),X0=0,Y0=0;W.touchChunksForRange(f,Math.min(n,q0-1));for(let e=f;e<=n&&e<q0;e++){let Z0=W.get(e);if(Z0!==void 0)i.push(Z0),X0++;else i.push(k().generate(e)),Y0++}return i},a=(f)=>{W.setTotal(f),_=W.getCachedCount()<f,$()},d=(f,n=0,i)=>{if(X&&f.length>0){let q0=k();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(f)}for(let q0=0;q0<f.length;q0++){let X0=f[q0];if(X0!==void 0){let Y0=n+q0;W.set(Y0,X0),u(Y0,X0)}}if(i!==void 0)W.setTotal(i);else if(n+f.length>W.getTotal())W.setTotal(n+f.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)_=!1;$(),N?.(f,n,W.getTotal())},F=(f,n)=>{let i=y.get(f);if(i===void 0)return!1;let q0=W.get(i);if(!q0)return!1;let X0={...q0,...n};if(W.set(i,X0),n.id!==void 0&&n.id!==f)c(f),u(i,X0);return $(),!0},x=(f)=>{let n=y.get(f);if(n===void 0)return!1;if(!W.delete(n))return!1;return V(),T.clear(),$(),!0},z=async(f,n)=>{if(!X)return;let i=r(f,n);if(T.has(i))return;let q0=W.getLoadedRanges(),X0=jJ({start:f,end:n},q0,W.chunkSize);if(X0.length===0)return;let Y0=W.chunkSize,e=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),M0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=M0;U0++){let V0=U0*Y0,N0=V0+Y0-1,F0=r(V0,N0);if(!e.some((T0)=>T0.start===V0)&&!T.has(F0))e.push({start:V0,end:N0})}}let Z0=[];for(let K0 of X0){let A0=Math.floor(K0.start/Y0),M0=Math.floor(K0.end/Y0);for(let U0=A0;U0<=M0;U0++){let V0=U0*Y0,N0=V0+Y0-1,F0=r(V0,N0);if(T.has(F0)){let T0=T.get(F0);if(!Z0.includes(T0))Z0.push(T0)}}}for(let K0 of e){let A0=r(K0.start,K0.end),M0=(async()=>{E.push(K0),A=!0,v=void 0,$();try{let U0=K0.end-K0.start+1,V0={offset:K0.start,limit:U0,cursor:void 0},N0=await X.read(V0);if(d(N0.items,K0.start,N0.total),N0.cursor)G=N0.cursor;let F0=K0.start+N0.items.length;if(F0>=D){if(D=F0,N0.hasMore!==void 0)_=N0.hasMore;else if(N0.total!==void 0)_=F0<N0.total}}catch(U0){v=U0 instanceof Error?U0:Error(String(U0))}finally{T.delete(A0),E=E.filter((U0)=>U0.start!==K0.start||U0.end!==K0.end),A=T.size>0,$()}})();T.set(A0,M0),Z0.push(M0)}await Promise.all(Z0)},O=async(f,n)=>{if(W.isRangeLoaded(f,n))return;await z(f,n)},m=async()=>{if(!X)return;await z(0,K-1)},I=async()=>{if(!X||A||!_)return!1;let f=W.getCachedCount(),n=W.getTotal(),i=f,q0=Math.min(i+K-1,n>0?n-1:i+K-1);if(i>=n&&n>0)return _=!1,!1;return await z(i,q0),W.getCachedCount()>f},s=async()=>{if(W.clear(),W.setTotal(0),y.clear(),w)w.clear();T.clear(),E=[],A=!1,G=void 0,_=!0,D=0,v=void 0,$()},b=(f,n)=>{if(W.evictDistant(f,n)>0)V()},o=()=>{W.clear(),y.clear(),G=void 0,v=void 0,E=[],A=!1,$()},j0=()=>{if(W.reset(),y.clear(),w)w.clear();G=void 0,_=!0,D=0,v=void 0,E=[],A=!1,$()};if(q&&q.length>0)d(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:h,getTotal:S,getCached:H,getIsLoading:g,getHasMore:t,getStorage:R,getPlaceholders:p,getItem:P,getItemById:M,getIndexById:L,isItemLoaded:Z,getItemsInRange:C,setTotal:a,setItems:d,updateItem:F,removeItem:x,loadRange:z,ensureRange:O,loadInitial:m,loadMore:I,reload:s,evictDistant:b,clear:o,reset:j0}};var YJ=(J)=>{let{adapter:X,loading:q,storage:j,total:Y,autoLoad:Q=!0}=J,K=q?.cancelThreshold??c2,B=q?.preloadThreshold??l2,N=q?.preloadAhead??d2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,w=U.config.reverse,k=U.methods.get("_getGridLayout"),y=(S)=>{if(k){let H=k();if(H){let g=U.dataManager.getTotal();return H.getItemRange(S.start,S.end,g)}}return S},A=XJ({adapter:X,...Y!==void 0&&{initialTotal:Y},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let S=U.getVirtualTotal();U.sizeCache.rebuild(S),U.updateCompressionMode();let H=U.getCachedCompression();U.state.viewportState.totalSize=H.virtualSize,U.state.viewportState.actualSize=H.actualSize,U.state.viewportState.isCompressed=H.isCompressed,U.state.viewportState.compressionRatio=H.ratio,U.updateContentSize(H.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(S,H,g)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:S,total:g,offset:H})}});U.replaceDataManager(A);let v=null,_=null,G=0,E=!1,D=null,T=120,$=(S=!1)=>{if(E=!1,_=null,S)v=null;if(D!==null)clearTimeout(D),D=null},V=()=>{if(!_)return;_=null;let{renderRange:S}=U.state.viewportState;if(S.end<S.start)return;v=null;let H=y(S);U.dataManager.ensureRange(H.start,H.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})};U.afterScroll.push((S,H)=>{if(U.state.isDestroyed)return;let g=U.scrollController.getVelocity(),h=U.scrollController.isTracking()&&g<=K;if(G>K&&g<=K)E=!0;else if(E&&g>K)$();if(E&&g<0.5)$(!0);if(G=g,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(E||_))$(!0),h=!0;let p=E&&g>0.5;if(h&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(w){if(S<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((L)=>{W.emit("error",{error:L,context:"loadMore"})})}else if(U.state.viewportState.totalSize-S-U.state.viewportState.containerSize<J2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((Z)=>{W.emit("error",{error:Z,context:"loadMore"})})}let{renderRange:P}=U.state.viewportState;if(!v||P.start!==v.start||P.end!==v.end){if(v={start:P.start,end:P.end},h&&!p){if(_=null,D!==null)clearTimeout(D),D=null;let L=y(P),Z=L.start,C=L.end,a=k?U.dataManager.getTotal():U.getVirtualTotal();if(g>B)if(H==="down")C=Math.min(L.end+N,a-1);else Z=Math.max(L.start-N,0);U.dataManager.ensureRange(Z,C).catch((d)=>{W.emit("error",{error:d,context:"ensureRange"})})}else if(_={start:P.start,end:P.end},p){if(D!==null)clearTimeout(D);D=setTimeout(()=>{D=null,V(),$()},T)}}});let u=200,c=null;U.afterScroll.push((S,H)=>{if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,V(),$()},u)}),U.destroyHandlers.push(()=>{if(c!==null)clearTimeout(c),c=null;$()});let r=()=>{if(U.state.isDestroyed)return;v=null;let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);U.dataManager.ensureRange(H.start,H.end).catch((g)=>{W.emit("error",{error:g,context:"ensureRange"})})}V()};if(window.addEventListener("online",r),U.destroyHandlers.push(()=>{window.removeEventListener("online",r)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{v=null,_=null,U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);W.emit("load:start",{offset:H.start,limit:H.end-H.start+1}),await U.dataManager.ensureRange(H.start,H.end)}}),U.methods.set("reload",async()=>{v=null,_=null,U.invalidateRendered(),await U.dataManager.reload(),W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:S}=U.state.viewportState;if(S.end>0){let H=y(S);await U.dataManager.ensureRange(H.start,H.end)}}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((S)=>{W.emit("error",{error:S,context:"loadInitial"})});else if(Y!==void 0)U.dataManager.setTotal(Y)}}};var UJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:q,state:j,config:Y,emitter:Q}=X;if(q.root.style.overflow="visible",q.root.style.height="auto",Y.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.disableWheelHandler(),X.setScrollTarget(window),X.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(Y.horizontal){let w=W.left+window.scrollX;window.scrollTo(w+U,window.scrollY)}else{let w=W.top+window.scrollY;window.scrollTo(window.scrollX,w+U)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:K,innerWidth:B}=window,N=()=>{let{innerWidth:U,innerHeight:W}=window,w=Y.horizontal?U:W,k=Y.horizontal?B:K;if(Math.abs(w-k)<=1)return;K=W,B=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let y=0;y<X.resizeHandlers.length;y++)X.resizeHandlers[y](U,W);X.renderIfNeeded()};window.addEventListener("resize",N,{passive:!0}),J=()=>{window.removeEventListener("resize",N)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)q=Y;else j=Y-1}return q},KJ=(J,X)=>{let q=0,j=J.length-1;while(q<j){let Y=q+j+1>>>1;if(J[Y].firstDataIndex<=X)q=Y;else j=Y-1}return q},BJ=(J,X)=>{if(J===0)return[];let q=[],j=X(0),Y=0,Q=0;for(let K=1;K<J;K++){let B=X(K);if(B!==j){let N=K-Y;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:N}),Q=Q+1+N,j=B,Y=K}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:Y,count:J-Y}),q},Y2=(J,X)=>{if(J.length===0||X.length===0)return[];let q=J.length+X.length,j=Array(q),Y=0;for(let Q of X){j[Y]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},Y++;for(let K=0;K<Q.count;K++)j[Y]=J[Q.firstDataIndex+K],Y++}return j},U2=(J,X)=>{let q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return q(Y.dataIndex)}},ZJ=(J,X)=>{let q=BJ(J,X.getGroupForIndex),j=J+q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(k)=>{if(q.length===0)return{type:"item",dataIndex:k,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let y=X2(q,k),A=q[y];if(k===A.headerLayoutIndex)return{type:"header",group:A};let v=k-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+v,group:A}},layoutToDataIndex:(k)=>{if(q.length===0)return k;let y=X2(q,k),A=q[y];if(k===A.headerLayoutIndex)return-1;let v=k-A.headerLayoutIndex-1;return A.firstDataIndex+v},dataToLayoutIndex:(k)=>{if(q.length===0)return k;let y=KJ(q,k),A=q[y],v=k-A.firstDataIndex;return A.headerLayoutIndex+1+v},getGroupAtLayoutIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=X2(q,k);return q[y]},getGroupAtDataIndex:(k)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let y=KJ(q,k);return q[y]},getHeaderHeight:typeof Y==="number"?(k)=>Y:(k)=>{let y=q[k];if(!y)return 0;return Y(y.key,k)},rebuild:(k)=>{q=BJ(k,X.getGroupForIndex),j=k+q.length}}};var NJ=(J,X,q,j,Y,Q=!1,K=0)=>{let B=document.createElement("div");if(B.className=`${Y}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.position="absolute",B.style.zIndex="5",B.style.pointerEvents="none",B.style.willChange="transform",B.style.overflow="hidden",Q)B.style.top="0",B.style.bottom="0",B.style.left=K?`${K}px`:"0";else B.style.top=K?`${K}px`:"0",B.style.left="0",B.style.right="0";J.insertBefore(B,J.firstChild);let N=-1,U=!1,W=0,w=(G)=>{if(G===N)return;N=G;let E=X.groups;if(G<0||G>=E.length){B.textContent="";return}let D=E[G],T=j.headerTemplate(D.key,D.groupIndex),$=X.getHeaderHeight(G);if(Q)B.style.width=`${$}px`;else B.style.height=`${$}px`;if(typeof T==="string")B.innerHTML=T;else B.replaceChildren(T)},k=(G)=>{let E=X.groups;if(E.length===0){A();return}let D=q.getOffset(E[0].headerLayoutIndex);if(G<D){A();return}let T=0,$=E.length-1;while(T<$){let S=T+$+1>>>1;if(q.getOffset(E[S].headerLayoutIndex)<=G)T=S;else $=S-1}let V=T;if(!U)y();w(V);let u=X.getHeaderHeight(V),c=0,r=V+1;if(r<E.length){let H=q.getOffset(E[r].headerLayoutIndex)-G;if(H<u)c=H-u}if(c!==W)if(W=c,c===0)B.style.transform="";else{let S=Math.round(c);B.style.transform=Q?`translateX(${S}px)`:`translateY(${S}px)`}},y=()=>{if(U)return;U=!0,B.style.display=""},A=()=>{if(!U)return;U=!1,B.style.display="none",N=-1,W=0,B.style.transform=""},v=()=>{let G=N;if(N=-1,G>=0)w(G)},_=()=>{B.remove(),N=-1,U=!1};return B.style.display="none",{update:k,refresh:v,show:y,hide:A,destroy:_}};var _J=(J,X,q,j,Y,Q)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),B=X.getOffset(K),N=X.getSize(K),U=X.getTotalSize(),W=Math.max(0,U-q),w;switch(Q){case"center":w=B-q/2+N/2;break;case"end":w=B-q+N;break;case"start":default:w=B;break}return Math.max(0,Math.min(w,W))};var $0=(J,X,q,j,Y="start",Q,K=_J)=>{return K(J,X,q,j,Q,Y)};var VJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,q=null,j=[],Y=[];return{name:"withGroups",priority:10,setup(Q){let{dom:K,config:B,rawConfig:N}=Q,{classPrefix:U}=B,w=N.item.height;j=N.items?[...N.items]:[];let k=j.length,y={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=ZJ(k,y),Y=Y2(j,X.groups);let A=U2(X,w);Q.setSizeConfig(A),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length);let v=N.item.template,{headerTemplate:_}=J,G=(h,R,p)=>{if(v0(h))return _(h.groupKey,h.groupIndex);return v(h,R,p)},E=Q.methods.get("_getGridLayout"),D=Q.methods.get("_replaceGridRenderer"),T=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),V=Q.methods.get("_updateTableForGroups"),u=Q.methods.get("_getTableHeaderHeight");if(E&&D){if(T)T((P)=>{let M=Y[P];return!!(M&&v0(M))});let{createGridRenderer:h}=(B2(),dJ(WJ)),R=E(),p=h(K.items,G,Q.sizeCache,R,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),B.ariaIdPrefix);D(p)}else if($&&V)V((h)=>v0(h),J.headerTemplate);else Q.replaceTemplate(G);let c=u?u():0;if(K.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=NJ(K.root,X,Q.sizeCache,{...y,sticky:y.sticky??!1},U,B.horizontal,c);let h=q;Q.afterScroll.push((R,p)=>{h.update(R)}),q.update(Q.scrollController.getScrollTop())}let r=N.item?.striped,S=()=>{if(r!=="data"&&r!=="even"&&r!=="odd")return;let h=new Int32Array(Y.length),R=r==="odd"?1:0,p=0;for(let P=0;P<Y.length;P++)if(v0(Y[P])){if(h[P]=-1,r==="even"||r==="odd")p=0}else h[P]=p+++R;Q.setStripeIndexFn((P)=>{if(P<0||P>=h.length)return P;return h[P]})};S();let H=()=>{if(!X)return;X.rebuild(j.length),Y=Y2(j,X.groups);let h=U2(X,w);if(Q.setSizeConfig(h),Q.rebuildSizeCache(Y.length),Q.dataManager.setItems(Y,0,Y.length),S(),q)q.refresh()};Q.methods.set("setItems",(h)=>{j=h.slice(),H()}),Q.methods.set("appendItems",(h)=>{j.push(...h),H()}),Q.methods.set("prependItems",(h)=>{j.unshift(...h),H()}),Q.methods.set("removeItem",(h)=>{j=j.filter((R)=>R.id!==h),H()});let{animateScroll:g,cancelScroll:t}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(h,R)=>{let p=X.dataToLayoutIndex(h),{align:P,behavior:M,duration:L}=y0(R),Z=Q.dataManager.getTotal(),C=Q.adjustScrollPosition($0(p,Q.sizeCache,Q.state.viewportState.containerSize,Z,P,Q.getCachedCompression()));if(M==="smooth")g(Q.scrollController.getScrollTop(),C,L);else t(),Q.scrollController.scrollTo(C)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(t(),q)q.destroy(),q=null;K.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var DJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},Q=(A)=>{if(A<=0)return 0;if(!j)return Math.ceil(A/X);let v=0,_=0,G=0;for(let E=0;E<A;E++)if(j(E)){if(G++,_>0)v++,_=0;v++,_=0}else if(_++,_>=X)v++,_=0;if(_>0)v++;return v},K=(A)=>{return Y.row=B(A),Y.col=N(A),Y},B=(A)=>{if(!j)return Math.floor(A/X);let v=0,_=0;for(let G=0;G<=A;G++)if(j(G)){if(_>0)v++,_=0;if(G===A)return v;v++,_=0}else{if(G===A)return v;if(_++,_>=X)v++,_=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${v}`),v},N=(A)=>{if(!j)return A%X;if(j(A))return 0;let v=0;for(let _=0;_<=A;_++)if(j(_))v=0;else{if(_===A)return v;if(v++,v>=X)v=0}return v},U=(A,v,_)=>{if(_<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,A*X),V=Math.min(_-1,(v+1)*X-1);return{start:$,end:V}}let G=-1,E=-1,D=0,T=0;for(let $=0;$<_;$++){if(j($)){if(T>0)D++,T=0;if(D>=A&&D<=v){if(G===-1)G=$;E=$}D++,T=0}else{if(D>=A&&D<=v){if(G===-1)G=$;E=$}if(T++,T>=X)D++,T=0}if(D>v&&T===0)break}if(G===-1)return{start:0,end:-1};return{start:G,end:E}},W=(A,v,_)=>{if(v<0||v>=X)return-1;let G=A*X+v;if(G<0||G>=_)return-1;return G},w=(A)=>{let v=(X-1)*q;return Math.max(0,(A-v)/X)};return{get columns(){return X},get gap(){return q},update:(A)=>{if(A.columns!==void 0)X=Math.max(1,Math.floor(A.columns));if(A.gap!==void 0)q=A.gap;if(A.isHeaderFn!==void 0)j=A.isHeaderFn},getTotalRows:Q,getPosition:K,getRow:B,getCol:N,getItemRange:U,getItemIndex:W,getColumnWidth:w,getColumnOffset:(A,v)=>{let _=w(v);return A*(_+q)}}};B2();var Y1=new Set,MJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:Q,config:K,rawConfig:B}=j,{classPrefix:N}=K;if(K.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=K.horizontal,W=C0(b0(B.padding),U),w=()=>{return(U?Y.viewport.clientHeight:j.getContainerWidth())-W},k=B.items?.some((C)=>C.__groupHeader===!0),y={columns:J.columns,gap:J.gap??0};if(k)y.isHeaderFn=(C)=>{let a=j.dataManager.getItem(C);return!!(a&&a.__groupHeader===!0)};X=DJ(y);let A=X.gap;j.setVirtualTotalFn(()=>{let C=j.dataManager.getTotal();return X.getTotalRows(C)});let v=B.item,_=K.horizontal?v.width:v.height,G={containerWidth:w(),columns:X.columns,gap:X.gap},E={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof _==="function")j.setSizeConfig((C)=>{let a=G.containerWidth-2,d=(G.columns-1)*G.gap;return E.containerWidth=G.containerWidth,E.columns=G.columns,E.gap=G.gap,E.columnWidth=(a-d)/G.columns,E.row=X.getRow(C),E.column=X.getCol(C),E.totalRows=X.getTotalRows(j.dataManager.getTotal()),E.totalColumns=G.columns,_(C,E)+G.gap});else if(A>0)j.setSizeConfig(_+A);if(j.rebuildSizeCache(),A>0){let C=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let a=C();return a>0?a-G.gap:0}}Y.root.classList.add(`${N}--grid`);let D=w(),T=B.item.template,$=()=>{q=K2(Y.items,T,j.sizeCache,X,N,D,()=>j.dataManager.getTotal(),K.ariaIdPrefix,K.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>y),j.methods.set("_replaceGridRenderer",(C)=>{q=C}),j.methods.set("_updateGridLayoutForGroups",(C)=>{X.update({isHeaderFn:C});let a=j.dataManager.getTotal(),d=0;for(let F=0;F<a;F++)if(X.getCol(F)===0){let x=j.sizeCache.getSize(F);d+=x}j.sizeCache.getTotalSize=()=>d,j.updateContentSize(d),$()}),j.methods.set("updateGrid",(C)=>{if(C.columns!==void 0){if(!Number.isInteger(C.columns)||C.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");y.columns=C.columns}if(C.gap!==void 0){if(C.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");y.gap=C.gap}if(X)X.update(y);let a=w();if(G.containerWidth=a,G.columns=y.columns,G.gap=y.gap??0,q)q.updateContainerWidth(a);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let d=0;d<j.contentSizeHandlers.length;d++)j.contentSizeHandlers[d]();if(q)q.clear();j.forceRender()});let V=null,u=null,c=!1,r=()=>{if(c)return;c=!0,V=j.methods.get("_getSelectedIds")??null,u=j.methods.get("_getFocusedIndex")??null},S=-1,H=-1,g=!0,t=K.overscan,h={start:0,end:0},R={start:0,end:0},p=()=>{if(j.state.isDestroyed)return;let C=j.scrollController.getScrollTop(),a=j.state.viewportState.containerSize;if(!g&&C===S&&a===H)return;S=C,H=a,g=!1;let d=j.getVirtualTotal();if(d===0||a===0)h.start=0,h.end=0;else h.start=Math.max(0,j.sizeCache.indexAtOffset(C)),h.end=Math.min(d-1,Math.max(0,j.sizeCache.indexAtOffset(C+a-1)));R.start=Math.max(0,h.start-t),R.end=Math.min(d-1,h.end+t);let F=j.state.viewportState;F.scrollPosition=C,F.visibleRange.start=h.start,F.visibleRange.end=h.end,F.renderRange.start=R.start,F.renderRange.end=R.end;let x=j.state.lastRenderRange,z=F.isCompressed,O=j.dataManager.getTotal(),m=X.getItemRange(R.start,R.end,O),I=j.dataManager.getItemsInRange(m.start,m.end),s=z?j.getCompressionContext():void 0;r();let b=V?V():Y1,o=u?u():-1;if(q.render(I,m,b,o,s),x.start!==R.start||x.end!==R.end)x.start=R.start,x.end=R.end,Q.emit("range:change",{range:{start:R.start,end:R.end}})},P=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,g=!0,p()};j.setRenderFns(p,P);let M=typeof _==="function";j.resizeHandlers.push((C,a)=>{let d=(U?a:C)-W;if(G.containerWidth=d,q)q.updateContainerWidth(d);if(M){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let F=0;F<j.contentSizeHandlers.length;F++)j.contentSizeHandlers[F]();if(q)q.clear();j.forceRender()}});let{animateScroll:L,cancelScroll:Z}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",Z),j.methods.set("scrollToIndex",(C,a)=>{let d=Math.floor(C/J.columns),{align:F,behavior:x,duration:z}=y0(a),O=j.dataManager.getState(),m=X.getTotalRows(O.total),I=Math.max(0,Math.min(d,m-1)),s=j.adjustScrollPosition($0(I,j.sizeCache,j.state.viewportState.containerSize,m,F,j.getCachedCompression()));if(x==="smooth")L(j.scrollController.getScrollTop(),s,z);else Z(),j.scrollController.scrollTo(s)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(Z(),q)q.destroy(),q=null;Y.root.classList.remove(`${N}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var GJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,Y=0,Q=[],K=()=>{let _=(X-1)*q;Y=Math.max(0,(j-_)/X),Q=Array(X);let G=Y+q;for(let E=0;E<X;E++)Q[E]=E*G};K();let B=[],N=0,U=[],W=(_)=>{let G=0,E=_[0];for(let D=1;D<_.length;D++){let T=_[D];if(T<E)E=T,G=D}return G},w=(_,G)=>{if(_<=0)return N=0,B=[],[];let E=Array(X).fill(0),D=Array(X);for(let V=0;V<X;V++)D[V]=[];let T=Array(_);for(let V=0;V<_;V++){let u=W(E),c=G(V),r=E[u];T[V]={index:V,x:Q[u],y:r,lane:u,size:c,crossSize:Y},D[u].push(V),E[u]=r+c+q}B=D;let $=0;for(let V=0;V<X;V++){let u=E[V],c=u>0?u-q:0;if(c>$)$=c}return N=$,T},k=(_)=>{if(_.length===0)return N>0?N:0;if(N>0)return N;let G=Array(X).fill(0);for(let D of _){let T=D.y+D.size,$=G[D.lane];if(T>$)G[D.lane]=T}let E=0;for(let D=0;D<X;D++)if(G[D]>E)E=G[D];return E},y=(_,G,E)=>{if(_.length===0||E<=G)return U.length=0,U;if(B.length===0||B.length!==X)return A(_,G,E);U.length=0;for(let D=0;D<X;D++){let T=B[D],$=T.length;if($===0)continue;let V=0,u=$;while(V<u){let c=V+u>>>1,r=_[T[c]];if(r.y+r.size<=G)V=c+1;else u=c}for(let c=V;c<$;c++){let r=_[T[c]];if(r.y>=E)break;U.push(r)}}return U},A=(_,G,E)=>{let D=[];for(let T of _)if(T.y+T.size>G&&T.y<E)D.push(T);return D};return{get columns(){return X},get gap(){return q},get containerSize(){return j},update:(_)=>{let G=!1;if(_.columns!==void 0){let E=Math.max(1,Math.floor(_.columns));if(E!==X)X=E,G=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,G=!0;if(_.containerSize!==void 0&&_.containerSize!==j)j=_.containerSize,G=!0;if(G)K()},calculateLayout:w,getTotalSize:k,getVisibleItems:y}};var U1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Q)=>{if(Q.remove(),X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),X.push(Q)},clear:()=>{X.length=0}}},K1=1,OJ=(J,X,q,j=!1,Y,Q)=>{let K=U1(),B=new Map,N=new Set,U=0,W="",w=-1,k={selected:!1,focused:!1},y=(S,H)=>{return k.selected=S,k.focused=H,k},A=`${q}-item ${q}-masonry-item`,v=`${q}-item--selected`,_=`${q}-item--focused`,G=(S,H)=>{if(typeof H==="string")S.innerHTML=H;else S.replaceChildren(H)},E=(S,H,g)=>{S.classList.toggle(v,H),S.classList.toggle(_,g)},D=(S,H)=>{if(j)S.style.transform=`translate(${Math.round(H.y)}px, ${Math.round(H.x)}px)`;else S.style.transform=`translate(${Math.round(H.x)}px, ${Math.round(H.y)}px)`},T=(S,H)=>{if(j)S.style.width=`${H.size}px`,S.style.height=`${H.crossSize}px`;else S.style.width=`${H.crossSize}px`,S.style.height=`${H.size}px`},$=(S,H,g,t,h)=>{let R=K.acquire(),p=y(t,h);if(R.className=A,R.dataset.index=String(S),R.dataset.id=String(H.id),R.dataset.lane=String(g.lane),R.ariaSelected=String(t),Q)R.id=`${Q}-item-${S}`;if(Y){let M=Y();if(M!==w)w=M,W=String(M);R.setAttribute("aria-setsize",W),R.setAttribute("aria-posinset",String(S+1))}T(R,g);let P=X(H,S,p);return G(R,P),E(R,t,h),D(R,g),{element:R,lastItemId:H.id,lastSelected:t,lastFocused:h,lastY:g.y,lastX:g.x,lastSize:g.size,lastCrossSize:g.crossSize,lastSeenFrame:U}},V=(S,H,g,t)=>{U++,N.clear();for(let R=0;R<H.length;R++)N.add(H[R].index);for(let[R,p]of B)if(N.has(R))p.lastSeenFrame=U;else if(U-p.lastSeenFrame>K1)K.release(p.element),B.delete(R);let h=null;for(let R=0;R<H.length;R++){let p=H[R],P=p.index,M=S(P);if(!M)continue;let L=g.has(M.id),Z=P===t,C=B.get(P);if(C){let a=C.lastItemId!==M.id,d=C.lastSelected!==L,F=C.lastFocused!==Z,x=C.lastY!==p.y||C.lastX!==p.x,z=C.lastSize!==p.size||C.lastCrossSize!==p.crossSize;if(a||d||F){let O=y(L,Z),m=X(M,P,O);G(C.element,m),E(C.element,L,Z),C.element.dataset.id=String(M.id),C.element.ariaSelected=String(L),C.lastItemId=M.id,C.lastSelected=L,C.lastFocused=Z}if(z)T(C.element,p),C.lastSize=p.size,C.lastCrossSize=p.crossSize;if(x)D(C.element,p),C.lastY=p.y,C.lastX=p.x}else{let a=$(P,M,p,L,Z);if(!h)h=document.createDocumentFragment();h.appendChild(a.element),B.set(P,a)}}if(h)J.appendChild(h)},u=()=>{for(let{element:S}of B.values())K.release(S);B.clear(),J.innerHTML=""};return{render:V,getElement:(S)=>B.get(S)?.element,sortDOM:()=>{S0(J,B.keys(),(S)=>B.get(S)?.element)},clear:u,destroy:()=>{u(),K.clear()}}};var B1=new Set,Z1=100,EJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let X=null,q=null,j=[];return{name:"withMasonry",priority:10,setup(Y){let{dom:Q,emitter:K,config:B,rawConfig:N}=Y,U=B.classPrefix,W=B.horizontal;if(B.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let w=b0(N.padding),k=C0(w,W),y=c0(w,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-k},v={columns:J.columns,gap:J.gap??0,containerSize:A()};X=GJ(v);let _=N.item,G=W&&N.item.width?N.item.width:_.height,E={containerWidth:0,columns:0,gap:0,columnWidth:0},D=typeof G==="function"?(d)=>G(d,E):()=>G,T=()=>{let d=Y.dataManager.getTotal(),F=X;E.containerWidth=F.containerSize,E.columns=F.columns,E.gap=F.gap;let x=(F.columns-1)*F.gap;E.columnWidth=Math.max(0,(E.containerWidth-x)/F.columns),j=F.calculateLayout(d,D);let z=X.getTotalSize(j);Y.sizeCache.getTotalSize=()=>z,Y.updateContentSize(z)},$=N.item.template;q=OJ(Q.items,$,U,W,()=>Y.dataManager.getTotal(),B.ariaIdPrefix);let V=null,u=null,c=!1,r=()=>{if(c)return;c=!0,V=Y.methods.get("_getSelectedIds")??null,u=Y.methods.get("_getFocusedIndex")??null},S=(d)=>Y.dataManager.getItem(d),H=-1,g=-1,t=!0,h=B.overscan*Z1,R=()=>{if(Y.state.isDestroyed)return;r();let d=Y.scrollController.getScrollTop(),F=Y.state.viewportState.containerSize;if(!t&&d===H&&F===g)return;H=d,g=F,t=!1;let x=Math.max(0,d-h),z=d+F+h,O=X.getVisibleItems(j,x,z),m=V?V():B1,I=u?u():-1;if(q&&O.length>0)q.render(S,O,m,I);let s=Y.state.viewportState;s.scrollPosition=d;let b=O.length,o=b>0?O[0].index:0,j0=b>0?O[b-1].index:0;s.visibleRange.start=o,s.visibleRange.end=j0,s.renderRange.start=o,s.renderRange.end=j0;let f=Y.state.lastRenderRange;if(f.start!==o||f.end!==j0)f.start=o,f.end=j0,K.emit("range:change",{range:{start:o,end:j0}})},p=()=>{Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,t=!0,R()};Y.setRenderFns(R,p);let P=(d,F)=>{let x=(W?F:d)-k;if(X&&X.containerSize!==x){if(X.update({containerSize:x}),T(),q)q.clear();p()}};Y.resizeHandlers.push(P);let M=()=>{T(),p()},L=Y.dataManager,Z=(d)=>{if(typeof L[d]!=="function")return;let F=L[d].bind(L);L[d]=(...x)=>{F(...x),M()}};Z("setItems"),Z("appendItems"),Z("prependItems"),Z("updateItem"),Z("removeItem");let{animateScroll:C,cancelScroll:a}=f0(Y.scrollController,Y.renderIfNeeded);Y.methods.set("cancelScroll",a),Y.methods.set("scrollToIndex",(d,F)=>{let x=j[d];if(!x)return;let{align:z,behavior:O,duration:m}=y0(F),I=x.y,s=Y.state.viewportState.containerSize,b=I;if(z==="center")b=I-s/2+x.size/2;else if(z==="end"){b=I-s+x.size;let o=X.getTotalSize(j);if(d===j.length-1)b=Math.max(0,o+y-s)}if(b=Math.max(0,b),b=Y.adjustScrollPosition(b),O==="smooth")C(Y.scrollController.getScrollTop(),b,m);else a(),Y.scrollController.scrollTo(b)}),T(),Y.idleHandlers.push(()=>{if(q)q.sortDOM()}),Y.destroyHandlers.push(()=>{if(a(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),Z2=(J,X,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},N2=(J,X)=>{let q=new Set(J.selected);for(let j of X)q.delete(j);return{...J,selected:q}},a0=(J,X,q)=>{if(q==="none")return J;if(J.selected.has(X))return N2(J,[X]);else return Z2(J,[X],q)},FJ=(J,X,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},LJ=(J)=>({...J,selected:new Set}),_2=(J,X)=>{return J.focusedIndex=X,J},TJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?X-1:0;return J.focusedIndex=j,J},kJ=(J,X,q=!1)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=q?0:X-1;return J.focusedIndex=j,J},HJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},bJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var W2=(J)=>{return Array.from(J.selected)},V2=(J,X)=>{let q=[];for(let j of J.selected){let Y=X(j);if(Y)q.push(Y)}return q};var yJ=(J)=>{let X=J?.mode??"single",q=J?.initial,j=AJ(q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:K,emitter:B,config:N}=Q,{classPrefix:U,ariaIdPrefix:W}=N;if(X==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}K.root.classList.add(`${U}--selectable`);let w=new Map,k=()=>{w.clear();let D=Q.dataManager.getTotal(),T=Q.dataManager.getCached();if(T===0)return;if(T>=D){for(let V=0;V<D;V++){let u=Q.dataManager.getItem(V);if(u)w.set(u.id,V)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let V=$.getLoadedRanges();for(let u of V)for(let c=u.start;c<=u.end;c++){let r=Q.dataManager.getItem(c);if(r&&!r._isPlaceholder)w.set(r.id,c)}}};B.on("data:change",({type:D,id:T})=>{if(D==="remove")j.selected.delete(T),k()}),B.on("load:end",({items:D,offset:T})=>{if(!D||D.length===0)return;if(T!==void 0)for(let $=0;$<D.length;$++){let V=D[$];if(V&&V.id!==void 0)w.set(V.id,T+$)}else k()}),k(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:y}=Q.getRenderFns(),A=()=>{y();let D=(T)=>{let $=w.get(T);if($===void 0)return;return Q.dataManager.getItem($)};B.emit("selection:change",{selected:W2(j),items:V2(j,D)})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${U}-live-region`,Y.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(K.root.getAttribute("role")==="grid"?K.root.parentElement??K.root:K.root).appendChild(Y);let _=Y;B.on("selection:change",({selected:D})=>{let T=D.length;if(T===0)_.textContent="";else if(T===1)_.textContent="1 item selected";else _.textContent=`${T} items selected`});let G=()=>{if(Q.state.isDestroyed)return;if(!K.root.matches(":focus-visible"))return;let D=Q.dataManager.getTotal();if(D===0)return;let T=j.focusedIndex>=0?Math.min(j.focusedIndex,D-1):0;j=_2(j,T),j.focusVisible=!0,K.root.setAttribute("aria-activedescendant",`${W}-item-${T}`),Q.scrollController.scrollTo(Q.adjustScrollPosition($0(T,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(T);if($)Q.renderer.updateItemClasses(T,j.selected.has($.id),!0)};K.root.addEventListener("focusin",G);let E=(D)=>{if(Q.state.isDestroyed)return;let T=D.relatedTarget;if(T&&K.root.contains(T))return;let $=j.focusedIndex;if(j.focusVisible=!1,K.root.removeAttribute("aria-activedescendant"),$>=0){let V=Q.dataManager.getItem($);if(V)Q.renderer.updateItemClasses($,j.selected.has(V.id),!1)}};K.root.addEventListener("focusout",E),Q.clickHandlers.push((D)=>{if(Q.state.isDestroyed)return;let $=D.target.closest("[data-index]");if(!$)return;let V=parseInt($.dataset.index??"-1",10);if(V<0)return;let u=Q.dataManager.getItem(V);if(!u)return;B.emit("item:click",{item:u,index:V,event:D}),j=_2(j,V),j.focusVisible=!1,K.root.setAttribute("aria-activedescendant",`${W}-item-${V}`),j=a0(j,u.id,X),A()}),Q.keydownHandlers.push((D)=>{if(Q.state.isDestroyed)return;let T=Q.dataManager.getTotal(),$=j.focusedIndex,V=!1,u=!1,c=j;switch(D.key){case"ArrowUp":c=TJ(j,T,N.wrap),c.focusVisible=!0,V=!0,u=!0;break;case"ArrowDown":c=kJ(j,T,N.wrap),c.focusVisible=!0,V=!0,u=!0;break;case"Home":c=HJ(j,T),c.focusVisible=!0,V=!0,u=!0;break;case"End":c=bJ(j,T),c.focusVisible=!0,V=!0,u=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let r=Q.dataManager.getItem(j.focusedIndex);if(r)c=a0(j,r.id,X),c.focusVisible=!0;V=!0}break}if(V){D.preventDefault(),j=c;let r=j.focusedIndex;if(r>=0){let S=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition($0(r,Q.sizeCache,Q.state.viewportState.containerSize,S.total,"center",Q.getCachedCompression()))),K.root.setAttribute("aria-activedescendant",`${W}-item-${r}`)}else K.root.removeAttribute("aria-activedescendant");if(u){let{selected:S}=j;if($>=0&&$!==r){let H=Q.dataManager.getItem($);if(H)Q.renderer.updateItemClasses($,S.has(H.id),!1)}if(r>=0){let H=Q.dataManager.getItem(r);if(H)Q.renderer.updateItemClasses(r,S.has(H.id),!0)}}else A()}}),Q.methods.set("select",(...D)=>{j=Z2(j,D,X),A()}),Q.methods.set("deselect",(...D)=>{j=N2(j,D),A()}),Q.methods.set("toggleSelect",(D)=>{j=a0(j,D,X),A()}),Q.methods.set("selectAll",()=>{if(X!=="multiple")return;let D=Q.getAllLoadedItems();j=FJ(j,D,X),k(),A()}),Q.methods.set("clearSelection",()=>{j=LJ(j),A()}),Q.methods.set("getSelected",()=>{return W2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(T)=>{let $=w.get(T);return $===void 0?void 0:Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(_&&_.parentNode)_.remove();K.root.removeEventListener("focusin",G),K.root.removeEventListener("focusout",E)})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var $J=(J)=>{let X=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let Y=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),K=q.getVirtualTotal(),B=q.methods.get("getSelected"),N=B&&B().length>0?B():void 0;if(K===0){let k={index:0,offsetInItem:0,total:0};if(N)k.selectedIds=N;return k}let U,W;if(Q.isCompressed){let y=Y/Q.virtualSize*K;U=Math.max(0,Math.min(Math.floor(y),K-1)),W=(y-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(Y),W=Y-q.sizeCache.getOffset(U);W=Math.max(0,W);let w={index:U,offsetInItem:W,total:K};if(N)w.selectedIds=N;return w});let j=(Y)=>{let{index:Q,offsetInItem:K,selectedIds:B}=Y,N=q.getVirtualTotal();if(N===0)return;if(!Number.isFinite(Q)||!Number.isFinite(K))return;if(q.sizeCache.getTotal()!==N){q.sizeCache.rebuild(N),q.updateCompressionMode();let _=q.getCachedCompression();q.updateContentSize(_.virtualSize)}let W=q.getCachedCompression(),w=Math.max(0,Math.min(Q,N-1)),k;if(W.isCompressed){let _=q.sizeCache.getSize(w),G=_>0?K/_:0;k=(w+G)/N*W.virtualSize}else k=q.sizeCache.getOffset(w)+K;let y=q.state.viewportState.containerSize,A=Math.max(0,W.virtualSize-y);if(k=Math.max(0,Math.min(k,A)),q.scrollController.scrollTo(k),B&&B.length>0){let _=q.methods.get("select");if(_)_(...B)}let v=q.methods.get("loadVisibleRange");if(v)requestAnimationFrame(()=>{v()});else{let _=q.methods.get("reload");if(_)requestAnimationFrame(()=>{_()})}};if(q.methods.set("restoreScroll",j),X)queueMicrotask(()=>{j(X)})}}};var PJ=(J,X=50,q=1/0,j=!0)=>{let Y=J,Q=[],K=0,B=()=>{Q=Y.map((_,G)=>({def:_,index:G,width:0,minWidth:N1(_.minWidth??X,1),maxWidth:_.maxWidth??q,resizable:_.resizable??j,offset:0}))},N=(_)=>{if(Q.length===0){K=0;return}let G=0,E=0;for(let D=0;D<Q.length;D++){let T=Q[D],$=T.def;if($.width!==void 0)T.width=D2($.width,T.minWidth,T.maxWidth),G+=T.width;else E++}if(E>0){let T=Math.max(0,_-G)/E;for(let $=0;$<Q.length;$++){let V=Q[$];if(V.def.width===void 0)V.width=D2(T,V.minWidth,V.maxWidth)}}U()},U=()=>{let _=0;for(let G=0;G<Q.length;G++){let E=Q[G];E.offset=_,_+=E.width}K=_},W=(_,G)=>{if(_<0||_>=Q.length)return 0;let E=Q[_];if(!E.resizable)return E.width;let D=D2(G,E.minWidth,E.maxWidth);return E.width=D,U(),D},w=(_)=>{return Q[_]},k=(_)=>{if(Q.length===0)return;if(_<0)return Q[0];if(_>=K)return Q[Q.length-1];let G=0,E=Q.length-1;while(G<E){let D=G+E>>>1,T=Q[D];if(_<T.offset)E=D-1;else if(_>=T.offset+T.width)G=D+1;else return T}return Q[G]},y=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].offset},A=(_)=>{if(_<0||_>=Q.length)return 0;return Q[_].width},v=(_)=>{Y=_,B()};return B(),{get columns(){return Q},get totalWidth(){return K},resolve:N,updateColumns:v,resizeColumn:W,getColumn:w,getColumnAtX:k,getColumnOffset:y,getColumnWidth:A}},D2=(J,X,q)=>Math.min(q,Math.max(X,J)),N1=(J,X)=>Math.max(X,J);var wJ=(J,X,q,j,Y,Q,K)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let N=document.createElement("div");N.className=`${j}-table-header`,N.setAttribute("role","row"),N.setAttribute("aria-rowindex","1"),N.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),N.appendChild(U),B.appendChild(N),J.insertBefore(B,J.firstChild),X.style.position="absolute",X.style.top=`${q}px`,X.style.left="0",X.style.right="0",X.style.bottom="0",X.style.height="auto";let W=[],w=[],k=[],y=!0,A=null,v="asc",_=null,G=!1,E=-1,D=0,T=0,$=(P,M)=>{let L=document.createElement("div");L.className=`${j}-table-header-cell`,L.setAttribute("role","columnheader"),L.setAttribute("aria-colindex",String(M+1)),L.dataset.columnKey=P.def.key;let Z=P.def.align;if(Z==="center")L.classList.add(`${j}-table-header-cell--center`);else if(Z==="right")L.classList.add(`${j}-table-header-cell--right`);let C=document.createElement("div");C.className=`${j}-table-header-content`;let a=P.def.header?P.def.header(P.def):P.def.label;if(typeof a==="string")C.textContent=a;else C.appendChild(a);if(L.appendChild(C),P.def.sortable){let d=document.createElement("span");d.className=`${j}-table-header-sort`,d.setAttribute("aria-hidden","true"),L.appendChild(d),k.push(d),L.classList.add(`${j}-table-header-cell--sortable`)}else k.push(null);if(P.resizable){let d=document.createElement("div");d.className=`${j}-table-header-resize`,d.dataset.resizeIndex=String(M),L.appendChild(d),w.push(d)}return L},V=(P)=>{_=P,U.textContent="",W=[],w=[],k=[];let M=P.columns;for(let L=0;L<M.length;L++){let Z=M[L],C=$(Z,L);W.push(C),U.appendChild(C)}if(u(P),A)c(A,v)},u=(P)=>{_=P;let M=P.columns;U.style.width=`${P.totalWidth}px`;for(let L=0;L<W.length&&L<M.length;L++){let Z=W[L],C=M[L];Z.style.width=`${C.width}px`}},c=(P,M)=>{if(A=P,v=M,!_)return;let L=_.columns;for(let Z=0;Z<k.length&&Z<L.length;Z++){let C=k[Z];if(!C)continue;if(L[Z].def.key===P&&P!==null)C.textContent=M==="asc"?"▲":"▼",C.style.opacity="0.7",W[Z].setAttribute("aria-sort",M==="asc"?"ascending":"descending");else C.textContent="",C.style.opacity="0",W[Z].removeAttribute("aria-sort")}},r=(P)=>{U.style.transform=`translateX(${-P}px)`},S=(P)=>{let M=P.target;if(!M.dataset.resizeIndex)return;if(P.preventDefault(),P.stopPropagation(),E=parseInt(M.dataset.resizeIndex,10),!_)return;let L=_.getColumn(E);if(!L||!L.resizable)return;G=!0,D=P.clientX,T=L.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",M.classList.add(`${j}-table-header-resize--active`),M.setPointerCapture(P.pointerId),M.addEventListener("pointermove",H),M.addEventListener("pointerup",g),M.addEventListener("pointercancel",g)},H=(P)=>{if(!G||!_)return;let M=P.clientX-D;if(Math.abs(M)<1)return;let L=Math.max(0,T+M);Y(E,L)},g=(P)=>{if(!G)return;let M=P.target;M.removeEventListener("pointermove",H),M.removeEventListener("pointerup",g),M.removeEventListener("pointercancel",g);try{M.releasePointerCapture(P.pointerId)}catch{}M.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",G=!1,E=-1},t=(P)=>{let M=P.target;if(M.dataset.resizeIndex!==void 0)return;if(G)return;let L=M;while(L&&!L.dataset.columnKey)if(L=L.parentElement,L===N||L===null)return;if(!L||!L.dataset.columnKey)return;let Z=L.dataset.columnKey;if(!_)return;let C=_.columns,a=-1;for(let F=0;F<C.length;F++)if(C[F].def.key===Z){a=F;break}if(a===-1)return;let d=C[a];if(K)K({key:Z,index:a,event:P});if(d.def.sortable&&Q){let F;if(A===Z)if(v==="asc")F="desc";else F=null;else F="asc";Q({key:Z,index:a,direction:F})}};return N.addEventListener("pointerdown",S),N.addEventListener("click",t),{element:N,update:u,updateSort:c,rebuild:V,show:()=>{if(y)return;y=!0,N.style.display=""},hide:()=>{if(!y)return;y=!1,N.style.display="none"},destroy:()=>{N.removeEventListener("pointerdown",S),N.removeEventListener("click",t),X.style.position="",X.style.top="",X.style.left="",X.style.right="",X.style.bottom="",B.remove(),W=[],w=[],k=[],_=null,y=!1},syncScroll:r}};var _1=(J=200)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(X.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",X.push(Q)},clear:()=>{X.length=0}}},RJ=(J,X,q,j,Y,Q,K,B,N)=>{let U=_1(),W=new Map,w=-1,k=q,y=null,A=null,v=null,_=(z,O)=>{A=z,v=O},G=(z,O)=>{if(O)z.setAttribute("aria-selected","true");else z.removeAttribute("aria-selected")},E=`${Y}-item ${Y}-table-row`,D=`${Y}-item--selected`,T=`${Y}-item--focused`,$=`${Y}-table-cell`,V=`${Y}-table-cell--center`,u=`${Y}-table-cell--right`,c=`${Y}-item--odd`,r=`${Y}-item--placeholder`,S=`${Y}-item--replaced`,H=`${Y}-item ${Y}-table-row ${Y}-table-group-header`,g=`${Y}-table-group-header-content`,t=(z,O,m,I,s=!1)=>{if(m.def.cell){let b=m.def.cell(O,m.def,I);if(typeof b==="string")z.innerHTML=b;else z.replaceChildren(b)}else{let b=O[m.def.key],o=b!=null?String(b):"";if(s&&o)z.innerHTML=`<span>${o}</span>`;else z.textContent=o}},h=(z,O,m,I,s=!1)=>{let b=E;if(B){if(y){let o=y(O);if(o>=0&&(o&1)===1)b+=` ${c}`}else if((O&1)===1)b+=` ${c}`}if(s)b+=` ${r}`;if(m)b+=` ${D}`;if(I)b+=` ${T}`;z.className=b},R=(z,O)=>{let m=O.def.align;if(m==="center")z.classList.add(V),z.classList.remove(u);else if(m==="right")z.classList.add(u),z.classList.remove(V);else z.classList.remove(V,u)},p=(z,O)=>{let I=k.columns.length;if(O.length===I)return O;let s=[];for(let b=0;b<I;b++){let o;if(b<O.length)o=O[b];else o=document.createElement("div"),o.className=$,z.appendChild(o);s.push(o)}for(let b=I;b<O.length;b++)O[b].remove();return s},P=(z,O,m)=>{let I=U.acquire(),s=z;I.style.width=`${k.totalWidth}px`;let b=m.getSize(O);I.style.height=`${b}px`,I.className=H,I.setAttribute("role","presentation"),I.setAttribute("data-id",String(z.id)),I.setAttribute("data-index",String(O)),I.removeAttribute("aria-selected"),I.removeAttribute("aria-rowindex"),I.replaceChildren();let o=document.createElement("div");if(o.className=g,v){let f=v(s.groupKey,s.groupIndex);if(typeof f==="string")o.innerHTML=f;else o.appendChild(f)}I.appendChild(o);let j0=m.getOffset(O);return I.style.transform=`translateY(${j0}px)`,{element:I,cells:[],index:O,isGroupHeader:!0,lastItemId:z.id,lastSelected:!1,lastFocused:!1,lastOffset:j0,lastHeight:b}},M=(z,O,m,I,s)=>{let b=U.acquire();b.style.width=`${k.totalWidth}px`;let o=s.getSize(O);b.style.height=`${o}px`;let j0=String(z.id).startsWith("__placeholder_");h(b,O,m,I,j0),b.setAttribute("role","row"),b.setAttribute("data-id",String(z.id)),b.setAttribute("data-index",String(O)),b.id=`${Q}-${O}`,b.setAttribute("aria-rowindex",String(O+2));let f=K();if(f!==w)w=f;G(b,m);let n=p(b,[]),i=k.columns;for(let X0=0;X0<n.length&&X0<i.length;X0++){let Y0=n[X0],e=i[X0];Y0.style.left=`${e.offset}px`,Y0.style.width=`${e.width}px`,Y0.setAttribute("role","gridcell"),Y0.setAttribute("aria-colindex",String(X0+1)),R(Y0,e),t(Y0,z,e,O,j0)}let q0=s.getOffset(O);return b.style.transform=`translateY(${q0}px)`,{element:b,cells:n,index:O,isGroupHeader:!1,lastItemId:z.id,lastSelected:m,lastFocused:I,lastOffset:q0,lastHeight:o}},L=(z,O,m,I)=>{for(let[f,n]of W)if(f<O.start||f>O.end)U.release(n.element),W.delete(f);let s=!1,b=K();if(b!==w)w=b,s=!0;let o=null,j0=X();y=typeof B==="string"&&N?N():null;for(let f=O.start;f<=O.end;f++){let n=f-O.start,i=z[n];if(!i)continue;let q0=m.has(i.id),X0=f===I,Y0=A?A(i):!1,e=W.get(f);if(e){if(e.isGroupHeader!==Y0){U.release(e.element),W.delete(f);let Z0=Y0?P(i,f,j0):M(i,f,q0,X0,j0);if(W.set(f,Z0),!o)o=document.createDocumentFragment();o.appendChild(Z0.element);continue}if(Y0){if(e.lastItemId!==i.id){let M0=i,U0=e.element.firstElementChild;if(U0&&v){let V0=v(M0.groupKey,M0.groupIndex);if(typeof V0==="string")U0.innerHTML=V0;else U0.replaceChildren(V0)}e.element.setAttribute("data-id",String(i.id)),e.lastItemId=i.id}let K0=j0.getOffset(f);if(e.lastOffset!==K0)e.lastOffset=K0,e.element.style.transform=`translateY(${K0}px)`;let A0=j0.getSize(f);if(e.lastHeight!==A0)e.lastHeight=A0,e.element.style.height=`${A0}px`}else{let Z0=e.lastItemId!==i.id,K0=e.lastSelected!==q0,A0=e.lastFocused!==X0;if(Z0){let V0=e.lastItemId!=null&&String(e.lastItemId).startsWith("__placeholder_"),N0=String(i.id).startsWith("__placeholder_"),F0=k.columns;for(let T0=0;T0<e.cells.length&&T0<F0.length;T0++)t(e.cells[T0],i,F0[T0],f,N0);if(h(e.element,f,q0,X0,N0),e.element.setAttribute("data-id",String(i.id)),G(e.element,q0),V0&&!N0)e.element.classList.add(S),setTimeout(()=>{e.element.classList.remove(S)},300);e.lastItemId=i.id,e.lastSelected=q0,e.lastFocused=X0}else if(K0||A0){let V0=String(i.id).startsWith("__placeholder_");h(e.element,f,q0,X0,V0),G(e.element,q0),e.lastSelected=q0,e.lastFocused=X0}let M0=j0.getOffset(f);if(e.lastOffset!==M0)e.lastOffset=M0,e.element.style.transform=`translateY(${M0}px)`;let U0=j0.getSize(f);if(e.lastHeight!==U0)e.lastHeight=U0,e.element.style.height=`${U0}px`;if(s)e.element.setAttribute("aria-rowindex",String(f+2))}}else{let Z0=Y0?P(i,f,j0):M(i,f,q0,X0,j0);if(W.set(f,Z0),!o)o=document.createDocumentFragment();o.appendChild(Z0.element)}}if(o)J.appendChild(o)},Z=(z,O,m,I)=>{let s=W.get(z);if(!s)return;if(s.isGroupHeader)return;let b=s.lastItemId!==O.id,o=s.lastSelected!==m,j0=s.lastFocused!==I;if(b||o||j0){if(b){let f=k.columns;for(let n=0;n<s.cells.length&&n<f.length;n++)t(s.cells[n],O,f[n],z);s.element.setAttribute("data-id",String(O.id)),s.lastItemId=O.id}h(s.element,z,m,I),G(s.element,m),s.lastSelected=m,s.lastFocused=I}},C=(z,O,m)=>{let I=W.get(z);if(!I)return;if(I.isGroupHeader)return;let s=I.lastSelected!==O,b=I.lastFocused!==m;if(s||b)h(I.element,z,O,m),G(I.element,O),I.lastSelected=O,I.lastFocused=m},a=(z)=>{k=z;let O=z.columns;for(let[,m]of W)if(m.element.style.width=`${z.totalWidth}px`,m.cells.length>0)for(let I=0;I<m.cells.length&&I<O.length;I++){let s=m.cells[I],b=O[I];s.style.left=`${b.offset}px`,s.style.width=`${b.width}px`}},d=(z)=>{return W.get(z)?.element},F=()=>{for(let[,z]of W)U.release(z.element);W.clear(),w=-1};return{render:L,updateItem:Z,updateItemClasses:C,getElement:d,updateColumnLayout:a,setGroupHeaderFn:_,clear:F,destroy:()=>{F(),U.clear()}}};var W1=new Set,vJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let X=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(Y){let{dom:Q,emitter:K,config:B}=Y,{classPrefix:N}=B;if(B.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(B.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,w=J.maxColumnWidth??1/0,k=J.columnBorders??!1,y=J.rowBorders??!0,A=J.rowHeight,v=C0(b0(Y.rawConfig.padding),!1),_=J.headerHeight??(typeof A==="number"?A:40),G=J.sort?.key??null,E=J.sort?.direction??"asc";if(X=PJ(J.columns,W,w,U),typeof A==="function")Y.setSizeConfig(A);else if(typeof A==="number")Y.setSizeConfig(A);if(Y.rebuildSizeCache(),Q.root.classList.add(`${N}--table`),y)Q.root.classList.add(`${N}--table-row-borders`);if(k)Q.root.classList.add(`${N}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let D=-1,T=Q.items.getAttribute("aria-label");if(T)Q.root.setAttribute("aria-label",T),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=Y.getContainerWidth()-v;X.resolve($);let V=(O,m)=>{if(!X)return;let I=X.getColumn(O);if(!I)return;let s=I.width,b=X.resizeColumn(O,m);if(q)q.update(X);if(j)j.updateColumnLayout(X);r(),K.emit("column:resize",{key:I.def.key,index:O,previousWidth:s,width:b})},u=(O)=>{if(O.direction===null)G=null,E="asc";else G=O.key,E=O.direction;if(q)q.updateSort(G,E);K.emit("column:sort",O)},c=(O)=>{K.emit("column:click",O)};if(q=wJ(Q.root,Q.viewport,_,N,V,u,c),q.rebuild(X),G)q.updateSort(G,E);let r=()=>{if(!X)return;let O=X.totalWidth;Q.content.style.minWidth=`${O}px`,Q.items.style.minWidth=`${O}px`};r(),j=RJ(Q.items,()=>Y.sizeCache,X,J.columns,N,B.ariaIdPrefix,()=>Y.dataManager.getTotal(),Y.rawConfig.item?.striped,()=>Y.getStripeIndexFn());let S=null,H=null,g=!1,t=()=>{if(g)return;g=!0,S=Y.methods.get("_getSelectedIds")??null,H=Y.methods.get("_getFocusedIndex")??null},h=-1,R=-1,p=-1,P=!0,M=B.overscan,L={start:0,end:0},Z={start:0,end:0},C=()=>{if(Y.state.isDestroyed)return;let O=Y.scrollController.getScrollTop(),m=Y.state.viewportState.containerSize,I=Y.getVirtualTotal();if(!P&&O===h&&m===R&&I===p)return;h=O,R=m,p=I,P=!1;let s=I+1;if(s!==D)D=s,Q.root.setAttribute("aria-rowcount",String(s));if(I===0||m===0)L.start=0,L.end=0;else L.start=Math.max(0,Y.sizeCache.indexAtOffset(O)),L.end=Math.min(I-1,Math.max(0,Y.sizeCache.indexAtOffset(O+m-1)));Z.start=Math.max(0,L.start-M),Z.end=Math.min(I-1,L.end+M);let b=Y.state.viewportState;b.scrollPosition=O,b.visibleRange.start=L.start,b.visibleRange.end=L.end,b.renderRange.start=Z.start,b.renderRange.end=Z.end;let o=Y.state.lastRenderRange,j0=Y.dataManager.getItemsInRange(Z.start,Z.end);t();let f=S?S():W1,n=H?H():-1;if(j.render(j0,Z,f,n),o.start!==Z.start||o.end!==Z.end)o.start=Z.start,o.end=Z.end,K.emit("range:change",{range:{start:Z.start,end:Z.end}})},a=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,P=!0,C()};Y.setRenderFns(C,a);let d=q,F=-1,x=()=>{let O=Q.viewport.scrollLeft;if(O!==F){if(F=O,d.syncScroll)d.syncScroll(O)}};Y.afterScroll.push(()=>{x()});let z=()=>{x()};Q.viewport.addEventListener("scroll",z,{passive:!0}),Y.resizeHandlers.push((O,m)=>{if(!X)return;if(X.resolve(O-v),q)q.update(X);if(j)j.updateColumnLayout(X);r()}),Y.methods.set("updateColumns",(O)=>{if(!X||!q)return;if(X.updateColumns(O),X.resolve(Y.getContainerWidth()-v),q.rebuild(X),G)q.updateSort(G,E);if(r(),j)j.updateColumnLayout(X),j.clear();Y.forceRender()}),Y.methods.set("resizeColumn",(O,m)=>{if(!X)return;let I;if(typeof O==="string"){let s=X.columns;I=-1;for(let b=0;b<s.length;b++)if(s[b].def.key===O){I=b;break}if(I===-1)return}else I=O;V(I,m)}),Y.methods.set("getColumnWidths",()=>{if(!X)return{};let O={},m=X.columns;for(let I=0;I<m.length;I++)O[m[I].def.key]=m[I].width;return O}),Y.methods.set("setSort",(O,m)=>{if(G=O,E=m??"asc",q)q.updateSort(G,E)}),Y.methods.set("getSort",()=>{return{key:G,direction:E}}),Y.methods.set("_getTableLayout",()=>X),Y.methods.set("_replaceTableRenderer",(O)=>{j=O}),Y.methods.set("_updateTableForGroups",(O,m)=>{if(j)j.setGroupHeaderFn(O,m)}),Y.methods.set("_getTableHeaderHeight",()=>_),Y.contentSizeHandlers.push(()=>{r()}),Y.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",z),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${N}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let O=Q.root.getAttribute("aria-label");if(O)Q.items.setAttribute("aria-label",O),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};export{vJ as withTable,$J as withSnapshots,yJ as withSelection,e2 as withScrollbar,JJ as withScale,UJ as withPage,EJ as withMasonry,VJ as withGroups,MJ as withGrid,YJ as withAsync,n2 as vlist};
1
+ var{defineProperty:e0,getOwnPropertyNames:mJ,getOwnPropertyDescriptor:dJ}=Object,cJ=Object.prototype.hasOwnProperty;var H2=new WeakMap,lJ=(J)=>{var Y=H2.get(J),q;if(Y)return Y;if(Y=e0({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")mJ(J).map((j)=>!cJ.call(Y,j)&&e0(Y,j,{get:()=>J[j],enumerable:!(q=dJ(J,j))||q.enumerable}));return H2.set(J,Y),Y};var rJ=(J,Y)=>{for(var q in Y)e0(J,q,{get:Y[q],enumerable:!0,configurable:!0,set:(j)=>Y[q]=()=>j})};var b2=(J,Y)=>()=>(J&&(Y=J(J=0)),Y);var aJ=(J,Y)=>{let q=Y;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:(j)=>{q=j},isVariable:()=>!1}},sJ=(J,Y)=>{let q=Y,j=new Float64Array(0),X=(B)=>{q=B,j=new Float64Array(B+1),j[0]=0;for(let N=0;N<B;N++)j[N+1]=j[N]+J(N)};X(Y);let Q=(B)=>{if(q===0)return 0;if(B<=0)return 0;if(B>=j[q])return q-1;let N=0,Z=q-1;while(N<Z){let U=N+Z+1>>>1;if(j[U]<=B)N=U;else Z=U-1}return N};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=q)return j[q];return j[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Q(B),getTotalSize:()=>j[q]??0,getTotal:()=>q,rebuild:(B)=>X(B),isVariable:()=>!0}},w0=(J,Y)=>{if(typeof J==="number")return aJ(J,Y);return sJ(J,Y)},c0=(J,Y,q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let X=0,Q=0,B=Y;while(B<j&&Q<q)Q+=J.getSize(B),X++,B++;return Math.max(1,X)},J2=(J,Y,q)=>{if(q===0)return 0;if(!J.isVariable())return Math.floor(Y/J.getSize(0));let j=0,X=0;for(let Q=q-1;Q>=0;Q--){let B=J.getSize(Q);if(X+B>Y)break;X+=B,j++}return Math.max(j,1)},w2=(J,Y,q)=>{if(q===0)return 0;let j=Math.floor(Y),X=Y-j,Q=Math.max(0,Math.min(j,q-1));return J.getOffset(Q)+X*J.getSize(Q)};var S0=(J,Y,q)=>{let j=Array.from(Y).sort((B,N)=>B-N);if(j.length<=1)return;let X=[];for(let B=0;B<j.length;B++){let N=q(j[B]);if(N)X.push(N)}if(X.length<=1)return;let Q=J.firstChild;for(let B=0;B<X.length;B++){let N=X[B];if(N===Q)Q=Q.nextSibling;else J.insertBefore(N,Q)}};var d2=3,c2="vlist",j2=200,I0=50,l2=50,r2=5,a2=2,p0=16000000,s2=150,o2="x",n2=20,q2="_isPlaceholder",i2="__placeholder_";var u0=(J,Y,q)=>{let j=Y.getTotalSize(),X=q===!0||j>p0,Q=j>p0?p0:j,B=j>0?Q/j:1;return{isCompressed:X,actualSize:j,virtualSize:Q,ratio:B}},e2=(J,Y,q,j,X,Q)=>{if(j===0||Y===0)return Q.start=0,Q.end=-1,Q;if(!X.isCompressed||X.ratio===1){let A=q.indexAtOffset(J),P=q.indexAtOffset(J+Y);if(P<j-1)P++;return Q.start=Math.max(0,A),Q.end=Math.min(j-1,Math.max(0,P)),Q}let{virtualSize:B}=X,Z=J/B*j,U=Math.floor(Z),W=c0(q,Math.max(0,U),Y,j),D=Math.ceil(Z)+W,w=B-Y-J;if(w<=Y&&w>=-1){let A=J2(q,Y,j),P=Math.max(0,j-A),V=Math.max(0,Math.min(1,1-w/Y));U=Math.floor(U+(P-U)*V),D=w<=1?j-1:Math.min(j-1,U+W)}return Q.start=Math.max(0,U),Q.end=Math.min(j-1,Math.max(0,D)),Q},a0=(J,Y,q,j,X,Q,B)=>{if(!Q.isCompressed||j===0)return q.getOffset(J);if(Q.ratio===1)return q.getOffset(J)-Y;let{virtualSize:N}=Q,Z=N-X,U=Z-Y;if(U<=X&&U>=-1){if(Y>=Z-1){let k=q.getTotalSize()-q.getOffset(J);return X-k}let w=J2(q,X,j),A=Math.max(0,j-w),V=Y/N*j,M=Math.max(0,Math.min(1,1-U/X)),F=q.getOffset(J)-q.getOffset(A),O=q.getOffset(J)-w2(q,V,j);return O+(F-O)*M}let W=Y/N,D=q.getTotalSize(),E=W*D;return q.getOffset(J)-E},JJ=(J,Y,q,j,X,Q="start")=>{if(j===0)return 0;let B;if(X.isCompressed&&X.ratio!==1){if(Q==="end"&&J===j-1)return Math.max(0,X.virtualSize-q);B=J/j*X.virtualSize}else B=Y.getOffset(J);let N=Y.getSize(J);switch(Q){case"center":B-=(q-N)/2;break;case"end":B-=q-N;break}let Z=X.virtualSize-q;return Math.max(0,Math.min(B,Z))};var Y2=()=>{};var R0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var VJ={};rJ(VJ,{createGridRenderer:()=>B2});var X4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Q)=>{if(Q.remove(),Y.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-row"),Q.removeAttribute("data-col"),Y.push(Q)},clear:()=>{Y.length=0}}},U4=1,B2=(J,Y,q,j,X,Q,B,N,Z=!1)=>{let U=X4(),W=new Map,D=Q,E=!1,w=0,A="",P=-1,V={selected:!1,focused:!1},M=(_,y)=>{return V.selected=_,V.focused=y,V},F=`${X}-item ${X}-grid-item`,O=`${X}-item--selected`,k=`${X}-item--focused`,$=(_,y)=>{if(typeof y==="string")_.innerHTML=y;else _.replaceChildren(y)},G=(_,y,L)=>{_.classList.toggle(O,y),_.classList.toggle(k,L)},p=(_,y)=>{let L=j.getRow(_);if(y?.compression?.isCompressed)return a0(L,y.scrollPosition,q,y.totalItems,y.containerSize,y.compression,y.rangeStart);return q.getOffset(L)},h=(_,y)=>{let L=E&&j.getCol(_)===0,R=L?0:j.getCol(_),u=L?0:j.getColumnOffset(R,D),S;if(E){let b=j.getRow(_),x=0,l=new Set;for(let s=0;s<_;s++){let f=j.getRow(s);if(f<b&&!l.has(f)){let n=q.getSize(s);x+=n,l.add(f)}}S=x}else S=p(_,y);if(Z)return`translate(${Math.round(S)}px, ${Math.round(u)}px)`;return`translate(${Math.round(u)}px, ${Math.round(S)}px)`},g=(_,y)=>{_.style.transform=y},I=(_,y)=>{let L=_.dataset.id?.startsWith("__group_header"),R=L?D:j.getColumnWidth(D),u;if(E||L)u=q.getSize(y)-j.gap;else{let S=j.getRow(y);u=q.getSize(S)-j.gap}if(Z)_.style.width=`${u}px`,_.style.height=`${R}px`;else _.style.width=`${R}px`,_.style.height=`${u}px`},H=(_,y,L,R,u)=>{let S=U.acquire(),b=M(L,R);if(S.className=F,S.dataset.index=String(_),S.dataset.id=String(y.id),S.dataset.row=String(j.getRow(_)),S.dataset.col=String(j.getCol(_)),S.ariaSelected=String(L),N)S.id=`${N}-item-${_}`;if(B){let l=B();if(l!==P)P=l,A=String(l);S.setAttribute("aria-setsize",A),S.setAttribute("aria-posinset",String(_+1))}I(S,_);let x=Y(y,_,b);return $(S,x),G(S,L,R),g(S,u),{element:S,lastItemId:y.id,lastSelected:L,lastFocused:R,lastTransform:u,lastSeenFrame:w}},a=(_,y,L,R,u)=>{if(w++,y.start===0&&_.length>0)E=R0(_[0]);for(let[x,l]of W)if(x>=y.start&&x<=y.end)l.lastSeenFrame=w;else if(w-l.lastSeenFrame>U4)U.release(l.element),W.delete(x);let S=!1;if(B){let x=B();if(x!==P)P=x,A=String(x),S=!0}let b=null;for(let x=y.start;x<=y.end;x++){let l=x-y.start,s=_[l];if(!s){console.warn(`⚠️ RENDER: Missing item at index ${x} (range: ${y.start}-${y.end}, items.length: ${_.length})`);continue}let f=L.has(s.id),n=x===R,J0=W.get(x);if(J0){let m=J0.lastItemId!==s.id,o=J0.lastSelected!==f,Q0=J0.lastFocused!==n;if(m||o||Q0){if(m){let Y0=M(f,n),X0=Y(s,x,Y0);$(J0.element,X0),J0.element.dataset.id=String(s.id),J0.element.dataset.row=String(j.getRow(x)),J0.element.dataset.col=String(j.getCol(x)),I(J0.element,x)}G(J0.element,f,n),J0.element.ariaSelected=String(f),J0.lastItemId=s.id,J0.lastSelected=f,J0.lastFocused=n}let q0=h(x,u);if(J0.lastTransform!==q0)g(J0.element,q0),J0.lastTransform=q0;if(S)J0.element.setAttribute("aria-setsize",A)}else{let m=h(x,u),o=H(x,s,f,n,m);if(!b)b=document.createDocumentFragment();b.appendChild(o.element),W.set(x,o)}}if(b)J.appendChild(b)},j0=(_)=>{for(let[y,L]of W){let R=h(y,_);if(L.lastTransform!==R)g(L.element,R),L.lastTransform=R}},d=(_,y,L,R)=>{let u=W.get(_);if(!u)return;let S=u.lastItemId!==y.id,b=u.lastSelected!==L,x=u.lastFocused!==R;if(S||b||x){let l=M(L,R),s=Y(y,_,l);$(u.element,s),G(u.element,L,R),u.element.dataset.id=String(y.id),u.element.ariaSelected=String(L),I(u.element,_),u.lastItemId=y.id,u.lastSelected=L,u.lastFocused=R}},C=(_,y,L)=>{let R=W.get(_);if(!R)return;let u=R.lastSelected!==y,S=R.lastFocused!==L;if(u||S)G(R.element,y,L),R.lastSelected=y,R.lastFocused=L},c=(_)=>{return W.get(_)?.element},T=(_)=>{if(Math.abs(_-D)<1)return;D=_;for(let[y,L]of W){I(L.element,y);let R=h(y);g(L.element,R),L.lastTransform=R}},v=()=>{S0(J,W.keys(),(_)=>W.get(_)?.element)},z=()=>{for(let[,_]of W)U.release(_.element);W.clear()};return{render:a,updatePositions:j0,updateItem:d,updateItemClasses:C,getElement:c,sortDOM:v,updateContainerWidth:T,clear:z,destroy:()=>{z(),U.clear()}}};var Z2=b2(()=>{Y2()});var $2=2,y2=(J=0)=>{let Y=[,,,,,];for(let q=0;q<5;q++)Y[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Y,sampleIndex:0,sampleCount:0}},P2=(J,Y)=>{let q=performance.now(),j=q-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Q=J.samples[0];return Q.position=Y,Q.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Y,J.lastTime=q,J}let X=J.samples[J.sampleIndex];if(X.position=Y,X.time=q,J.sampleIndex=(J.sampleIndex+1)%5,J.sampleCount=Math.min(J.sampleCount+1,5),J.sampleCount>=2){let Q=(J.sampleIndex-J.sampleCount+5)%5,B=J.samples[Q],N=Y-B.position,Z=q-B.time;J.velocity=Z>0?Math.abs(N)/Z:0}return J.lastPosition=Y,J.lastTime=q,J};var R2=(J,Y)=>{let q=new Map,j=(Q)=>{let B=q.get(Q);return B!==void 0?B:J},X=w0(j,Y);return{getOffset(Q){return X.getOffset(Q)},getSize(Q){return j(Q)},indexAtOffset(Q){return X.indexAtOffset(Q)},getTotalSize(){return X.getTotalSize()},getTotal(){return X.getTotal()},rebuild(Q){if(Q<X.getTotal()){for(let B of q.keys())if(B>=Q)q.delete(B)}X=w0(j,Q)},isVariable(){return!0},setMeasuredSize(Q,B){q.set(Q,B)},isMeasured(Q){return q.has(Q)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var z2=()=>{let J={},Y=(N,Z)=>{if(!J[N])J[N]=new Set;return J[N].add(Z),()=>q(N,Z)},q=(N,Z)=>{J[N]?.delete(Z)};return{on:Y,off:q,emit:(N,Z)=>{J[N]?.forEach((U)=>{try{U(Z)}catch(W){console.error(`[vlist] Error in event handler for "${String(N)}":`,W)}})},once:(N,Z)=>{let U=(W)=>{q(N,U),Z(W)};return Y(N,U)},clear:(N)=>{if(N)delete J[N];else for(let Z in J)delete J[Z]},listenerCount:(N)=>{return J[N]?.size??0}}};var v2=(J)=>{if(typeof J==="string"){let Y=document.querySelector(J);if(!Y)throw Error(`[vlist/builder] Container not found: ${J}`);return Y}return J},C2=(J,Y,q,j)=>{let X=document.createElement("div");if(X.className=Y,j)X.classList.add(`${Y}--horizontal`);X.setAttribute("tabindex","0");let Q=document.createElement("div");if(Q.className=`${Y}-viewport`,Q.setAttribute("tabindex","-1"),j)Q.style.overflowX="auto",Q.style.overflowY="hidden";else Q.style.overflow="auto";Q.style.height="100%",Q.style.width="100%";let B=document.createElement("div");if(B.className=`${Y}-content`,B.style.position="relative",j)B.style.height="100%";else B.style.width="100%";let N=document.createElement("div");if(N.className=`${Y}-items`,N.setAttribute("role","listbox"),q)N.setAttribute("aria-label",q);if(j)N.setAttribute("aria-orientation","horizontal");if(N.style.position="relative",j)N.style.height="100%";else N.style.width="100%";let Z=document.createElement("div");return Z.setAttribute("aria-live","polite"),Z.setAttribute("aria-atomic","true"),Z.setAttribute("role","status"),Z.className=`${Y}-live`,Z.style.position="absolute",Z.style.width="1px",Z.style.height="1px",Z.style.padding="0",Z.style.margin="-1px",Z.style.overflow="hidden",Z.style.clip="rect(0,0,0,0)",Z.style.whiteSpace="nowrap",Z.style.border="0",B.appendChild(N),Q.appendChild(B),X.appendChild(Z),X.appendChild(Q),J.appendChild(X),{root:X,viewport:Q,content:B,items:N,liveRegion:Z}};var S2=(J=100)=>{let Y=[];return{acquire:()=>{let q=Y.pop();if(q)return q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(q)=>{if(Y.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),Y.push(q)},clear:()=>{Y.length=0}}};var f2=(J,Y,q,j,X)=>{if(j===0||Y===0){X.start=0,X.end=-1;return}let Q=q.indexAtOffset(J),B=c0(q,Q,Y,j),N=Q+B;X.start=Math.max(0,Q),X.end=Math.min(j-1,Math.max(0,N))},I2=(J,Y,q,j)=>{j.start=Math.max(0,J.start-Y),j.end=Math.min(q-1,J.end+Y)},p2=(J,Y,q,j,X,Q=0)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),N=Y.getOffset(B),Z=Y.getSize(B),U=Y.getTotalSize(),W=Math.max(0,U+Q-q),D;switch(X){case"center":D=N-(q-Z)/2;break;case"end":D=Q>0&&N+Z>=U?W:N-q+Z;break;default:D=N}return Math.max(0,Math.min(D,W))};var l0={top:0,right:0,bottom:0,left:0},b0=(J)=>{if(J==null)return l0;if(typeof J==="number")return J===0?l0:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,B]=J;return Q===0&&B===0?l0:{top:Q,right:B,bottom:Q,left:B}}let[Y,q,j,X]=J;return Y===0&&q===0&&j===0&&X===0?l0:{top:Y,right:q,bottom:j,left:X}},r0=(J,Y)=>Y?J.left+J.right:J.top+J.bottom,C0=(J,Y)=>Y?J.top+J.bottom:J.left+J.right;var h2=(J,Y)=>{let{dom:q,emitter:j,resolvedConfig:X,rawConfig:Q,rendered:B,pool:N,sharedState:Z,isHorizontal:U,classPrefix:W,contentSizeHandlers:D,idleHandlers:E,afterScroll:w,clickHandlers:A,keydownHandlers:P,resizeHandlers:V,destroyHandlers:M,methods:F,onScrollFrame:O,resizeObserver:k,renderRange:$}=Y;return{get dom(){return q},get sizeCache(){return J.hc},get emitter(){return j},get config(){return X},get rawConfig(){return Q},adjustScrollPosition(G){if(J.mp===0)return G;let p=U?J.cw:J.ch,h=J.hc.getTotalSize(),g=Math.max(0,h-p),I=Math.max(0,h+J.mp-p);if(G>=g)return I;return Math.min(G,I)},get renderer(){return{render:(G,p,h,g,I)=>{J.ss=h,J.fi=g,J.ffn()},updateItemClasses:(G,p,h)=>{let g=B.get(G);if(!g)return;g.classList.toggle(`${W}-item--selected`,p),g.classList.toggle(`${W}-item--focused`,h),g.ariaSelected=p?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(G)=>B.get(G)??null,clear:()=>{},destroy:()=>{}}},set renderer(G){},get dataManager(){return J.dm},set dataManager(G){J.dm=G},get scrollController(){return J.sc},set scrollController(G){J.sc=G},state:Z,getContainerWidth(){return J.cw},afterScroll:w,idleHandlers:E,clickHandlers:A,keydownHandlers:P,resizeHandlers:V,contentSizeHandlers:D,destroyHandlers:M,methods:F,replaceTemplate(G){J.at=G},replaceRenderer(G){},replaceDataManager(G){J.dm=G},replaceScrollController(G){J.sc=G},getItemsForRange(G){let{dm:p,it:h}=J,g=[];for(let I=G.start;I<=G.end;I++){let H=p?p.getItem(I):h[I];if(H)g.push(H)}return g},getAllLoadedItems(){let G=J.dm;if(G){let p=G.getTotal(),h=[];for(let g=0;g<p;g++){let I=G.getItem(g);if(I)h.push(I)}return h}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let G=J.hc;return{isCompressed:!1,actualSize:G.getTotalSize(),virtualSize:G.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:$.start,compression:Z.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,G]of B)G.remove(),N.release(G);B.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(G,p){J.rfn=G,J.ffn=p},setVirtualTotalFn(G){J.vtf=G},rebuildSizeCache(G){J.hc.rebuild(G??J.vtf())},setSizeConfig(G){if(J.hc=w0(G,J.vtf()),J.gp>0){let p=J.hc.getTotalSize,h=J.gp;J.hc.getTotalSize=()=>{let g=p();return g>0?g-h:0}}},updateContentSize(G){let p=`${G+J.mp}px`;if(U)q.content.style.width=p;else q.content.style.height=p},updateCompressionMode(){},setVisibleRangeFn(G){J.gvr=G},setScrollToPosFn(G){J.gsp=G},setPositionElementFn(G){J.pef=G},setScrollFns(G,p){J.sgt=G,J.sst=(h)=>{p(h),O()}},setScrollTarget(G){J.st.removeEventListener("scroll",O),J.st=G,J.st.addEventListener("scroll",O,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(G){J.gcw=G.width,J.gch=G.height,J.cw=G.width(),J.ch=G.height(),Z.viewportState.containerSize=U?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,k.unobserve(q.viewport)},disableWheelHandler(){if(J.wh)q.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(G){J.sif=G}}},u2=(J,Y,q)=>{let{rendered:j,itemState:X,contentSizeHandlers:Q,applyTemplate:B,updateContentSize:N}=Y,Z=()=>{J.hc.rebuild(J.vtf()),N(),q.updateCompressionMode();for(let U=0;U<Q.length;U++)Q[U]();J.ffn()};return{getState:()=>({total:J.it.length,cached:J.it.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>J.it.length,getCached:()=>J.it.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(U)=>J.it[U],isItemLoaded:(U)=>U>=0&&U<J.it.length&&J.it[U]!==void 0,getItemsInRange:(U,W)=>{let D=J.it,E=[],w=Math.max(0,U),A=Math.min(W,D.length-1);for(let P=w;P<=A;P++)E.push(D[P]);return E},setTotal:(U)=>{},setItems:(U,W=0,D)=>{let E=J.it;if(W===0&&(D!==void 0||E.length===0))J.it=U;else{let w=W+U.length;if(E.length<w)E.length=w;for(let A=0;A<U.length;A++)E[W+A]=U[A]}if(J.ii)Z()},updateItem:(U,W)=>{let D=J.it;if(U<0||U>=D.length)return!1;let E=D[U];if(!E)return!1;D[U]={...E,...W};let w=j.get(U);if(w)B(w,J.at(D[U],U,X)),w.dataset.id=String(D[U].id);return!0},removeItem:(U)=>{let W=typeof U==="number"?U:J.it.findIndex((D)=>D.id===U);if(W<0||W>=J.it.length)return!1;if(J.it.splice(W,1),J.ii)Z();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),N(),J.ffn()}}},g2=(J,Y)=>{let{dom:q,classPrefix:j}=Y;return{getScrollTop:()=>J.sgt(),scrollTo:(X)=>{J.sst(X),J.ls=X,J.rfn()},scrollBy:(X)=>{let Q=J.sgt()+X;J.sst(Q),J.ls=Q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(X=2)=>J.sab(X),getScrollPercentage:()=>{let X=J.hc.getTotalSize(),Q=Math.max(0,X-J.ch);return Q>0?J.ls/Q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>q.root.classList.contains(`${j}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(X)=>{J.ch=X},destroy:()=>{}}};var x2=(J,Y,q,j,X,Q,B,N,Z,U=0)=>{let W=(V,M=!1)=>{let F=q?Y.viewport.scrollWidth-Y.viewport.clientWidth:Y.viewport.scrollHeight-Y.viewport.clientHeight;if(F<=0||V<F-2)return!1;let O=Math.max(0,J.hc.getTotalSize()-(q?J.cw:J.ch));if(O>V){if(J.sst(O),J.ls=O,M)J.rfn();return!0}return!1};if(!Z||!N)return{ob:null,ei:null,mc:null,fl:()=>{},se:W};let D=new WeakMap,E=0,w=!1,A=null,P=()=>{if(w){let V=J.sgt();B(),w=!1,W(V,!0)}};return A=new ResizeObserver((V)=>{if(J.id)return;let M=!1,F=j.start;for(let O of V){let k=D.get(O.target);if(k===void 0)continue;let $=q?O.borderBoxSize[0].inlineSize:O.borderBoxSize[0].blockSize;if(!N.isMeasured(k)){let G=$+U,p=N.getSize(k);if(N.setMeasuredSize(k,G),M=!0,k<F&&G!==p)E+=G-p;A.unobserve(O.target);let h=O.target;if(q)h.style.width=`${$}px`;else h.style.height=`${$}px`}}if(!M)return;if(N.rebuild(J.vtf()),J.hc=N,E!==0){let O=J.sgt();J.sst(O+E),J.ls=O+E,E=0}if(Q())w=!0;else{let O=J.sgt();B(),w=!1,W(O)}X.start=-1,X.end=-1,J.rfn()}),{ob:A,ei:D,mc:N,fl:P,se:W}};var Q2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,$0=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},f0=(J,Y)=>{let q=null,j=()=>{if(q!==null)cancelAnimationFrame(q),q=null};return{animateScroll:(Q,B,N)=>{if(j(),Math.abs(B-Q)<1){J.scrollTo(B);return}let Z=performance.now(),U=(W)=>{let D=W-Z,E=Math.min(D/N,1),w=Q+(B-Q)*Q2(E);if(J.scrollTo(w),Y(),E<1)q=requestAnimationFrame(U);else q=null};q=requestAnimationFrame(U)},cancelScroll:j}};var m2=(J,Y,q,j,X,Q,B,N,Z,U,W,D,E,w,A,P,V,M)=>{let F=(K)=>{{if(!Array.isArray(K)){console.warn("[vlist] setItems() expects an array, got:",typeof K);return}if(K.length>0&&K[0]&&!("id"in K[0]))console.warn('[vlist] Items must have an "id" property. First item:',K[0]);let _=new Set;for(let y=0;y<K.length;y++){let L=K[y];if(L&&"id"in L){if(_.has(L.id)){console.warn(`[vlist] Duplicate item ID "${L.id}" at index ${y}. updateItem() and removeItem() will only match the first occurrence.`);break}_.add(L.id)}}}a(),Z.dataManager.setItems(K,0,K.length)},O=U?(K)=>{let _=J.sab(2),y=J.it.length;if(Z.dataManager.setItems(K,y),_&&J.it.length>0){let L=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(L),J.ls=L,J.rfn()}}:(K)=>{let _=J.it.length;Z.dataManager.setItems(K,_)},k=U?(K)=>{let _=J.sgt(),y=J.hc.getTotalSize(),L=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...K,...L],0);let u=J.hc.getTotalSize()-y;if(u>0)J.sst(_+u),J.ls=_+u}:(K)=>{let _=[...J.it];Z.dataManager.clear(),Z.dataManager.setItems([...K,..._],0)},$=(K,_)=>{{let y=J.vtf();if(K<0||K>=y)console.warn(`[vlist] updateItem() index ${K} is out of range (0–${y-1}).`)}Z.dataManager.updateItem(K,_)},G=!1,p=(K)=>{let _=-1;if(typeof document<"u"){let L=document.activeElement;if(L&&Y.items.contains(L)){let R=L.dataset?.index;if(R!==void 0)_=parseInt(R,10)}}let y=Z.dataManager.removeItem(K);if(y){if(q.emit("data:change",{type:"remove",id:K}),Z.forceRender(),!G){let L=Z.dataManager;if(typeof L.ensureRange==="function")G=!0,queueMicrotask(()=>{G=!1;let R=Z.dataManager.getTotal(),{start:u,end:S}=Z.state.viewportState.renderRange;if(R===0)return;if(S>=u)L.ensureRange(u,S).catch(()=>{})})}}if(!y)console.warn(`[vlist] removeItem() could not find item with id "${K}".`);if(y&&_>=0){let L=J.vtf();if(L>0){let R=Math.min(_,L-1),u=j.get(R);if(u&&typeof u.focus==="function")u.focus()}}return y},h=(K)=>{return Z.dataManager.getItem(K)},g=(K)=>{return Z.dataManager.getIndexById?.(K)??-1},I=async(K)=>{if(Z.dataManager.reload)await Z.dataManager.reload()},H=null,a=()=>{if(H!==null)cancelAnimationFrame(H),H=null},j0=(K,_,y)=>{if(a(),Math.abs(_-K)<1){J.sst(_),J.ls=_,J.rfn();return}let L=performance.now(),R=(u)=>{let S=u-L,b=Math.min(S/y,1),x=K+(_-K)*Q2(b);if(J.sst(x),J.ls=x,J.rfn(),b<1)H=requestAnimationFrame(R);else H=null};H=requestAnimationFrame(R)},d=(K,_)=>{{let x=J.vtf();if(x>0&&(K<0||K>=x))console.warn(`[vlist] scrollToIndex(${K}) is out of range (0–${x-1}).`)}let{align:y,behavior:L,duration:R}=$0(_),u=J.vtf(),S=K;if(W&&u>0)S=(S%u+u)%u;let b=J.gsp(S,J.hc,J.ch,u,y);if(L==="smooth")j0(J.sgt(),b,R);else a(),J.sst(b)},C=()=>J.sgt(),c=(K,_)=>{return q.on(K,_)},T=(K,_)=>{q.off(K,_)},v=()=>{if(J.id)return;if(J.id=!0,Z.state.isDestroyed=!0,Y.items.removeEventListener("click",D),Y.items.removeEventListener("dblclick",E),Y.root.removeEventListener("keydown",w),J.st.removeEventListener("scroll",A),P.disconnect(),V(),J.wh)Y.viewport.removeEventListener("wheel",J.wh);M();for(let K=0;K<N.length;K++)N[K]();for(let K of B)if(K.destroy)K.destroy();a();for(let[,K]of j)K.remove(),X.release(K);j.clear(),X.clear(),q.emit("destroy",void 0),q.clear(),Y.root.remove()},z={get element(){return Y.root},get items(){if(Q.has("_getItems"))return Q.get("_getItems")();return J.it},get total(){if(Q.has("_getTotal"))return Q.get("_getTotal")();return J.vtf()},setItems:Q.has("setItems")?Q.get("setItems"):F,appendItems:Q.has("appendItems")?Q.get("appendItems"):O,prependItems:Q.has("prependItems")?Q.get("prependItems"):k,updateItem:Q.has("updateItem")?Q.get("updateItem"):$,removeItem:Q.has("removeItem")?Q.get("removeItem"):p,reload:Q.has("reload")?Q.get("reload"):I,getItemAt:h,getIndexById:g,scrollToIndex:Q.has("scrollToIndex")?Q.get("scrollToIndex"):d,cancelScroll:Q.has("cancelScroll")?Q.get("cancelScroll"):a,getScrollPosition:Q.has("getScrollPosition")?Q.get("getScrollPosition"):C,on:c,off:T,destroy:v};for(let[K,_]of Q){if(K.charCodeAt(0)===95||K==="setItems"||K==="appendItems"||K==="prependItems"||K==="updateItem"||K==="removeItem"||K==="reload"||K==="scrollToIndex"||K==="scrollToItem"||K==="cancelScroll"||K==="getScrollPosition")continue;z[K]=_}return z};var oJ=0,t2=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let Y=J.orientation==="horizontal",q=Y?"width":"height",j=Y?"estimatedWidth":"estimatedHeight",X=Y?J.item.width:J.item.height,Q=Y?J.item.estimatedWidth:J.item.estimatedHeight;if(X==null&&Q==null)throw Error(`[vlist/builder] item.${q} or item.${j} is required${Y?" when orientation is 'horizontal'":""}`);if(X!=null){if(typeof X==="number"&&X<=0)throw Error(`[vlist/builder] item.${q} must be a positive number`);if(typeof X!=="number"&&typeof X!=="function")throw Error(`[vlist/builder] item.${q} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist/builder] item.${j} must be a positive number`)}if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(Y&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let B=new Map,N=!1,Z={use(U){if(N)throw Error("[vlist/builder] Cannot call .use() after .build()");return B.set(U.name,U),Z},build(){if(N)throw Error("[vlist/builder] .build() can only be called once");return N=!0,nJ(J,B,Y,X,Q??null)}};return Z};function nJ(J,Y,q,j,X){let{item:Q,items:B,overscan:N=d2,classPrefix:Z=c2,ariaLabel:U,padding:W,reverse:D=!1,scroll:E}=J,w=E,A=w?.wheel??!0,P=w?.wrap??!1,V=D,M=`${Z}-${oJ++}`,F=Y.has("withGrid")||Y.has("withMasonry")?0:Q.gap??0,O=j??X,k=j==null&&X!=null,$=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,G=q?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,p={overscan:N,classPrefix:Z,reverse:V,wrap:P,horizontal:q,ariaIdPrefix:M},h=Array.from(Y.values()).sort((r,i)=>(r.priority??50)-(i.priority??50)),g=new Set(h.map((r)=>r.name));for(let r of h)if(r.conflicts){for(let i of r.conflicts)if(g.has(i))throw Error(`[vlist/builder] ${r.name} and ${i} cannot be combined`)}if(V){if(g.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let I=v2(J.container),H=C2(I,Z,U,q);if(w?.wheel===!1)if(q)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(w?.scrollbar==="none")H.viewport.classList.add(`${Z}-viewport--no-scrollbar`);let a=b0(W),j0=r0(a,q);if(a.top||a.right||a.bottom||a.left)H.content.style.boxSizing="border-box",H.content.style.padding=`${a.top}px ${a.right}px ${a.bottom}px ${a.left}px`;let d=z2(),C=B||[],c=typeof O==="function"&&(Y.has("withGrid")||Y.has("withMasonry")),T=F>0?typeof O==="function"?(r)=>O(r)+F:O+F:O,v=k?R2(X+F,C.length):w0(T,c?0:C.length);if(F>0){let r=v.getTotalSize;v.getTotalSize=()=>{let i=r();return i>0?i-F:0}}let z=S2(),K={it:C,hc:v,ch:H.viewport.clientHeight,cw:H.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:y2(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:q?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,sst:q?(r)=>{H.viewport.scrollLeft=r}:(r)=>{H.viewport.scrollTop=r},sab:(r=2)=>{let i=K.hc.getTotalSize();return K.ls+K.ch>=i-r},sic:!1,rfn:null,ffn:null,gvr:(r,i,t,Z0,M0)=>{f2(r,i,t,Z0,M0)},gsp:(r,i,t,Z0,M0)=>{return p2(r,i,t,Z0,M0,K.mp)},pef:null,at:Q.template,vre:!0,st:H.viewport,wh:null,gcw:()=>K.cw,gch:()=>K.ch,gp:F,mp:j0,sif:(r)=>r};K.vtf=()=>K.dm?K.dm.getTotal():K.it.length;let _=null,y=!1,L={start:0,end:0},R={start:0,end:0},u={start:-1,end:-1},S={viewportState:{scrollPosition:0,containerSize:q?K.cw:K.ch,totalSize:K.hc.getTotalSize(),actualSize:K.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},b=new Map,x=()=>{S0(H.items,b.keys(),(r)=>b.get(r))},l=()=>{let r=`${K.hc.getTotalSize()+j0}px`;if(q)H.content.style.width=r;else H.content.style.height=r},f=x2(K,H,q,L,u,()=>y,l,k?v:null,k,F),n={selected:!1,focused:!1},J0=`${Z}-item`,m=Q.striped,o=!!m,Q0=m==="data"||m==="even"||m==="odd",q0=`${Z}-item--odd`,Y0=[],X0=[],e=[],W0=[],B0=[],A0=[],V0=[],U0=new Map,D0=null,N0=null,F0=!1,T0=()=>{if(F0)return;F0=!0,D0=U0.get("_getSelectedIds")??null,N0=U0.get("_getFocusedIndex")??null},n0=(r,i,t)=>{if(!i)console.warn(`[vlist] Template returned falsy value${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);else if(typeof i==="string"&&i==="")console.warn(`[vlist] Template returned empty string${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);if(typeof i==="string")r.innerHTML=i;else r.replaceChildren(i)},SJ=(r,i)=>{let t=Math.round(K.hc.getOffset(i));if(q)r.style.transform=`translateX(${t}px)`;else r.style.transform=`translateY(${t}px)`};K.pef=SJ;let fJ=(r,i)=>{let t=z.acquire();t.className=J0;let Z0=!k||f.mc&&f.mc.isMeasured(r);if(q){if(Z0)t.style.width=`${K.hc.getSize(r)-F}px`;else t.style.width="";if(G!=null)t.style.height=`${G}px`}else if(Z0)t.style.height=`${K.hc.getSize(r)-F}px`;else t.style.height="";if(t.dataset.index=String(r),t.dataset.id=String(i.id),t.ariaSelected="false",t.id=`${M}-item-${r}`,K.la=String(K.vtf()),t.setAttribute("aria-setsize",K.la),t.setAttribute("aria-posinset",String(r+1)),String(i.id).startsWith("__placeholder_"))t.classList.add(`${Z}-item--placeholder`);if(o)if(Q0){let G0=K.sif(r);if(G0<0)t.classList.remove(q0);else t.classList.toggle(q0,(G0&1)===1)}else t.classList.toggle(q0,(r&1)===1);return n0(t,K.at(i,r,n),r),K.pef(t,r),t},IJ=()=>{if(K.id)return;let r=q?K.cw:K.ch;if(r<=0)return;T0();let i=D0?D0():K.ss,t=N0?N0():K.fi,Z0=K.vtf();if(K.gvr(K.ls,r,K.hc,Z0,L),I2(L,N,Z0,R),R.start===u.start&&R.end===u.end){if(K.sic)for(let[K0,O0]of b)K.pef(O0,K0);return}let M0=String(Z0),G0=M0!==K.la;K.la=M0;for(let[K0,O0]of b)if(K0<R.start||K0>R.end)O0.remove(),z.release(O0),b.delete(K0);let _0=document.createDocumentFragment(),L0=[],k0=[];for(let K0=R.start;K0<=R.end;K0++){let O0=K.dm?K.dm.getItem(K0):K.it[K0];if(O0===void 0)continue;let E0=b.get(K0);if(E0){let H0=E0.dataset.id,h0=String(O0.id);if(H0!==h0){let xJ=H0?.startsWith("__placeholder_"),T2=h0.startsWith("__placeholder_");n0(E0,K.at(O0,K0,n),K0),E0.dataset.id=h0;let k2=!k||f.mc&&f.mc.isMeasured(K0);if(q)E0.style.width=k2?`${K.hc.getSize(K0)-F}px`:"";else E0.style.height=k2?`${K.hc.getSize(K0)-F}px`:"";if(T2)E0.classList.add(`${Z}-item--placeholder`);else E0.classList.remove(`${Z}-item--placeholder`);if(xJ&&!T2)E0.classList.add(`${Z}-item--replaced`),setTimeout(()=>{E0.classList.remove(`${Z}-item--replaced`)},300)}K.pef(E0,K0);let d0=i.has(O0.id),gJ=K0===t;if(E0.classList.toggle(`${Z}-item--selected`,d0),E0.classList.toggle(`${Z}-item--focused`,gJ),E0.ariaSelected=d0?"true":"false",G0)E0.setAttribute("aria-setsize",K.la)}else{let H0=fJ(K0,O0);k0.push({index:K0,element:H0});let h0=i.has(O0.id),d0=K0===t;if(h0)H0.classList.add(`${Z}-item--selected`),H0.ariaSelected="true";if(d0)H0.classList.add(`${Z}-item--focused`);_0.appendChild(H0),L0.push({index:K0,element:H0})}}if(L0.length>0){H.items.appendChild(_0);for(let{index:K0,element:O0}of L0)b.set(K0,O0)}if(k&&f.ob&&f.mc&&f.ei){for(let{index:K0,element:O0}of k0)if(!f.mc.isMeasured(K0))f.ei.set(O0,K0),f.ob.observe(O0)}u.start=R.start,u.end=R.end,S.lastRenderRange.start=R.start,S.lastRenderRange.end=R.end,S.viewportState.scrollPosition=K.ls,S.viewportState.visibleRange.start=L.start,S.viewportState.visibleRange.end=L.end,S.viewportState.renderRange.start=R.start,S.viewportState.renderRange.end=R.end,d.emit("range:change",{range:{start:R.start,end:R.end}})},pJ=()=>{u.start=-1,u.end=-1,K.rfn()};K.rfn=IJ,K.ffn=pJ;let hJ=()=>{H.root.classList.remove(`${Z}--scrolling`),y=!1,K.vt.velocity=0,K.vt.sampleCount=0,d.emit("velocity:change",{velocity:0,reliable:!1}),f.fl(),x();for(let r=0;r<X0.length;r++)X0[r]();d.emit("scroll:idle",{scrollPosition:K.ls})},uJ=()=>{if(_)clearTimeout(_);_=setTimeout(hJ,w?.idleTimeout??s2)},x0=()=>{if(K.id)return;let r=K.sgt();if(r===K.ls&&y)return;let i=r>=K.ls?"down":"up";if(K.vt=P2(K.vt,r),!H.root.classList.contains(`${Z}--scrolling`))H.root.classList.add(`${Z}--scrolling`);y=!0,K.ls=r,K.rfn(),d.emit("scroll",{scrollPosition:r,direction:i}),d.emit("velocity:change",{velocity:K.vt.velocity,reliable:K.vt.sampleCount>=$2});for(let t=0;t<Y0.length;t++)Y0[t](r,i);uJ()},z0=null;if(K.st.addEventListener("scroll",x0,{passive:!0}),A&&!q&&!$)z0=(r)=>{if(S.viewportState.isCompressed)return;let i=H.viewport.scrollWidth>H.viewport.clientWidth;if(i&&Math.abs(r.deltaX)>Math.abs(r.deltaY))return;if(r.preventDefault(),i&&r.deltaX!==0)H.viewport.scrollLeft+=r.deltaX;let t=K.sgt(),Z0=H.viewport.scrollHeight-H.viewport.clientHeight,M0=Math.max(0,Math.min(t+r.deltaY,Z0));if(Math.abs(M0-t)<1)return;K.sst(M0),x0()},K.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});else if(q&&A)z0=(r)=>{if(r.deltaX)return;r.preventDefault(),H.viewport.scrollLeft+=r.deltaY},K.wh=z0,H.viewport.addEventListener("wheel",z0,{passive:!1});let M2=(r)=>{let i=r.target.closest("[data-index]");if(!i)return null;let t=parseInt(i.dataset.index??"-1",10);if(t<0)return null;let Z0=K.dm?.getItem(t)??K.it[t];if(!Z0||Z0.__groupHeader)return null;return{item:Z0,index:t}},O2=(r)=>{let i=M2(r);if(i)d.emit("item:click",{item:i.item,index:i.index,event:r});for(let t=0;t<e.length;t++)e[t](r)},E2=(r)=>{let i=M2(r);if(i)d.emit("item:dblclick",{item:i.item,index:i.index,event:r})},A2=(r)=>{for(let i=0;i<W0.length;i++)W0[i](r)};H.items.addEventListener("click",O2),H.items.addEventListener("dblclick",E2),H.root.addEventListener("keydown",A2);let v0=null,F2=(r)=>{if(v0)clearTimeout(v0);v0=setTimeout(()=>{if(v0=null,K.id)return;let i=K.vtf(),{start:t,end:Z0}=r.range;H.liveRegion.textContent=`Showing items ${t+1} to ${Math.min(Z0+1,i)} of ${i}`},300)};d.on("range:change",F2),V0.push(()=>{if(v0)clearTimeout(v0);d.off("range:change",F2)});let i0=new ResizeObserver((r)=>{if(K.id)return;for(let i of r){let t=i.contentRect.height,Z0=i.contentRect.width,M0=q?Z0:t,G0=q?K.cw:K.ch;if(K.cw=Z0,K.ch=t,Math.abs(M0-G0)>1){if(S.viewportState.containerSize=M0,K.ii)l(),K.rfn(),d.emit("resize",{height:t,width:Z0})}if(K.ii)for(let _0=0;_0<B0.length;_0++)B0[_0](Z0,t)}});if(K.vre)i0.observe(H.viewport);let t0={dom:H,emitter:d,resolvedConfig:p,rawConfig:J,rendered:b,pool:z,itemState:n,sharedState:S,renderRange:R,isHorizontal:q,classPrefix:Z,contentSizeHandlers:A0,idleHandlers:X0,afterScroll:Y0,clickHandlers:e,keydownHandlers:W0,resizeHandlers:B0,destroyHandlers:V0,methods:U0,onScrollFrame:x0,resizeObserver:i0,applyTemplate:n0,updateContentSize:l},m0=h2(K,t0);K.dm=u2(K,t0,m0),K.sc=g2(K,t0);let L2=new Map;for(let r of h)if(r.methods)for(let i of r.methods){let t=L2.get(i);if(t)throw Error(`[vlist/builder] Method "${i}" is registered by both "${t}" and "${r.name}"`);L2.set(i,r.name)}for(let r of h)r.setup(m0);if(!U0.has("_getFocusedIndex")){let r=-1,i=`${Z}-item--focused`,t=(G0,_0)=>{let L0=K.vtf();if(_0<0||_0>=L0)return;r=_0,H.root.setAttribute("aria-activedescendant",`${M}-item-${_0}`);let k0=q?K.cw:K.ch;if(K.sst(K.gsp(_0,K.hc,k0,L0,"center")),K.ls=K.sgt(),K.rfn(),G0>=0&&G0!==_0)b.get(G0)?.classList.remove(i);b.get(_0)?.classList.add(i)},Z0=()=>{if(K.id)return;if(!H.root.matches(":focus-visible"))return;let G0=K.vtf();if(G0===0)return;t(-1,r>=0?Math.min(r,G0-1):0)};H.root.addEventListener("focusin",Z0);let M0=(G0)=>{if(K.id)return;let _0=G0.relatedTarget;if(_0&&H.root.contains(_0))return;if(r>=0)b.get(r)?.classList.remove(i);H.root.removeAttribute("aria-activedescendant")};H.root.addEventListener("focusout",M0),W0.push((G0)=>{if(K.id)return;let _0=K.vtf();if(_0===0)return;let L0=r,k0=L0;switch(G0.key){case"ArrowUp":k0=L0<=0?_0-1:L0-1;break;case"ArrowDown":k0=L0>=_0-1?0:L0+1;break;case"Home":k0=0;break;case"End":k0=_0-1;break;default:return}G0.preventDefault(),t(L0,k0)}),V0.push(()=>{H.root.removeEventListener("focusin",Z0),H.root.removeEventListener("focusout",M0)})}if(K.ii=!0,m0.state.isInitialized=!0,l(),K.rfn(),V&&K.it.length>0){let r=K.gsp(K.it.length-1,K.hc,K.ch,K.it.length,"end");K.sst(r),K.ls=r,K.rfn()}return m2(K,H,d,b,z,U0,h,V0,m0,V,P,O2,E2,A2,x0,i0,()=>{if(f.ob)f.ob.disconnect()},()=>{if(_)clearTimeout(_)})}Y2();var g0=(J,Y,q={},j="vlist",X=!1)=>{let{autoHide:Q=!0,autoHideDelay:B=1000,minThumbSize:N=30,showOnHover:Z=!0,hoverZoneWidth:U=16,showOnViewportEnter:W=!0}=q,D=0,E=0,w=0,A=0,P=!1,V=!1,M=0,F=0,O=0,k=null,$=!1,G=null,p=null,h=X?"width":"height",g=X?"translateX":"translateY",I=X?(f)=>f.clientX:(f)=>f.clientY,H=X?"left":"top",a=document.createElement("div"),j0=document.createElement("div"),d=Z?document.createElement("div"):null,C=()=>{if(a.className=`${j}-scrollbar`,j0.className=`${j}-scrollbar-thumb`,X)a.classList.add(`${j}-scrollbar--horizontal`);if(a.appendChild(j0),J.appendChild(a),d){if(d.className=`${j}-scrollbar-hover`,X)d.classList.add(`${j}-scrollbar-hover--horizontal`),d.style.height=`${U}px`;else d.style.width=`${U}px`;J.appendChild(d)}},c=()=>{if(k)clearTimeout(k),k=null},T=()=>{if(!Q)return;c(),k=setTimeout(z,B)},v=()=>{if(D<=E)return;if(c(),!$)a.classList.add(`${j}-scrollbar--visible`),$=!0;if(Q&&!P&&!V)T()},z=()=>{if(P||V)return;a.classList.remove(`${j}-scrollbar--visible`),$=!1},K=(f,n)=>{D=f,E=n;let J0=D>E;if(a.style.display=J0?"":"none",!J0){z();return}let m=E/D;w=Math.max(N,m*E),j0.style[h]=`${w}px`,A=E-w,_(O)},_=(f)=>{if(O=f,D<=E||A<=0)return;let n=D-E,m=Math.min(1,Math.max(0,f/n))*A;j0.style.transform=`${g}(${m}px)`},y=(f)=>{if(f.target===j0)return;let n=a.getBoundingClientRect(),o=I(f)-n[H]-w/2,q0=Math.max(0,Math.min(o,A))/A,Y0=D-E,X0=q0*Y0;Y(X0),v()},L=(f)=>{f.preventDefault(),f.stopPropagation(),P=!0,M=I(f),F=O,c(),a.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",R),document.addEventListener("mouseup",u)},R=(f)=>{if(!P)return;let n=I(f)-M,J0=A>0?n/A:0,m=D-E,o=J0*m,Q0=Math.max(0,Math.min(F+o,m)),Y0=Q0/m*A;if(j0.style.transform=`${g}(${Y0}px)`,p=Q0,G===null)G=requestAnimationFrame(()=>{if(p!==null)Y(p);G=null})},u=()=>{if(P=!1,G!==null)cancelAnimationFrame(G),G=null;if(p!==null)Y(p),p=null;if(a.classList.remove(`${j}-scrollbar--dragging`),Q&&!V)T();document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",u)},S=()=>{if(W)v()},b=()=>{if(!P){if(V=!1,Q)T()}},x=()=>{V=!0,c(),v()},l=()=>{if(V=!1,!P&&Q)T()},s=()=>{if(c(),G!==null)cancelAnimationFrame(G),G=null;if(a.removeEventListener("click",y),a.removeEventListener("mouseenter",x),a.removeEventListener("mouseleave",l),j0.removeEventListener("mousedown",L),J.removeEventListener("mouseenter",S),J.removeEventListener("mouseleave",b),document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",u),d){if(d.removeEventListener("mouseenter",x),d.removeEventListener("mouseleave",l),d.parentNode)d.parentNode.removeChild(d)}if(a.parentNode)a.parentNode.removeChild(a)};if(C(),a.addEventListener("click",y),a.addEventListener("mouseenter",x),a.addEventListener("mouseleave",l),j0.addEventListener("mousedown",L),J.addEventListener("mouseenter",S),J.addEventListener("mouseleave",b),d)d.addEventListener("mouseenter",x),d.addEventListener("mouseleave",l);return{show:v,hide:z,updateBounds:K,updatePosition:_,isVisible:()=>$,destroy:s}};var QJ=(J)=>{let Y=null;return{name:"withScrollbar",priority:30,setup(q){let{dom:j,config:X}=q,{classPrefix:Q,horizontal:B}=X;if(Y=g0(j.viewport,(U)=>q.scrollController.scrollTo(U),J??{},Q,B),!j.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))j.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);let N=q.getCachedCompression();Y.updateBounds(N.virtualSize,q.state.viewportState.containerSize);let Z=Y;q.afterScroll.push((U,W)=>{Z.updatePosition(U),Z.show()}),q.resizeHandlers.push((U,W)=>{if(Z){let D=q.getCachedCompression();Z.updateBounds(D.virtualSize,q.state.viewportState.containerSize)}}),q.contentSizeHandlers.push(()=>{if(Z){let U=q.getCachedCompression();Z.updateBounds(U.virtualSize,q.state.viewportState.containerSize)}}),q.destroyHandlers.push(()=>{if(Z)Z.destroy()})},destroy(){if(Y)Y.destroy(),Y=null}}};var iJ=0.65,tJ=0.5,eJ=0.95,J4=0.1,Q4=5,j4=100,jJ=(J)=>{let Y=J?.force??!1,q=null,j=0,X=!1,Q=0,B=null,N=0,Z=0,U=null,W=[];return{name:"withScale",priority:20,setup(D){let{dom:E,config:w}=D,{classPrefix:A,horizontal:P}=w,V=()=>{let k=D.getVirtualTotal(),$=u0(k,D.sizeCache,Y);if($.isCompressed&&!X){X=!0,D.scrollController.enableCompression($);let p=P?E.viewport.scrollLeft:E.viewport.scrollTop;if(P)E.viewport.style.overflowX="hidden";else E.viewport.style.overflow="hidden";if(P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(p>0)j=p,Q=p;D.updateContentSize($.virtualSize),D.setScrollFns(()=>j,(T)=>{if(j=T,Q=T,B!==null)cancelAnimationFrame(B),B=null});let h=()=>{let T=Q-j;if(D.getVirtualTotal()===0){j=0,Q=0,B=null,D.scrollController.scrollTo(0);return}if(Math.abs(T)<tJ)j=Q,B=null;else{j+=T*iJ;let z=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize;j=Math.max(0,Math.min(j,z)),B=requestAnimationFrame(h)}D.scrollController.scrollTo(j)},g=E.viewport,I=(T)=>{T.preventDefault();let z=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize;if(Q=Math.max(0,Math.min(Q+T.deltaY,z)),B===null)B=requestAnimationFrame(h)};g.addEventListener("wheel",I,{passive:!1});let H=()=>{if(U!==null)cancelAnimationFrame(U),U=null},a=(T)=>{if(H(),B!==null)cancelAnimationFrame(B),B=null;let v=T.touches[0];if(!v)return;let z=P?v.clientX:v.clientY;N=z,Z=j,W=[{time:performance.now(),y:z}]},j0=(T)=>{T.preventDefault();let v=T.touches[0];if(!v)return;let z=P?v.clientX:v.clientY,K=performance.now();if(W.push({time:K,y:z}),W.length>Q4)W.shift();let _=N-z,L=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize,R=Math.max(0,Math.min(Z+_,L));j=R,Q=R,D.scrollController.scrollTo(R)},d=(T)=>{let v=performance.now(),z=W.filter((L)=>v-L.time<j4),K=0;if(z.length>=2){let L=z[0],R=z[z.length-1],u=R.time-L.time;if(u>0)K=(L.y-R.y)/u}if(W=[],Math.abs(K)<J4)return;let _=K*16,y=()=>{if(_*=eJ,Math.abs(_)<0.5){U=null;return}let R=D.getCachedCompression().virtualSize-D.state.viewportState.containerSize,u=j+_;if(u=Math.max(0,Math.min(u,R)),u<=0&&_<0||u>=R&&_>0){j=u,Q=u,D.scrollController.scrollTo(u),U=null;return}j=u,Q=u,D.scrollController.scrollTo(u),U=requestAnimationFrame(y)};U=requestAnimationFrame(y)};g.addEventListener("touchstart",a,{passive:!0}),g.addEventListener("touchmove",j0,{passive:!1}),g.addEventListener("touchend",d,{passive:!0}),g.addEventListener("touchcancel",d,{passive:!0}),D.destroyHandlers.push(()=>{if(g.removeEventListener("wheel",I),g.removeEventListener("touchstart",a),g.removeEventListener("touchmove",j0),g.removeEventListener("touchend",d),g.removeEventListener("touchcancel",d),H(),B!==null)cancelAnimationFrame(B),B=null});let C=E.viewport.querySelector(`.${A}-scrollbar`),c=()=>{let T=P?E.viewport.scrollLeft:E.viewport.scrollTop;if(T!==0)if(console.warn(`[vlist/scale] native scroll drift detected: ${T}px — resetting to 0`),P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0};if(g.addEventListener("scroll",c,{passive:!0}),D.destroyHandlers.push(()=>{g.removeEventListener("scroll",c)}),!C){if(q=g0(E.viewport,(v)=>D.scrollController.scrollTo(v),{},A,P),!E.viewport.classList.contains(`${A}-viewport--custom-scrollbar`))E.viewport.classList.add(`${A}-viewport--custom-scrollbar`);q.updateBounds($.virtualSize,D.state.viewportState.containerSize);let T=q;D.afterScroll.push((v,z)=>{if(T)T.updatePosition(v),T.show()}),D.resizeHandlers.push((v,z)=>{if(T){let K=D.getCachedCompression();T.updateBounds(K.virtualSize,D.state.viewportState.containerSize)}})}}else if(!$.isCompressed&&X){if(X=!1,B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null;if(j=0,Q=0,W=[],D.setScrollFns(P?()=>E.viewport.scrollLeft:()=>E.viewport.scrollTop,P?(p)=>{E.viewport.scrollLeft=p}:(p)=>{E.viewport.scrollTop=p}),P)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(D.scrollController.disableCompression(),P)E.viewport.style.overflowX="auto";else E.viewport.style.overflow="auto";if(q)q.destroy(),q=null;D.updateContentSize($.actualSize)}else if($.isCompressed)D.scrollController.updateConfig({compression:$}),D.updateContentSize($.virtualSize);if(q)q.updateBounds($.virtualSize,D.state.viewportState.containerSize);let G=D.state.viewportState;if(G.isCompressed=$.isCompressed,G.compressionRatio=$.ratio,G.totalSize=$.virtualSize,G.actualSize=$.actualSize,D.state.cachedCompression={state:$,totalItems:k},X){let p=Math.max(0,$.virtualSize-D.state.viewportState.containerSize),h=j;if(h>p)h=p;else if(h<0)h=0;if(h!==j){if(B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null;D.scrollController.scrollTo(h)}}};D.updateCompressionMode=V;let M=D.getCachedCompression.bind(D);D.getCachedCompression=()=>{if(D.state.cachedCompression)return D.state.cachedCompression.state;return M()},D.setVisibleRangeFn((k,$,G,p,h)=>{F=null,O=null;let g=u0(p,G,Y);e2(k,$,G,p,g,h)}),D.setScrollToPosFn((k,$,G,p,h)=>{let g=u0(p,$,Y);return JJ(k,$,G,p,g,h)});let F=null,O=null;D.setPositionElementFn((k,$)=>{let G=D.getVirtualTotal(),p=u0(G,D.sizeCache,Y);if(p.isCompressed){let h=D.scrollController.getScrollTop();if(F===null||$<O)O=$,F=Math.round(a0($,h,D.sizeCache,G,D.state.viewportState.containerSize,p));let g=F+D.sizeCache.getOffset($)-D.sizeCache.getOffset(O),I=D.config.horizontal;k.style.transform=I?`translateX(${g}px)`:`translateY(${g}px)`}else{let h=Math.round(D.sizeCache.getOffset($)),g=D.config.horizontal;k.style.transform=g?`translateX(${h}px)`:`translateY(${h}px)`}}),V(),D.destroyHandlers.push(()=>{if(q)q.destroy(),q=null;if(B!==null)cancelAnimationFrame(B),B=null})},destroy(){if(q)q.destroy(),q=null;if(B!==null)cancelAnimationFrame(B),B=null;if(U!==null)cancelAnimationFrame(U),U=null}}};var qJ=(J={})=>{let{chunkSize:Y=100,maxCachedItems:q=5000,evictionBuffer:j=200,onEvict:X}=J,Q=new Map,B=0,N=0,Z=(C)=>{let c=Q.get(C);if(!c)c={items:Array(Y),count:0,lastAccess:Date.now()},Q.set(C,c);else c.lastAccess=Date.now();return c},U=(C)=>{return Math.floor(C/Y)},W=(C)=>{return C%Y},D=()=>B,E=(C)=>{B=C},w=(C)=>{if(C<0||C>=B)return;let c=U(C),T=Q.get(c);if(!T)return;return T.items[W(C)]},A=(C)=>{if(C<0||C>=B)return!1;let c=U(C),T=Q.get(c);if(!T)return!1;return T.items[W(C)]!==void 0},P=(C,c)=>{let T=U(C),v=Z(T),z=W(C),K=v.items[z]===void 0;if(v.items[z]=c,K)v.count++,N++;if(C>=B)B=C+1},V=(C,c)=>{for(let T=0;T<c.length;T++){let v=c[T];if(v!==void 0)P(C+T,v)}},M=(C)=>{if(C<0||C>=B)return!1;let c=U(C),T=Q.get(c),v=W(C);if(!(T!==void 0&&T.items[v]!==void 0))return!1;let K=c,_=Array.from(Q.keys()).filter((L)=>L>=K).sort((L,R)=>L-R),y=[];for(let L of _){let R=Q.get(L),u=L*Y;for(let S=0;S<Y;S++){if(R.items[S]===void 0)continue;let b=u+S;if(b<=C)continue;y.push({oldIndex:b,item:R.items[S]})}}if(T.items[v]=void 0,T.count--,N--,T.count===0)Q.delete(c);for(let{oldIndex:L}of y){let R=U(L),u=Q.get(R);if(!u)continue;let S=W(L);if(u.items[S]!==void 0){if(u.items[S]=void 0,u.count--,N--,u.count===0)Q.delete(R)}}for(let{oldIndex:L,item:R}of y){let u=L-1,S=U(u),b=Z(S),x=W(u);b.items[x]=R,b.count++,N++}return B--,!0},F=(C,c)=>{let T=[];for(let v=C;v<=c&&v<B;v++)T.push(w(v));return T},O=(C,c)=>{for(let T=C;T<=c&&T<B;T++)if(!A(T))return!1;return!0},k=()=>{let C=[],c=null,T=Array.from(Q.keys()).sort((v,z)=>v-z);for(let v of T){let z=Q.get(v);if(!z)continue;let K=v*Y;for(let _=0;_<Y;_++){let y=K+_;if(y>=B)break;if(z.items[_]!==void 0)if(c===null)c={start:y,end:y};else if(y===c.end+1)c.end=y;else C.push(c),c={start:y,end:y};else if(c!==null)C.push(c),c=null}}if(c!==null)C.push(c);return C},$=(C,c)=>{let T=[],v=null;for(let z=C;z<=c&&z<B;z++)if(!A(z))if(v===null)v={start:z,end:z};else v.end=z;else if(v!==null)T.push(v),v=null;if(v!==null)T.push(v);return T},G=(C)=>{return Q.has(C)},p=(C)=>{let c=Q.get(C);if(c)c.lastAccess=Date.now()},h=(C,c)=>{if(C>c||Q.size===0)return;let T=Date.now(),v=U(Math.max(0,C)),z=U(Math.min(B-1,c));for(let K=v;K<=z;K++){let _=Q.get(K);if(_)_.lastAccess=T}},g=(C,c)=>{if(N<=q)return 0;let T=Math.max(0,C-j),v=Math.min(B-1,c+j),z=U(T),K=U(v),_=0,y=[];for(let[L,R]of Q)if(L<z||L>K)_+=R.count,y.push(L),N-=R.count,Q.delete(L);if(_>0&&X)X(_,y);return _},I=()=>{if(N<=q)return 0;let C=Array.from(Q.entries()).sort(([,v],[,z])=>v.lastAccess-z.lastAccess),c=0,T=[];for(let[v,z]of C){if(N<=q)break;c+=z.count,N-=z.count,T.push(v),Q.delete(v)}if(c>0&&X)X(c,T);return c},H=()=>{return{totalItems:B,cachedItems:N,cachedChunks:Q.size,chunkSize:Y,maxCachedItems:q,memoryEfficiency:B>0?1-N/B:1}},a=()=>N,j0=()=>{Q.clear(),N=0};return{chunkSize:Y,maxCachedItems:q,getTotal:D,setTotal:E,get:w,has:A,set:P,setRange:V,delete:M,getRange:F,isRangeLoaded:O,getLoadedRanges:k,findUnloadedRanges:$,getChunkIndex:U,isChunkLoaded:G,touchChunk:p,touchChunksForRange:h,evictDistant:g,evictToLimit:I,getStats:H,getCachedCount:a,clear:j0,reset:()=>{j0(),B=0}}},q4=(J)=>{if(J.length===0)return[];let Y=[...J].sort((j,X)=>j.start-X.start),q=[{...Y[0]}];for(let j=1;j<Y.length;j++){let X=Y[j],Q=q[q.length-1];if(X.start<=Q.end+1)Q.end=Math.max(Q.end,X.end);else q.push({...X})}return q},YJ=(J,Y,q)=>{let j=Math.floor(J.start/q)*q,X=Math.ceil((J.end+1)/q)*q-1,Q={start:j,end:X};if(Y.length===0)return[Q];let B=[],N=q4(Y),Z=Q.start;for(let U of N){if(U.end<Z)continue;if(U.start>Q.end)break;if(U.start>Z)B.push({start:Z,end:Math.min(U.start-1,Q.end)});if(Z=U.end+1,Z>Q.end)break}if(Z<=Q.end)B.push({start:Z,end:Q.end});return B};var XJ=(J={})=>{let{maskCharacter:Y=o2,maxSampleSize:q=n2}=J,j=[],X=!1,Q=0,B=(D)=>{if(X||D.length===0)return;let E=Math.min(D.length,q);for(let w=0;w<E;w++){let A=D[w];if(!A||typeof A!=="object")continue;let P={};for(let[V,M]of Object.entries(A)){if(V.startsWith("_")||V==="id")continue;P[V]=String(M??"").length}if(Object.keys(P).length>0)j.push(P)}X=!0},N=()=>X,Z=(D)=>{let E={id:`${i2}${Q++}`,[q2]:!0,_index:D};if(j.length===0)return E.label=Y.repeat(12),E;let w=j[D%j.length];for(let[A,P]of Object.entries(w))E[A]=Y.repeat(Math.max(1,P));return E};return{analyzeStructure:B,hasAnalyzedStructure:N,generate:Z,generateRange:(D,E)=>{let w=[];for(let A=D;A<=E;A++)w.push(Z(A));return w},clear:()=>{j=[],X=!1,Q=0}}},s0=(J)=>{if(!J||typeof J!=="object")return!1;return J[q2]===!0};var Y4=50,UJ=(J={})=>{let{adapter:Y,initialItems:q,initialTotal:j,storage:X,placeholder:Q,pageSize:B=Y4,onStateChange:N,onItemsLoaded:Z,onItemsEvicted:U}=J,W=qJ({...X,onEvict:(m,o)=>{U?.(m),$()}}),D=null,E=()=>{if(!D)D=XJ(Q);return D},w=new Map,A=!1,P,V=!0,M,F=[],O=0,k=new Map,$=()=>{N?.(d())},G=()=>{w.clear();let m=W.getLoadedRanges();for(let o of m)for(let Q0=o.start;Q0<=o.end;Q0++){let q0=W.get(Q0);if(q0&&!s0(q0))w.set(q0.id,Q0)}},p=(m,o)=>{if(!s0(o))w.set(o.id,m)},h=(m)=>{w.delete(m)},g=(m,o)=>{return`${m}-${o}`},I=()=>W.getTotal(),H=()=>W.getCachedCount(),a=()=>A,j0=()=>V,d=()=>({total:W.getTotal(),cached:W.getCachedCount(),isLoading:A,pendingRanges:F,error:P,hasMore:V,cursor:M}),C=()=>W,c=()=>E(),T=(m)=>{let o=W.get(m);if(o!==void 0)return o;if(m>=0&&m<W.getTotal())return E().generate(m);return},v=(m)=>{let o=w.get(m);if(o===void 0)return;return W.get(o)},z=(m)=>{return w.get(m)??-1},K=(m)=>{let o=W.get(m);return o!==void 0&&!s0(o)},_=(m,o)=>{let Q0=[],q0=W.getTotal(),Y0=0,X0=0;W.touchChunksForRange(m,Math.min(o,q0-1));for(let e=m;e<=o&&e<q0;e++){let W0=W.get(e);if(W0!==void 0)Q0.push(W0),Y0++;else Q0.push(E().generate(e)),X0++}return Q0},y=(m)=>{W.setTotal(m),V=W.getCachedCount()<m,$()},L=(m,o=0,Q0)=>{if(Y&&m.length>0){let q0=E();if(!q0.hasAnalyzedStructure())q0.analyzeStructure(m)}for(let q0=0;q0<m.length;q0++){let Y0=m[q0];if(Y0!==void 0){let X0=o+q0;W.set(X0,Y0),p(X0,Y0)}}if(Q0!==void 0)W.setTotal(Q0);else if(o+m.length>W.getTotal())W.setTotal(o+m.length);if(W.getCachedCount()>=W.getTotal()&&W.getTotal()>0)V=!1;$(),Z?.(m,o,W.getTotal())},R=(m,o)=>{let Q0=w.get(m);if(Q0===void 0)return!1;let q0=W.get(Q0);if(!q0)return!1;let Y0={...q0,...o};if(W.set(Q0,Y0),o.id!==void 0&&o.id!==m)h(m),p(Q0,Y0);return $(),!0},u=(m)=>{let o=w.get(m);if(o===void 0)return!1;if(!W.delete(o))return!1;return G(),k.clear(),$(),!0},S=async(m,o)=>{if(!Y)return;let Q0=g(m,o);if(k.has(Q0))return;let q0=W.getLoadedRanges(),Y0=YJ({start:m,end:o},q0,W.chunkSize);if(Y0.length===0)return;let X0=W.chunkSize,e=[];for(let B0 of Y0){let A0=Math.floor(B0.start/X0),V0=Math.floor(B0.end/X0);for(let U0=A0;U0<=V0;U0++){let D0=U0*X0,N0=D0+X0-1,F0=g(D0,N0);if(!e.some((T0)=>T0.start===D0)&&!k.has(F0))e.push({start:D0,end:N0})}}let W0=[];for(let B0 of Y0){let A0=Math.floor(B0.start/X0),V0=Math.floor(B0.end/X0);for(let U0=A0;U0<=V0;U0++){let D0=U0*X0,N0=D0+X0-1,F0=g(D0,N0);if(k.has(F0)){let T0=k.get(F0);if(!W0.includes(T0))W0.push(T0)}}}for(let B0 of e){let A0=g(B0.start,B0.end),V0=(async()=>{F.push(B0),A=!0,P=void 0,$();try{let U0=B0.end-B0.start+1,D0={offset:B0.start,limit:U0,cursor:void 0},N0=await Y.read(D0);if(L(N0.items,B0.start,N0.total),N0.cursor)M=N0.cursor;let F0=B0.start+N0.items.length;if(F0>=O){if(O=F0,N0.hasMore!==void 0)V=N0.hasMore;else if(N0.total!==void 0)V=F0<N0.total}}catch(U0){P=U0 instanceof Error?U0:Error(String(U0))}finally{k.delete(A0),F=F.filter((U0)=>U0.start!==B0.start||U0.end!==B0.end),A=k.size>0,$()}})();k.set(A0,V0),W0.push(V0)}await Promise.all(W0)},b=async(m,o)=>{if(W.isRangeLoaded(m,o))return;await S(m,o)},x=async()=>{if(!Y)return;await S(0,B-1)},l=async()=>{if(!Y||A||!V)return!1;let m=W.getCachedCount(),o=W.getTotal(),Q0=m,q0=Math.min(Q0+B-1,o>0?o-1:Q0+B-1);if(Q0>=o&&o>0)return V=!1,!1;return await S(Q0,q0),W.getCachedCount()>m},s=async()=>{if(W.clear(),W.setTotal(0),w.clear(),D)D.clear();k.clear(),F=[],A=!1,M=void 0,V=!0,O=0,P=void 0,$()},f=(m,o)=>{if(W.evictDistant(m,o)>0)G()},n=()=>{W.clear(),w.clear(),M=void 0,P=void 0,F=[],A=!1,$()},J0=()=>{if(W.reset(),w.clear(),D)D.clear();M=void 0,V=!0,O=0,P=void 0,F=[],A=!1,$()};if(q&&q.length>0)L(q,0,j??q.length);else if(j!==void 0)W.setTotal(j),$();return{getState:d,getTotal:I,getCached:H,getIsLoading:a,getHasMore:j0,getStorage:C,getPlaceholders:c,getItem:T,getItemById:v,getIndexById:z,isItemLoaded:K,getItemsInRange:_,setTotal:y,setItems:L,updateItem:R,removeItem:u,loadRange:S,ensureRange:b,loadInitial:x,loadMore:l,reload:s,evictDistant:f,clear:n,reset:J0}};var KJ=(J)=>{let{adapter:Y,loading:q,storage:j,total:X,autoLoad:Q=!0}=J,B=q?.cancelThreshold??r2,N=q?.preloadThreshold??a2,Z=q?.preloadAhead??l2;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(U){let{emitter:W}=U,D=U.config.reverse,E=U.methods.get("_getGridLayout"),w=(I)=>{if(E){let H=E();if(H){let a=U.dataManager.getTotal();return H.getItemRange(I.start,I.end,a)}}return I},A=UJ({adapter:Y,...X!==void 0&&{initialTotal:X},pageSize:j?.chunkSize??I0,...j&&{storage:{...j.chunkSize!==void 0&&{chunkSize:j.chunkSize},...j.maxCachedItems!==void 0&&{maxCachedItems:j.maxCachedItems}}},onStateChange:()=>{if(U.state.isInitialized){let I=U.getVirtualTotal();U.sizeCache.rebuild(I),U.updateCompressionMode();let H=U.getCachedCompression();U.state.viewportState.totalSize=H.virtualSize,U.state.viewportState.actualSize=H.actualSize,U.state.viewportState.isCompressed=H.isCompressed,U.state.viewportState.compressionRatio=H.ratio,U.updateContentSize(H.virtualSize),U.renderIfNeeded()}},onItemsLoaded:(I,H,a)=>{if(U.state.isInitialized)U.forceRender(),W.emit("load:end",{items:I,total:a,offset:H})}});U.replaceDataManager(A);let P=null,V=null,M=0,F=!1,O=null,k=120,$=(I=!1)=>{if(F=!1,V=null,I)P=null;if(O!==null)clearTimeout(O),O=null},G=()=>{if(!V)return;V=null;let{renderRange:I}=U.state.viewportState;if(I.end<I.start)return;P=null;let H=w(I);U.dataManager.ensureRange(H.start,H.end).catch((a)=>{W.emit("error",{error:a,context:"ensureRange"})})};U.afterScroll.push((I,H)=>{if(U.state.isDestroyed)return;let a=U.scrollController.getVelocity(),d=U.scrollController.isTracking()&&a<=B;if(M>B&&a<=B)F=!0;else if(F&&a>B)$();if(F&&a<0.5)$(!0);if(M=a,(U.scrollController.isAtTop()||U.scrollController.isAtBottom())&&(F||V))$(!0),d=!0;let c=F&&a>0.5;if(d&&!U.dataManager.getIsLoading()&&U.dataManager.getHasMore()){if(D){if(I<j2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((z)=>{W.emit("error",{error:z,context:"loadMore"})})}else if(U.state.viewportState.totalSize-I-U.state.viewportState.containerSize<j2)W.emit("load:start",{offset:U.dataManager.getCached(),limit:I0}),U.dataManager.loadMore().catch((K)=>{W.emit("error",{error:K,context:"loadMore"})})}let{renderRange:T}=U.state.viewportState;if(!P||T.start!==P.start||T.end!==P.end){if(P={start:T.start,end:T.end},d&&!c){if(V=null,O!==null)clearTimeout(O),O=null;let z=w(T),K=z.start,_=z.end,y=E?U.dataManager.getTotal():U.getVirtualTotal();if(a>N)if(H==="down")_=Math.min(z.end+Z,y-1);else K=Math.max(z.start-Z,0);U.dataManager.ensureRange(K,_).catch((L)=>{W.emit("error",{error:L,context:"ensureRange"})})}else if(V={start:T.start,end:T.end},c){if(O!==null)clearTimeout(O);O=setTimeout(()=>{O=null,G(),$()},k)}}});let p=200,h=null;U.afterScroll.push((I,H)=>{if(h!==null)clearTimeout(h);h=setTimeout(()=>{h=null,G(),$()},p)}),U.destroyHandlers.push(()=>{if(h!==null)clearTimeout(h),h=null;$()});let g=()=>{if(U.state.isDestroyed)return;P=null;let{renderRange:I}=U.state.viewportState;if(I.end>0){let H=w(I);U.dataManager.ensureRange(H.start,H.end).catch((a)=>{W.emit("error",{error:a,context:"ensureRange"})})}G()};if(window.addEventListener("online",g),U.destroyHandlers.push(()=>{window.removeEventListener("online",g)}),W.on("load:start",()=>{U.dom.root.setAttribute("aria-busy","true")}),W.on("load:end",()=>{U.dom.root.removeAttribute("aria-busy")}),U.methods.set("loadVisibleRange",async()=>{P=null,V=null,U.forceRender();let{renderRange:I}=U.state.viewportState;if(I.end>0){let H=w(I);W.emit("load:start",{offset:H.start,limit:H.end-H.start+1}),await U.dataManager.ensureRange(H.start,H.end)}}),U.methods.set("reload",async(I)=>{P=null,V=null;let H=I?.snapshot,a=H!=null&&(H.total??0)>0&&H.index>0,j0=a||I?.skipInitialLoad===!0;if(U.invalidateRendered(),await U.dataManager.reload(),!j0){W.emit("load:start",{offset:0,limit:I0}),await U.dataManager.loadInitial(),U.forceRender();let{renderRange:d}=U.state.viewportState;if(d.end>0){let C=w(d);await U.dataManager.ensureRange(C.start,C.end)}}if(a){let d=U.methods.get("restoreScroll");if(d)d(H)}}),Q)W.emit("load:start",{offset:0,limit:I0}),U.dataManager.loadInitial().catch((I)=>{W.emit("error",{error:I,context:"loadInitial"})});else if(X!==void 0)U.dataManager.setTotal(X)}}};var BJ=()=>{let J=null;return{name:"withPage",priority:5,setup(Y){let{dom:q,state:j,config:X,emitter:Q}=Y;if(q.root.style.overflow="visible",q.root.style.height="auto",X.horizontal)q.viewport.style.overflowX="visible",q.viewport.style.overflowY="visible";else q.viewport.style.overflow="visible";q.viewport.classList.remove(`${X.classPrefix}-viewport--custom-scrollbar`),Y.disableViewportResize(),Y.disableWheelHandler(),Y.setScrollTarget(window),Y.setScrollFns(()=>{let U=q.viewport.getBoundingClientRect();if(X.horizontal)return Math.max(0,-U.left);else return Math.max(0,-U.top)},(U)=>{let W=q.viewport.getBoundingClientRect();if(X.horizontal){let D=W.left+window.scrollX;window.scrollTo(D+U,window.scrollY)}else{let D=W.top+window.scrollY;window.scrollTo(window.scrollX,D+U)}}),Y.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerSize=window.innerHeight;let{innerHeight:B,innerWidth:N}=window,Z=()=>{let{innerWidth:U,innerHeight:W}=window,D=X.horizontal?U:W,E=X.horizontal?N:B;if(Math.abs(D-E)<=1)return;B=W,N=U,j.viewportState.containerSize=W,Q.emit("resize",{width:U,height:W});for(let w=0;w<Y.resizeHandlers.length;w++)Y.resizeHandlers[w](U,W);Y.renderIfNeeded()};window.addEventListener("resize",Z,{passive:!0}),J=()=>{window.removeEventListener("resize",Z)},Y.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var X2=(J,Y)=>{let q=0,j=J.length-1;while(q<j){let X=q+j+1>>>1;if(J[X].headerLayoutIndex<=Y)q=X;else j=X-1}return q},ZJ=(J,Y)=>{let q=0,j=J.length-1;while(q<j){let X=q+j+1>>>1;if(J[X].firstDataIndex<=Y)q=X;else j=X-1}return q},NJ=(J,Y)=>{if(J===0)return[];let q=[],j=Y(0),X=0,Q=0;for(let B=1;B<J;B++){let N=Y(B);if(N!==j){let Z=B-X;q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:X,count:Z}),Q=Q+1+Z,j=N,X=B}}return q.push({key:j,groupIndex:q.length,headerLayoutIndex:Q,firstDataIndex:X,count:J-X}),q},U2=(J,Y)=>{if(J.length===0||Y.length===0)return[];let q=J.length+Y.length,j=Array(q),X=0;for(let Q of Y){j[X]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},X++;for(let B=0;B<Q.count;B++)j[X]=J[Q.firstDataIndex+B],X++}return j},K2=(J,Y)=>{let q=typeof Y==="number"?(j)=>Y:Y;return(j)=>{let X=J.getEntry(j);if(X.type==="header")return J.getHeaderHeight(X.group.groupIndex);return q(X.dataIndex)}},_J=(J,Y)=>{let q=NJ(J,Y.getGroupForIndex),j=J+q.length,X=Y.headerHeight;return{get totalEntries(){return j},get groupCount(){return q.length},get groups(){return q},getEntry:(E)=>{if(q.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let w=X2(q,E),A=q[w];if(E===A.headerLayoutIndex)return{type:"header",group:A};let P=E-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+P,group:A}},layoutToDataIndex:(E)=>{if(q.length===0)return E;let w=X2(q,E),A=q[w];if(E===A.headerLayoutIndex)return-1;let P=E-A.headerLayoutIndex-1;return A.firstDataIndex+P},dataToLayoutIndex:(E)=>{if(q.length===0)return E;let w=ZJ(q,E),A=q[w],P=E-A.firstDataIndex;return A.headerLayoutIndex+1+P},getGroupAtLayoutIndex:(E)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=X2(q,E);return q[w]},getGroupAtDataIndex:(E)=>{if(q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=ZJ(q,E);return q[w]},getHeaderHeight:typeof X==="number"?(E)=>X:(E)=>{let w=q[E];if(!w)return 0;return X(w.key,E)},rebuild:(E)=>{q=NJ(E,Y.getGroupForIndex),j=E+q.length}}};var WJ=(J,Y,q,j,X,Q=!1,B=0)=>{let N=document.createElement("div");if(N.className=`${X}-sticky-header`,N.setAttribute("role","presentation"),N.setAttribute("aria-hidden","true"),N.style.position="absolute",N.style.zIndex="5",N.style.pointerEvents="none",N.style.willChange="transform",N.style.overflow="hidden",Q)N.style.top="0",N.style.bottom="0",N.style.left=B?`${B}px`:"0";else N.style.top=B?`${B}px`:"0",N.style.left="0",N.style.right="0";J.insertBefore(N,J.firstChild);let Z=-1,U=!1,W=0,D=(M)=>{if(M===Z)return;Z=M;let F=Y.groups;if(M<0||M>=F.length){N.textContent="";return}let O=F[M],k=j.headerTemplate(O.key,O.groupIndex),$=Y.getHeaderHeight(M);if(Q)N.style.width=`${$}px`;else N.style.height=`${$}px`;if(typeof k==="string")N.innerHTML=k;else N.replaceChildren(k)},E=(M)=>{let F=Y.groups;if(F.length===0){A();return}let O=q.getOffset(F[0].headerLayoutIndex);if(M<O){A();return}let k=0,$=F.length-1;while(k<$){let I=k+$+1>>>1;if(q.getOffset(F[I].headerLayoutIndex)<=M)k=I;else $=I-1}let G=k;if(!U)w();D(G);let p=Y.getHeaderHeight(G),h=0,g=G+1;if(g<F.length){let H=q.getOffset(F[g].headerLayoutIndex)-M;if(H<p)h=H-p}if(h!==W)if(W=h,h===0)N.style.transform="";else{let I=Math.round(h);N.style.transform=Q?`translateX(${I}px)`:`translateY(${I}px)`}},w=()=>{if(U)return;U=!0,N.style.display=""},A=()=>{if(!U)return;U=!1,N.style.display="none",Z=-1,W=0,N.style.transform=""},P=()=>{let M=Z;if(Z=-1,M>=0)D(M)},V=()=>{N.remove(),Z=-1,U=!1};return N.style.display="none",{update:E,refresh:P,show:w,hide:A,destroy:V}};var DJ=(J,Y,q,j,X,Q)=>{if(j===0)return 0;let B=Math.max(0,Math.min(J,j-1)),N=Y.getOffset(B),Z=Y.getSize(B),U=Y.getTotalSize(),W=Math.max(0,U-q),D;switch(Q){case"center":D=N-q/2+Z/2;break;case"end":D=N-q+Z;break;case"start":default:D=N;break}return Math.max(0,Math.min(D,W))};var y0=(J,Y,q,j,X="start",Q,B=DJ)=>{return B(J,Y,q,j,Q,X)};var GJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let Y=null,q=null,j=[],X=[];return{name:"withGroups",priority:10,setup(Q){let{dom:B,config:N,rawConfig:Z}=Q,{classPrefix:U}=N,D=Z.item.height;j=Z.items?[...Z.items]:[];let E=j.length,w={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};Y=_J(E,w),X=U2(j,Y.groups);let A=K2(Y,D);Q.setSizeConfig(A),Q.rebuildSizeCache(X.length),Q.dataManager.setItems(X,0,X.length);let P=Z.item.template,{headerTemplate:V}=J,M=(d,C,c)=>{if(R0(d))return V(d.groupKey,d.groupIndex);return P(d,C,c)},F=Q.methods.get("_getGridLayout"),O=Q.methods.get("_replaceGridRenderer"),k=Q.methods.get("_updateGridLayoutForGroups"),$=Q.methods.get("_getTableLayout"),G=Q.methods.get("_updateTableForGroups"),p=Q.methods.get("_getTableHeaderHeight");if(F&&O){if(k)k((T)=>{let v=X[T];return!!(v&&R0(v))});let{createGridRenderer:d}=(Z2(),lJ(VJ)),C=F(),c=d(B.items,M,Q.sizeCache,C,U,Q.getContainerWidth(),()=>Q.dataManager.getTotal(),N.ariaIdPrefix);O(c)}else if($&&G)G((d)=>R0(d),J.headerTemplate);else Q.replaceTemplate(M);let h=p?p():0;if(B.root.classList.add(`${U}--grouped`),J.sticky!==!1){q=WJ(B.root,Y,Q.sizeCache,{...w,sticky:w.sticky??!1},U,N.horizontal,h);let d=q;Q.afterScroll.push((C,c)=>{d.update(C)}),q.update(Q.scrollController.getScrollTop())}let g=Z.item?.striped,I=()=>{if(g!=="data"&&g!=="even"&&g!=="odd")return;let d=new Int32Array(X.length),C=g==="odd"?1:0,c=0;for(let T=0;T<X.length;T++)if(R0(X[T])){if(d[T]=-1,g==="even"||g==="odd")c=0}else d[T]=c+++C;Q.setStripeIndexFn((T)=>{if(T<0||T>=d.length)return T;return d[T]})};I();let H=()=>{if(!Y)return;Y.rebuild(j.length),X=U2(j,Y.groups);let d=K2(Y,D);if(Q.setSizeConfig(d),Q.rebuildSizeCache(X.length),Q.dataManager.setItems(X,0,X.length),I(),q)q.refresh()};Q.methods.set("setItems",(d)=>{j=d.slice(),H()}),Q.methods.set("appendItems",(d)=>{j.push(...d),H()}),Q.methods.set("prependItems",(d)=>{j.unshift(...d),H()}),Q.methods.set("removeItem",(d)=>{j=j.filter((C)=>C.id!==d),H()});let{animateScroll:a,cancelScroll:j0}=f0(Q.scrollController,Q.renderIfNeeded);Q.methods.set("scrollToIndex",(d,C)=>{let c=Y.dataToLayoutIndex(d),{align:T,behavior:v,duration:z}=$0(C),K=Q.dataManager.getTotal(),_=Q.adjustScrollPosition(y0(c,Q.sizeCache,Q.state.viewportState.containerSize,K,T,Q.getCachedCompression()));if(v==="smooth")a(Q.scrollController.getScrollTop(),_,z);else j0(),Q.scrollController.scrollTo(_)}),Q.methods.set("_getItems",()=>j),Q.methods.set("_getTotal",()=>j.length),Q.destroyHandlers.push(()=>{if(j0(),q)q.destroy(),q=null;B.root.classList.remove(`${U}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var MJ=(J)=>{let Y=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.isHeaderFn,X={row:0,col:0},Q=(A)=>{if(A<=0)return 0;if(!j)return Math.ceil(A/Y);let P=0,V=0,M=0;for(let F=0;F<A;F++)if(j(F)){if(M++,V>0)P++,V=0;P++,V=0}else if(V++,V>=Y)P++,V=0;if(V>0)P++;return P},B=(A)=>{return X.row=N(A),X.col=Z(A),X},N=(A)=>{if(!j)return Math.floor(A/Y);let P=0,V=0;for(let M=0;M<=A;M++)if(j(M)){if(V>0)P++,V=0;if(M===A)return P;P++,V=0}else{if(M===A)return P;if(V++,V>=Y)P++,V=0}return console.warn(`⚠️ getRow(${A}) fell through - returning ${P}`),P},Z=(A)=>{if(!j)return A%Y;if(j(A))return 0;let P=0;for(let V=0;V<=A;V++)if(j(V))P=0;else{if(V===A)return P;if(P++,P>=Y)P=0}return P},U=(A,P,V)=>{if(V<=0)return{start:0,end:-1};if(!j){let $=Math.max(0,A*Y),G=Math.min(V-1,(P+1)*Y-1);return{start:$,end:G}}let M=-1,F=-1,O=0,k=0;for(let $=0;$<V;$++){if(j($)){if(k>0)O++,k=0;if(O>=A&&O<=P){if(M===-1)M=$;F=$}O++,k=0}else{if(O>=A&&O<=P){if(M===-1)M=$;F=$}if(k++,k>=Y)O++,k=0}if(O>P&&k===0)break}if(M===-1)return{start:0,end:-1};return{start:M,end:F}},W=(A,P,V)=>{if(P<0||P>=Y)return-1;let M=A*Y+P;if(M<0||M>=V)return-1;return M},D=(A)=>{let P=(Y-1)*q;return Math.max(0,(A-P)/Y)};return{get columns(){return Y},get gap(){return q},update:(A)=>{if(A.columns!==void 0)Y=Math.max(1,Math.floor(A.columns));if(A.gap!==void 0)q=A.gap;if(A.isHeaderFn!==void 0)j=A.isHeaderFn},getTotalRows:Q,getPosition:B,getRow:N,getCol:Z,getItemRange:U,getItemIndex:W,getColumnWidth:D,getColumnOffset:(A,P)=>{let V=D(P);return A*(V+q)}}};Z2();var K4=new Set,OJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let Y=null,q=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(j){let{dom:X,emitter:Q,config:B,rawConfig:N}=j,{classPrefix:Z}=B;if(B.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let U=B.horizontal,W=C0(b0(N.padding),U),D=()=>{return(U?X.viewport.clientHeight:j.getContainerWidth())-W},E=N.items?.some((_)=>_.__groupHeader===!0),w={columns:J.columns,gap:J.gap??0};if(E)w.isHeaderFn=(_)=>{let y=j.dataManager.getItem(_);return!!(y&&y.__groupHeader===!0)};Y=MJ(w);let A=Y.gap;j.setVirtualTotalFn(()=>{let _=j.dataManager.getTotal();return Y.getTotalRows(_)});let P=N.item,V=B.horizontal?P.width:P.height,M={containerWidth:D(),columns:Y.columns,gap:Y.gap},F={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof V==="function")j.setSizeConfig((_)=>{let y=M.containerWidth-2,L=(M.columns-1)*M.gap;return F.containerWidth=M.containerWidth,F.columns=M.columns,F.gap=M.gap,F.columnWidth=(y-L)/M.columns,F.row=Y.getRow(_),F.column=Y.getCol(_),F.totalRows=Y.getTotalRows(j.dataManager.getTotal()),F.totalColumns=M.columns,V(_,F)+M.gap});else if(A>0)j.setSizeConfig(V+A);if(j.rebuildSizeCache(),A>0){let _=j.sizeCache.getTotalSize;j.sizeCache.getTotalSize=()=>{let y=_();return y>0?y-M.gap:0}}X.root.classList.add(`${Z}--grid`);let O=D(),k=N.item.template,$=()=>{q=B2(X.items,k,j.sizeCache,Y,Z,O,()=>j.dataManager.getTotal(),B.ariaIdPrefix,B.horizontal),j.replaceRenderer(q)};$(),j.methods.set("_getGridLayout",()=>Y),j.methods.set("_getGridConfig",()=>w),j.methods.set("_replaceGridRenderer",(_)=>{q=_}),j.methods.set("_updateGridLayoutForGroups",(_)=>{Y.update({isHeaderFn:_});let y=j.dataManager.getTotal(),L=0;for(let R=0;R<y;R++)if(Y.getCol(R)===0){let u=j.sizeCache.getSize(R);L+=u}j.sizeCache.getTotalSize=()=>L,j.updateContentSize(L),$()}),j.methods.set("updateGrid",(_)=>{if(_.columns!==void 0){if(!Number.isInteger(_.columns)||_.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");w.columns=_.columns}if(_.gap!==void 0){if(_.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");w.gap=_.gap}if(Y)Y.update(w);let y=D();if(M.containerWidth=y,M.columns=w.columns,M.gap=w.gap??0,q)q.updateContainerWidth(y);j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let L=0;L<j.contentSizeHandlers.length;L++)j.contentSizeHandlers[L]();if(q)q.clear();j.forceRender()});let G=null,p=null,h=!1,g=()=>{if(h)return;h=!0,G=j.methods.get("_getSelectedIds")??null,p=j.methods.get("_getFocusedIndex")??null},I=-1,H=-1,a=!0,j0=B.overscan,d={start:0,end:0},C={start:0,end:0},c=()=>{if(j.state.isDestroyed)return;let _=j.scrollController.getScrollTop(),y=j.state.viewportState.containerSize;if(!a&&_===I&&y===H)return;I=_,H=y,a=!1;let L=j.getVirtualTotal();if(L===0||y===0)d.start=0,d.end=0;else d.start=Math.max(0,j.sizeCache.indexAtOffset(_)),d.end=Math.min(L-1,Math.max(0,j.sizeCache.indexAtOffset(_+y-1)));C.start=Math.max(0,d.start-j0),C.end=Math.min(L-1,d.end+j0);let R=j.state.viewportState;R.scrollPosition=_,R.visibleRange.start=d.start,R.visibleRange.end=d.end,R.renderRange.start=C.start,R.renderRange.end=C.end;let u=j.state.lastRenderRange,S=R.isCompressed,b=j.dataManager.getTotal(),x=Y.getItemRange(C.start,C.end,b),l=j.dataManager.getItemsInRange(x.start,x.end),s=S?j.getCompressionContext():void 0;g();let f=G?G():K4,n=p?p():-1;if(q.render(l,x,f,n,s),u.start!==C.start||u.end!==C.end)u.start=C.start,u.end=C.end,Q.emit("range:change",{range:{start:C.start,end:C.end}})},T=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange.start=-1,j.state.lastRenderRange.end=-1,a=!0,c()};j.setRenderFns(c,T);let v=typeof V==="function";j.resizeHandlers.push((_,y)=>{let L=(U?y:_)-W;if(Math.abs(L-M.containerWidth)<1)return;if(M.containerWidth=L,q)q.updateContainerWidth(L);if(v){j.rebuildSizeCache(),j.updateContentSize(j.sizeCache.getTotalSize()),j.updateCompressionMode();for(let R=0;R<j.contentSizeHandlers.length;R++)j.contentSizeHandlers[R]();if(q)q.clear();j.forceRender()}});let{animateScroll:z,cancelScroll:K}=f0(j.scrollController,j.renderIfNeeded);if(j.methods.set("cancelScroll",K),j.methods.set("scrollToIndex",(_,y)=>{let L=Math.floor(_/J.columns),{align:R,behavior:u,duration:S}=$0(y),b=j.dataManager.getState(),x=Y.getTotalRows(b.total),l=Math.max(0,Math.min(L,x-1)),s=j.adjustScrollPosition(y0(l,j.sizeCache,j.state.viewportState.containerSize,x,R,j.getCachedCompression()));if(u==="smooth")z(j.scrollController.getScrollTop(),s,S);else K(),j.scrollController.scrollTo(s)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.idleHandlers.push(()=>{if(q)q.sortDOM()}),j.destroyHandlers.push(()=>{if(K(),q)q.destroy(),q=null;X.root.classList.remove(`${Z}--grid`)})},destroy(){if(q)q.destroy(),q=null}}};var EJ=(J)=>{let Y=Math.max(1,Math.floor(J.columns)),q=J.gap??0,j=J.containerSize,X=0,Q=[],B=()=>{let V=(Y-1)*q;X=Math.max(0,(j-V)/Y),Q=Array(Y);let M=X+q;for(let F=0;F<Y;F++)Q[F]=F*M};B();let N=[],Z=0,U=[],W=(V)=>{let M=0,F=V[0];for(let O=1;O<V.length;O++){let k=V[O];if(k<F)F=k,M=O}return M},D=(V,M)=>{if(V<=0)return Z=0,N=[],[];let F=Array(Y).fill(0),O=Array(Y);for(let G=0;G<Y;G++)O[G]=[];let k=Array(V);for(let G=0;G<V;G++){let p=W(F),h=M(G),g=F[p];k[G]={index:G,x:Q[p],y:g,lane:p,size:h,crossSize:X},O[p].push(G),F[p]=g+h+q}N=O;let $=0;for(let G=0;G<Y;G++){let p=F[G],h=p>0?p-q:0;if(h>$)$=h}return Z=$,k},E=(V)=>{if(V.length===0)return Z>0?Z:0;if(Z>0)return Z;let M=Array(Y).fill(0);for(let O of V){let k=O.y+O.size,$=M[O.lane];if(k>$)M[O.lane]=k}let F=0;for(let O=0;O<Y;O++)if(M[O]>F)F=M[O];return F},w=(V,M,F)=>{if(V.length===0||F<=M)return U.length=0,U;if(N.length===0||N.length!==Y)return A(V,M,F);U.length=0;for(let O=0;O<Y;O++){let k=N[O],$=k.length;if($===0)continue;let G=0,p=$;while(G<p){let h=G+p>>>1,g=V[k[h]];if(g.y+g.size<=M)G=h+1;else p=h}for(let h=G;h<$;h++){let g=V[k[h]];if(g.y>=F)break;U.push(g)}}return U},A=(V,M,F)=>{let O=[];for(let k of V)if(k.y+k.size>M&&k.y<F)O.push(k);return O};return{get columns(){return Y},get gap(){return q},get containerSize(){return j},update:(V)=>{let M=!1;if(V.columns!==void 0){let F=Math.max(1,Math.floor(V.columns));if(F!==Y)Y=F,M=!0}if(V.gap!==void 0&&V.gap!==q)q=V.gap,M=!0;if(V.containerSize!==void 0&&V.containerSize!==j)j=V.containerSize,M=!0;if(M)B()},calculateLayout:D,getTotalSize:E,getVisibleItems:w}};var B4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Q)=>{if(Q.remove(),Y.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),Q.removeAttribute("data-lane"),Y.push(Q)},clear:()=>{Y.length=0}}},Z4=1,AJ=(J,Y,q,j=!1,X,Q)=>{let B=B4(),N=new Map,Z=new Set,U=0,W="",D=-1,E={selected:!1,focused:!1},w=(I,H)=>{return E.selected=I,E.focused=H,E},A=`${q}-item ${q}-masonry-item`,P=`${q}-item--selected`,V=`${q}-item--focused`,M=(I,H)=>{if(typeof H==="string")I.innerHTML=H;else I.replaceChildren(H)},F=(I,H,a)=>{I.classList.toggle(P,H),I.classList.toggle(V,a)},O=(I,H)=>{if(j)I.style.transform=`translate(${Math.round(H.y)}px, ${Math.round(H.x)}px)`;else I.style.transform=`translate(${Math.round(H.x)}px, ${Math.round(H.y)}px)`},k=(I,H)=>{if(j)I.style.width=`${H.size}px`,I.style.height=`${H.crossSize}px`;else I.style.width=`${H.crossSize}px`,I.style.height=`${H.size}px`},$=(I,H,a,j0,d)=>{let C=B.acquire(),c=w(j0,d);if(C.className=A,C.dataset.index=String(I),C.dataset.id=String(H.id),C.dataset.lane=String(a.lane),C.ariaSelected=String(j0),Q)C.id=`${Q}-item-${I}`;if(X){let v=X();if(v!==D)D=v,W=String(v);C.setAttribute("aria-setsize",W),C.setAttribute("aria-posinset",String(I+1))}k(C,a);let T=Y(H,I,c);return M(C,T),F(C,j0,d),O(C,a),{element:C,lastItemId:H.id,lastSelected:j0,lastFocused:d,lastY:a.y,lastX:a.x,lastSize:a.size,lastCrossSize:a.crossSize,lastSeenFrame:U}},G=(I,H,a,j0)=>{U++,Z.clear();for(let C=0;C<H.length;C++)Z.add(H[C].index);for(let[C,c]of N)if(Z.has(C))c.lastSeenFrame=U;else if(U-c.lastSeenFrame>Z4)B.release(c.element),N.delete(C);let d=null;for(let C=0;C<H.length;C++){let c=H[C],T=c.index,v=I(T);if(!v)continue;let z=a.has(v.id),K=T===j0,_=N.get(T);if(_){let y=_.lastItemId!==v.id,L=_.lastSelected!==z,R=_.lastFocused!==K,u=_.lastY!==c.y||_.lastX!==c.x,S=_.lastSize!==c.size||_.lastCrossSize!==c.crossSize;if(y||L||R){let b=w(z,K),x=Y(v,T,b);M(_.element,x),F(_.element,z,K),_.element.dataset.id=String(v.id),_.element.ariaSelected=String(z),_.lastItemId=v.id,_.lastSelected=z,_.lastFocused=K}if(S)k(_.element,c),_.lastSize=c.size,_.lastCrossSize=c.crossSize;if(u)O(_.element,c),_.lastY=c.y,_.lastX=c.x}else{let y=$(T,v,c,z,K);if(!d)d=document.createDocumentFragment();d.appendChild(y.element),N.set(T,y)}}if(d)J.appendChild(d)},p=()=>{for(let{element:I}of N.values())B.release(I);N.clear(),J.innerHTML=""};return{render:G,getElement:(I)=>N.get(I)?.element,sortDOM:()=>{S0(J,N.keys(),(I)=>N.get(I)?.element)},clear:p,destroy:()=>{p(),B.clear()}}};var N4=new Set,_4=100,FJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let Y=null,q=null,j=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(X){let{dom:Q,emitter:B,config:N,rawConfig:Z}=X,U=N.classPrefix,W=N.horizontal;if(N.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${U}--masonry`);let D=b0(Z.padding),E=C0(D,W),w=r0(D,W),A=()=>{return(W?Q.viewport.clientHeight:Q.viewport.clientWidth)-E},P={columns:J.columns,gap:J.gap??0,containerSize:A()};Y=EJ(P);let V=Z.item,M=W&&Z.item.width?Z.item.width:V.height,F={containerWidth:0,columns:0,gap:0,columnWidth:0},O=typeof M==="function"?(L)=>M(L,F):()=>M,k=()=>{let L=X.dataManager.getTotal(),R=Y;F.containerWidth=R.containerSize,F.columns=R.columns,F.gap=R.gap;let u=(R.columns-1)*R.gap;F.columnWidth=Math.max(0,(F.containerWidth-u)/R.columns),j=R.calculateLayout(L,O);let S=Y.getTotalSize(j);X.sizeCache.getTotalSize=()=>S,X.updateContentSize(S)},$=Z.item.template;q=AJ(Q.items,$,U,W,()=>X.dataManager.getTotal(),N.ariaIdPrefix);let G=null,p=null,h=!1,g=()=>{if(h)return;h=!0,G=X.methods.get("_getSelectedIds")??null,p=X.methods.get("_getFocusedIndex")??null},I=(L)=>X.dataManager.getItem(L),H=-1,a=-1,j0=!0,d=N.overscan*_4,C=()=>{if(X.state.isDestroyed)return;g();let L=X.scrollController.getScrollTop(),R=X.state.viewportState.containerSize;if(!j0&&L===H&&R===a)return;H=L,a=R,j0=!1;let u=Math.max(0,L-d),S=L+R+d,b=Y.getVisibleItems(j,u,S),x=G?G():N4,l=p?p():-1;if(q&&b.length>0)q.render(I,b,x,l);let s=X.state.viewportState;s.scrollPosition=L;let f=b.length,n=f>0?b[0].index:0,J0=f>0?b[f-1].index:0;s.visibleRange.start=n,s.visibleRange.end=J0,s.renderRange.start=n,s.renderRange.end=J0;let m=X.state.lastRenderRange;if(m.start!==n||m.end!==J0)m.start=n,m.end=J0,B.emit("range:change",{range:{start:n,end:J0}})},c=()=>{X.state.lastRenderRange.start=-1,X.state.lastRenderRange.end=-1,j0=!0,C()};X.setRenderFns(C,c);let T=(L,R)=>{let u=(W?R:L)-E;if(Y&&Y.containerSize!==u){if(Y.update({containerSize:u}),k(),q)q.clear();c()}};X.resizeHandlers.push(T);let v=()=>{k(),c()},z=X.dataManager,K=(L)=>{if(typeof z[L]!=="function")return;let R=z[L].bind(z);z[L]=(...u)=>{R(...u),v()}};K("setItems"),K("appendItems"),K("prependItems"),K("updateItem"),K("removeItem");let{animateScroll:_,cancelScroll:y}=f0(X.scrollController,X.renderIfNeeded);X.methods.set("cancelScroll",y),X.methods.set("scrollToIndex",(L,R)=>{let u=j[L];if(!u)return;let{align:S,behavior:b,duration:x}=$0(R),l=u.y,s=X.state.viewportState.containerSize,f=l;if(S==="center")f=l-s/2+u.size/2;else if(S==="end"){f=l-s+u.size;let n=Y.getTotalSize(j);if(L===j.length-1)f=Math.max(0,n+w-s)}if(f=Math.max(0,f),f=X.adjustScrollPosition(f),b==="smooth")_(X.scrollController.getScrollTop(),f,x);else y(),X.scrollController.scrollTo(f)}),k(),X.idleHandlers.push(()=>{if(q)q.sortDOM()}),X.destroyHandlers.push(()=>{if(y(),q)q.destroy();Q.root.classList.remove(`${U}--masonry`)})}}};var LJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),N2=(J,Y,q)=>{if(q==="none")return J;let j=new Set(J.selected);if(q==="single"){if(j.clear(),Y.length>0)j.add(Y[0])}else for(let X of Y)j.add(X);return{...J,selected:j}},_2=(J,Y)=>{let q=new Set(J.selected);for(let j of Y)q.delete(j);return{...J,selected:q}},o0=(J,Y,q)=>{if(q==="none")return J;if(J.selected.has(Y))return _2(J,[Y]);else return N2(J,[Y],q)},TJ=(J,Y,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Y.map((j)=>j.id))}},kJ=(J)=>({...J,selected:new Set}),W2=(J,Y)=>{return J.focusedIndex=Y,J},HJ=(J,Y,q=!1)=>{if(Y===0)return J;let j=J.focusedIndex-1;if(j<0)j=q?Y-1:0;return J.focusedIndex=j,J},bJ=(J,Y,q=!1)=>{if(Y===0)return J;let j=J.focusedIndex+1;if(j>=Y)j=q?0:Y-1;return J.focusedIndex=j,J},$J=(J,Y)=>{if(Y===0)return J;return J.focusedIndex=0,J},yJ=(J,Y)=>{if(Y===0)return J;return J.focusedIndex=Y-1,J};var D2=(J)=>{return Array.from(J.selected)},V2=(J,Y)=>{let q=[];for(let j of J.selected){let X=Y(j);if(X)q.push(X)}return q};var PJ=(J)=>{let Y=J?.mode??"single",q=J?.initial,j=LJ(q),X=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(Q){let{dom:B,emitter:N,config:Z}=Q,{classPrefix:U,ariaIdPrefix:W}=Z;if(Y==="none"){Q.methods.set("select",()=>{}),Q.methods.set("deselect",()=>{}),Q.methods.set("toggleSelect",()=>{}),Q.methods.set("selectAll",()=>{}),Q.methods.set("clearSelection",()=>{}),Q.methods.set("getSelected",()=>[]),Q.methods.set("getSelectedItems",()=>[]),Q.methods.set("setSelectionMode",()=>{});return}B.root.classList.add(`${U}--selectable`);let D=new Map,E=()=>{D.clear();let O=Q.dataManager.getTotal(),k=Q.dataManager.getCached();if(k===0)return;if(k>=O){for(let G=0;G<O;G++){let p=Q.dataManager.getItem(G);if(p)D.set(p.id,G)}return}let $=Q.dataManager.getStorage();if($&&typeof $.getLoadedRanges==="function"){let G=$.getLoadedRanges();for(let p of G)for(let h=p.start;h<=p.end;h++){let g=Q.dataManager.getItem(h);if(g&&!g._isPlaceholder)D.set(g.id,h)}}};N.on("data:change",({type:O,id:k})=>{if(O==="remove")j.selected.delete(k),E()}),N.on("load:end",({items:O,offset:k})=>{if(!O||O.length===0)return;if(k!==void 0)for(let $=0;$<O.length;$++){let G=O[$];if(G&&G.id!==void 0)D.set(G.id,k+$)}else E()}),E(),Q.methods.set("_getSelectedIds",()=>{return j.selected}),Q.methods.set("_getFocusedIndex",()=>{return j.focusVisible?j.focusedIndex:-1});let{forceRender:w}=Q.getRenderFns(),A=()=>{w();let O=(k)=>{let $=D.get(k);if($===void 0)return;return Q.dataManager.getItem($)};N.emit("selection:change",{selected:D2(j),items:V2(j,O)})};X=document.createElement("div"),X.setAttribute("aria-live","polite"),X.setAttribute("aria-atomic","true"),X.className=`${U}-live-region`,X.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(B.root.getAttribute("role")==="grid"?B.root.parentElement??B.root:B.root).appendChild(X);let V=X;N.on("selection:change",({selected:O})=>{let k=O.length;if(k===0)V.textContent="";else if(k===1)V.textContent="1 item selected";else V.textContent=`${k} items selected`});let M=()=>{if(Q.state.isDestroyed)return;if(!B.root.matches(":focus-visible"))return;let O=Q.dataManager.getTotal();if(O===0)return;let k=j.focusedIndex>=0?Math.min(j.focusedIndex,O-1):0;j=W2(j,k),j.focusVisible=!0,B.root.setAttribute("aria-activedescendant",`${W}-item-${k}`),Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(k,Q.sizeCache,Q.state.viewportState.containerSize,Q.dataManager.getState().total,"center",Q.getCachedCompression())));let $=Q.dataManager.getItem(k);if($)Q.renderer.updateItemClasses(k,j.selected.has($.id),!0)};B.root.addEventListener("focusin",M);let F=(O)=>{if(Q.state.isDestroyed)return;let k=O.relatedTarget;if(k&&B.root.contains(k))return;let $=j.focusedIndex;if(j.focusVisible=!1,B.root.removeAttribute("aria-activedescendant"),$>=0){let G=Q.dataManager.getItem($);if(G)Q.renderer.updateItemClasses($,j.selected.has(G.id),!1)}};B.root.addEventListener("focusout",F),Q.clickHandlers.push((O)=>{if(Q.state.isDestroyed)return;let $=O.target.closest("[data-index]");if(!$)return;let G=parseInt($.dataset.index??"-1",10);if(G<0)return;let p=Q.dataManager.getItem(G);if(!p)return;N.emit("item:click",{item:p,index:G,event:O}),j=W2(j,G),j.focusVisible=!1,B.root.setAttribute("aria-activedescendant",`${W}-item-${G}`),j=o0(j,p.id,Y),A()}),Q.keydownHandlers.push((O)=>{if(Q.state.isDestroyed)return;let k=Q.dataManager.getTotal(),$=j.focusedIndex,G=!1,p=!1,h=j;switch(O.key){case"ArrowUp":h=HJ(j,k,Z.wrap),h.focusVisible=!0,G=!0,p=!0;break;case"ArrowDown":h=bJ(j,k,Z.wrap),h.focusVisible=!0,G=!0,p=!0;break;case"Home":h=$J(j,k),h.focusVisible=!0,G=!0,p=!0;break;case"End":h=yJ(j,k),h.focusVisible=!0,G=!0,p=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let g=Q.dataManager.getItem(j.focusedIndex);if(g)h=o0(j,g.id,Y),h.focusVisible=!0;G=!0}break}if(G){O.preventDefault(),j=h;let g=j.focusedIndex;if(g>=0){let I=Q.dataManager.getState();Q.scrollController.scrollTo(Q.adjustScrollPosition(y0(g,Q.sizeCache,Q.state.viewportState.containerSize,I.total,"center",Q.getCachedCompression()))),B.root.setAttribute("aria-activedescendant",`${W}-item-${g}`)}else B.root.removeAttribute("aria-activedescendant");if(p){let{selected:I}=j;if($>=0&&$!==g){let H=Q.dataManager.getItem($);if(H)Q.renderer.updateItemClasses($,I.has(H.id),!1)}if(g>=0){let H=Q.dataManager.getItem(g);if(H)Q.renderer.updateItemClasses(g,I.has(H.id),!0)}}else A()}}),Q.methods.set("select",(...O)=>{j=N2(j,O,Y),A()}),Q.methods.set("deselect",(...O)=>{j=_2(j,O),A()}),Q.methods.set("toggleSelect",(O)=>{j=o0(j,O,Y),A()}),Q.methods.set("selectAll",()=>{if(Y!=="multiple")return;let O=Q.getAllLoadedItems();j=TJ(j,O,Y),E(),A()}),Q.methods.set("clearSelection",()=>{j=kJ(j),A()}),Q.methods.set("getSelected",()=>{return D2(j)}),Q.methods.set("getSelectedItems",()=>{return V2(j,(k)=>{let $=D.get(k);return $===void 0?void 0:Q.dataManager.getItem($)})}),Q.destroyHandlers.push(()=>{if(V&&V.parentNode)V.remove();B.root.removeEventListener("focusin",M),B.root.removeEventListener("focusout",F)})},destroy(){if(X&&X.parentNode)X.remove();X=null}}};var wJ=(J)=>{let Y=J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(q){q.methods.set("getScrollSnapshot",()=>{let X=q.scrollController.getScrollTop(),Q=q.getCachedCompression(),B=q.getVirtualTotal(),N=q.methods.get("getSelected"),Z=N&&N().length>0?N():void 0;if(B===0){let E={index:0,offsetInItem:0,total:0};if(Z)E.selectedIds=Z;return E}let U,W;if(Q.isCompressed){let w=X/Q.virtualSize*B;U=Math.max(0,Math.min(Math.floor(w),B-1)),W=(w-U)*q.sizeCache.getSize(U)}else U=q.sizeCache.indexAtOffset(X),W=X-q.sizeCache.getOffset(U);W=Math.max(0,W);let D={index:U,offsetInItem:W,total:B};if(Z)D.selectedIds=Z;return D});let j=(X)=>{let{index:Q,offsetInItem:B,selectedIds:N}=X,Z=q.getVirtualTotal();if(Z===0&&X.total&&X.total>0){q.dataManager.setTotal(X.total),q.sizeCache.rebuild(X.total),q.updateCompressionMode();let M=q.getCachedCompression();q.updateContentSize(M.virtualSize)}else if(Z===0)return;if(!Number.isFinite(Q)||!Number.isFinite(B))return;let U=q.getVirtualTotal();if(q.sizeCache.getTotal()!==U){q.sizeCache.rebuild(U),q.updateCompressionMode();let M=q.getCachedCompression();q.updateContentSize(M.virtualSize)}let D=q.getCachedCompression(),E=Math.max(0,Math.min(Q,U-1)),w;if(D.isCompressed){let M=q.sizeCache.getSize(E),F=M>0?B/M:0;w=(E+F)/U*D.virtualSize}else w=q.sizeCache.getOffset(E)+B;let A=q.state.viewportState.containerSize,P=Math.max(0,D.virtualSize-A);if(w=Math.max(0,Math.min(w,P)),q.scrollController.scrollTo(w),N&&N.length>0){let M=q.methods.get("select");if(M)M(...N)}let V=q.methods.get("loadVisibleRange");if(V){let F=0,O=w,k=()=>{F++;let $=q.state.viewportState.containerSize,G=q.scrollController.getScrollTop();if($>0){if(Math.abs(G-O)>1)q.scrollController.scrollTo(O);V()}else if(F<10)requestAnimationFrame(k)};requestAnimationFrame(k)}else{let M=q.methods.get("reload");if(M)requestAnimationFrame(()=>{M()})}};if(q.methods.set("restoreScroll",j),Y)queueMicrotask(()=>{j(Y)})}}};var RJ=(J,Y=50,q=1/0,j=!0)=>{let X=J,Q=[],B=0,N=()=>{Q=X.map((V,M)=>({def:V,index:M,width:0,minWidth:W4(V.minWidth??Y,1),maxWidth:V.maxWidth??q,resizable:V.resizable??j,offset:0}))},Z=(V)=>{if(Q.length===0){B=0;return}let M=0,F=0;for(let O=0;O<Q.length;O++){let k=Q[O],$=k.def;if($.width!==void 0)k.width=G2($.width,k.minWidth,k.maxWidth),M+=k.width;else F++}if(F>0){let k=Math.max(0,V-M)/F;for(let $=0;$<Q.length;$++){let G=Q[$];if(G.def.width===void 0)G.width=G2(k,G.minWidth,G.maxWidth)}}U()},U=()=>{let V=0;for(let M=0;M<Q.length;M++){let F=Q[M];F.offset=V,V+=F.width}B=V},W=(V,M)=>{if(V<0||V>=Q.length)return 0;let F=Q[V];if(!F.resizable)return F.width;let O=G2(M,F.minWidth,F.maxWidth);return F.width=O,U(),O},D=(V)=>{return Q[V]},E=(V)=>{if(Q.length===0)return;if(V<0)return Q[0];if(V>=B)return Q[Q.length-1];let M=0,F=Q.length-1;while(M<F){let O=M+F>>>1,k=Q[O];if(V<k.offset)F=O-1;else if(V>=k.offset+k.width)M=O+1;else return k}return Q[M]},w=(V)=>{if(V<0||V>=Q.length)return 0;return Q[V].offset},A=(V)=>{if(V<0||V>=Q.length)return 0;return Q[V].width},P=(V)=>{X=V,N()};return N(),{get columns(){return Q},get totalWidth(){return B},resolve:Z,updateColumns:P,resizeColumn:W,getColumn:D,getColumnAtX:E,getColumnOffset:w,getColumnWidth:A}},G2=(J,Y,q)=>Math.min(q,Math.max(Y,J)),W4=(J,Y)=>Math.max(Y,J);var zJ=(J,Y,q,j,X,Q,B)=>{let N=document.createElement("div");N.setAttribute("role","rowgroup");let Z=document.createElement("div");Z.className=`${j}-table-header`,Z.setAttribute("role","row"),Z.setAttribute("aria-rowindex","1"),Z.style.height=`${q}px`;let U=document.createElement("div");U.className=`${j}-table-header-scroll`,U.setAttribute("role","presentation"),Z.appendChild(U),N.appendChild(Z),J.insertBefore(N,J.firstChild),Y.style.position="absolute",Y.style.top=`${q}px`,Y.style.left="0",Y.style.right="0",Y.style.bottom="0",Y.style.height="auto";let W=[],D=[],E=[],w=!0,A=null,P="asc",V=null,M=!1,F=-1,O=0,k=0,$=(T,v)=>{let z=document.createElement("div");z.className=`${j}-table-header-cell`,z.setAttribute("role","columnheader"),z.setAttribute("aria-colindex",String(v+1)),z.dataset.columnKey=T.def.key;let K=T.def.align;if(K==="center")z.classList.add(`${j}-table-header-cell--center`);else if(K==="right")z.classList.add(`${j}-table-header-cell--right`);let _=document.createElement("div");_.className=`${j}-table-header-content`;let y=T.def.header?T.def.header(T.def):T.def.label;if(typeof y==="string")_.textContent=y;else _.appendChild(y);if(z.appendChild(_),T.def.sortable){let L=document.createElement("span");L.className=`${j}-table-header-sort`,L.setAttribute("aria-hidden","true"),z.appendChild(L),E.push(L),z.classList.add(`${j}-table-header-cell--sortable`)}else E.push(null);if(T.resizable){let L=document.createElement("div");L.className=`${j}-table-header-resize`,L.dataset.resizeIndex=String(v),z.appendChild(L),D.push(L)}return z},G=(T)=>{V=T,U.textContent="",W=[],D=[],E=[];let v=T.columns;for(let z=0;z<v.length;z++){let K=v[z],_=$(K,z);W.push(_),U.appendChild(_)}if(p(T),A)h(A,P)},p=(T)=>{V=T;let v=T.columns;U.style.width=`${T.totalWidth}px`;for(let z=0;z<W.length&&z<v.length;z++){let K=W[z],_=v[z];K.style.width=`${_.width}px`}},h=(T,v)=>{if(A=T,P=v,!V)return;let z=V.columns;for(let K=0;K<E.length&&K<z.length;K++){let _=E[K];if(!_)continue;if(z[K].def.key===T&&T!==null)_.textContent=v==="asc"?"▲":"▼",_.style.opacity="0.7",W[K].setAttribute("aria-sort",v==="asc"?"ascending":"descending");else _.textContent="",_.style.opacity="0",W[K].removeAttribute("aria-sort")}},g=(T)=>{U.style.transform=`translateX(${-T}px)`},I=(T)=>{let v=T.target;if(!v.dataset.resizeIndex)return;if(T.preventDefault(),T.stopPropagation(),F=parseInt(v.dataset.resizeIndex,10),!V)return;let z=V.getColumn(F);if(!z||!z.resizable)return;M=!0,O=T.clientX,k=z.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",v.classList.add(`${j}-table-header-resize--active`),v.setPointerCapture(T.pointerId),v.addEventListener("pointermove",H),v.addEventListener("pointerup",a),v.addEventListener("pointercancel",a)},H=(T)=>{if(!M||!V)return;let v=T.clientX-O;if(Math.abs(v)<1)return;let z=Math.max(0,k+v);X(F,z)},a=(T)=>{if(!M)return;let v=T.target;v.removeEventListener("pointermove",H),v.removeEventListener("pointerup",a),v.removeEventListener("pointercancel",a);try{v.releasePointerCapture(T.pointerId)}catch{}v.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",M=!1,F=-1},j0=(T)=>{let v=T.target;if(v.dataset.resizeIndex!==void 0)return;if(M)return;let z=v;while(z&&!z.dataset.columnKey)if(z=z.parentElement,z===Z||z===null)return;if(!z||!z.dataset.columnKey)return;let K=z.dataset.columnKey;if(!V)return;let _=V.columns,y=-1;for(let R=0;R<_.length;R++)if(_[R].def.key===K){y=R;break}if(y===-1)return;let L=_[y];if(B)B({key:K,index:y,event:T});if(L.def.sortable&&Q){let R;if(A===K)if(P==="asc")R="desc";else R=null;else R="asc";Q({key:K,index:y,direction:R})}};return Z.addEventListener("pointerdown",I),Z.addEventListener("click",j0),{element:Z,update:p,updateSort:h,rebuild:G,show:()=>{if(w)return;w=!0,Z.style.display=""},hide:()=>{if(!w)return;w=!1,Z.style.display="none"},destroy:()=>{Z.removeEventListener("pointerdown",I),Z.removeEventListener("click",j0),Y.style.position="",Y.style.top="",Y.style.left="",Y.style.right="",Y.style.bottom="",N.remove(),W=[],D=[],E=[],V=null,w=!1},syncScroll:g}};var D4=(J=200)=>{let Y=[];return{acquire:()=>{let Q=Y.pop();if(Q)return Q;return document.createElement("div")},release:(Q)=>{if(Q.parentNode)Q.parentNode.removeChild(Q);if(Y.length<J)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",Y.push(Q)},clear:()=>{Y.length=0}}},vJ=(J,Y,q,j,X,Q,B,N,Z)=>{let U=D4(),W=new Map,D=-1,E=q,w=null,A=null,P=null,V=(S,b)=>{A=S,P=b},M=(S,b)=>{if(b)S.setAttribute("aria-selected","true");else S.removeAttribute("aria-selected")},F=`${X}-item ${X}-table-row`,O=`${X}-item--selected`,k=`${X}-item--focused`,$=`${X}-table-cell`,G=`${X}-table-cell--center`,p=`${X}-table-cell--right`,h=`${X}-item--odd`,g=`${X}-item--placeholder`,I=`${X}-item--replaced`,H=`${X}-item ${X}-table-row ${X}-table-group-header`,a=`${X}-table-group-header-content`,j0=(S,b,x,l,s=!1)=>{if(x.def.cell){let f=x.def.cell(b,x.def,l);if(typeof f==="string")S.innerHTML=f;else S.replaceChildren(f)}else{let f=b[x.def.key],n=f!=null?String(f):"";if(s&&n)S.innerHTML=`<span>${n}</span>`;else S.textContent=n}},d=(S,b,x,l,s=!1)=>{let f=F;if(N){if(w){let n=w(b);if(n>=0&&(n&1)===1)f+=` ${h}`}else if((b&1)===1)f+=` ${h}`}if(s)f+=` ${g}`;if(x)f+=` ${O}`;if(l)f+=` ${k}`;S.className=f},C=(S,b)=>{let x=b.def.align;if(x==="center")S.classList.add(G),S.classList.remove(p);else if(x==="right")S.classList.add(p),S.classList.remove(G);else S.classList.remove(G,p)},c=(S,b)=>{let l=E.columns.length;if(b.length===l)return b;let s=[];for(let f=0;f<l;f++){let n;if(f<b.length)n=b[f];else n=document.createElement("div"),n.className=$,S.appendChild(n);s.push(n)}for(let f=l;f<b.length;f++)b[f].remove();return s},T=(S,b,x)=>{let l=U.acquire(),s=S;l.style.width=`${E.totalWidth}px`;let f=x.getSize(b);l.style.height=`${f}px`,l.className=H,l.setAttribute("role","presentation"),l.setAttribute("data-id",String(S.id)),l.setAttribute("data-index",String(b)),l.removeAttribute("aria-selected"),l.removeAttribute("aria-rowindex"),l.replaceChildren();let n=document.createElement("div");if(n.className=a,P){let m=P(s.groupKey,s.groupIndex);if(typeof m==="string")n.innerHTML=m;else n.appendChild(m)}l.appendChild(n);let J0=x.getOffset(b);return l.style.transform=`translateY(${J0}px)`,{element:l,cells:[],index:b,isGroupHeader:!0,lastItemId:S.id,lastSelected:!1,lastFocused:!1,lastOffset:J0,lastHeight:f}},v=(S,b,x,l,s)=>{let f=U.acquire();f.style.width=`${E.totalWidth}px`;let n=s.getSize(b);f.style.height=`${n}px`;let J0=String(S.id).startsWith("__placeholder_");d(f,b,x,l,J0),f.setAttribute("role","row"),f.setAttribute("data-id",String(S.id)),f.setAttribute("data-index",String(b)),f.id=`${Q}-${b}`,f.setAttribute("aria-rowindex",String(b+2));let m=B();if(m!==D)D=m;M(f,x);let o=c(f,[]),Q0=E.columns;for(let Y0=0;Y0<o.length&&Y0<Q0.length;Y0++){let X0=o[Y0],e=Q0[Y0];X0.style.left=`${e.offset}px`,X0.style.width=`${e.width}px`,X0.setAttribute("role","gridcell"),X0.setAttribute("aria-colindex",String(Y0+1)),C(X0,e),j0(X0,S,e,b,J0)}let q0=s.getOffset(b);return f.style.transform=`translateY(${q0}px)`,{element:f,cells:o,index:b,isGroupHeader:!1,lastItemId:S.id,lastSelected:x,lastFocused:l,lastOffset:q0,lastHeight:n}},z=(S,b,x,l)=>{for(let[m,o]of W)if(m<b.start||m>b.end)U.release(o.element),W.delete(m);let s=!1,f=B();if(f!==D)D=f,s=!0;let n=null,J0=Y();w=typeof N==="string"&&Z?Z():null;for(let m=b.start;m<=b.end;m++){let o=m-b.start,Q0=S[o];if(!Q0)continue;let q0=x.has(Q0.id),Y0=m===l,X0=A?A(Q0):!1,e=W.get(m);if(e){if(e.isGroupHeader!==X0){U.release(e.element),W.delete(m);let W0=X0?T(Q0,m,J0):v(Q0,m,q0,Y0,J0);if(W.set(m,W0),!n)n=document.createDocumentFragment();n.appendChild(W0.element);continue}if(X0){if(e.lastItemId!==Q0.id){let V0=Q0,U0=e.element.firstElementChild;if(U0&&P){let D0=P(V0.groupKey,V0.groupIndex);if(typeof D0==="string")U0.innerHTML=D0;else U0.replaceChildren(D0)}e.element.setAttribute("data-id",String(Q0.id)),e.lastItemId=Q0.id}let B0=J0.getOffset(m);if(e.lastOffset!==B0)e.lastOffset=B0,e.element.style.transform=`translateY(${B0}px)`;let A0=J0.getSize(m);if(e.lastHeight!==A0)e.lastHeight=A0,e.element.style.height=`${A0}px`}else{let W0=e.lastItemId!==Q0.id,B0=e.lastSelected!==q0,A0=e.lastFocused!==Y0;if(W0){let D0=e.lastItemId!=null&&String(e.lastItemId).startsWith("__placeholder_"),N0=String(Q0.id).startsWith("__placeholder_"),F0=E.columns;for(let T0=0;T0<e.cells.length&&T0<F0.length;T0++)j0(e.cells[T0],Q0,F0[T0],m,N0);if(d(e.element,m,q0,Y0,N0),e.element.setAttribute("data-id",String(Q0.id)),M(e.element,q0),D0&&!N0)e.element.classList.add(I),setTimeout(()=>{e.element.classList.remove(I)},300);e.lastItemId=Q0.id,e.lastSelected=q0,e.lastFocused=Y0}else if(B0||A0){let D0=String(Q0.id).startsWith("__placeholder_");d(e.element,m,q0,Y0,D0),M(e.element,q0),e.lastSelected=q0,e.lastFocused=Y0}let V0=J0.getOffset(m);if(e.lastOffset!==V0)e.lastOffset=V0,e.element.style.transform=`translateY(${V0}px)`;let U0=J0.getSize(m);if(e.lastHeight!==U0)e.lastHeight=U0,e.element.style.height=`${U0}px`;if(s)e.element.setAttribute("aria-rowindex",String(m+2))}}else{let W0=X0?T(Q0,m,J0):v(Q0,m,q0,Y0,J0);if(W.set(m,W0),!n)n=document.createDocumentFragment();n.appendChild(W0.element)}}if(n)J.appendChild(n)},K=(S,b,x,l)=>{let s=W.get(S);if(!s)return;if(s.isGroupHeader)return;let f=s.lastItemId!==b.id,n=s.lastSelected!==x,J0=s.lastFocused!==l;if(f||n||J0){if(f){let m=E.columns;for(let o=0;o<s.cells.length&&o<m.length;o++)j0(s.cells[o],b,m[o],S);s.element.setAttribute("data-id",String(b.id)),s.lastItemId=b.id}d(s.element,S,x,l),M(s.element,x),s.lastSelected=x,s.lastFocused=l}},_=(S,b,x)=>{let l=W.get(S);if(!l)return;if(l.isGroupHeader)return;let s=l.lastSelected!==b,f=l.lastFocused!==x;if(s||f)d(l.element,S,b,x),M(l.element,b),l.lastSelected=b,l.lastFocused=x},y=(S)=>{E=S;let b=S.columns;for(let[,x]of W)if(x.element.style.width=`${S.totalWidth}px`,x.cells.length>0)for(let l=0;l<x.cells.length&&l<b.length;l++){let s=x.cells[l],f=b[l];s.style.left=`${f.offset}px`,s.style.width=`${f.width}px`}},L=(S)=>{return W.get(S)?.element},R=()=>{for(let[,S]of W)U.release(S.element);W.clear(),D=-1};return{render:z,updateItem:K,updateItemClasses:_,getElement:L,updateColumnLayout:y,setGroupHeaderFn:V,clear:R,destroy:()=>{R(),U.clear()}}};var V4=new Set,CJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist/builder] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist/builder] withTable: either rowHeight or estimatedRowHeight is required");let Y=null,q=null,j=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(X){let{dom:Q,emitter:B,config:N}=X,{classPrefix:Z}=N;if(N.horizontal)throw Error("[vlist/builder] withTable cannot be used with orientation: 'horizontal'");if(N.reverse)throw Error("[vlist/builder] withTable cannot be used with reverse: true");let U=J.resizable??!0,W=J.minColumnWidth??50,D=J.maxColumnWidth??1/0,E=J.columnBorders??!1,w=J.rowBorders??!0,A=J.rowHeight,P=C0(b0(X.rawConfig.padding),!1),V=J.headerHeight??(typeof A==="number"?A:40),M=J.sort?.key??null,F=J.sort?.direction??"asc";if(Y=RJ(J.columns,W,D,U),typeof A==="function")X.setSizeConfig(A);else if(typeof A==="number")X.setSizeConfig(A);if(X.rebuildSizeCache(),Q.root.classList.add(`${Z}--table`),w)Q.root.classList.add(`${Z}--table-row-borders`);if(E)Q.root.classList.add(`${Z}--table-col-borders`);Q.root.setAttribute("role","grid"),Q.root.setAttribute("aria-colcount",String(J.columns.length));let O=-1,k=Q.items.getAttribute("aria-label");if(k)Q.root.setAttribute("aria-label",k),Q.items.removeAttribute("aria-label");Q.items.setAttribute("role","rowgroup"),Q.viewport.setAttribute("role","none"),Q.content.setAttribute("role","none"),Q.viewport.removeAttribute("tabindex");let $=X.getContainerWidth()-P;Y.resolve($);let G=(b,x)=>{if(!Y)return;let l=Y.getColumn(b);if(!l)return;let s=l.width,f=Y.resizeColumn(b,x);if(q)q.update(Y);if(j)j.updateColumnLayout(Y);g(),B.emit("column:resize",{key:l.def.key,index:b,previousWidth:s,width:f})},p=(b)=>{if(b.direction===null)M=null,F="asc";else M=b.key,F=b.direction;if(q)q.updateSort(M,F);B.emit("column:sort",b)},h=(b)=>{B.emit("column:click",b)};if(q=zJ(Q.root,Q.viewport,V,Z,G,p,h),q.rebuild(Y),M)q.updateSort(M,F);let g=()=>{if(!Y)return;let b=Y.totalWidth;Q.content.style.minWidth=`${b}px`,Q.items.style.minWidth=`${b}px`};g(),j=vJ(Q.items,()=>X.sizeCache,Y,J.columns,Z,N.ariaIdPrefix,()=>X.dataManager.getTotal(),X.rawConfig.item?.striped,()=>X.getStripeIndexFn());let I=null,H=null,a=!1,j0=()=>{if(a)return;a=!0,I=X.methods.get("_getSelectedIds")??null,H=X.methods.get("_getFocusedIndex")??null},d=-1,C=-1,c=-1,T=!0,v=N.overscan,z={start:0,end:0},K={start:0,end:0},_=()=>{if(X.state.isDestroyed)return;let b=X.scrollController.getScrollTop(),x=X.state.viewportState.containerSize,l=X.getVirtualTotal();if(!T&&b===d&&x===C&&l===c)return;d=b,C=x,c=l,T=!1;let s=l+1;if(s!==O)O=s,Q.root.setAttribute("aria-rowcount",String(s));if(l===0||x===0)z.start=0,z.end=0;else z.start=Math.max(0,X.sizeCache.indexAtOffset(b)),z.end=Math.min(l-1,Math.max(0,X.sizeCache.indexAtOffset(b+x-1)));K.start=Math.max(0,z.start-v),K.end=Math.min(l-1,z.end+v);let f=X.state.viewportState;f.scrollPosition=b,f.visibleRange.start=z.start,f.visibleRange.end=z.end,f.renderRange.start=K.start,f.renderRange.end=K.end;let n=X.state.lastRenderRange,J0=X.dataManager.getItemsInRange(K.start,K.end);j0();let m=I?I():V4,o=H?H():-1;if(j.render(J0,K,m,o),n.start!==K.start||n.end!==K.end)n.start=K.start,n.end=K.end,B.emit("range:change",{range:{start:K.start,end:K.end}})},y=()=>{if(X.state.isDestroyed)return;X.state.lastRenderRange.start=-1,X.state.lastRenderRange.end=-1,T=!0,_()};X.setRenderFns(_,y);let L=q,R=-1,u=()=>{let b=Q.viewport.scrollLeft;if(b!==R){if(R=b,L.syncScroll)L.syncScroll(b)}};X.afterScroll.push(()=>{u()});let S=()=>{u()};Q.viewport.addEventListener("scroll",S,{passive:!0}),X.resizeHandlers.push((b,x)=>{if(!Y)return;if(Y.resolve(b-P),q)q.update(Y);if(j)j.updateColumnLayout(Y);g()}),X.methods.set("updateColumns",(b)=>{if(!Y||!q)return;if(Y.updateColumns(b),Y.resolve(X.getContainerWidth()-P),q.rebuild(Y),M)q.updateSort(M,F);if(g(),j)j.updateColumnLayout(Y),j.clear();X.forceRender()}),X.methods.set("resizeColumn",(b,x)=>{if(!Y)return;let l;if(typeof b==="string"){let s=Y.columns;l=-1;for(let f=0;f<s.length;f++)if(s[f].def.key===b){l=f;break}if(l===-1)return}else l=b;G(l,x)}),X.methods.set("getColumnWidths",()=>{if(!Y)return{};let b={},x=Y.columns;for(let l=0;l<x.length;l++)b[x[l].def.key]=x[l].width;return b}),X.methods.set("setSort",(b,x)=>{if(M=b,F=x??"asc",q)q.updateSort(M,F)}),X.methods.set("getSort",()=>{return{key:M,direction:F}}),X.methods.set("_getTableLayout",()=>Y),X.methods.set("_replaceTableRenderer",(b)=>{j=b}),X.methods.set("_updateTableForGroups",(b,x)=>{if(j)j.setGroupHeaderFn(b,x)}),X.methods.set("_getTableHeaderHeight",()=>V),X.contentSizeHandlers.push(()=>{g()}),X.destroyHandlers.push(()=>{if(Q.viewport.removeEventListener("scroll",S),q)q.destroy(),q=null;if(j)j.destroy(),j=null;Q.content.style.minWidth="",Q.items.style.minWidth="",Q.root.classList.remove(`${Z}--table`),Q.root.removeAttribute("role"),Q.root.removeAttribute("aria-colcount"),Q.viewport.removeAttribute("role"),Q.viewport.setAttribute("tabindex","-1"),Q.content.removeAttribute("role");let b=Q.root.getAttribute("aria-label");if(b)Q.items.setAttribute("aria-label",b),Q.root.removeAttribute("aria-label");Q.root.removeAttribute("aria-rowcount"),Q.items.setAttribute("role","listbox")})},destroy(){if(q)q.destroy(),q=null;if(j)j.destroy(),j=null}}};var G4=50,M4=0.1;function O4(J){let Y=0,q=0,j=0;function X(){return j>0?q/j:0}function Q(Z){if(Y=Z,Z>M4&&Z<G4)q+=Z,j++}function B(){let Z=J.getTotal();if(Z===0)return 0;let U=J.getItemSize();if(U<=0)return 0;let W=J.getContainerSize();if(W<=0)return 0;let D=J.getScrollPosition(),E=typeof J.getColumns==="function"?J.getColumns():1,A=Math.ceil(Z/E)*U,V=Math.min(A,p0)-W,M=A-W,F=V>0?M/V:1,O=D*F,k=Math.ceil((O+W)/U);return Math.min(k*E,Z)}function N(){let Z=J.getTotal(),U=B();return{progress:Z>0?Math.min(100,Math.max(0,U/Z*100)):0,velocity:Y,velocityAvg:X(),itemCount:U,total:Z}}return{getState:N,onVelocity:Q}}export{CJ as withTable,wJ as withSnapshots,PJ as withSelection,QJ as withScrollbar,jJ as withScale,BJ as withPage,FJ as withMasonry,GJ as withGroups,OJ as withGrid,KJ as withAsync,t2 as vlist,O4 as createStats};
package/dist/internals.js CHANGED
@@ -1 +1 @@
1
- var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var O2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,G=$-1;while(U<G){let _=U+G+1>>>1;if(j[_]<=K)U=_;else G=_-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},M2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var _2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var V2=(J,Q)=>{let $=Q.getTotalSize(),j=$>_2,q=j?_2:$,Y=$>0?q/$:1;return{isCompressed:j,actualSize:$,virtualSize:q,ratio:Y}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed){let Z=$.indexAtOffset(J),V=$.indexAtOffset(J+Q);if(V<j-1)V++;return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,V)),Y}let{virtualSize:K}=q,G=J/K*j,_=Math.floor(G),N=P2($,Math.max(0,_),Q,j),R=Math.ceil(G)+N,z=K-Q-J;if(z<=Q&&z>=-1){let Z=E2($,Q,j),V=Math.max(0,j-Z),X=Math.max(0,Math.min(1,1-z/Q));_=Math.floor(_+(V-_)*X),R=z<=1?j-1:Math.min(j-1,_+N)}return Y.start=Math.max(0,_),Y.end=Math.min(j-1,Math.max(0,R)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);let{virtualSize:U}=Y,G=U-q,_=G-Q;if(_<=q&&_>=-1){if(Q>=G-1){let P=$.getTotalSize()-$.getOffset(J);return q-P}let z=E2($,q,j),Z=Math.max(0,j-z),X=Q/U*j,D=Math.max(0,Math.min(1,1-_/q)),b=$.getOffset(J)-$.getOffset(Z),v=$.getOffset(J)-k2($,X,j);return v+(b-v)*D}let N=Q/U,R=$.getTotalSize(),L=N*R;return $.getOffset(J)-L},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let G=q.virtualSize-$;return Math.max(0,Math.min(K,G))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>_2;return Q.getTotalSize()>_2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(_2/J)},ZJ=(J,Q)=>{let $=V2(J,Q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,DJ=(J,Q,$,j,q,Y,K,U,G=!1)=>{let _=SJ(),N=new Map,R=Y,L=!1,z=null,Z=0,V=0,X="",D=-1,b=(T)=>{if(z&&Z===T)return z;return z=V2(T,$),Z=T,z},v={selected:!1,focused:!1},P=(T,S)=>{return v.selected=T,v.focused=S,v},p=`${q}-item ${q}-grid-item`,x=`${q}-item--selected`,l=`${q}-item--focused`,n=(T,S)=>{if(typeof S==="string")T.innerHTML=S;else T.replaceChildren(S)},J2=(T,S,O)=>{T.classList.toggle(x,S),T.classList.toggle(l,O)},g=(T,S)=>{let O=j.getRow(T);if(S){let B=S.totalItems,A=b(B);if(A.isCompressed)return L2(O,S.scrollPosition,$,B,S.containerSize,A,S.rangeStart)}return $.getOffset(O)},c=(T,S)=>{let O=L&&j.getCol(T)===0,B=O?0:j.getCol(T),A=O?0:j.getColumnOffset(B,R),E;if(L){let u=j.getRow(T),M=0,m=new Set;for(let t=0;t<T;t++){let W=j.getRow(t);if(W<u&&!m.has(W)){let C=$.getSize(t);M+=C,m.add(W)}}E=M}else E=g(T,S);if(G)return`translate(${Math.round(E)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(E)}px)`},d=(T,S)=>{T.style.transform=S},e=(T,S)=>{let O=T.dataset.id?.startsWith("__group_header"),B=O?R:j.getColumnWidth(R),A;if(L||O)A=$.getSize(S)-j.gap;else{let E=j.getRow(S);A=$.getSize(E)-j.gap}if(G)T.style.width=`${A}px`,T.style.height=`${B}px`;else T.style.width=`${B}px`,T.style.height=`${A}px`},i=(T,S,O,B,A)=>{let E=_.acquire(),u=P(O,B);if(E.className=p,E.dataset.index=String(T),E.dataset.id=String(S.id),E.dataset.row=String(j.getRow(T)),E.dataset.col=String(j.getCol(T)),E.ariaSelected=String(O),U)E.id=`${U}-item-${T}`;if(K){let m=K();if(m!==D)D=m,X=String(m);E.setAttribute("aria-setsize",X),E.setAttribute("aria-posinset",String(T+1))}e(E,T);let M=Q(S,T,u);return n(E,M),J2(E,O,B),d(E,A),{element:E,lastItemId:S.id,lastSelected:O,lastFocused:B,lastTransform:A,lastSeenFrame:V}},y=(T,S,O,B,A)=>{if(V++,S.start===0&&T.length>0)L=O2(T[0]);for(let[M,m]of N)if(M>=S.start&&M<=S.end)m.lastSeenFrame=V;else if(V-m.lastSeenFrame>fJ)_.release(m.element),N.delete(M);let E=!1;if(K){let M=K();if(M!==D)D=M,X=String(M),E=!0}let u=null;for(let M=S.start;M<=S.end;M++){let m=M-S.start,t=T[m];if(!t){console.warn(`⚠️ RENDER: Missing item at index ${M} (range: ${S.start}-${S.end}, items.length: ${T.length})`);continue}let W=O.has(t.id),C=M===B,f=N.get(M);if(f){let o=f.lastItemId!==t.id,Q2=f.lastSelected!==W,$2=f.lastFocused!==C;if(o||Q2||$2){if(o){let q2=P(W,C),j2=Q(t,M,q2);n(f.element,j2),f.element.dataset.id=String(t.id),f.element.dataset.row=String(j.getRow(M)),f.element.dataset.col=String(j.getCol(M)),e(f.element,M)}J2(f.element,W,C),f.element.ariaSelected=String(W),f.lastItemId=t.id,f.lastSelected=W,f.lastFocused=C}let h=c(M,A);if(f.lastTransform!==h)d(f.element,h),f.lastTransform=h;if(E)f.element.setAttribute("aria-setsize",X)}else{let o=c(M,A),Q2=i(M,t,W,C,o);if(!u)u=document.createDocumentFragment();u.appendChild(Q2.element),N.set(M,Q2)}}if(u)J.appendChild(u)},w=(T)=>{for(let[S,O]of N){let B=c(S,T);if(O.lastTransform!==B)d(O.element,B),O.lastTransform=B}},F=(T,S,O,B)=>{let A=N.get(T);if(!A)return;let E=A.lastItemId!==S.id,u=A.lastSelected!==O,M=A.lastFocused!==B;if(E||u||M){let m=P(O,B),t=Q(S,T,m);n(A.element,t),J2(A.element,O,B),A.element.dataset.id=String(S.id),A.element.ariaSelected=String(O),e(A.element,T),A.lastItemId=S.id,A.lastSelected=O,A.lastFocused=B}},H=(T,S,O)=>{let B=N.get(T);if(!B)return;let A=B.lastSelected!==S,E=B.lastFocused!==O;if(A||E)J2(B.element,S,O),B.lastSelected=S,B.lastFocused=O},k=(T)=>{return N.get(T)?.element},r=(T)=>{if(Math.abs(T-R)<1)return;R=T;for(let[S,O]of N){e(O.element,S);let B=c(S);d(O.element,B),O.lastTransform=B}},I=()=>{A2(J,N.keys(),(T)=>N.get(T)?.element)},a=()=>{for(let[,T]of N)_.release(T.element);N.clear()};return{render:y,updatePositions:w,updateItem:F,updateItemClasses:H,getElement:k,sortDOM:I,updateContainerWidth:r,clear:a,destroy:()=>{a(),_.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let G=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:G}),Y=Y+1+G,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(L)=>{if($.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return{type:"header",group:Z};let V=L-Z.headerLayoutIndex-1;return{type:"item",dataIndex:Z.firstDataIndex+V,group:Z}},layoutToDataIndex:(L)=>{if($.length===0)return L;let z=y2($,L),Z=$[z];if(L===Z.headerLayoutIndex)return-1;let V=L-Z.headerLayoutIndex-1;return Z.firstDataIndex+V},dataToLayoutIndex:(L)=>{if($.length===0)return L;let z=p2($,L),Z=$[z],V=L-Z.firstDataIndex;return Z.headerLayoutIndex+1+V},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=y2($,L);return $[z]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let z=p2($,L);return $[z]},getHeaderHeight:typeof q==="number"?(L)=>q:(L)=>{let z=$[L];if(!z)return 0;return q(z.key,L)},rebuild:(L)=>{$=x2(L,Q.getGroupForIndex),j=L+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let G=-1,_=!1,N=0,R=(D)=>{if(D===G)return;G=D;let b=Q.groups;if(D<0||D>=b.length){U.textContent="";return}let v=b[D],P=j.headerTemplate(v.key,v.groupIndex),p=Q.getHeaderHeight(D);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof P==="string")U.innerHTML=P;else U.replaceChildren(P)},L=(D)=>{let b=Q.groups;if(b.length===0){Z();return}let v=$.getOffset(b[0].headerLayoutIndex);if(D<v){Z();return}let P=0,p=b.length-1;while(P<p){let g=P+p+1>>>1;if($.getOffset(b[g].headerLayoutIndex)<=D)P=g;else p=g-1}let x=P;if(!_)z();R(x);let l=Q.getHeaderHeight(x),n=0,J2=x+1;if(J2<b.length){let c=$.getOffset(b[J2].headerLayoutIndex)-D;if(c<l)n=c-l}if(n!==N)if(N=n,n===0)U.style.transform="";else{let g=Math.round(n);U.style.transform=Y?`translateX(${g}px)`:`translateY(${g}px)`}},z=()=>{if(_)return;_=!0,U.style.display=""},Z=()=>{if(!_)return;_=!1,U.style.display="none",G=-1,N=0,U.style.transform=""},V=()=>{let D=G;if(G=-1,D>=0)R(D)},X=()=>{U.remove(),G=-1,_=!1};return U.style.display="none",{update:L,refresh:V,show:z,hide:Z,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=M2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=M2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),G=Q.getSize(K),_=Q.getTotalSize(),N=Math.max(0,_-$),R;switch(Y){case"center":R=U-$/2+G/2;break;case"end":R=U-$+G;break;case"start":default:R=U;break}return Math.max(0,Math.min(R,N))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var _J=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(Z)=>{if(Z<=0)return 0;if(!j)return Math.ceil(Z/Q);let V=0,X=0,D=0;for(let b=0;b<Z;b++)if(j(b)){if(D++,X>0)V++,X=0;V++,X=0}else if(X++,X>=Q)V++,X=0;if(X>0)V++;return V},K=(Z)=>{return q.row=U(Z),q.col=G(Z),q},U=(Z)=>{if(!j)return Math.floor(Z/Q);let V=0,X=0;for(let D=0;D<=Z;D++)if(j(D)){if(X>0)V++,X=0;if(D===Z)return V;V++,X=0}else{if(D===Z)return V;if(X++,X>=Q)V++,X=0}return console.warn(`⚠️ getRow(${Z}) fell through - returning ${V}`),V},G=(Z)=>{if(!j)return Z%Q;if(j(Z))return 0;let V=0;for(let X=0;X<=Z;X++)if(j(X))V=0;else{if(X===Z)return V;if(V++,V>=Q)V=0}return V},_=(Z,V,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,Z*Q),x=Math.min(X-1,(V+1)*Q-1);return{start:p,end:x}}let D=-1,b=-1,v=0,P=0;for(let p=0;p<X;p++){if(j(p)){if(P>0)v++,P=0;if(v>=Z&&v<=V){if(D===-1)D=p;b=p}v++,P=0}else{if(v>=Z&&v<=V){if(D===-1)D=p;b=p}if(P++,P>=Q)v++,P=0}if(v>V&&P===0)break}if(D===-1)return{start:0,end:-1};return{start:D,end:b}},N=(Z,V,X)=>{if(V<0||V>=Q)return-1;let D=Z*Q+V;if(D<0||D>=X)return-1;return D},R=(Z)=>{let V=(Q-1)*$;return Math.max(0,(Z-V)/Q)};return{get columns(){return Q},get gap(){return $},update:(Z)=>{if(Z.columns!==void 0)Q=Math.max(1,Math.floor(Z.columns));if(Z.gap!==void 0)$=Z.gap;if(Z.isHeaderFn!==void 0)j=Z.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:G,getItemRange:_,getItemIndex:N,getColumnWidth:R,getColumnOffset:(Z,V)=>{let X=R(V);return Z*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,D)=>({def:X,index:D,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},G=(X)=>{if(Y.length===0){K=0;return}let D=0,b=0;for(let v=0;v<Y.length;v++){let P=Y[v],p=P.def;if(p.width!==void 0)P.width=v2(p.width,P.minWidth,P.maxWidth),D+=P.width;else b++}if(b>0){let P=Math.max(0,X-D)/b;for(let p=0;p<Y.length;p++){let x=Y[p];if(x.def.width===void 0)x.width=v2(P,x.minWidth,x.maxWidth)}}_()},_=()=>{let X=0;for(let D=0;D<Y.length;D++){let b=Y[D];b.offset=X,X+=b.width}K=X},N=(X,D)=>{if(X<0||X>=Y.length)return 0;let b=Y[X];if(!b.resizable)return b.width;let v=v2(D,b.minWidth,b.maxWidth);return b.width=v,_(),v},R=(X)=>{return Y[X]},L=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let D=0,b=Y.length-1;while(D<b){let v=D+b>>>1,P=Y[v];if(X<P.offset)b=v-1;else if(X>=P.offset+P.width)D=v+1;else return P}return Y[D]},z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},Z=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},V=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:G,updateColumns:V,resizeColumn:N,getColumn:R,getColumnAtX:L,getColumnOffset:z,getColumnWidth:Z}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let G=document.createElement("div");G.className=`${j}-table-header`,G.setAttribute("role","row"),G.setAttribute("aria-rowindex","1"),G.style.height=`${$}px`;let _=document.createElement("div");_.className=`${j}-table-header-scroll`,_.setAttribute("role","presentation"),G.appendChild(_),U.appendChild(G),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let N=[],R=[],L=[],z=!0,Z=null,V="asc",X=null,D=!1,b=-1,v=0,P=0,p=(F,H)=>{let k=document.createElement("div");k.className=`${j}-table-header-cell`,k.setAttribute("role","columnheader"),k.setAttribute("aria-colindex",String(H+1)),k.dataset.columnKey=F.def.key;let r=F.def.align;if(r==="center")k.classList.add(`${j}-table-header-cell--center`);else if(r==="right")k.classList.add(`${j}-table-header-cell--right`);let I=document.createElement("div");I.className=`${j}-table-header-content`;let a=F.def.header?F.def.header(F.def):F.def.label;if(typeof a==="string")I.textContent=a;else I.appendChild(a);if(k.appendChild(I),F.def.sortable){let s=document.createElement("span");s.className=`${j}-table-header-sort`,s.setAttribute("aria-hidden","true"),k.appendChild(s),L.push(s),k.classList.add(`${j}-table-header-cell--sortable`)}else L.push(null);if(F.resizable){let s=document.createElement("div");s.className=`${j}-table-header-resize`,s.dataset.resizeIndex=String(H),k.appendChild(s),R.push(s)}return k},x=(F)=>{X=F,_.textContent="",N=[],R=[],L=[];let H=F.columns;for(let k=0;k<H.length;k++){let r=H[k],I=p(r,k);N.push(I),_.appendChild(I)}if(l(F),Z)n(Z,V)},l=(F)=>{X=F;let H=F.columns;_.style.width=`${F.totalWidth}px`;for(let k=0;k<N.length&&k<H.length;k++){let r=N[k],I=H[k];r.style.width=`${I.width}px`}},n=(F,H)=>{if(Z=F,V=H,!X)return;let k=X.columns;for(let r=0;r<L.length&&r<k.length;r++){let I=L[r];if(!I)continue;if(k[r].def.key===F&&F!==null)I.textContent=H==="asc"?"▲":"▼",I.style.opacity="0.7",N[r].setAttribute("aria-sort",H==="asc"?"ascending":"descending");else I.textContent="",I.style.opacity="0",N[r].removeAttribute("aria-sort")}},J2=(F)=>{_.style.transform=`translateX(${-F}px)`},g=(F)=>{let H=F.target;if(!H.dataset.resizeIndex)return;if(F.preventDefault(),F.stopPropagation(),b=parseInt(H.dataset.resizeIndex,10),!X)return;let k=X.getColumn(b);if(!k||!k.resizable)return;D=!0,v=F.clientX,P=k.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",H.classList.add(`${j}-table-header-resize--active`),H.setPointerCapture(F.pointerId),H.addEventListener("pointermove",c),H.addEventListener("pointerup",d),H.addEventListener("pointercancel",d)},c=(F)=>{if(!D||!X)return;let H=F.clientX-v;if(Math.abs(H)<1)return;let k=Math.max(0,P+H);q(b,k)},d=(F)=>{if(!D)return;let H=F.target;H.removeEventListener("pointermove",c),H.removeEventListener("pointerup",d),H.removeEventListener("pointercancel",d);try{H.releasePointerCapture(F.pointerId)}catch{}H.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",D=!1,b=-1},e=(F)=>{let H=F.target;if(H.dataset.resizeIndex!==void 0)return;if(D)return;let k=H;while(k&&!k.dataset.columnKey)if(k=k.parentElement,k===G||k===null)return;if(!k||!k.dataset.columnKey)return;let r=k.dataset.columnKey;if(!X)return;let I=X.columns,a=-1;for(let T=0;T<I.length;T++)if(I[T].def.key===r){a=T;break}if(a===-1)return;let s=I[a];if(K)K({key:r,index:a,event:F});if(s.def.sortable&&Y){let T;if(Z===r)if(V==="asc")T="desc";else T=null;else T="asc";Y({key:r,index:a,direction:T})}};return G.addEventListener("pointerdown",g),G.addEventListener("click",e),{element:G,update:l,updateSort:n,rebuild:x,show:()=>{if(z)return;z=!0,G.style.display=""},hide:()=>{if(!z)return;z=!1,G.style.display="none"},destroy:()=>{G.removeEventListener("pointerdown",g),G.removeEventListener("click",e),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),N=[],R=[],L=[],X=null,z=!1},syncScroll:J2}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},WJ=(J,Q,$,j,q,Y,K,U,G)=>{let _=pJ(),N=new Map,R=-1,L=$,z=null,Z=null,V=null,X=(O,B)=>{Z=O,V=B},D=(O,B)=>{if(B)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},b=`${q}-item ${q}-table-row`,v=`${q}-item--selected`,P=`${q}-item--focused`,p=`${q}-table-cell`,x=`${q}-table-cell--center`,l=`${q}-table-cell--right`,n=`${q}-item--odd`,J2=`${q}-item--placeholder`,g=`${q}-item--replaced`,c=`${q}-item ${q}-table-row ${q}-table-group-header`,d=`${q}-table-group-header-content`,e=(O,B,A,E,u=!1)=>{if(A.def.cell){let M=A.def.cell(B,A.def,E);if(typeof M==="string")O.innerHTML=M;else O.replaceChildren(M)}else{let M=B[A.def.key],m=M!=null?String(M):"";if(u&&m)O.innerHTML=`<span>${m}</span>`;else O.textContent=m}},i=(O,B,A,E,u=!1)=>{let M=b;if(U){if(z){let m=z(B);if(m>=0&&(m&1)===1)M+=` ${n}`}else if((B&1)===1)M+=` ${n}`}if(u)M+=` ${J2}`;if(A)M+=` ${v}`;if(E)M+=` ${P}`;O.className=M},y=(O,B)=>{let A=B.def.align;if(A==="center")O.classList.add(x),O.classList.remove(l);else if(A==="right")O.classList.add(l),O.classList.remove(x);else O.classList.remove(x,l)},w=(O,B)=>{let E=L.columns.length;if(B.length===E)return B;let u=[];for(let M=0;M<E;M++){let m;if(M<B.length)m=B[M];else m=document.createElement("div"),m.className=p,O.appendChild(m);u.push(m)}for(let M=E;M<B.length;M++)B[M].remove();return u},F=(O,B,A)=>{let E=_.acquire(),u=O;E.style.width=`${L.totalWidth}px`;let M=A.getSize(B);E.style.height=`${M}px`,E.className=c,E.setAttribute("role","presentation"),E.setAttribute("data-id",String(O.id)),E.setAttribute("data-index",String(B)),E.removeAttribute("aria-selected"),E.removeAttribute("aria-rowindex"),E.replaceChildren();let m=document.createElement("div");if(m.className=d,V){let W=V(u.groupKey,u.groupIndex);if(typeof W==="string")m.innerHTML=W;else m.appendChild(W)}E.appendChild(m);let t=A.getOffset(B);return E.style.transform=`translateY(${t}px)`,{element:E,cells:[],index:B,isGroupHeader:!0,lastItemId:O.id,lastSelected:!1,lastFocused:!1,lastOffset:t,lastHeight:M}},H=(O,B,A,E,u)=>{let M=_.acquire();M.style.width=`${L.totalWidth}px`;let m=u.getSize(B);M.style.height=`${m}px`;let t=String(O.id).startsWith("__placeholder_");i(M,B,A,E,t),M.setAttribute("role","row"),M.setAttribute("data-id",String(O.id)),M.setAttribute("data-index",String(B)),M.id=`${Y}-${B}`,M.setAttribute("aria-rowindex",String(B+2));let W=K();if(W!==R)R=W;D(M,A);let C=w(M,[]),f=L.columns;for(let Q2=0;Q2<C.length&&Q2<f.length;Q2++){let $2=C[Q2],h=f[Q2];$2.style.left=`${h.offset}px`,$2.style.width=`${h.width}px`,$2.setAttribute("role","gridcell"),$2.setAttribute("aria-colindex",String(Q2+1)),y($2,h),e($2,O,h,B,t)}let o=u.getOffset(B);return M.style.transform=`translateY(${o}px)`,{element:M,cells:C,index:B,isGroupHeader:!1,lastItemId:O.id,lastSelected:A,lastFocused:E,lastOffset:o,lastHeight:m}},k=(O,B,A,E)=>{for(let[W,C]of N)if(W<B.start||W>B.end)_.release(C.element),N.delete(W);let u=!1,M=K();if(M!==R)R=M,u=!0;let m=null,t=Q();z=typeof U==="string"&&G?G():null;for(let W=B.start;W<=B.end;W++){let C=W-B.start,f=O[C];if(!f)continue;let o=A.has(f.id),Q2=W===E,$2=Z?Z(f):!1,h=N.get(W);if(h){if(h.isGroupHeader!==$2){_.release(h.element),N.delete(W);let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element);continue}if($2){if(h.lastItemId!==f.id){let U2=f,Y2=h.element.firstElementChild;if(Y2&&V){let K2=V(U2.groupKey,U2.groupIndex);if(typeof K2==="string")Y2.innerHTML=K2;else Y2.replaceChildren(K2)}h.element.setAttribute("data-id",String(f.id)),h.lastItemId=f.id}let j2=t.getOffset(W);if(h.lastOffset!==j2)h.lastOffset=j2,h.element.style.transform=`translateY(${j2}px)`;let B2=t.getSize(W);if(h.lastHeight!==B2)h.lastHeight=B2,h.element.style.height=`${B2}px`}else{let q2=h.lastItemId!==f.id,j2=h.lastSelected!==o,B2=h.lastFocused!==Q2;if(q2){let K2=h.lastItemId!=null&&String(h.lastItemId).startsWith("__placeholder_"),X2=String(f.id).startsWith("__placeholder_"),N2=L.columns;for(let Z2=0;Z2<h.cells.length&&Z2<N2.length;Z2++)e(h.cells[Z2],f,N2[Z2],W,X2);if(i(h.element,W,o,Q2,X2),h.element.setAttribute("data-id",String(f.id)),D(h.element,o),K2&&!X2)h.element.classList.add(g),setTimeout(()=>{h.element.classList.remove(g)},300);h.lastItemId=f.id,h.lastSelected=o,h.lastFocused=Q2}else if(j2||B2){let K2=String(f.id).startsWith("__placeholder_");i(h.element,W,o,Q2,K2),D(h.element,o),h.lastSelected=o,h.lastFocused=Q2}let U2=t.getOffset(W);if(h.lastOffset!==U2)h.lastOffset=U2,h.element.style.transform=`translateY(${U2}px)`;let Y2=t.getSize(W);if(h.lastHeight!==Y2)h.lastHeight=Y2,h.element.style.height=`${Y2}px`;if(u)h.element.setAttribute("aria-rowindex",String(W+2))}}else{let q2=$2?F(f,W,t):H(f,W,o,Q2,t);if(N.set(W,q2),!m)m=document.createDocumentFragment();m.appendChild(q2.element)}}if(m)J.appendChild(m)},r=(O,B,A,E)=>{let u=N.get(O);if(!u)return;if(u.isGroupHeader)return;let M=u.lastItemId!==B.id,m=u.lastSelected!==A,t=u.lastFocused!==E;if(M||m||t){if(M){let W=L.columns;for(let C=0;C<u.cells.length&&C<W.length;C++)e(u.cells[C],B,W[C],O);u.element.setAttribute("data-id",String(B.id)),u.lastItemId=B.id}i(u.element,O,A,E),D(u.element,A),u.lastSelected=A,u.lastFocused=E}},I=(O,B,A)=>{let E=N.get(O);if(!E)return;if(E.isGroupHeader)return;let u=E.lastSelected!==B,M=E.lastFocused!==A;if(u||M)i(E.element,O,B,A),D(E.element,B),E.lastSelected=B,E.lastFocused=A},a=(O)=>{L=O;let B=O.columns;for(let[,A]of N)if(A.element.style.width=`${O.totalWidth}px`,A.cells.length>0)for(let E=0;E<A.cells.length&&E<B.length;E++){let u=A.cells[E],M=B[E];u.style.left=`${M.offset}px`,u.style.width=`${M.width}px`}},s=(O)=>{return N.get(O)?.element},T=()=>{for(let[,O]of N)_.release(O.element);N.clear(),R=-1};return{render:k,updateItem:r,updateItemClasses:I,getElement:s,updateColumnLayout:a,setGroupHeaderFn:X,clear:T,destroy:()=>{T(),_.clear()}}};var OJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let D=q+$;for(let b=0;b<Q;b++)Y[b]=b*D};K();let U=[],G=0,_=[],N=(X)=>{let D=0,b=X[0];for(let v=1;v<X.length;v++){let P=X[v];if(P<b)b=P,D=v}return D},R=(X,D)=>{if(X<=0)return G=0,U=[],[];let b=Array(Q).fill(0),v=Array(Q);for(let x=0;x<Q;x++)v[x]=[];let P=Array(X);for(let x=0;x<X;x++){let l=N(b),n=D(x),J2=b[l];P[x]={index:x,x:Y[l],y:J2,lane:l,size:n,crossSize:q},v[l].push(x),b[l]=J2+n+$}U=v;let p=0;for(let x=0;x<Q;x++){let l=b[x],n=l>0?l-$:0;if(n>p)p=n}return G=p,P},L=(X)=>{if(X.length===0)return G>0?G:0;if(G>0)return G;let D=Array(Q).fill(0);for(let v of X){let P=v.y+v.size,p=D[v.lane];if(P>p)D[v.lane]=P}let b=0;for(let v=0;v<Q;v++)if(D[v]>b)b=D[v];return b},z=(X,D,b)=>{if(X.length===0||b<=D)return _.length=0,_;if(U.length===0||U.length!==Q)return Z(X,D,b);_.length=0;for(let v=0;v<Q;v++){let P=U[v],p=P.length;if(p===0)continue;let x=0,l=p;while(x<l){let n=x+l>>>1,J2=X[P[n]];if(J2.y+J2.size<=D)x=n+1;else l=n}for(let n=x;n<p;n++){let J2=X[P[n]];if(J2.y>=b)break;_.push(J2)}}return _},Z=(X,D,b)=>{let v=[];for(let P of X)if(P.y+P.size>D&&P.y<b)v.push(P);return v};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let D=!1;if(X.columns!==void 0){let b=Math.max(1,Math.floor(X.columns));if(b!==Q)Q=b,D=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,D=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,D=!0;if(D)K()},calculateLayout:R,getTotalSize:L,getVisibleItems:z}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,G=new Set,_=0,N="",R=-1,L={selected:!1,focused:!1},z=(g,c)=>{return L.selected=g,L.focused=c,L},Z=`${$}-item ${$}-masonry-item`,V=`${$}-item--selected`,X=`${$}-item--focused`,D=(g,c)=>{if(typeof c==="string")g.innerHTML=c;else g.replaceChildren(c)},b=(g,c,d)=>{g.classList.toggle(V,c),g.classList.toggle(X,d)},v=(g,c)=>{if(j)g.style.transform=`translate(${Math.round(c.y)}px, ${Math.round(c.x)}px)`;else g.style.transform=`translate(${Math.round(c.x)}px, ${Math.round(c.y)}px)`},P=(g,c)=>{if(j)g.style.width=`${c.size}px`,g.style.height=`${c.crossSize}px`;else g.style.width=`${c.crossSize}px`,g.style.height=`${c.size}px`},p=(g,c,d,e,i)=>{let y=K.acquire(),w=z(e,i);if(y.className=Z,y.dataset.index=String(g),y.dataset.id=String(c.id),y.dataset.lane=String(d.lane),y.ariaSelected=String(e),Y)y.id=`${Y}-item-${g}`;if(q){let H=q();if(H!==R)R=H,N=String(H);y.setAttribute("aria-setsize",N),y.setAttribute("aria-posinset",String(g+1))}P(y,d);let F=Q(c,g,w);return D(y,F),b(y,e,i),v(y,d),{element:y,lastItemId:c.id,lastSelected:e,lastFocused:i,lastY:d.y,lastX:d.x,lastSize:d.size,lastCrossSize:d.crossSize,lastSeenFrame:_}},x=(g,c,d,e)=>{_++,G.clear();for(let y=0;y<c.length;y++)G.add(c[y].index);for(let[y,w]of U)if(G.has(y))w.lastSeenFrame=_;else if(_-w.lastSeenFrame>hJ)K.release(w.element),U.delete(y);let i=null;for(let y=0;y<c.length;y++){let w=c[y],F=w.index,H=g(F);if(!H)continue;let k=d.has(H.id),r=F===e,I=U.get(F);if(I){let a=I.lastItemId!==H.id,s=I.lastSelected!==k,T=I.lastFocused!==r,S=I.lastY!==w.y||I.lastX!==w.x,O=I.lastSize!==w.size||I.lastCrossSize!==w.crossSize;if(a||s||T){let B=z(k,r),A=Q(H,F,B);D(I.element,A),b(I.element,k,r),I.element.dataset.id=String(H.id),I.element.ariaSelected=String(k),I.lastItemId=H.id,I.lastSelected=k,I.lastFocused=r}if(O)P(I.element,w),I.lastSize=w.size,I.lastCrossSize=w.crossSize;if(S)v(I.element,w),I.lastY=w.y,I.lastX=w.x}else{let a=p(F,H,w,k,r);if(!i)i=document.createDocumentFragment();i.appendChild(a.element),U.set(F,a)}}if(i)J.appendChild(i)},l=()=>{for(let{element:g}of U.values())K.release(g);U.clear(),J.innerHTML=""};return{render:x,getElement:(g)=>U.get(g)?.element,sortDOM:()=>{A2(J,U.keys(),(g)=>U.get(g)?.element)},clear:l,destroy:()=>{l(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,G)=>{if(!J[U])J[U]=new Set;return J[U].add(G),()=>$(U,G)},$=(U,G)=>{J[U]?.delete(G)};return{on:Q,off:$,emit:(U,G)=>{J[U]?.forEach((_)=>{try{_(G)}catch(N){console.error(`[vlist] Error in event handler for "${String(U)}":`,N)}})},once:(U,G)=>{let _=(N)=>{$(U,_),G(N)};return Q(U,_)},clear:(U)=>{if(U)delete J[U];else for(let G in J)delete J[G]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,G=(y)=>{let w=Y.get(y);if(!w)w={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(y,w);else w.lastAccess=Date.now();return w},_=(y)=>{return Math.floor(y/Q)},N=(y)=>{return y%Q},R=()=>K,L=(y)=>{K=y},z=(y)=>{if(y<0||y>=K)return;let w=_(y),F=Y.get(w);if(!F)return;return F.items[N(y)]},Z=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w);if(!F)return!1;return F.items[N(y)]!==void 0},V=(y,w)=>{let F=_(y),H=G(F),k=N(y),r=H.items[k]===void 0;if(H.items[k]=w,r)H.count++,U++;if(y>=K)K=y+1},X=(y,w)=>{for(let F=0;F<w.length;F++){let H=w[F];if(H!==void 0)V(y+F,H)}},D=(y)=>{if(y<0||y>=K)return!1;let w=_(y),F=Y.get(w),H=N(y);if(!(F!==void 0&&F.items[H]!==void 0))return!1;let r=w,I=Array.from(Y.keys()).filter((s)=>s>=r).sort((s,T)=>s-T),a=[];for(let s of I){let T=Y.get(s),S=s*Q;for(let O=0;O<Q;O++){if(T.items[O]===void 0)continue;let B=S+O;if(B<=y)continue;a.push({oldIndex:B,item:T.items[O]})}}if(F.items[H]=void 0,F.count--,U--,F.count===0)Y.delete(w);for(let{oldIndex:s}of a){let T=_(s),S=Y.get(T);if(!S)continue;let O=N(s);if(S.items[O]!==void 0){if(S.items[O]=void 0,S.count--,U--,S.count===0)Y.delete(T)}}for(let{oldIndex:s,item:T}of a){let S=s-1,O=_(S),B=G(O),A=N(S);B.items[A]=T,B.count++,U++}return K--,!0},b=(y,w)=>{let F=[];for(let H=y;H<=w&&H<K;H++)F.push(z(H));return F},v=(y,w)=>{for(let F=y;F<=w&&F<K;F++)if(!Z(F))return!1;return!0},P=()=>{let y=[],w=null,F=Array.from(Y.keys()).sort((H,k)=>H-k);for(let H of F){let k=Y.get(H);if(!k)continue;let r=H*Q;for(let I=0;I<Q;I++){let a=r+I;if(a>=K)break;if(k.items[I]!==void 0)if(w===null)w={start:a,end:a};else if(a===w.end+1)w.end=a;else y.push(w),w={start:a,end:a};else if(w!==null)y.push(w),w=null}}if(w!==null)y.push(w);return y},p=(y,w)=>{let F=[],H=null;for(let k=y;k<=w&&k<K;k++)if(!Z(k))if(H===null)H={start:k,end:k};else H.end=k;else if(H!==null)F.push(H),H=null;if(H!==null)F.push(H);return F},x=(y)=>{return Y.has(y)},l=(y)=>{let w=Y.get(y);if(w)w.lastAccess=Date.now()},n=(y,w)=>{if(y>w||Y.size===0)return;let F=Date.now(),H=_(Math.max(0,y)),k=_(Math.min(K-1,w));for(let r=H;r<=k;r++){let I=Y.get(r);if(I)I.lastAccess=F}},J2=(y,w)=>{if(U<=$)return 0;let F=Math.max(0,y-j),H=Math.min(K-1,w+j),k=_(F),r=_(H),I=0,a=[];for(let[s,T]of Y)if(s<k||s>r)I+=T.count,a.push(s),U-=T.count,Y.delete(s);if(I>0&&q)q(I,a);return I},g=()=>{if(U<=$)return 0;let y=Array.from(Y.entries()).sort(([,H],[,k])=>H.lastAccess-k.lastAccess),w=0,F=[];for(let[H,k]of y){if(U<=$)break;w+=k.count,U-=k.count,F.push(H),Y.delete(H)}if(w>0&&q)q(w,F);return w},c=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},d=()=>U,e=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:R,setTotal:L,get:z,has:Z,set:V,setRange:X,delete:D,getRange:b,isRangeLoaded:v,getLoadedRanges:P,findUnloadedRanges:p,getChunkIndex:_,isChunkLoaded:x,touchChunk:l,touchChunksForRange:n,evictDistant:J2,evictToLimit:g,getStats:c,getCachedCount:d,clear:e,reset:()=>{e(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},W2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),G=Y.start;for(let _ of U){if(_.end<G)continue;if(_.start>Y.end)break;if(_.start>G)K.push({start:G,end:Math.min(_.start-1,Y.end)});if(G=_.end+1,G>Y.end)break}if(G<=Y.end)K.push({start:G,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(R)=>{if(q||R.length===0)return;let L=Math.min(R.length,$);for(let z=0;z<L;z++){let Z=R[z];if(!Z||typeof Z!=="object")continue;let V={};for(let[X,D]of Object.entries(Z)){if(X.startsWith("_")||X==="id")continue;V[X]=String(D??"").length}if(Object.keys(V).length>0)j.push(V)}q=!0},U=()=>q,G=(R)=>{let L={id:`${l2}${Y++}`,[z2]:!0,_index:R};if(j.length===0)return L.label=Q.repeat(12),L;let z=j[R%j.length];for(let[Z,V]of Object.entries(z))L[Z]=Q.repeat(Math.max(1,V));return L};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:G,generateRange:(R,L)=>{let z=[];for(let Z=R;Z<=L;Z++)z.push(G(Z));return z},clear:()=>{j=[],q=!1,Y=0}}},D2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!D2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:G,onItemsEvicted:_}=J,N=F2({...q,onEvict:(W,C)=>{_?.(W),p()}}),R=null,L=()=>{if(!R)R=H2(Y);return R},z=new Map,Z=!1,V,X=!0,D,b=[],v=0,P=new Map,p=()=>{U?.(i())},x=()=>{z.clear();let W=N.getLoadedRanges();for(let C of W)for(let f=C.start;f<=C.end;f++){let o=N.get(f);if(o&&!D2(o))z.set(o.id,f)}},l=(W,C)=>{if(!D2(C))z.set(C.id,W)},n=(W)=>{z.delete(W)},J2=(W,C)=>{return`${W}-${C}`},g=()=>N.getTotal(),c=()=>N.getCachedCount(),d=()=>Z,e=()=>X,i=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:Z,pendingRanges:b,error:V,hasMore:X,cursor:D}),y=()=>N,w=()=>L(),F=(W)=>{let C=N.get(W);if(C!==void 0)return C;if(W>=0&&W<N.getTotal())return L().generate(W);return},H=(W)=>{let C=z.get(W);if(C===void 0)return;return N.get(C)},k=(W)=>{return z.get(W)??-1},r=(W)=>{let C=N.get(W);return C!==void 0&&!D2(C)},I=(W,C)=>{let f=[],o=N.getTotal(),Q2=0,$2=0;N.touchChunksForRange(W,Math.min(C,o-1));for(let h=W;h<=C&&h<o;h++){let q2=N.get(h);if(q2!==void 0)f.push(q2),Q2++;else f.push(L().generate(h)),$2++}return f},a=(W)=>{N.setTotal(W),X=N.getCachedCount()<W,p()},s=(W,C=0,f)=>{if(Q&&W.length>0){let o=L();if(!o.hasAnalyzedStructure())o.analyzeStructure(W)}for(let o=0;o<W.length;o++){let Q2=W[o];if(Q2!==void 0){let $2=C+o;N.set($2,Q2),l($2,Q2)}}if(f!==void 0)N.setTotal(f);else if(C+W.length>N.getTotal())N.setTotal(C+W.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)X=!1;p(),G?.(W,C,N.getTotal())},T=(W,C)=>{let f=z.get(W);if(f===void 0)return!1;let o=N.get(f);if(!o)return!1;let Q2={...o,...C};if(N.set(f,Q2),C.id!==void 0&&C.id!==W)n(W),l(f,Q2);return p(),!0},S=(W)=>{let C=z.get(W);if(C===void 0)return!1;if(!N.delete(C))return!1;return x(),P.clear(),p(),!0},O=async(W,C)=>{if(!Q)return;let f=J2(W,C);if(P.has(f))return;let o=N.getLoadedRanges(),Q2=W2({start:W,end:C},o,N.chunkSize);if(Q2.length===0)return;let $2=N.chunkSize,h=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(!h.some((Z2)=>Z2.start===K2)&&!P.has(N2))h.push({start:K2,end:X2})}}let q2=[];for(let j2 of Q2){let B2=Math.floor(j2.start/$2),U2=Math.floor(j2.end/$2);for(let Y2=B2;Y2<=U2;Y2++){let K2=Y2*$2,X2=K2+$2-1,N2=J2(K2,X2);if(P.has(N2)){let Z2=P.get(N2);if(!q2.includes(Z2))q2.push(Z2)}}}for(let j2 of h){let B2=J2(j2.start,j2.end),U2=(async()=>{b.push(j2),Z=!0,V=void 0,p();try{let Y2=j2.end-j2.start+1,K2={offset:j2.start,limit:Y2,cursor:void 0},X2=await Q.read(K2);if(s(X2.items,j2.start,X2.total),X2.cursor)D=X2.cursor;let N2=j2.start+X2.items.length;if(N2>=v){if(v=N2,X2.hasMore!==void 0)X=X2.hasMore;else if(X2.total!==void 0)X=N2<X2.total}}catch(Y2){V=Y2 instanceof Error?Y2:Error(String(Y2))}finally{P.delete(B2),b=b.filter((Y2)=>Y2.start!==j2.start||Y2.end!==j2.end),Z=P.size>0,p()}})();P.set(B2,U2),q2.push(U2)}await Promise.all(q2)},B=async(W,C)=>{if(N.isRangeLoaded(W,C))return;await O(W,C)},A=async()=>{if(!Q)return;await O(0,K-1)},E=async()=>{if(!Q||Z||!X)return!1;let W=N.getCachedCount(),C=N.getTotal(),f=W,o=Math.min(f+K-1,C>0?C-1:f+K-1);if(f>=C&&C>0)return X=!1,!1;return await O(f,o),N.getCachedCount()>W},u=async()=>{if(N.clear(),N.setTotal(0),z.clear(),R)R.clear();P.clear(),b=[],Z=!1,D=void 0,X=!0,v=0,V=void 0,p()},M=(W,C)=>{if(N.evictDistant(W,C)>0)x()},m=()=>{N.clear(),z.clear(),D=void 0,V=void 0,b=[],Z=!1,p()},t=()=>{if(N.reset(),z.clear(),R)R.clear();D=void 0,X=!0,v=0,V=void 0,b=[],Z=!1,p()};if($&&$.length>0)s($,0,j??$.length);else if(j!==void 0)N.setTotal(j),p();return{getState:i,getTotal:g,getCached:c,getIsLoading:d,getHasMore:e,getStorage:y,getPlaceholders:w,getItem:F,getItemById:H,getIndexById:k,isItemLoaded:r,getItemsInRange:I,setTotal:a,setItems:s,updateItem:T,removeItem:S,loadRange:O,ensureRange:B,loadInitial:A,loadMore:E,reload:u,evictDistant:M,clear:m,reset:t}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:G=!0,hoverZoneWidth:_=16,showOnViewportEnter:N=!0}=$,R=0,L=0,z=0,Z=0,V=!1,X=!1,D=0,b=0,v=0,P=null,p=!1,x=null,l=null,n=q?"width":"height",J2=q?"translateX":"translateY",g=q?(M)=>M.clientX:(M)=>M.clientY,c=q?"left":"top",d=document.createElement("div"),e=document.createElement("div"),i=G?document.createElement("div"):null,y=()=>{if(d.className=`${j}-scrollbar`,e.className=`${j}-scrollbar-thumb`,q)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(e),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,q)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;else i.style.width=`${_}px`;J.appendChild(i)}},w=()=>{if(P)clearTimeout(P),P=null},F=()=>{if(!Y)return;w(),P=setTimeout(k,K)},H=()=>{if(R<=L)return;if(w(),!p)d.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!V&&!X)F()},k=()=>{if(V||X)return;d.classList.remove(`${j}-scrollbar--visible`),p=!1},r=(M,m)=>{R=M,L=m;let t=R>L;if(d.style.display=t?"":"none",!t){k();return}let W=L/R;z=Math.max(U,W*L),e.style[n]=`${z}px`,Z=L-z,I(v)},I=(M)=>{if(v=M,R<=L||Z<=0)return;let m=R-L,W=Math.min(1,Math.max(0,M/m))*Z;e.style.transform=`${J2}(${W}px)`},a=(M)=>{if(M.target===e)return;let m=d.getBoundingClientRect(),C=g(M)-m[c]-z/2,o=Math.max(0,Math.min(C,Z))/Z,Q2=R-L,$2=o*Q2;Q($2),H()},s=(M)=>{M.preventDefault(),M.stopPropagation(),V=!0,D=g(M),b=v,w(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",T),document.addEventListener("mouseup",S)},T=(M)=>{if(!V)return;let m=g(M)-D,t=Z>0?m/Z:0,W=R-L,C=t*W,f=Math.max(0,Math.min(b+C,W)),Q2=f/W*Z;if(e.style.transform=`${J2}(${Q2}px)`,l=f,x===null)x=requestAnimationFrame(()=>{if(l!==null)Q(l);x=null})},S=()=>{if(V=!1,x!==null)cancelAnimationFrame(x),x=null;if(l!==null)Q(l),l=null;if(d.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)F();document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S)},O=()=>{if(N)H()},B=()=>{if(!V){if(X=!1,Y)F()}},A=()=>{X=!0,w(),H()},E=()=>{if(X=!1,!V&&Y)F()},u=()=>{if(w(),x!==null)cancelAnimationFrame(x),x=null;if(d.removeEventListener("click",a),d.removeEventListener("mouseenter",A),d.removeEventListener("mouseleave",E),e.removeEventListener("mousedown",s),J.removeEventListener("mouseenter",O),J.removeEventListener("mouseleave",B),document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",S),i){if(i.removeEventListener("mouseenter",A),i.removeEventListener("mouseleave",E),i.parentNode)i.parentNode.removeChild(i)}if(d.parentNode)d.parentNode.removeChild(d)};if(y(),d.addEventListener("click",a),d.addEventListener("mouseenter",A),d.addEventListener("mouseleave",E),e.addEventListener("mousedown",s),J.addEventListener("mouseenter",O),J.addEventListener("mouseleave",B),i)i.addEventListener("mouseenter",A),i.addEventListener("mouseleave",E);return{show:H,hide:k,updateBounds:r,updatePosition:I,isVisible:()=>p,destroy:u}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,G=$-K.time;J.velocity=G>0?U/G:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:G,horizontal:_=!1}=Q,N=!!G,R=0,L=0,z=N?_?window.innerWidth:window.innerHeight:_?J.clientWidth:J.clientHeight,Z=Q.compressed??!1,V=Q.compression,X=zJ(),D=!1,b=null,P=R2(()=>{let B=_?J.scrollLeft:J.scrollTop,A=B>=R?"down":"up";if(X=T2(X,B),R=B,K)K({scrollTop:R,direction:A,velocity:X.velocity});g()}),x=R2(()=>{let B=J.getBoundingClientRect(),A=_?Math.max(0,-B.left):Math.max(0,-B.top),E=A>=R?"down":"up";if(X=T2(X,A),R=A,!D)D=!0;if(K)K({scrollTop:R,direction:E,velocity:X.velocity});g()}),l=(B)=>{B.preventDefault()},n=(B)=>{if(B.deltaX)return;B.preventDefault(),J.scrollLeft+=B.deltaY},J2=(B)=>{if(!Z)return;B.preventDefault();let A=(_?B.deltaX||B.deltaY:B.deltaY)*j,E=R+A;if(q)E=R+A*0.3;if(E=Math.max(0,Math.min(E,L)),E!==R){let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}},g=()=>{if(b)clearTimeout(b);b=setTimeout(()=>{if(D=!1,X=zJ(R),U)U()},Y)},c=(B)=>{if(Z)return;if(Z=!0,V=B,L=B.virtualSize-z,N)return;if(P.cancel(),J.removeEventListener("scroll",P),!$)J.removeEventListener("wheel",l);else if(_)J.removeEventListener("wheel",n);if(_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1});let A=_?J.scrollLeft:J.scrollTop;if(A>0){let E=_?V?.actualSize??J.scrollWidth:V?.actualSize??J.scrollHeight;R=A/E*L}if(_)J.scrollLeft=0;else J.scrollTop=0},d=()=>{if(!Z)return;if(Z=!1,N){V=void 0;return}if(J.removeEventListener("wheel",J2),_)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1});if(V&&R>0){let A=R/L*(V.actualSize-z);if(_)J.scrollLeft=A;else J.scrollTop=A}V=void 0},e=()=>{if(N||Z)return R;return _?J.scrollLeft:J.scrollTop},i=(B,A=!1)=>{let E=Math.max(0,Math.min(B,L||1/0));if(N){let u=J.getBoundingClientRect();if(_){let M=u.left+window.scrollX;window.scrollTo({left:M+E,behavior:A?"smooth":"auto"})}else{let M=u.top+window.scrollY;window.scrollTo({top:M+E,behavior:A?"smooth":"auto"})}}else if(Z){if(E===R)return;let M=E>=R?"down":"up";if(X=T2(X,E),R=E,!D)D=!0;if(K)K({scrollTop:R,direction:M,velocity:X.velocity});g()}else if(_)J.scrollTo({left:E,behavior:A?"smooth":"auto"});else J.scrollTo({top:E,behavior:A?"smooth":"auto"})},y=(B)=>{i(e()+B)},w=()=>{return e()<=0},F=(B=0)=>{let A=e(),E=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return A>=E-B},H=()=>{let B=e(),A=N||Z?L:_?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(A<=0)return 0;return Math.min(1,Math.max(0,B/A))},k=(B)=>{if(B.compression)V=B.compression,L=V.virtualSize-z},r=()=>Z,I=()=>Math.abs(X.velocity),a=()=>mJ(X),s=()=>D,T=()=>N,S=(B)=>{if(z=B,V)L=V.virtualSize-z},O=()=>{if(b)clearTimeout(b);if(N)x.cancel(),window.removeEventListener("scroll",x);else P.cancel(),J.removeEventListener("scroll",P),J.removeEventListener("wheel",J2),J.removeEventListener("wheel",l),J.removeEventListener("wheel",n)};if(N){if(Z&&V)L=V.virtualSize-z;window.addEventListener("scroll",x,{passive:!0})}else if(Z&&V){if(L=V.virtualSize-z,_)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",J2,{passive:!1})}else{if(_)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",P,{passive:!0}),!$)J.addEventListener("wheel",l,{passive:!1});else if(_)J.addEventListener("wheel",n,{passive:!1})}return{getScrollTop:e,scrollTo:i,scrollBy:y,isAtTop:w,isAtBottom:F,getScrollPercentage:H,getVelocity:I,isTracking:a,isScrolling:s,updateConfig:k,enableCompression:c,disableCompression:d,isCompressed:r,isWindowMode:T,updateContainerHeight:S,destroy:O}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(G){if(Q=G,G>cJ&&G<dJ)$+=G,j++}function K(){let G=J.getTotal();if(G===0)return 0;let _=J.getItemSize();if(_<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let R=J.getScrollPosition(),L=typeof J.getColumns==="function"?J.getColumns():1,Z=Math.ceil(G/L)*_,X=Math.min(Z,_2)-N,D=Z-N,b=X>0?D/X:1,v=R*b,P=Math.ceil((v+N)/_);return Math.min(P*L,G)}function U(){let G=J.getTotal(),_=K();return{progress:G>0?Math.min(100,Math.max(0,_/G*100)):0,velocity:Q,velocityAvg:q(),itemCount:_,total:G}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,D2 as isPlaceholderItem,$J as isInRange,O2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,V2 as getScaleState,ZJ as getScaleInfo,V2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,WJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,M2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,OJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,DJ as createGridRenderer,_J as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,W2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,_2 as MAX_VIRTUAL_SIZE};
1
+ var I2=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var O2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var vJ=(J,Q)=>{let $=Q;return{getOffset:(j)=>j*J,getSize:(j)=>J,indexAtOffset:(j)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(j/J),$-1))},getTotalSize:()=>$*J,getTotal:()=>$,rebuild:(j)=>{$=j},isVariable:()=>!1}},CJ=(J,Q)=>{let $=Q,j=new Float64Array(0),q=(K)=>{$=K,j=new Float64Array(K+1),j[0]=0;for(let U=0;U<K;U++)j[U+1]=j[U]+J(U)};q(Q);let Y=(K)=>{if($===0)return 0;if(K<=0)return 0;if(K>=j[$])return $-1;let U=0,V=$-1;while(U<V){let Z=U+V+1>>>1;if(j[Z]<=K)U=Z;else V=Z-1}return U};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=$)return j[$];return j[K]},getSize:(K)=>J(K),indexAtOffset:(K)=>Y(K),getTotalSize:()=>j[$]??0,getTotal:()=>$,rebuild:(K)=>q(K),isVariable:()=>!0}},V2=(J,Q)=>{if(typeof J==="number")return vJ(J,Q);return CJ(J,Q)},P2=(J,Q,$,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil($/J.getSize(0));let q=0,Y=0,K=Q;while(K<j&&Y<$)Y+=J.getSize(K),q++,K++;return Math.max(1,q)},E2=(J,Q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.floor(Q/J.getSize(0));let j=0,q=0;for(let Y=$-1;Y>=0;Y--){let K=J.getSize(Y);if(q+K>Q)break;q+=K,j++}return Math.max(j,1)},k2=(J,Q,$)=>{if($===0)return 0;let j=Math.floor(Q),q=Q-j,Y=Math.max(0,Math.min(j,$-1));return J.getOffset(Y)+q*J.getSize(Y)};var A2=(J,Q,$)=>{let j=Array.from(Q).sort((K,U)=>K-U);if(j.length<=1)return;let q=[];for(let K=0;K<j.length;K++){let U=$(j[K]);if(U)q.push(U)}if(q.length<=1)return;let Y=J.firstChild;for(let K=0;K<q.length;K++){let U=q[K];if(U===Y)Y=Y.nextSibling;else J.insertBefore(U,Y)}};var Z2=16000000,c2="x",r2=20,z2="_isPlaceholder",l2="__placeholder_";var M2=(J,Q,$)=>{let j=Q.getTotalSize(),q=$===!0||j>Z2,Y=j>Z2?Z2:j,K=j>0?Y/j:1;return{isCompressed:q,actualSize:j,virtualSize:Y,ratio:K}},qJ=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!q.isCompressed||q.ratio===1){let N=$.indexAtOffset(J),M=$.indexAtOffset(J+Q);if(M<j-1)M++;return Y.start=Math.max(0,N),Y.end=Math.min(j-1,Math.max(0,M)),Y}let{virtualSize:K}=q,V=J/K*j,Z=Math.floor(V),B=P2($,Math.max(0,Z),Q,j),H=Math.ceil(V)+B,w=K-Q-J;if(w<=Q&&w>=-1){let N=E2($,Q,j),M=Math.max(0,j-N),X=Math.max(0,Math.min(1,1-w/Q));Z=Math.floor(Z+(M-Z)*X),H=w<=1?j-1:Math.min(j-1,Z+B)}return Y.start=Math.max(0,Z),Y.end=Math.min(j-1,Math.max(0,H)),Y},XJ=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},L2=(J,Q,$,j,q,Y,K)=>{if(!Y.isCompressed||j===0)return $.getOffset(J);if(Y.ratio===1)return $.getOffset(J)-Q;let{virtualSize:U}=Y,V=U-q,Z=V-Q;if(Z<=q&&Z>=-1){if(Q>=V-1){let z=$.getTotalSize()-$.getOffset(J);return q-z}let w=E2($,q,j),N=Math.max(0,j-w),X=Q/U*j,_=Math.max(0,Math.min(1,1-Z/q)),F=$.getOffset(J)-$.getOffset(N),C=$.getOffset(J)-k2($,X,j);return C+(F-C)*_}let B=Q/U,H=$.getTotalSize(),W=B*H;return $.getOffset(J)-W},KJ=(J,Q,$,j,q,Y="start")=>{if(j===0)return 0;let K;if(q.isCompressed&&q.ratio!==1){if(Y==="end"&&J===j-1)return Math.max(0,q.virtualSize-$);K=J/j*q.virtualSize}else K=Q.getOffset(J);let U=Q.getSize(J);switch(Y){case"center":K-=($-U)/2;break;case"end":K-=$-U;break}let V=q.virtualSize-$;return Math.max(0,Math.min(K,V))},UJ=(J,Q,$,j)=>{if($===0)return 0;if(j.isCompressed&&j.ratio!==1){let q=J/j.virtualSize;return Math.floor(q*$)}return Q.indexAtOffset(J)},BJ=(J,Q)=>{if(typeof Q==="number")return J*Q>Z2;return Q.getTotalSize()>Z2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(Z2/J)},ZJ=(J,Q,$)=>{let j=M2(J,Q,$);if(!j.isCompressed)return`No compression needed (${J} items, ${(j.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${(j.ratio*100).toFixed(1)}% (${J} items, ${(j.actualSize/1e6).toFixed(1)}M px → ${(j.virtualSize/1e6).toFixed(1)}M px virtual)`};var w2=()=>{};var SJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},fJ=1,_J=(J,Q,$,j,q,Y,K,U,V=!1)=>{let Z=SJ(),B=new Map,H=Y,W=!1,w=0,N="",M=-1,X={selected:!1,focused:!1},_=(D,y)=>{return X.selected=D,X.focused=y,X},F=`${q}-item ${q}-grid-item`,C=`${q}-item--selected`,z=`${q}-item--focused`,p=(D,y)=>{if(typeof y==="string")D.innerHTML=y;else D.replaceChildren(y)},x=(D,y,S)=>{D.classList.toggle(C,y),D.classList.toggle(z,S)},a=(D,y)=>{let S=j.getRow(D);if(y?.compression?.isCompressed)return L2(S,y.scrollPosition,$,y.totalItems,y.containerSize,y.compression,y.rangeStart);return $.getOffset(S)},n=(D,y)=>{let S=W&&j.getCol(D)===0,I=S?0:j.getCol(D),d=S?0:j.getColumnOffset(I,H),L;if(W){let G=j.getRow(D),A=0,R=new Set;for(let g=0;g<D;g++){let P=j.getRow(g);if(P<G&&!R.has(P)){let c=$.getSize(g);A+=c,R.add(P)}}L=A}else L=a(D,y);if(V)return`translate(${Math.round(L)}px, ${Math.round(d)}px)`;return`translate(${Math.round(d)}px, ${Math.round(L)}px)`},e=(D,y)=>{D.style.transform=y},h=(D,y)=>{let S=D.dataset.id?.startsWith("__group_header"),I=S?H:j.getColumnWidth(H),d;if(W||S)d=$.getSize(y)-j.gap;else{let L=j.getRow(y);d=$.getSize(L)-j.gap}if(V)D.style.width=`${d}px`,D.style.height=`${I}px`;else D.style.width=`${I}px`,D.style.height=`${d}px`},s=(D,y,S,I,d)=>{let L=Z.acquire(),G=_(S,I);if(L.className=F,L.dataset.index=String(D),L.dataset.id=String(y.id),L.dataset.row=String(j.getRow(D)),L.dataset.col=String(j.getCol(D)),L.ariaSelected=String(S),U)L.id=`${U}-item-${D}`;if(K){let R=K();if(R!==M)M=R,N=String(R);L.setAttribute("aria-setsize",N),L.setAttribute("aria-posinset",String(D+1))}h(L,D);let A=Q(y,D,G);return p(L,A),x(L,S,I),e(L,d),{element:L,lastItemId:y.id,lastSelected:S,lastFocused:I,lastTransform:d,lastSeenFrame:w}},r=(D,y,S,I,d)=>{if(w++,y.start===0&&D.length>0)W=O2(D[0]);for(let[A,R]of B)if(A>=y.start&&A<=y.end)R.lastSeenFrame=w;else if(w-R.lastSeenFrame>fJ)Z.release(R.element),B.delete(A);let L=!1;if(K){let A=K();if(A!==M)M=A,N=String(A),L=!0}let G=null;for(let A=y.start;A<=y.end;A++){let R=A-y.start,g=D[R];if(!g){console.warn(`⚠️ RENDER: Missing item at index ${A} (range: ${y.start}-${y.end}, items.length: ${D.length})`);continue}let P=S.has(g.id),c=A===I,o=B.get(A);if(o){let O=o.lastItemId!==g.id,f=o.lastSelected!==P,m=o.lastFocused!==c;if(O||f||m){if(O){let Q2=_(P,c),$2=Q(g,A,Q2);p(o.element,$2),o.element.dataset.id=String(g.id),o.element.dataset.row=String(j.getRow(A)),o.element.dataset.col=String(j.getCol(A)),h(o.element,A)}x(o.element,P,c),o.element.ariaSelected=String(P),o.lastItemId=g.id,o.lastSelected=P,o.lastFocused=c}let t=n(A,d);if(o.lastTransform!==t)e(o.element,t),o.lastTransform=t;if(L)o.element.setAttribute("aria-setsize",N)}else{let O=n(A,d),f=s(A,g,P,c,O);if(!G)G=document.createDocumentFragment();G.appendChild(f.element),B.set(A,f)}}if(G)J.appendChild(G)},J2=(D)=>{for(let[y,S]of B){let I=n(y,D);if(S.lastTransform!==I)e(S.element,I),S.lastTransform=I}},i=(D,y,S,I)=>{let d=B.get(D);if(!d)return;let L=d.lastItemId!==y.id,G=d.lastSelected!==S,A=d.lastFocused!==I;if(L||G||A){let R=_(S,I),g=Q(y,D,R);p(d.element,g),x(d.element,S,I),d.element.dataset.id=String(y.id),d.element.ariaSelected=String(S),h(d.element,D),d.lastItemId=y.id,d.lastSelected=S,d.lastFocused=I}},T=(D,y,S)=>{let I=B.get(D);if(!I)return;let d=I.lastSelected!==y,L=I.lastFocused!==S;if(d||L)x(I.element,y,S),I.lastSelected=y,I.lastFocused=S},v=(D)=>{return B.get(D)?.element},E=(D)=>{if(Math.abs(D-H)<1)return;H=D;for(let[y,S]of B){h(S.element,y);let I=n(y);e(S.element,I),S.lastTransform=I}},b=()=>{A2(J,B.keys(),(D)=>B.get(D)?.element)},k=()=>{for(let[,D]of B)Z.release(D.element);B.clear()};return{render:r,updatePositions:J2,updateItem:i,updateItemClasses:T,getElement:v,sortDOM:b,updateContainerWidth:E,clear:k,destroy:()=>{k(),Z.clear()}}};var GJ=I2(()=>{w2()});var y2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].headerLayoutIndex<=Q)$=q;else j=q-1}return $},p2=(J,Q)=>{let $=0,j=J.length-1;while($<j){let q=$+j+1>>>1;if(J[q].firstDataIndex<=Q)$=q;else j=q-1}return $},x2=(J,Q)=>{if(J===0)return[];let $=[],j=Q(0),q=0,Y=0;for(let K=1;K<J;K++){let U=Q(K);if(U!==j){let V=K-q;$.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:V}),Y=Y+1+V,j=U,q=K}}return $.push({key:j,groupIndex:$.length,headerLayoutIndex:Y,firstDataIndex:q,count:J-q}),$},h2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let $=J.length+Q.length,j=Array($),q=0;for(let Y of Q){j[q]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},q++;for(let K=0;K<Y.count;K++)j[q]=J[Y.firstDataIndex+K],q++}return j},g2=(J,Q)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let q=J.getEntry(j);if(q.type==="header")return J.getHeaderHeight(q.group.groupIndex);return $(q.dataIndex)}},u2=(J,Q)=>{let $=x2(J,Q.getGroupForIndex),j=J+$.length,q=Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(W)=>{if($.length===0)return{type:"item",dataIndex:W,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let w=y2($,W),N=$[w];if(W===N.headerLayoutIndex)return{type:"header",group:N};let M=W-N.headerLayoutIndex-1;return{type:"item",dataIndex:N.firstDataIndex+M,group:N}},layoutToDataIndex:(W)=>{if($.length===0)return W;let w=y2($,W),N=$[w];if(W===N.headerLayoutIndex)return-1;let M=W-N.headerLayoutIndex-1;return N.firstDataIndex+M},dataToLayoutIndex:(W)=>{if($.length===0)return W;let w=p2($,W),N=$[w],M=W-N.firstDataIndex;return N.headerLayoutIndex+1+M},getGroupAtLayoutIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=y2($,W);return $[w]},getGroupAtDataIndex:(W)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=p2($,W);return $[w]},getHeaderHeight:typeof q==="number"?(W)=>q:(W)=>{let w=$[W];if(!w)return 0;return q(w.key,W)},rebuild:(W)=>{$=x2(W,Q.getGroupForIndex),j=W+$.length}}};var m2=(J,Q,$,j,q,Y=!1,K=0)=>{let U=document.createElement("div");if(U.className=`${q}-sticky-header`,U.setAttribute("role","presentation"),U.setAttribute("aria-hidden","true"),U.style.position="absolute",U.style.zIndex="5",U.style.pointerEvents="none",U.style.willChange="transform",U.style.overflow="hidden",Y)U.style.top="0",U.style.bottom="0",U.style.left=K?`${K}px`:"0";else U.style.top=K?`${K}px`:"0",U.style.left="0",U.style.right="0";J.insertBefore(U,J.firstChild);let V=-1,Z=!1,B=0,H=(_)=>{if(_===V)return;V=_;let F=Q.groups;if(_<0||_>=F.length){U.textContent="";return}let C=F[_],z=j.headerTemplate(C.key,C.groupIndex),p=Q.getHeaderHeight(_);if(Y)U.style.width=`${p}px`;else U.style.height=`${p}px`;if(typeof z==="string")U.innerHTML=z;else U.replaceChildren(z)},W=(_)=>{let F=Q.groups;if(F.length===0){N();return}let C=$.getOffset(F[0].headerLayoutIndex);if(_<C){N();return}let z=0,p=F.length-1;while(z<p){let h=z+p+1>>>1;if($.getOffset(F[h].headerLayoutIndex)<=_)z=h;else p=h-1}let x=z;if(!Z)w();H(x);let a=Q.getHeaderHeight(x),n=0,e=x+1;if(e<F.length){let s=$.getOffset(F[e].headerLayoutIndex)-_;if(s<a)n=s-a}if(n!==B)if(B=n,n===0)U.style.transform="";else{let h=Math.round(n);U.style.transform=Y?`translateX(${h}px)`:`translateY(${h}px)`}},w=()=>{if(Z)return;Z=!0,U.style.display=""},N=()=>{if(!Z)return;Z=!1,U.style.display="none",V=-1,B=0,U.style.transform=""},M=()=>{let _=V;if(V=-1,_>=0)H(_)},X=()=>{U.remove(),V=-1,Z=!1};return U.style.display="none",{update:W,refresh:M,show:w,hide:N,destroy:X}};var d2=(J,Q)=>{let $=new Map,j=(Y)=>{let K=$.get(Y);return K!==void 0?K:J},q=V2(j,Q);return{getOffset(Y){return q.getOffset(Y)},getSize(Y){return j(Y)},indexAtOffset(Y){return q.indexAtOffset(Y)},getTotalSize(){return q.getTotalSize()},getTotal(){return q.getTotal()},rebuild(Y){if(Y<q.getTotal()){for(let K of $.keys())if(K>=Y)$.delete(K)}q=V2(j,Y)},isVariable(){return!0},setMeasuredSize(Y,K){$.set(Y,K)},isMeasured(Y){return $.has(Y)},getEstimatedSize(){return J},measuredCount(){return $.size}}};var a2=(J,Q,$,j,q,Y)=>{if(j===0||Q===0)return Y.start=0,Y.end=-1,Y;let K=$.indexAtOffset(J),U=$.indexAtOffset(J+Q);if(U<j-1)U++;return Y.start=Math.max(0,K),Y.end=Math.min(j-1,Math.max(0,U)),Y},s2=(J,Q,$,j)=>{if($===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-Q),j.end=Math.min($-1,J.end+Q),j},o2=(J,Q,$,j,q,Y)=>{if(j===0)return 0;let K=Math.max(0,Math.min(J,j-1)),U=Q.getOffset(K),V=Q.getSize(K),Z=Q.getTotalSize(),B=Math.max(0,Z-$),H;switch(Y){case"center":H=U-$/2+V/2;break;case"end":H=U-$+V;break;case"start":default:H=U;break}return Math.max(0,Math.min(H,B))},n2=(J,Q,$)=>{if($&&$.isCompressed)return $.virtualSize;return Q.getTotalSize()},i2=(J,Q)=>{return Q.getTotalSize()},t2=(J,Q)=>{return Q.getOffset(J)},e2=(J,Q,$)=>{let j=Math.max(0,Q-$);return Math.max(0,Math.min(J,j))};var JJ=(J,Q,$,j,q="start",Y,K=o2)=>{return K(J,Q,$,j,Y,q)},QJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},$J=(J,Q)=>{return J>=Q.start&&J<=Q.end},jJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var YJ=(J,Q)=>{let $=[],j=[];for(let q=J.start;q<=J.end;q++)if(q<Q.start||q>Q.end)j.push(q);for(let q=Q.start;q<=Q.end;q++)if(q<J.start||q>J.end)$.push(q);return{add:$,remove:j}};w2();var DJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.isHeaderFn,q={row:0,col:0},Y=(N)=>{if(N<=0)return 0;if(!j)return Math.ceil(N/Q);let M=0,X=0,_=0;for(let F=0;F<N;F++)if(j(F)){if(_++,X>0)M++,X=0;M++,X=0}else if(X++,X>=Q)M++,X=0;if(X>0)M++;return M},K=(N)=>{return q.row=U(N),q.col=V(N),q},U=(N)=>{if(!j)return Math.floor(N/Q);let M=0,X=0;for(let _=0;_<=N;_++)if(j(_)){if(X>0)M++,X=0;if(_===N)return M;M++,X=0}else{if(_===N)return M;if(X++,X>=Q)M++,X=0}return console.warn(`⚠️ getRow(${N}) fell through - returning ${M}`),M},V=(N)=>{if(!j)return N%Q;if(j(N))return 0;let M=0;for(let X=0;X<=N;X++)if(j(X))M=0;else{if(X===N)return M;if(M++,M>=Q)M=0}return M},Z=(N,M,X)=>{if(X<=0)return{start:0,end:-1};if(!j){let p=Math.max(0,N*Q),x=Math.min(X-1,(M+1)*Q-1);return{start:p,end:x}}let _=-1,F=-1,C=0,z=0;for(let p=0;p<X;p++){if(j(p)){if(z>0)C++,z=0;if(C>=N&&C<=M){if(_===-1)_=p;F=p}C++,z=0}else{if(C>=N&&C<=M){if(_===-1)_=p;F=p}if(z++,z>=Q)C++,z=0}if(C>M&&z===0)break}if(_===-1)return{start:0,end:-1};return{start:_,end:F}},B=(N,M,X)=>{if(M<0||M>=Q)return-1;let _=N*Q+M;if(_<0||_>=X)return-1;return _},H=(N)=>{let M=(Q-1)*$;return Math.max(0,(N-M)/Q)};return{get columns(){return Q},get gap(){return $},update:(N)=>{if(N.columns!==void 0)Q=Math.max(1,Math.floor(N.columns));if(N.gap!==void 0)$=N.gap;if(N.isHeaderFn!==void 0)j=N.isHeaderFn},getTotalRows:Y,getPosition:K,getRow:U,getCol:V,getItemRange:Z,getItemIndex:B,getColumnWidth:H,getColumnOffset:(N,M)=>{let X=H(M);return N*(X+$)}}};GJ();var VJ=(J,Q=50,$=1/0,j=!0)=>{let q=J,Y=[],K=0,U=()=>{Y=q.map((X,_)=>({def:X,index:_,width:0,minWidth:IJ(X.minWidth??Q,1),maxWidth:X.maxWidth??$,resizable:X.resizable??j,offset:0}))},V=(X)=>{if(Y.length===0){K=0;return}let _=0,F=0;for(let C=0;C<Y.length;C++){let z=Y[C],p=z.def;if(p.width!==void 0)z.width=v2(p.width,z.minWidth,z.maxWidth),_+=z.width;else F++}if(F>0){let z=Math.max(0,X-_)/F;for(let p=0;p<Y.length;p++){let x=Y[p];if(x.def.width===void 0)x.width=v2(z,x.minWidth,x.maxWidth)}}Z()},Z=()=>{let X=0;for(let _=0;_<Y.length;_++){let F=Y[_];F.offset=X,X+=F.width}K=X},B=(X,_)=>{if(X<0||X>=Y.length)return 0;let F=Y[X];if(!F.resizable)return F.width;let C=v2(_,F.minWidth,F.maxWidth);return F.width=C,Z(),C},H=(X)=>{return Y[X]},W=(X)=>{if(Y.length===0)return;if(X<0)return Y[0];if(X>=K)return Y[Y.length-1];let _=0,F=Y.length-1;while(_<F){let C=_+F>>>1,z=Y[C];if(X<z.offset)F=C-1;else if(X>=z.offset+z.width)_=C+1;else return z}return Y[_]},w=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].offset},N=(X)=>{if(X<0||X>=Y.length)return 0;return Y[X].width},M=(X)=>{q=X,U()};return U(),{get columns(){return Y},get totalWidth(){return K},resolve:V,updateColumns:M,resizeColumn:B,getColumn:H,getColumnAtX:W,getColumnOffset:w,getColumnWidth:N}},v2=(J,Q,$)=>Math.min($,Math.max(Q,J)),IJ=(J,Q)=>Math.max(Q,J);var MJ=(J,Q,$,j,q,Y,K)=>{let U=document.createElement("div");U.setAttribute("role","rowgroup");let V=document.createElement("div");V.className=`${j}-table-header`,V.setAttribute("role","row"),V.setAttribute("aria-rowindex","1"),V.style.height=`${$}px`;let Z=document.createElement("div");Z.className=`${j}-table-header-scroll`,Z.setAttribute("role","presentation"),V.appendChild(Z),U.appendChild(V),J.insertBefore(U,J.firstChild),Q.style.position="absolute",Q.style.top=`${$}px`,Q.style.left="0",Q.style.right="0",Q.style.bottom="0",Q.style.height="auto";let B=[],H=[],W=[],w=!0,N=null,M="asc",X=null,_=!1,F=-1,C=0,z=0,p=(E,b)=>{let k=document.createElement("div");k.className=`${j}-table-header-cell`,k.setAttribute("role","columnheader"),k.setAttribute("aria-colindex",String(b+1)),k.dataset.columnKey=E.def.key;let l=E.def.align;if(l==="center")k.classList.add(`${j}-table-header-cell--center`);else if(l==="right")k.classList.add(`${j}-table-header-cell--right`);let D=document.createElement("div");D.className=`${j}-table-header-content`;let y=E.def.header?E.def.header(E.def):E.def.label;if(typeof y==="string")D.textContent=y;else D.appendChild(y);if(k.appendChild(D),E.def.sortable){let S=document.createElement("span");S.className=`${j}-table-header-sort`,S.setAttribute("aria-hidden","true"),k.appendChild(S),W.push(S),k.classList.add(`${j}-table-header-cell--sortable`)}else W.push(null);if(E.resizable){let S=document.createElement("div");S.className=`${j}-table-header-resize`,S.dataset.resizeIndex=String(b),k.appendChild(S),H.push(S)}return k},x=(E)=>{X=E,Z.textContent="",B=[],H=[],W=[];let b=E.columns;for(let k=0;k<b.length;k++){let l=b[k],D=p(l,k);B.push(D),Z.appendChild(D)}if(a(E),N)n(N,M)},a=(E)=>{X=E;let b=E.columns;Z.style.width=`${E.totalWidth}px`;for(let k=0;k<B.length&&k<b.length;k++){let l=B[k],D=b[k];l.style.width=`${D.width}px`}},n=(E,b)=>{if(N=E,M=b,!X)return;let k=X.columns;for(let l=0;l<W.length&&l<k.length;l++){let D=W[l];if(!D)continue;if(k[l].def.key===E&&E!==null)D.textContent=b==="asc"?"▲":"▼",D.style.opacity="0.7",B[l].setAttribute("aria-sort",b==="asc"?"ascending":"descending");else D.textContent="",D.style.opacity="0",B[l].removeAttribute("aria-sort")}},e=(E)=>{Z.style.transform=`translateX(${-E}px)`},h=(E)=>{let b=E.target;if(!b.dataset.resizeIndex)return;if(E.preventDefault(),E.stopPropagation(),F=parseInt(b.dataset.resizeIndex,10),!X)return;let k=X.getColumn(F);if(!k||!k.resizable)return;_=!0,C=E.clientX,z=k.width,J.classList.add(`${j}--col-resizing`),J.style.cursor="col-resize",b.classList.add(`${j}-table-header-resize--active`),b.setPointerCapture(E.pointerId),b.addEventListener("pointermove",s),b.addEventListener("pointerup",r),b.addEventListener("pointercancel",r)},s=(E)=>{if(!_||!X)return;let b=E.clientX-C;if(Math.abs(b)<1)return;let k=Math.max(0,z+b);q(F,k)},r=(E)=>{if(!_)return;let b=E.target;b.removeEventListener("pointermove",s),b.removeEventListener("pointerup",r),b.removeEventListener("pointercancel",r);try{b.releasePointerCapture(E.pointerId)}catch{}b.classList.remove(`${j}-table-header-resize--active`),J.classList.remove(`${j}--col-resizing`),J.style.cursor="",_=!1,F=-1},J2=(E)=>{let b=E.target;if(b.dataset.resizeIndex!==void 0)return;if(_)return;let k=b;while(k&&!k.dataset.columnKey)if(k=k.parentElement,k===V||k===null)return;if(!k||!k.dataset.columnKey)return;let l=k.dataset.columnKey;if(!X)return;let D=X.columns,y=-1;for(let I=0;I<D.length;I++)if(D[I].def.key===l){y=I;break}if(y===-1)return;let S=D[y];if(K)K({key:l,index:y,event:E});if(S.def.sortable&&Y){let I;if(N===l)if(M==="asc")I="desc";else I=null;else I="asc";Y({key:l,index:y,direction:I})}};return V.addEventListener("pointerdown",h),V.addEventListener("click",J2),{element:V,update:a,updateSort:n,rebuild:x,show:()=>{if(w)return;w=!0,V.style.display=""},hide:()=>{if(!w)return;w=!1,V.style.display="none"},destroy:()=>{V.removeEventListener("pointerdown",h),V.removeEventListener("click",J2),Q.style.position="",Q.style.top="",Q.style.left="",Q.style.right="",Q.style.bottom="",U.remove(),B=[],H=[],W=[],X=null,w=!1},syncScroll:e}};var pJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;return document.createElement("div")},release:(Y)=>{if(Y.parentNode)Y.parentNode.removeChild(Y);if(Q.length<J)Y.className="",Y.removeAttribute("data-id"),Y.removeAttribute("data-index"),Y.removeAttribute("aria-selected"),Y.removeAttribute("aria-rowindex"),Y.removeAttribute("role"),Y.style.cssText="",Y.textContent="",Q.push(Y)},clear:()=>{Q.length=0}}},WJ=(J,Q,$,j,q,Y,K,U,V)=>{let Z=pJ(),B=new Map,H=-1,W=$,w=null,N=null,M=null,X=(L,G)=>{N=L,M=G},_=(L,G)=>{if(G)L.setAttribute("aria-selected","true");else L.removeAttribute("aria-selected")},F=`${q}-item ${q}-table-row`,C=`${q}-item--selected`,z=`${q}-item--focused`,p=`${q}-table-cell`,x=`${q}-table-cell--center`,a=`${q}-table-cell--right`,n=`${q}-item--odd`,e=`${q}-item--placeholder`,h=`${q}-item--replaced`,s=`${q}-item ${q}-table-row ${q}-table-group-header`,r=`${q}-table-group-header-content`,J2=(L,G,A,R,g=!1)=>{if(A.def.cell){let P=A.def.cell(G,A.def,R);if(typeof P==="string")L.innerHTML=P;else L.replaceChildren(P)}else{let P=G[A.def.key],c=P!=null?String(P):"";if(g&&c)L.innerHTML=`<span>${c}</span>`;else L.textContent=c}},i=(L,G,A,R,g=!1)=>{let P=F;if(U){if(w){let c=w(G);if(c>=0&&(c&1)===1)P+=` ${n}`}else if((G&1)===1)P+=` ${n}`}if(g)P+=` ${e}`;if(A)P+=` ${C}`;if(R)P+=` ${z}`;L.className=P},T=(L,G)=>{let A=G.def.align;if(A==="center")L.classList.add(x),L.classList.remove(a);else if(A==="right")L.classList.add(a),L.classList.remove(x);else L.classList.remove(x,a)},v=(L,G)=>{let R=W.columns.length;if(G.length===R)return G;let g=[];for(let P=0;P<R;P++){let c;if(P<G.length)c=G[P];else c=document.createElement("div"),c.className=p,L.appendChild(c);g.push(c)}for(let P=R;P<G.length;P++)G[P].remove();return g},E=(L,G,A)=>{let R=Z.acquire(),g=L;R.style.width=`${W.totalWidth}px`;let P=A.getSize(G);R.style.height=`${P}px`,R.className=s,R.setAttribute("role","presentation"),R.setAttribute("data-id",String(L.id)),R.setAttribute("data-index",String(G)),R.removeAttribute("aria-selected"),R.removeAttribute("aria-rowindex"),R.replaceChildren();let c=document.createElement("div");if(c.className=r,M){let O=M(g.groupKey,g.groupIndex);if(typeof O==="string")c.innerHTML=O;else c.appendChild(O)}R.appendChild(c);let o=A.getOffset(G);return R.style.transform=`translateY(${o}px)`,{element:R,cells:[],index:G,isGroupHeader:!0,lastItemId:L.id,lastSelected:!1,lastFocused:!1,lastOffset:o,lastHeight:P}},b=(L,G,A,R,g)=>{let P=Z.acquire();P.style.width=`${W.totalWidth}px`;let c=g.getSize(G);P.style.height=`${c}px`;let o=String(L.id).startsWith("__placeholder_");i(P,G,A,R,o),P.setAttribute("role","row"),P.setAttribute("data-id",String(L.id)),P.setAttribute("data-index",String(G)),P.id=`${Y}-${G}`,P.setAttribute("aria-rowindex",String(G+2));let O=K();if(O!==H)H=O;_(P,A);let f=v(P,[]),m=W.columns;for(let Q2=0;Q2<f.length&&Q2<m.length;Q2++){let $2=f[Q2],u=m[Q2];$2.style.left=`${u.offset}px`,$2.style.width=`${u.width}px`,$2.setAttribute("role","gridcell"),$2.setAttribute("aria-colindex",String(Q2+1)),T($2,u),J2($2,L,u,G,o)}let t=g.getOffset(G);return P.style.transform=`translateY(${t}px)`,{element:P,cells:f,index:G,isGroupHeader:!1,lastItemId:L.id,lastSelected:A,lastFocused:R,lastOffset:t,lastHeight:c}},k=(L,G,A,R)=>{for(let[O,f]of B)if(O<G.start||O>G.end)Z.release(f.element),B.delete(O);let g=!1,P=K();if(P!==H)H=P,g=!0;let c=null,o=Q();w=typeof U==="string"&&V?V():null;for(let O=G.start;O<=G.end;O++){let f=O-G.start,m=L[f];if(!m)continue;let t=A.has(m.id),Q2=O===R,$2=N?N(m):!1,u=B.get(O);if(u){if(u.isGroupHeader!==$2){Z.release(u.element),B.delete(O);let K2=$2?E(m,O,o):b(m,O,t,Q2,o);if(B.set(O,K2),!c)c=document.createDocumentFragment();c.appendChild(K2.element);continue}if($2){if(u.lastItemId!==m.id){let U2=m,j2=u.element.firstElementChild;if(j2&&M){let X2=M(U2.groupKey,U2.groupIndex);if(typeof X2==="string")j2.innerHTML=X2;else j2.replaceChildren(X2)}u.element.setAttribute("data-id",String(m.id)),u.lastItemId=m.id}let Y2=o.getOffset(O);if(u.lastOffset!==Y2)u.lastOffset=Y2,u.element.style.transform=`translateY(${Y2}px)`;let B2=o.getSize(O);if(u.lastHeight!==B2)u.lastHeight=B2,u.element.style.height=`${B2}px`}else{let K2=u.lastItemId!==m.id,Y2=u.lastSelected!==t,B2=u.lastFocused!==Q2;if(K2){let X2=u.lastItemId!=null&&String(u.lastItemId).startsWith("__placeholder_"),q2=String(m.id).startsWith("__placeholder_"),N2=W.columns;for(let D2=0;D2<u.cells.length&&D2<N2.length;D2++)J2(u.cells[D2],m,N2[D2],O,q2);if(i(u.element,O,t,Q2,q2),u.element.setAttribute("data-id",String(m.id)),_(u.element,t),X2&&!q2)u.element.classList.add(h),setTimeout(()=>{u.element.classList.remove(h)},300);u.lastItemId=m.id,u.lastSelected=t,u.lastFocused=Q2}else if(Y2||B2){let X2=String(m.id).startsWith("__placeholder_");i(u.element,O,t,Q2,X2),_(u.element,t),u.lastSelected=t,u.lastFocused=Q2}let U2=o.getOffset(O);if(u.lastOffset!==U2)u.lastOffset=U2,u.element.style.transform=`translateY(${U2}px)`;let j2=o.getSize(O);if(u.lastHeight!==j2)u.lastHeight=j2,u.element.style.height=`${j2}px`;if(g)u.element.setAttribute("aria-rowindex",String(O+2))}}else{let K2=$2?E(m,O,o):b(m,O,t,Q2,o);if(B.set(O,K2),!c)c=document.createDocumentFragment();c.appendChild(K2.element)}}if(c)J.appendChild(c)},l=(L,G,A,R)=>{let g=B.get(L);if(!g)return;if(g.isGroupHeader)return;let P=g.lastItemId!==G.id,c=g.lastSelected!==A,o=g.lastFocused!==R;if(P||c||o){if(P){let O=W.columns;for(let f=0;f<g.cells.length&&f<O.length;f++)J2(g.cells[f],G,O[f],L);g.element.setAttribute("data-id",String(G.id)),g.lastItemId=G.id}i(g.element,L,A,R),_(g.element,A),g.lastSelected=A,g.lastFocused=R}},D=(L,G,A)=>{let R=B.get(L);if(!R)return;if(R.isGroupHeader)return;let g=R.lastSelected!==G,P=R.lastFocused!==A;if(g||P)i(R.element,L,G,A),_(R.element,G),R.lastSelected=G,R.lastFocused=A},y=(L)=>{W=L;let G=L.columns;for(let[,A]of B)if(A.element.style.width=`${L.totalWidth}px`,A.cells.length>0)for(let R=0;R<A.cells.length&&R<G.length;R++){let g=A.cells[R],P=G[R];g.style.left=`${P.offset}px`,g.style.width=`${P.width}px`}},S=(L)=>{return B.get(L)?.element},I=()=>{for(let[,L]of B)Z.release(L.element);B.clear(),H=-1};return{render:k,updateItem:l,updateItemClasses:D,getElement:S,updateColumnLayout:y,setGroupHeaderFn:X,clear:I,destroy:()=>{I(),Z.clear()}}};var OJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),$=J.gap??0,j=J.containerSize,q=0,Y=[],K=()=>{let X=(Q-1)*$;q=Math.max(0,(j-X)/Q),Y=Array(Q);let _=q+$;for(let F=0;F<Q;F++)Y[F]=F*_};K();let U=[],V=0,Z=[],B=(X)=>{let _=0,F=X[0];for(let C=1;C<X.length;C++){let z=X[C];if(z<F)F=z,_=C}return _},H=(X,_)=>{if(X<=0)return V=0,U=[],[];let F=Array(Q).fill(0),C=Array(Q);for(let x=0;x<Q;x++)C[x]=[];let z=Array(X);for(let x=0;x<X;x++){let a=B(F),n=_(x),e=F[a];z[x]={index:x,x:Y[a],y:e,lane:a,size:n,crossSize:q},C[a].push(x),F[a]=e+n+$}U=C;let p=0;for(let x=0;x<Q;x++){let a=F[x],n=a>0?a-$:0;if(n>p)p=n}return V=p,z},W=(X)=>{if(X.length===0)return V>0?V:0;if(V>0)return V;let _=Array(Q).fill(0);for(let C of X){let z=C.y+C.size,p=_[C.lane];if(z>p)_[C.lane]=z}let F=0;for(let C=0;C<Q;C++)if(_[C]>F)F=_[C];return F},w=(X,_,F)=>{if(X.length===0||F<=_)return Z.length=0,Z;if(U.length===0||U.length!==Q)return N(X,_,F);Z.length=0;for(let C=0;C<Q;C++){let z=U[C],p=z.length;if(p===0)continue;let x=0,a=p;while(x<a){let n=x+a>>>1,e=X[z[n]];if(e.y+e.size<=_)x=n+1;else a=n}for(let n=x;n<p;n++){let e=X[z[n]];if(e.y>=F)break;Z.push(e)}}return Z},N=(X,_,F)=>{let C=[];for(let z of X)if(z.y+z.size>_&&z.y<F)C.push(z);return C};return{get columns(){return Q},get gap(){return $},get containerSize(){return j},update:(X)=>{let _=!1;if(X.columns!==void 0){let F=Math.max(1,Math.floor(X.columns));if(F!==Q)Q=F,_=!0}if(X.gap!==void 0&&X.gap!==$)$=X.gap,_=!0;if(X.containerSize!==void 0&&X.containerSize!==j)j=X.containerSize,_=!0;if(_)K()},calculateLayout:H,getTotalSize:W,getVisibleItems:w}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},hJ=1,EJ=(J,Q,$,j=!1,q,Y)=>{let K=xJ(),U=new Map,V=new Set,Z=0,B="",H=-1,W={selected:!1,focused:!1},w=(h,s)=>{return W.selected=h,W.focused=s,W},N=`${$}-item ${$}-masonry-item`,M=`${$}-item--selected`,X=`${$}-item--focused`,_=(h,s)=>{if(typeof s==="string")h.innerHTML=s;else h.replaceChildren(s)},F=(h,s,r)=>{h.classList.toggle(M,s),h.classList.toggle(X,r)},C=(h,s)=>{if(j)h.style.transform=`translate(${Math.round(s.y)}px, ${Math.round(s.x)}px)`;else h.style.transform=`translate(${Math.round(s.x)}px, ${Math.round(s.y)}px)`},z=(h,s)=>{if(j)h.style.width=`${s.size}px`,h.style.height=`${s.crossSize}px`;else h.style.width=`${s.crossSize}px`,h.style.height=`${s.size}px`},p=(h,s,r,J2,i)=>{let T=K.acquire(),v=w(J2,i);if(T.className=N,T.dataset.index=String(h),T.dataset.id=String(s.id),T.dataset.lane=String(r.lane),T.ariaSelected=String(J2),Y)T.id=`${Y}-item-${h}`;if(q){let b=q();if(b!==H)H=b,B=String(b);T.setAttribute("aria-setsize",B),T.setAttribute("aria-posinset",String(h+1))}z(T,r);let E=Q(s,h,v);return _(T,E),F(T,J2,i),C(T,r),{element:T,lastItemId:s.id,lastSelected:J2,lastFocused:i,lastY:r.y,lastX:r.x,lastSize:r.size,lastCrossSize:r.crossSize,lastSeenFrame:Z}},x=(h,s,r,J2)=>{Z++,V.clear();for(let T=0;T<s.length;T++)V.add(s[T].index);for(let[T,v]of U)if(V.has(T))v.lastSeenFrame=Z;else if(Z-v.lastSeenFrame>hJ)K.release(v.element),U.delete(T);let i=null;for(let T=0;T<s.length;T++){let v=s[T],E=v.index,b=h(E);if(!b)continue;let k=r.has(b.id),l=E===J2,D=U.get(E);if(D){let y=D.lastItemId!==b.id,S=D.lastSelected!==k,I=D.lastFocused!==l,d=D.lastY!==v.y||D.lastX!==v.x,L=D.lastSize!==v.size||D.lastCrossSize!==v.crossSize;if(y||S||I){let G=w(k,l),A=Q(b,E,G);_(D.element,A),F(D.element,k,l),D.element.dataset.id=String(b.id),D.element.ariaSelected=String(k),D.lastItemId=b.id,D.lastSelected=k,D.lastFocused=l}if(L)z(D.element,v),D.lastSize=v.size,D.lastCrossSize=v.crossSize;if(d)C(D.element,v),D.lastY=v.y,D.lastX=v.x}else{let y=p(E,b,v,k,l);if(!i)i=document.createDocumentFragment();i.appendChild(y.element),U.set(E,y)}}if(i)J.appendChild(i)},a=()=>{for(let{element:h}of U.values())K.release(h);U.clear(),J.innerHTML=""};return{render:x,getElement:(h)=>U.get(h)?.element,sortDOM:()=>{A2(J,U.keys(),(h)=>U.get(h)?.element)},clear:a,destroy:()=>{a(),K.clear()}}};var AJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),C2=(J,Q,$)=>{if($==="none")return J;let j=new Set(J.selected);if($==="single"){if(j.clear(),Q.length>0)j.add(Q[0])}else for(let q of Q)j.add(q);return{...J,selected:j}},S2=(J,Q)=>{let $=new Set(J.selected);for(let j of Q)$.delete(j);return{...J,selected:$}},LJ=(J,Q,$)=>{if($==="none")return J;if(J.selected.has(Q))return S2(J,[Q]);else return C2(J,[Q],$)},FJ=(J,Q,$)=>{if($!=="multiple")return J;return{...J,selected:new Set(Q.map((j)=>j.id))}},bJ=(J)=>({...J,selected:new Set});var HJ=(J,Q)=>{return J.selected.has(Q)},TJ=(J)=>{return Array.from(J.selected)},RJ=(J,Q)=>{let $=[];for(let j of J.selected){let q=Q(j);if(q)$.push(q)}return $};var yJ=()=>{let J={},Q=(U,V)=>{if(!J[U])J[U]=new Set;return J[U].add(V),()=>$(U,V)},$=(U,V)=>{J[U]?.delete(V)};return{on:Q,off:$,emit:(U,V)=>{J[U]?.forEach((Z)=>{try{Z(V)}catch(B){console.error(`[vlist] Error in event handler for "${String(U)}":`,B)}})},once:(U,V)=>{let Z=(B)=>{$(U,Z),V(B)};return Q(U,Z)},clear:(U)=>{if(U)delete J[U];else for(let V in J)delete J[V]},listenerCount:(U)=>{return J[U]?.size??0}}};var F2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:$=5000,evictionBuffer:j=200,onEvict:q}=J,Y=new Map,K=0,U=0,V=(T)=>{let v=Y.get(T);if(!v)v={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(T,v);else v.lastAccess=Date.now();return v},Z=(T)=>{return Math.floor(T/Q)},B=(T)=>{return T%Q},H=()=>K,W=(T)=>{K=T},w=(T)=>{if(T<0||T>=K)return;let v=Z(T),E=Y.get(v);if(!E)return;return E.items[B(T)]},N=(T)=>{if(T<0||T>=K)return!1;let v=Z(T),E=Y.get(v);if(!E)return!1;return E.items[B(T)]!==void 0},M=(T,v)=>{let E=Z(T),b=V(E),k=B(T),l=b.items[k]===void 0;if(b.items[k]=v,l)b.count++,U++;if(T>=K)K=T+1},X=(T,v)=>{for(let E=0;E<v.length;E++){let b=v[E];if(b!==void 0)M(T+E,b)}},_=(T)=>{if(T<0||T>=K)return!1;let v=Z(T),E=Y.get(v),b=B(T);if(!(E!==void 0&&E.items[b]!==void 0))return!1;let l=v,D=Array.from(Y.keys()).filter((S)=>S>=l).sort((S,I)=>S-I),y=[];for(let S of D){let I=Y.get(S),d=S*Q;for(let L=0;L<Q;L++){if(I.items[L]===void 0)continue;let G=d+L;if(G<=T)continue;y.push({oldIndex:G,item:I.items[L]})}}if(E.items[b]=void 0,E.count--,U--,E.count===0)Y.delete(v);for(let{oldIndex:S}of y){let I=Z(S),d=Y.get(I);if(!d)continue;let L=B(S);if(d.items[L]!==void 0){if(d.items[L]=void 0,d.count--,U--,d.count===0)Y.delete(I)}}for(let{oldIndex:S,item:I}of y){let d=S-1,L=Z(d),G=V(L),A=B(d);G.items[A]=I,G.count++,U++}return K--,!0},F=(T,v)=>{let E=[];for(let b=T;b<=v&&b<K;b++)E.push(w(b));return E},C=(T,v)=>{for(let E=T;E<=v&&E<K;E++)if(!N(E))return!1;return!0},z=()=>{let T=[],v=null,E=Array.from(Y.keys()).sort((b,k)=>b-k);for(let b of E){let k=Y.get(b);if(!k)continue;let l=b*Q;for(let D=0;D<Q;D++){let y=l+D;if(y>=K)break;if(k.items[D]!==void 0)if(v===null)v={start:y,end:y};else if(y===v.end+1)v.end=y;else T.push(v),v={start:y,end:y};else if(v!==null)T.push(v),v=null}}if(v!==null)T.push(v);return T},p=(T,v)=>{let E=[],b=null;for(let k=T;k<=v&&k<K;k++)if(!N(k))if(b===null)b={start:k,end:k};else b.end=k;else if(b!==null)E.push(b),b=null;if(b!==null)E.push(b);return E},x=(T)=>{return Y.has(T)},a=(T)=>{let v=Y.get(T);if(v)v.lastAccess=Date.now()},n=(T,v)=>{if(T>v||Y.size===0)return;let E=Date.now(),b=Z(Math.max(0,T)),k=Z(Math.min(K-1,v));for(let l=b;l<=k;l++){let D=Y.get(l);if(D)D.lastAccess=E}},e=(T,v)=>{if(U<=$)return 0;let E=Math.max(0,T-j),b=Math.min(K-1,v+j),k=Z(E),l=Z(b),D=0,y=[];for(let[S,I]of Y)if(S<k||S>l)D+=I.count,y.push(S),U-=I.count,Y.delete(S);if(D>0&&q)q(D,y);return D},h=()=>{if(U<=$)return 0;let T=Array.from(Y.entries()).sort(([,b],[,k])=>b.lastAccess-k.lastAccess),v=0,E=[];for(let[b,k]of T){if(U<=$)break;v+=k.count,U-=k.count,E.push(b),Y.delete(b)}if(v>0&&q)q(v,E);return v},s=()=>{return{totalItems:K,cachedItems:U,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:$,memoryEfficiency:K>0?1-U/K:1}},r=()=>U,J2=()=>{Y.clear(),U=0};return{chunkSize:Q,maxCachedItems:$,getTotal:H,setTotal:W,get:w,has:N,set:M,setRange:X,delete:_,getRange:F,isRangeLoaded:C,getLoadedRanges:z,findUnloadedRanges:p,getChunkIndex:Z,isChunkLoaded:x,touchChunk:a,touchChunksForRange:n,evictDistant:e,evictToLimit:h,getStats:s,getCachedCount:r,clear:J2,reset:()=>{J2(),K=0}}},b2=(J)=>{if(J.length===0)return[];let Q=[...J].sort((j,q)=>j.start-q.start),$=[{...Q[0]}];for(let j=1;j<Q.length;j++){let q=Q[j],Y=$[$.length-1];if(q.start<=Y.end+1)Y.end=Math.max(Y.end,q.end);else $.push({...q})}return $},W2=(J,Q,$)=>{let j=Math.floor(J.start/$)*$,q=Math.ceil((J.end+1)/$)*$-1,Y={start:j,end:q};if(Q.length===0)return[Y];let K=[],U=b2(Q),V=Y.start;for(let Z of U){if(Z.end<V)continue;if(Z.start>Y.end)break;if(Z.start>V)K.push({start:V,end:Math.min(Z.start-1,Y.end)});if(V=Z.end+1,V>Y.end)break}if(V<=Y.end)K.push({start:V,end:Y.end});return K};var H2=(J={})=>{let{maskCharacter:Q=c2,maxSampleSize:$=r2}=J,j=[],q=!1,Y=0,K=(H)=>{if(q||H.length===0)return;let W=Math.min(H.length,$);for(let w=0;w<W;w++){let N=H[w];if(!N||typeof N!=="object")continue;let M={};for(let[X,_]of Object.entries(N)){if(X.startsWith("_")||X==="id")continue;M[X]=String(_??"").length}if(Object.keys(M).length>0)j.push(M)}q=!0},U=()=>q,V=(H)=>{let W={id:`${l2}${Y++}`,[z2]:!0,_index:H};if(j.length===0)return W.label=Q.repeat(12),W;let w=j[H%j.length];for(let[N,M]of Object.entries(w))W[N]=Q.repeat(Math.max(1,M));return W};return{analyzeStructure:K,hasAnalyzedStructure:U,generate:V,generateRange:(H,W)=>{let w=[];for(let N=H;N<=W;N++)w.push(V(N));return w},clear:()=>{j=[],q=!1,Y=0}}},_2=(J)=>{if(!J||typeof J!=="object")return!1;return J[z2]===!0},f2=(J)=>{return J.filter((Q)=>!_2(Q))};var uJ=50,PJ=(J={})=>{let{adapter:Q,initialItems:$,initialTotal:j,storage:q,placeholder:Y,pageSize:K=uJ,onStateChange:U,onItemsLoaded:V,onItemsEvicted:Z}=J,B=F2({...q,onEvict:(O,f)=>{Z?.(O),p()}}),H=null,W=()=>{if(!H)H=H2(Y);return H},w=new Map,N=!1,M,X=!0,_,F=[],C=0,z=new Map,p=()=>{U?.(i())},x=()=>{w.clear();let O=B.getLoadedRanges();for(let f of O)for(let m=f.start;m<=f.end;m++){let t=B.get(m);if(t&&!_2(t))w.set(t.id,m)}},a=(O,f)=>{if(!_2(f))w.set(f.id,O)},n=(O)=>{w.delete(O)},e=(O,f)=>{return`${O}-${f}`},h=()=>B.getTotal(),s=()=>B.getCachedCount(),r=()=>N,J2=()=>X,i=()=>({total:B.getTotal(),cached:B.getCachedCount(),isLoading:N,pendingRanges:F,error:M,hasMore:X,cursor:_}),T=()=>B,v=()=>W(),E=(O)=>{let f=B.get(O);if(f!==void 0)return f;if(O>=0&&O<B.getTotal())return W().generate(O);return},b=(O)=>{let f=w.get(O);if(f===void 0)return;return B.get(f)},k=(O)=>{return w.get(O)??-1},l=(O)=>{let f=B.get(O);return f!==void 0&&!_2(f)},D=(O,f)=>{let m=[],t=B.getTotal(),Q2=0,$2=0;B.touchChunksForRange(O,Math.min(f,t-1));for(let u=O;u<=f&&u<t;u++){let K2=B.get(u);if(K2!==void 0)m.push(K2),Q2++;else m.push(W().generate(u)),$2++}return m},y=(O)=>{B.setTotal(O),X=B.getCachedCount()<O,p()},S=(O,f=0,m)=>{if(Q&&O.length>0){let t=W();if(!t.hasAnalyzedStructure())t.analyzeStructure(O)}for(let t=0;t<O.length;t++){let Q2=O[t];if(Q2!==void 0){let $2=f+t;B.set($2,Q2),a($2,Q2)}}if(m!==void 0)B.setTotal(m);else if(f+O.length>B.getTotal())B.setTotal(f+O.length);if(B.getCachedCount()>=B.getTotal()&&B.getTotal()>0)X=!1;p(),V?.(O,f,B.getTotal())},I=(O,f)=>{let m=w.get(O);if(m===void 0)return!1;let t=B.get(m);if(!t)return!1;let Q2={...t,...f};if(B.set(m,Q2),f.id!==void 0&&f.id!==O)n(O),a(m,Q2);return p(),!0},d=(O)=>{let f=w.get(O);if(f===void 0)return!1;if(!B.delete(f))return!1;return x(),z.clear(),p(),!0},L=async(O,f)=>{if(!Q)return;let m=e(O,f);if(z.has(m))return;let t=B.getLoadedRanges(),Q2=W2({start:O,end:f},t,B.chunkSize);if(Q2.length===0)return;let $2=B.chunkSize,u=[];for(let Y2 of Q2){let B2=Math.floor(Y2.start/$2),U2=Math.floor(Y2.end/$2);for(let j2=B2;j2<=U2;j2++){let X2=j2*$2,q2=X2+$2-1,N2=e(X2,q2);if(!u.some((D2)=>D2.start===X2)&&!z.has(N2))u.push({start:X2,end:q2})}}let K2=[];for(let Y2 of Q2){let B2=Math.floor(Y2.start/$2),U2=Math.floor(Y2.end/$2);for(let j2=B2;j2<=U2;j2++){let X2=j2*$2,q2=X2+$2-1,N2=e(X2,q2);if(z.has(N2)){let D2=z.get(N2);if(!K2.includes(D2))K2.push(D2)}}}for(let Y2 of u){let B2=e(Y2.start,Y2.end),U2=(async()=>{F.push(Y2),N=!0,M=void 0,p();try{let j2=Y2.end-Y2.start+1,X2={offset:Y2.start,limit:j2,cursor:void 0},q2=await Q.read(X2);if(S(q2.items,Y2.start,q2.total),q2.cursor)_=q2.cursor;let N2=Y2.start+q2.items.length;if(N2>=C){if(C=N2,q2.hasMore!==void 0)X=q2.hasMore;else if(q2.total!==void 0)X=N2<q2.total}}catch(j2){M=j2 instanceof Error?j2:Error(String(j2))}finally{z.delete(B2),F=F.filter((j2)=>j2.start!==Y2.start||j2.end!==Y2.end),N=z.size>0,p()}})();z.set(B2,U2),K2.push(U2)}await Promise.all(K2)},G=async(O,f)=>{if(B.isRangeLoaded(O,f))return;await L(O,f)},A=async()=>{if(!Q)return;await L(0,K-1)},R=async()=>{if(!Q||N||!X)return!1;let O=B.getCachedCount(),f=B.getTotal(),m=O,t=Math.min(m+K-1,f>0?f-1:m+K-1);if(m>=f&&f>0)return X=!1,!1;return await L(m,t),B.getCachedCount()>O},g=async()=>{if(B.clear(),B.setTotal(0),w.clear(),H)H.clear();z.clear(),F=[],N=!1,_=void 0,X=!0,C=0,M=void 0,p()},P=(O,f)=>{if(B.evictDistant(O,f)>0)x()},c=()=>{B.clear(),w.clear(),_=void 0,M=void 0,F=[],N=!1,p()},o=()=>{if(B.reset(),w.clear(),H)H.clear();_=void 0,X=!0,C=0,M=void 0,F=[],N=!1,p()};if($&&$.length>0)S($,0,j??$.length);else if(j!==void 0)B.setTotal(j),p();return{getState:i,getTotal:h,getCached:s,getIsLoading:r,getHasMore:J2,getStorage:T,getPlaceholders:v,getItem:E,getItemById:b,getIndexById:k,isItemLoaded:l,getItemsInRange:D,setTotal:y,setItems:S,updateItem:I,removeItem:d,loadRange:L,ensureRange:G,loadInitial:A,loadMore:R,reload:g,evictDistant:P,clear:c,reset:o}};var kJ=(J,Q,$={},j="vlist",q=!1)=>{let{autoHide:Y=!0,autoHideDelay:K=1000,minThumbSize:U=30,showOnHover:V=!0,hoverZoneWidth:Z=16,showOnViewportEnter:B=!0}=$,H=0,W=0,w=0,N=0,M=!1,X=!1,_=0,F=0,C=0,z=null,p=!1,x=null,a=null,n=q?"width":"height",e=q?"translateX":"translateY",h=q?(P)=>P.clientX:(P)=>P.clientY,s=q?"left":"top",r=document.createElement("div"),J2=document.createElement("div"),i=V?document.createElement("div"):null,T=()=>{if(r.className=`${j}-scrollbar`,J2.className=`${j}-scrollbar-thumb`,q)r.classList.add(`${j}-scrollbar--horizontal`);if(r.appendChild(J2),J.appendChild(r),i){if(i.className=`${j}-scrollbar-hover`,q)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${Z}px`;else i.style.width=`${Z}px`;J.appendChild(i)}},v=()=>{if(z)clearTimeout(z),z=null},E=()=>{if(!Y)return;v(),z=setTimeout(k,K)},b=()=>{if(H<=W)return;if(v(),!p)r.classList.add(`${j}-scrollbar--visible`),p=!0;if(Y&&!M&&!X)E()},k=()=>{if(M||X)return;r.classList.remove(`${j}-scrollbar--visible`),p=!1},l=(P,c)=>{H=P,W=c;let o=H>W;if(r.style.display=o?"":"none",!o){k();return}let O=W/H;w=Math.max(U,O*W),J2.style[n]=`${w}px`,N=W-w,D(C)},D=(P)=>{if(C=P,H<=W||N<=0)return;let c=H-W,O=Math.min(1,Math.max(0,P/c))*N;J2.style.transform=`${e}(${O}px)`},y=(P)=>{if(P.target===J2)return;let c=r.getBoundingClientRect(),f=h(P)-c[s]-w/2,t=Math.max(0,Math.min(f,N))/N,Q2=H-W,$2=t*Q2;Q($2),b()},S=(P)=>{P.preventDefault(),P.stopPropagation(),M=!0,_=h(P),F=C,v(),r.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",I),document.addEventListener("mouseup",d)},I=(P)=>{if(!M)return;let c=h(P)-_,o=N>0?c/N:0,O=H-W,f=o*O,m=Math.max(0,Math.min(F+f,O)),Q2=m/O*N;if(J2.style.transform=`${e}(${Q2}px)`,a=m,x===null)x=requestAnimationFrame(()=>{if(a!==null)Q(a);x=null})},d=()=>{if(M=!1,x!==null)cancelAnimationFrame(x),x=null;if(a!==null)Q(a),a=null;if(r.classList.remove(`${j}-scrollbar--dragging`),Y&&!X)E();document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",d)},L=()=>{if(B)b()},G=()=>{if(!M){if(X=!1,Y)E()}},A=()=>{X=!0,v(),b()},R=()=>{if(X=!1,!M&&Y)E()},g=()=>{if(v(),x!==null)cancelAnimationFrame(x),x=null;if(r.removeEventListener("click",y),r.removeEventListener("mouseenter",A),r.removeEventListener("mouseleave",R),J2.removeEventListener("mousedown",S),J.removeEventListener("mouseenter",L),J.removeEventListener("mouseleave",G),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",d),i){if(i.removeEventListener("mouseenter",A),i.removeEventListener("mouseleave",R),i.parentNode)i.parentNode.removeChild(i)}if(r.parentNode)r.parentNode.removeChild(r)};if(T(),r.addEventListener("click",y),r.addEventListener("mouseenter",A),r.addEventListener("mouseleave",R),J2.addEventListener("mousedown",S),J.addEventListener("mouseenter",L),J.addEventListener("mouseleave",G),i)i.addEventListener("mouseenter",A),i.addEventListener("mouseleave",R);return{show:b,hide:k,updateBounds:l,updatePosition:D,isVisible:()=>p,destroy:g}};var zJ=(J=0)=>{let Q=[,,,,,,,,];for(let $=0;$<8;$++)Q[$]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},T2=(J,Q)=>{let $=performance.now(),j=$-J.lastTime;if(j===0)return J;if(j>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=$,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=$,J}let q=J.samples[J.sampleIndex];if(q.position=Q,q.time=$,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,K=J.samples[Y],U=Q-K.position,V=$-K.time;J.velocity=V>0?U/V:0}return J.lastPosition=Q,J.lastTime=$,J},mJ=(J)=>J.sampleCount>=3,wJ=(J,Q={})=>{let{wheel:$=!0,sensitivity:j=1,smoothing:q=!1,idleTimeout:Y=150,onScroll:K,onIdle:U,scrollElement:V,horizontal:Z=!1}=Q,B=!!V,H=0,W=0,w=B?Z?window.innerWidth:window.innerHeight:Z?J.clientWidth:J.clientHeight,N=Q.compressed??!1,M=Q.compression,X=zJ(),_=!1,F=null,z=R2(()=>{let G=Z?J.scrollLeft:J.scrollTop,A=G>=H?"down":"up";if(X=T2(X,G),H=G,K)K({scrollTop:H,direction:A,velocity:X.velocity});h()}),x=R2(()=>{let G=J.getBoundingClientRect(),A=Z?Math.max(0,-G.left):Math.max(0,-G.top),R=A>=H?"down":"up";if(X=T2(X,A),H=A,!_)_=!0;if(K)K({scrollTop:H,direction:R,velocity:X.velocity});h()}),a=(G)=>{G.preventDefault()},n=(G)=>{if(G.deltaX)return;G.preventDefault(),J.scrollLeft+=G.deltaY},e=(G)=>{if(!N)return;G.preventDefault();let A=(Z?G.deltaX||G.deltaY:G.deltaY)*j,R=H+A;if(q)R=H+A*0.3;if(R=Math.max(0,Math.min(R,W)),R!==H){let P=R>=H?"down":"up";if(X=T2(X,R),H=R,!_)_=!0;if(K)K({scrollTop:H,direction:P,velocity:X.velocity});h()}},h=()=>{if(F)clearTimeout(F);F=setTimeout(()=>{if(_=!1,X=zJ(H),U)U()},Y)},s=(G)=>{if(N)return;if(N=!0,M=G,W=G.virtualSize-w,B)return;if(z.cancel(),J.removeEventListener("scroll",z),!$)J.removeEventListener("wheel",a);else if(Z)J.removeEventListener("wheel",n);if(Z)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",e,{passive:!1});let A=Z?J.scrollLeft:J.scrollTop;if(A>0){let R=Z?M?.actualSize??J.scrollWidth:M?.actualSize??J.scrollHeight;H=A/R*W}if(Z)J.scrollLeft=0;else J.scrollTop=0},r=()=>{if(!N)return;if(N=!1,B){M=void 0;return}if(J.removeEventListener("wheel",e),Z)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",a,{passive:!1});else if(Z)J.addEventListener("wheel",n,{passive:!1});if(M&&H>0){let A=H/W*(M.actualSize-w);if(Z)J.scrollLeft=A;else J.scrollTop=A}M=void 0},J2=()=>{if(B||N)return H;return Z?J.scrollLeft:J.scrollTop},i=(G,A=!1)=>{let R=Math.max(0,Math.min(G,W||1/0));if(B){let g=J.getBoundingClientRect();if(Z){let P=g.left+window.scrollX;window.scrollTo({left:P+R,behavior:A?"smooth":"auto"})}else{let P=g.top+window.scrollY;window.scrollTo({top:P+R,behavior:A?"smooth":"auto"})}}else if(N){if(R===H)return;let P=R>=H?"down":"up";if(X=T2(X,R),H=R,!_)_=!0;if(K)K({scrollTop:H,direction:P,velocity:X.velocity});h()}else if(Z)J.scrollTo({left:R,behavior:A?"smooth":"auto"});else J.scrollTo({top:R,behavior:A?"smooth":"auto"})},T=(G)=>{i(J2()+G)},v=()=>{return J2()<=0},E=(G=0)=>{let A=J2(),R=B||N?W:Z?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return A>=R-G},b=()=>{let G=J2(),A=B||N?W:Z?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(A<=0)return 0;return Math.min(1,Math.max(0,G/A))},k=(G)=>{if(G.compression)M=G.compression,W=M.virtualSize-w},l=()=>N,D=()=>Math.abs(X.velocity),y=()=>mJ(X),S=()=>_,I=()=>B,d=(G)=>{if(w=G,M)W=M.virtualSize-w},L=()=>{if(F)clearTimeout(F);if(B)x.cancel(),window.removeEventListener("scroll",x);else z.cancel(),J.removeEventListener("scroll",z),J.removeEventListener("wheel",e),J.removeEventListener("wheel",a),J.removeEventListener("wheel",n)};if(B){if(N&&M)W=M.virtualSize-w;window.addEventListener("scroll",x,{passive:!0})}else if(N&&M){if(W=M.virtualSize-w,Z)J.style.overflowX="hidden";else J.style.overflow="hidden";if($)J.addEventListener("wheel",e,{passive:!1})}else{if(Z)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",z,{passive:!0}),!$)J.addEventListener("wheel",a,{passive:!1});else if(Z)J.addEventListener("wheel",n,{passive:!1})}return{getScrollTop:J2,scrollTo:i,scrollBy:T,isAtTop:v,isAtBottom:E,getScrollPercentage:b,getVelocity:D,isTracking:y,isScrolling:S,updateConfig:k,enableCompression:s,disableCompression:r,isCompressed:l,isWindowMode:I,updateContainerHeight:d,destroy:L}},R2=(J)=>{let Q=null,$=null,j=(...q)=>{if($=q,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,$)J(...$)})};return j.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},j};var dJ=50,cJ=0.1;function rJ(J){let Q=0,$=0,j=0;function q(){return j>0?$/j:0}function Y(V){if(Q=V,V>cJ&&V<dJ)$+=V,j++}function K(){let V=J.getTotal();if(V===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let B=J.getContainerSize();if(B<=0)return 0;let H=J.getScrollPosition(),W=typeof J.getColumns==="function"?J.getColumns():1,N=Math.ceil(V/W)*Z,X=Math.min(N,Z2)-B,_=N-B,F=X>0?_/X:1,C=H*F,z=Math.ceil((C+B)/Z);return Math.min(z*W,V)}function U(){let V=J.getTotal(),Z=K();return{progress:V>0?Math.min(100,Math.max(0,Z/V*100)):0,velocity:Q,velocityAvg:q(),itemCount:Z,total:V}}return{getState:U,onVelocity:Y}}export{LJ as toggleSelection,a2 as simpleVisibleRange,C2 as selectItems,FJ as selectAll,QJ as rangesEqual,R2 as rafThrottle,BJ as needsScaling,b2 as mergeRanges,HJ as isSelected,_2 as isPlaceholderItem,$J as isInRange,O2 as isGroupHeader,RJ as getSelectedItems,TJ as getSelectedIds,M2 as getScaleState,ZJ as getScaleInfo,M2 as getScale,jJ as getRangeCount,NJ as getMaxItemsWithoutScaling,f2 as filterPlaceholders,YJ as diffRanges,S2 as deselectItems,WJ as createTableRenderer,VJ as createTableLayout,MJ as createTableHeader,m2 as createStickyHeader,rJ as createStats,F2 as createSparseStorage,V2 as createSizeCache,AJ as createSelectionState,kJ as createScrollbar,wJ as createScrollController,H2 as createPlaceholderManager,d2 as createMeasuredSizeCache,EJ as createMasonryRenderer,OJ as createMasonryLayout,g2 as createGroupedSizeFn,u2 as createGroupLayout,_J as createGridRenderer,DJ as createGridLayout,yJ as createEmitter,PJ as createAsyncManager,bJ as clearSelection,e2 as clampScrollPosition,n2 as calculateTotalSize,JJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,XJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,s2 as calculateRenderRange,W2 as calculateMissingRanges,t2 as calculateItemOffset,UJ as calculateIndexFromScrollPosition,i2 as calculateActualSize,h2 as buildLayoutItems,Z2 as MAX_VIRTUAL_SIZE};
@@ -39,6 +39,8 @@ export interface CompressionContext {
39
39
  totalItems: number;
40
40
  containerSize: number;
41
41
  rangeStart: number;
42
+ /** Pre-computed compression state (includes force flag) */
43
+ compression?: CompressionState;
42
44
  }
43
45
  /** DOM structure created by createDOMStructure */
44
46
  export interface DOMStructure {
@@ -33,8 +33,14 @@ export interface CompressionState {
33
33
  /**
34
34
  * Calculate compression state for a list
35
35
  * Pure function - no side effects
36
+ *
37
+ * @param _totalItems - Total number of items
38
+ * @param sizeCache - Size cache for item sizes/offsets
39
+ * @param force - When true, enables compressed mode even if total size is under the limit.
40
+ * Useful for testing, consistent UX, or preemptively enabling compression
41
+ * before the list grows past the browser limit.
36
42
  */
37
- export declare const getCompressionState: (_totalItems: number, sizeCache: SizeCache) => CompressionState;
43
+ export declare const getCompressionState: (_totalItems: number, sizeCache: SizeCache, force?: boolean) => CompressionState;
38
44
  /**
39
45
  * Calculate visible range with compression support
40
46
  * Pure function - no side effects
@@ -111,5 +117,5 @@ export declare const getMaxItemsWithoutCompression: (itemSize: number) => number
111
117
  * Get human-readable compression info for debugging
112
118
  * Pure function - no side effects
113
119
  */
114
- export declare const getCompressionInfo: (totalItems: number, sizeCache: SizeCache) => string;
120
+ export declare const getCompressionInfo: (totalItems: number, sizeCache: SizeCache, force?: boolean) => string;
115
121
  //# sourceMappingURL=scale.d.ts.map
package/dist/vlist.css CHANGED
@@ -1 +1 @@
1
- @keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}[data-theme-mode="light"]{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]){--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}}.dark{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}.vlist--scrolling .vlist-sticky-header{transition:none}.vlist--grid .vlist-items{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry .vlist-items{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:var(--vlist-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}
1
+ @keyframes vlist-fade-in{from{opacity:0.6}to{opacity:1}}@keyframes vlist-placeholder-pulse{0%,100%{opacity:0.6}50%{opacity:0.4}}:root{--vlist-bg:#ffffff;--vlist-bg-hover:#f9fafb;--vlist-bg-selected:#dbeafe;--vlist-bg-selected-hover:#eff6ff;--vlist-border:#e5e7eb;--vlist-border-selected:#3b82f6;--vlist-text:#111827;--vlist-text-muted:#6b7280;--vlist-focus-ring:#3b82f6;--vlist-scrollbar-thumb:#d1d5db;--vlist-scrollbar-thumb-hover:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-track-bg:transparent;--vlist-scrollbar-custom-thumb-bg:rgba(0,0,0,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(0,0,0,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-item-padding-x:1rem;--vlist-item-padding-y:0.75rem;--vlist-border-radius:0.5rem;--vlist-transition-duration:150ms;--vlist-transition-timing:ease-in-out;--vlist-placeholder-bg:rgba(0,0,0,0.2)}[data-theme-mode="dark"]{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3)}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]){--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}}.dark{--vlist-bg:#111827;--vlist-bg-hover:#1f2937;--vlist-bg-selected:rgba(59,130,246,0.3);--vlist-bg-selected-hover:rgba(59,130,246,0.2);--vlist-border:#374151;--vlist-border-selected:#3b82f6;--vlist-text:#f9fafb;--vlist-text-muted:#9ca3af;--vlist-scrollbar-width:8px;--vlist-scrollbar-thumb:#4b5563;--vlist-scrollbar-thumb-hover:#6b7280;--vlist-scrollbar-custom-thumb-bg:rgba(255,255,255,0.3);--vlist-scrollbar-custom-thumb-hover-bg:rgba(255,255,255,0.5);--vlist-scrollbar-custom-thumb-radius:4px;--vlist-placeholder-bg:rgba(255,255,255,0.3);--vlist-group-header-bg:#1e2433}.vlist{position:relative;width:100%;height:100%;overflow:hidden;background-color:var(--vlist-bg);color:var(--vlist-text);color-scheme:light;border:1px solid var(--vlist-border);border-radius:var(--vlist-border-radius);outline:none}[data-theme-mode="dark"] .vlist,.dark .vlist{color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme-mode="light"]) .vlist{color-scheme:dark}}.vlist:focus{outline:none}.vlist:focus-visible{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px}.vlist:has(.vlist-item--focused):focus-visible{outline:none}.vlist-viewport{width:100%;height:100%;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--vlist-scrollbar-thumb) transparent}.vlist-viewport::-webkit-scrollbar{width:6px;height:6px}.vlist-viewport::-webkit-scrollbar-track{background:transparent}.vlist-viewport::-webkit-scrollbar-thumb{background-color:var(--vlist-scrollbar-thumb);border-radius:3px}.vlist-viewport::-webkit-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-thumb-hover)}.vlist-content{position:relative;width:100%}.vlist-items{position:relative;width:100%;contain:layout style}.vlist-item{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;background-color:var(--vlist-bg);cursor:default;user-select:none;opacity:1;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing),opacity var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;will-change:transform}.vlist--scrolling .vlist-item{transition:none}.vlist--selectable .vlist-item{cursor:pointer}.vlist--selectable .vlist-item:hover{background-color:var(--vlist-bg-hover)}.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist-item--replaced{animation:fade-in 0.3s ease-out}.vlist-item--placeholder{opacity:0.6;animation:vlist-placeholder-pulse 2s ease-in-out infinite}.vlist-item--selected.vlist-item--focused{outline-color:var(--vlist-border-selected)}.vlist-scrollbar{position:absolute;top:0;right:0;width:var(--vlist-scrollbar-width);height:100%;background-color:var(--vlist-scrollbar-track-bg);opacity:0;transition:opacity 0.2s ease-out;z-index:10;pointer-events:none}.vlist-scrollbar-hover{position:absolute;top:0;right:0;height:100%;z-index:9;pointer-events:auto}.vlist-scrollbar-hover--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:auto}.vlist-scrollbar--visible{opacity:1;pointer-events:auto}.vlist-scrollbar-thumb{position:absolute;top:0;left:0;right:0;width:100%;background-color:var(--vlist-scrollbar-custom-thumb-bg);border-radius:var(--vlist-scrollbar-custom-thumb-radius);cursor:pointer;transition:background-color 0.15s ease-out}.vlist-scrollbar-thumb:hover{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist-scrollbar--dragging{opacity:1;pointer-events:auto}.vlist-scrollbar--dragging .vlist-scrollbar-thumb{background-color:var(--vlist-scrollbar-custom-thumb-hover-bg)}.vlist--grouped .vlist-item[data-id^="__group_header_"]{cursor:default;background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);z-index:1}.vlist--grouped .vlist-item[data-id^="__group_header_"]:hover{background-color:var(--vlist-group-header-bg,#f3f4f6)}.vlist-sticky-header{background-color:var(--vlist-group-header-bg,#f3f4f6);border-bottom:1px solid var(--vlist-border);contain:content}.vlist--scrolling .vlist-sticky-header{transition:none}.vlist--grid .vlist-items{contain:layout style}.vlist-grid-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--grid .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-grid-item{transition:none}.vlist--selectable .vlist-grid-item{cursor:pointer}.vlist--selectable .vlist-grid-item:hover{background-color:var(--vlist-bg-hover)}.vlist-grid-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-grid-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-grid-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--masonry .vlist-items{contain:layout style}.vlist-masonry-item{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--vlist-item-padding-y) var(--vlist-item-padding-x);background-color:var(--vlist-bg);cursor:default;user-select:none;transition:background-color var(--vlist-transition-duration) var(--vlist-transition-timing);contain:content;box-sizing:border-box;overflow:hidden}.vlist--masonry .vlist-item{right:auto;border-bottom:none}.vlist--scrolling .vlist-masonry-item{transition:none}.vlist--selectable .vlist-masonry-item{cursor:pointer}.vlist--selectable .vlist-masonry-item:hover{background-color:var(--vlist-bg-hover)}.vlist-masonry-item.vlist-item--selected{background-color:var(--vlist-bg-selected)}.vlist--selectable .vlist-masonry-item.vlist-item--selected:hover{background-color:var(--vlist-bg-selected-hover)}.vlist-masonry-item.vlist-item--focused{outline:2px solid var(--vlist-focus-ring,#3b82f6);outline-offset:-2px;z-index:1}.vlist--horizontal{overflow:hidden}.vlist--horizontal .vlist-viewport{overflow-x:auto;overflow-y:hidden}.vlist--horizontal .vlist-content{height:100%;width:auto}.vlist--horizontal .vlist-items{height:100%;width:auto}.vlist--horizontal .vlist-item{position:absolute;top:0;bottom:0;left:0;right:auto;display:flex;align-items:center;justify-content:center;border-bottom:none;border-right:1px solid var(--vlist-border)}.vlist-scrollbar--horizontal{top:auto;right:auto;bottom:0;left:0;width:100%;height:var(--vlist-scrollbar-width)}.vlist-scrollbar--horizontal .vlist-scrollbar-thumb{top:0;left:0;width:auto;height:100%}.vlist-viewport--custom-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--custom-scrollbar::-webkit-scrollbar{display:none}.vlist-viewport--no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.vlist-viewport--no-scrollbar::-webkit-scrollbar{display:none}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floor/vlist",
3
- "version": "1.3.6",
3
+ "version": "1.3.8",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",