vlist 1.9.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.github.md +104 -97
- package/README.md +46 -33
- package/dist/constants.d.ts +11 -6
- package/dist/core/create.d.ts +10 -0
- package/dist/core/dom.d.ts +8 -0
- package/dist/core/hooks.d.ts +16 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/pipeline.d.ts +51 -0
- package/dist/core/pool.d.ts +9 -0
- package/dist/core/scroll.d.ts +32 -0
- package/dist/core/sizes.d.ts +8 -0
- package/dist/core/state.d.ts +47 -0
- package/dist/core/types.d.ts +187 -0
- package/dist/{builder → core}/velocity.d.ts +1 -1
- package/dist/index.d.ts +28 -19
- package/dist/index.js +1 -1
- package/dist/internals.d.ts +11 -7
- package/dist/internals.js +1 -1
- package/dist/plugins/a11y/index.d.ts +2 -0
- package/dist/plugins/a11y/plugin.d.ts +13 -0
- package/dist/{features → plugins}/async/index.d.ts +1 -1
- package/dist/{features → plugins}/async/manager.d.ts +5 -1
- package/dist/plugins/async/plugin.d.ts +48 -0
- package/dist/plugins/autosize/index.d.ts +5 -0
- package/dist/plugins/autosize/plugin.d.ts +19 -0
- package/dist/plugins/grid/index.d.ts +7 -0
- package/dist/plugins/grid/plugin.d.ts +23 -0
- package/dist/{features → plugins}/groups/index.d.ts +1 -1
- package/dist/plugins/groups/plugin.d.ts +22 -0
- package/dist/plugins/masonry/index.d.ts +8 -0
- package/dist/plugins/masonry/plugin.d.ts +32 -0
- package/dist/plugins/page/index.d.ts +5 -0
- package/dist/plugins/page/plugin.d.ts +21 -0
- package/dist/plugins/scale/index.d.ts +5 -0
- package/dist/plugins/scale/plugin.d.ts +24 -0
- package/dist/plugins/scrollbar/index.d.ts +7 -0
- package/dist/plugins/scrollbar/plugin.d.ts +20 -0
- package/dist/plugins/selection/index.d.ts +6 -0
- package/dist/plugins/selection/plugin.d.ts +16 -0
- package/dist/{features → plugins}/selection/state.d.ts +8 -0
- package/dist/plugins/snapshots/index.d.ts +5 -0
- package/dist/plugins/snapshots/plugin.d.ts +17 -0
- package/dist/plugins/sortable/index.d.ts +6 -0
- package/dist/plugins/sortable/plugin.d.ts +34 -0
- package/dist/{features → plugins}/table/index.d.ts +1 -1
- package/dist/plugins/table/plugin.d.ts +20 -0
- package/dist/plugins/transition/index.d.ts +5 -0
- package/dist/plugins/transition/plugin.d.ts +22 -0
- package/dist/size.json +1 -1
- package/dist/utils/padding.d.ts +2 -4
- package/dist/vlist-grid.css +1 -1
- package/dist/vlist-masonry.css +1 -1
- package/dist/vlist-table.css +1 -1
- package/dist/vlist.css +1 -1
- package/package.json +9 -4
- package/dist/builder/a11y.d.ts +0 -16
- package/dist/builder/api.d.ts +0 -21
- package/dist/builder/context.d.ts +0 -36
- package/dist/builder/core.d.ts +0 -16
- package/dist/builder/data.d.ts +0 -71
- package/dist/builder/dom.d.ts +0 -15
- package/dist/builder/index.d.ts +0 -25
- package/dist/builder/materialize.d.ts +0 -166
- package/dist/builder/pool.d.ts +0 -10
- package/dist/builder/range.d.ts +0 -10
- package/dist/builder/scroll.d.ts +0 -24
- package/dist/builder/types.d.ts +0 -512
- package/dist/features/async/feature.d.ts +0 -72
- package/dist/features/autosize/feature.d.ts +0 -34
- package/dist/features/autosize/index.d.ts +0 -2
- package/dist/features/grid/feature.d.ts +0 -48
- package/dist/features/grid/index.d.ts +0 -9
- package/dist/features/groups/feature.d.ts +0 -75
- package/dist/features/masonry/feature.d.ts +0 -45
- package/dist/features/masonry/index.d.ts +0 -9
- package/dist/features/page/feature.d.ts +0 -109
- package/dist/features/page/index.d.ts +0 -9
- package/dist/features/scale/feature.d.ts +0 -42
- package/dist/features/scale/index.d.ts +0 -10
- package/dist/features/scrollbar/feature.d.ts +0 -81
- package/dist/features/scrollbar/index.d.ts +0 -8
- package/dist/features/selection/feature.d.ts +0 -91
- package/dist/features/selection/index.d.ts +0 -7
- package/dist/features/snapshots/feature.d.ts +0 -79
- package/dist/features/snapshots/index.d.ts +0 -9
- package/dist/features/sortable/feature.d.ts +0 -101
- package/dist/features/sortable/index.d.ts +0 -6
- package/dist/features/table/feature.d.ts +0 -67
- package/dist/features/transition/feature.d.ts +0 -30
- package/dist/features/transition/index.d.ts +0 -9
- /package/dist/{features → plugins}/async/placeholder.d.ts +0 -0
- /package/dist/{features → plugins}/async/sparse.d.ts +0 -0
- /package/dist/{features → plugins}/grid/layout.d.ts +0 -0
- /package/dist/{features → plugins}/grid/renderer.d.ts +0 -0
- /package/dist/{features → plugins}/grid/types.d.ts +0 -0
- /package/dist/{features → plugins}/groups/async-bridge.d.ts +0 -0
- /package/dist/{features → plugins}/groups/layout.d.ts +0 -0
- /package/dist/{features → plugins}/groups/sticky.d.ts +0 -0
- /package/dist/{features → plugins}/groups/types.d.ts +0 -0
- /package/dist/{features → plugins}/masonry/layout.d.ts +0 -0
- /package/dist/{features → plugins}/masonry/renderer.d.ts +0 -0
- /package/dist/{features → plugins}/masonry/types.d.ts +0 -0
- /package/dist/{features → plugins}/scrollbar/controller.d.ts +0 -0
- /package/dist/{features → plugins}/scrollbar/scrollbar.d.ts +0 -0
- /package/dist/{features → plugins}/table/header.d.ts +0 -0
- /package/dist/{features → plugins}/table/layout.d.ts +0 -0
- /package/dist/{features → plugins}/table/renderer.d.ts +0 -0
- /package/dist/{features → plugins}/table/types.d.ts +0 -0
package/dist/internals.d.ts
CHANGED
|
@@ -8,14 +8,18 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @packageDocumentation
|
|
10
10
|
*/
|
|
11
|
-
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, type GroupsConfig, type GroupBoundary, type LayoutEntry, type GroupHeaderItem, type GroupLayout, type StickyHeader, } from "./
|
|
12
|
-
export { createGridLayout,
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
11
|
+
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, type GroupsConfig, type GroupBoundary, type LayoutEntry, type GroupHeaderItem, type GroupLayout, type StickyHeader, } from "./plugins/groups";
|
|
12
|
+
export { createGridLayout, type GridLayout, type GridPosition, type ItemRange, } from "./plugins/grid";
|
|
13
|
+
export { createGridRenderer, type GridRenderer, } from "./plugins/grid/renderer";
|
|
14
|
+
export type { GridConfig } from "./plugins/grid/types";
|
|
15
|
+
export { createTableLayout, createTableHeader, createTableRenderer, type TableConfig, type TableColumn, type TableLayout, type TableHeader, type TableRenderer, type TableRendererInstance, type ResolvedColumn, type ColumnResizeEvent, type ColumnSortEvent, type ColumnClickEvent, } from "./plugins/table";
|
|
16
|
+
export { createMasonryLayout, createMasonryRenderer, type MasonryConfig, type MasonryLayout, type MasonryRenderer, type GetItemFn, type ItemPlacement, } from "./plugins/masonry";
|
|
15
17
|
export { createSizeCache, type SizeCache, createMeasuredSizeCache, type MeasuredSizeCache, simpleVisibleRange, calculateRenderRange, calculateTotalSize, calculateActualSize, calculateItemOffset, calculateScrollToIndex, clampScrollPosition, rangesEqual, isInRange, getRangeCount, diffRanges, MAX_VIRTUAL_SIZE, getCompressionState as getScaleState, getCompression as getScale, needsCompression as needsScaling, getMaxItemsWithoutCompression as getMaxItemsWithoutScaling, getCompressionInfo as getScaleInfo, calculateCompressedVisibleRange as calculateScaledVisibleRange, calculateCompressedRenderRange as calculateScaledRenderRange, calculateCompressedItemPosition as calculateScaledItemPosition, calculateCompressedScrollToIndex as calculateScaledScrollToIndex, calculateIndexFromScrollPosition, type CompressionState as ScaleState, } from "./rendering";
|
|
16
|
-
export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds,
|
|
18
|
+
export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds, } from "./plugins/selection";
|
|
19
|
+
export { getSelectedItemsImmutable as getSelectedItems } from "./plugins/selection/state";
|
|
17
20
|
export { createEmitter, type Emitter } from "./events";
|
|
18
|
-
export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, type DataManager as AsyncManager, type SparseStorage, type PlaceholderManager, } from "./
|
|
19
|
-
export { createScrollController, createScrollbar, rafThrottle, type ScrollController, type Scrollbar, } from "./
|
|
21
|
+
export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, type DataManager as AsyncManager, type SparseStorage, type PlaceholderManager, } from "./plugins/async";
|
|
22
|
+
export { createScrollController, createScrollbar, rafThrottle, type ScrollController, type Scrollbar, } from "./plugins/scrollbar";
|
|
23
|
+
export type { ScrollbarConfig } from "./plugins/scrollbar/scrollbar";
|
|
20
24
|
export { createStats, type StatsConfig, type StatsState, type Stats, } from "./utils/stats";
|
|
21
25
|
//# sourceMappingURL=internals.d.ts.map
|
package/dist/internals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var P2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var S2=(J,Q)=>{let Y=0,$=J.length-1;while(Y<$){let B=Y+$+1>>>1;if(J[B].headerLayoutIndex<=Q)Y=B;else $=B-1}return Y},d2=(J,Q)=>{let Y=0,$=J.length-1;while(Y<$){let B=Y+$+1>>>1;if(J[B].firstDataIndex<=Q)Y=B;else $=B-1}return Y},c2=(J,Q,Y)=>{if(J===0)return[];let $=[],B=Q(0,Y?.(0)),j=0,q=0;for(let O=1;O<J;O++){let y=Q(O,Y?.(O));if(y!==B){let M=O-j;$.push({key:B,groupIndex:$.length,headerLayoutIndex:q,firstDataIndex:j,count:M}),q=q+1+M,B=y,j=O}}return $.push({key:B,groupIndex:$.length,headerLayoutIndex:q,firstDataIndex:j,count:J-j}),$},r2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let Y=J.length+Q.length,$=Array(Y),B=0;for(let j of Q){$[B]={id:`__group_header_${j.groupIndex}`,__groupHeader:!0,groupKey:j.key,groupIndex:j.groupIndex},B++;for(let q=0;q<j.count;q++)$[B]=J[j.firstDataIndex+q],B++}return $},l2=(J,Q,Y=!1)=>{let $=typeof Q==="number"?(B)=>Q:Q;return(B)=>{let j=J.getEntry(B);if(j.type==="header"){if(Y&&j.group.groupIndex===0)return 0;return J.getHeaderHeight(j.group.groupIndex)}return $(j.dataIndex)}},a2=(J,Q,Y)=>{let $=c2(J,Q.getGroupForIndex,Y),B=J+$.length,j=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return B},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 _=S2($,L),W=$[_];if(L===W.headerLayoutIndex)return{type:"header",group:W};let X=L-W.headerLayoutIndex-1;return{type:"item",dataIndex:W.firstDataIndex+X,group:W}},layoutToDataIndex:(L)=>{if($.length===0)return L;let _=S2($,L),W=$[_];if(L===W.headerLayoutIndex)return-1;let X=L-W.headerLayoutIndex-1;return W.firstDataIndex+X},dataToLayoutIndex:(L)=>{if($.length===0)return L;let _=d2($,L),W=$[_],X=L-W.firstDataIndex;return W.headerLayoutIndex+1+X},getGroupAtLayoutIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=S2($,L);return $[_]},getGroupAtDataIndex:(L)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let _=d2($,L);return $[_]},getHeaderHeight:typeof j==="number"?(L)=>j:(L)=>{let _=$[L];if(!_)return 0;return j(_.key,L)},rebuild:(L,_)=>{$=c2(L,Q.getGroupForIndex,_??Y),B=L+$.length}}};var IJ=(J,Q,Y,$,B=0)=>{let j=Y?"width":"height",q=document.createElement("div");return q.className=`${Q}-sticky-header`,q.setAttribute("role","presentation"),q.setAttribute("aria-hidden","true"),q.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(Y?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`),q.style[j]=`${$}px`,J.insertBefore(q,J.firstChild),q},s2=(J,Q,Y,$,B,j=!1,q=0,O,y)=>{let M=j?"width":"height",V=j?"height":"width",z=j?"X":"Y",v=(F,Z)=>{F.style[M]=`${Z}px`},L=y??IJ(J,B,j,0,q),_=()=>{let F=document.createElement("div");return F.className="sticky-group",F.style.position="absolute",F.style.willChange="transform",F.style[V]="100%",F},W=_(),X=_();L.append(W,X);let E=W,P=X,w=Q.groups,C=[],p=[],l=[],c=0,t=()=>{w=Q.groups,c=w.length,C=Array(c),p=Array(c),l=Array(c);let F=O?O():1;for(let Z=0;Z<c;Z++)C[Z]=Y.getOffset(w[Z].headerLayoutIndex)*F,p[Z]=Q.getHeaderHeight(Z),l[Z]=p[Z]*F};t();let J2=-1,e=0,Q2=0,B2=-1,Y2=!1,u=0,m=!1,$2=(F,Z)=>{$(F,Z);let b=p[Z];return v(F,b),b},A=(F)=>{F.replaceChildren(),F.style.transform=""},U=(F)=>{if(F===J2)return;if(J2=F,e=0,Q2=0,F<0||F>=c){A(E);return}e=$2(E,F),Q2=l[F],v(L,e),E.style.transform=""},N=(F)=>{if(F===u)return;u=F;let Z=Math.round(F);E.style.transform=`translate${z}(${Z}px)`,P.style.transform=`translate${z}(${Z+e}px)`},D=()=>{u=0,E.style.transform="",P.style.transform=""},f=()=>{if(!m)return;let F=E;E=P,P=F,J2=B2,e=J2>=0?p[J2]:0,Q2=J2>=0?l[J2]:0,v(L,e),A(P),B2=-1,m=!1,D()},a=()=>{if(!m)return;A(P),B2=-1,m=!1,D()},r=!!y,s=()=>{if(Y2)return;if(Y2=!0,r)L.style.visibility="";else L.style.display=""},K=()=>{if(!Y2)return;if(Y2=!1,r)L.style.visibility="hidden";else L.style.display="none";A(E),J2=-1,e=0,Q2=0,a()},T=(F)=>{if(c===0){K();return}if(F<C[0]){K();return}let Z=0,b=c-1;while(Z<b){let x=Z+b+1>>>1;if(C[x]+l[x]<=F)Z=x;else b=x-1}if(!Y2)s();U(Z);let R=Z+1;if(R<c){let x=C[R]-F;if(x<=0&&x>-Q2){if(B2!==R||!m)B2=R,$2(P,R),m=!0;let I=Q2>0?x/Q2*e:x;N(I)}else if(x<=-Q2){if(m)f()}else if(m)a()}else if(m)a()},G=()=>{t();let F=J2;if(J2=-1,e=0,Q2=0,F>=0)U(F)},k=()=>{L.remove(),J2=-1,e=0,Q2=0,B2=-1,Y2=!1,m=!1};if(!y)L.style.display="none";return{update:T,refresh:G,show:s,hide:K,destroy:k}};var n2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,$=J.isHeaderFn,B={row:0,col:0},j=(_)=>{if(_<=0)return 0;if(!$)return Math.ceil(_/Q);let W=0,X=0,E=0;for(let P=0;P<_;P++)if($(P)){if(E++,X)W++,X=0;W++,X=0}else if(X++,X>=Q)W++,X=0;if(X)W++;return W},q=(_)=>{return B.row=O(_),B.col=y(_),B},O=(_)=>{if(!$)return Math.floor(_/Q);let W=0,X=0;for(let E=0;E<=_;E++)if($(E)){if(X)W++,X=0;if(E===_)return W;W++,X=0}else{if(E===_)return W;if(X++,X>=Q)W++,X=0}return console.warn(`⚠️ getRow(${_}) fell through - returning ${W}`),W},y=(_)=>{if(!$)return _%Q;if($(_))return 0;let W=0;for(let X=0;X<=_;X++)if($(X))W=0;else{if(X===_)return W;if(W++,W>=Q)W=0}return W},M=(_,W,X)=>{if(X<=0)return{start:0,end:-1};if(!$){let p=Math.max(0,_*Q),l=Math.min(X-1,(W+1)*Q-1);return{start:p,end:l}}let E=-1,P=-1,w=0,C=0;for(let p=0;p<X;p++){if($(p)){if(C)w++,C=0;if(w>=_&&w<=W){if(E<0)E=p;P=p}w++,C=0}else{if(w>=_&&w<=W){if(E<0)E=p;P=p}if(C++,C>=Q)w++,C=0}if(w>W&&!C)break}if(E<0)return{start:0,end:-1};return{start:E,end:P}},V=(_,W,X)=>{if(W<0||W>=Q)return-1;let E=_*Q+W;if(E<0||E>=X)return-1;return E},z=(_)=>{let W=(Q-1)*Y;return Math.max(0,(_-W)/Q)};return{get columns(){return Q},get gap(){return Y},update:(_)=>{if(_.columns!==void 0)Q=Math.max(1,Math.floor(_.columns));if(_.gap!==void 0)Y=_.gap;if(_.isHeaderFn!==void 0)$=_.isHeaderFn},getTotalRows:j,getPosition:q,getRow:O,getCol:y,getItemRange:M,getItemIndex:V,getColumnWidth:z,getColumnOffset:(_,W)=>{let X=z(W);return _*(X+Y)}}};var G2=16000000;var o2="x",i2=20,I2="_isPlaceholder",E2="__placeholder_";var F2=(J,Q,Y)=>{if(String(Y).startsWith(E2))return!1;let $=E2+Q;if(J.has($))return J.delete($),J.add(Y),!0;return!1},t2=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),p2=(J,Q,Y)=>{if(Y==="none")return J;let $=new Set(J.selected);if(Y==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let B of Q)$.add(B);return{...J,selected:$}},h2=(J,Q)=>{let Y=new Set(J.selected);for(let $ of Q)Y.delete($);return{...J,selected:Y}},e2=(J,Q,Y)=>{if(Y==="none")return J;if(J.selected.has(Q))return h2(J,[Q]);else return p2(J,[Q],Y)},JJ=(J,Q,Y)=>{if(Y!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},QJ=(J)=>({...J,selected:new Set});var $J=(J,Q)=>{return J.selected.has(Q)},YJ=(J)=>{return Array.from(J.selected)},jJ=(J,Q)=>{let Y=[];for(let $ of J.selected){let B=Q($);if(B)Y.push(B)}return Y};var pJ=(J,Q)=>{let Y=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(Y===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),Y-1))},getTotalSize:()=>Y*J,getTotal:()=>Y,rebuild:($)=>{Y=$},isVariable:()=>!1}},hJ=(J,Q)=>{let Y=Q,$=new Float64Array(0),B=(q)=>{Y=q,$=new Float64Array(q+1),$[0]=0;for(let O=0;O<q;O++)$[O+1]=$[O]+J(O)};B(Q);let j=(q)=>{if(Y===0)return 0;if(q<=0)return 0;if(q>=$[Y])return Y-1;let O=0,y=Y-1;while(O<y){let M=O+y+1>>>1;if($[M]<=q)O=M;else y=M-1}return O};return{getOffset:(q)=>{if(q<=0)return 0;if(q>=Y)return $[Y];return $[q]},getSize:(q)=>J(q),indexAtOffset:(q)=>j(q),getTotalSize:()=>$[Y]??0,getTotal:()=>Y,rebuild:(q)=>B(q),isVariable:()=>!0}},R2=(J,Q)=>{if(typeof J==="number")return pJ(J,Q);return hJ(J,Q)},x2=(J,Q,Y,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(Y/J.getSize(0));let B=0,j=0,q=Q;while(q<$&&j<Y)j+=J.getSize(q),B++,q++;return Math.max(1,B)};var y2=(J,Q,Y)=>{let $=Q.getTotalSize(),B=Y===!0||$>G2,j=$>G2?G2:$,q=$>0?j/$:1;return{isCompressed:B,actualSize:$,virtualSize:j,ratio:q}},qJ=(J,Q,Y,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;if(!B.isCompressed||B.ratio===1){let L=Y.indexAtOffset(J),_=Y.indexAtOffset(J+Q);if(_<$-1)_++;return j.start=Math.max(0,L),j.end=Math.min($-1,Math.max(0,_)),j}let{virtualSize:q}=B,O=J/q,y=Y.getTotalSize(),M=O*y,V=Y.indexAtOffset(M),z=x2(Y,Math.max(0,V),Q,$),v=V+z;return j.start=Math.max(0,V),j.end=Math.min($-1,Math.max(0,v)),j},BJ=(J,Q,Y,$)=>{if(Y===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(Y-1,J.end+Q),$},L2=(J,Q,Y,$,B,j,q)=>{if(!j.isCompressed||$===0)return Y.getOffset(J);if(j.ratio===1)return Y.getOffset(J)-Q;let{virtualSize:O}=j,y=Q/O,M=Y.getTotalSize(),V=y*M;return Y.getOffset(J)-V},KJ=(J,Q,Y,$,B,j="start")=>{if($===0)return 0;let q;if(B.isCompressed&&B.ratio!==1){q=J/$*B.virtualSize;let V=Q.getSize(J);switch(j){case"center":q-=(Y-V)/2*B.ratio;break;case"end":q-=(Y-V)*B.ratio;break}return Math.max(0,q)}q=Q.getOffset(J);let O=Q.getSize(J);switch(j){case"center":q-=(Y-O)/2;break;case"end":q-=Y-O;break}let y=B.virtualSize-Y;return Math.max(0,Math.min(q,y))},XJ=(J,Q,Y,$)=>{if(Y===0)return 0;if($.isCompressed&&$.ratio!==1){let B=J/$.virtualSize;return Math.floor(B*Y)}return Q.indexAtOffset(J)},UJ=(J,Q)=>{if(typeof Q==="number")return J*Q>G2;return Q.getTotalSize()>G2},NJ=(J)=>{if(J<=0)return 0;return Math.floor(G2/J)},ZJ=(J,Q,Y)=>{let $=y2(J,Q,Y);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 k2=(J,Q,Y)=>{let $=Array.from(Q).sort((q,O)=>q-O);if($.length<=1)return;let B=[];for(let q=0;q<$.length;q++){let O=Y($[q]);if(O)B.push(O)}if(B.length<=1)return;let j=J.firstChild;for(let q=0;q<B.length;q++){let O=B[q];if(O===j)j=j.nextSibling;else J.insertBefore(O,j)}};var xJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-row"),j.removeAttribute("data-col"),Q.push(j)},clear:()=>{Q.length=0}}},gJ=1,_J=(J,Q,Y,$,B,j,q,O,y=!1,M,V)=>{let z=xJ(),v=new Map,L=j,_=!1,W=0,X="",E=-1,P={selected:!1,focused:!1},w=(K,T)=>{return P.selected=K,P.focused=T,P},C=`${B}-item ${B}-grid-item`,p=`${B}-group-header`,l=`${B}-item--selected`,c=`${B}-item--focused`,t=`${B}-item--placeholder`,J2=`${B}-item--replaced`,e=(K,T)=>{if(typeof T==="string")K.innerHTML=T;else K.replaceChildren(T)},Q2=(K,T,G)=>{K.classList.toggle(l,T),K.classList.toggle(c,G)},B2=(K,T)=>{let G=$.getRow(K);if(T?.compression?.isCompressed)return L2(G,T.scrollPosition,Y,T.totalItems,T.containerSize,T.compression,T.rangeStart);return Y.getOffset(G)},Y2=(K,T)=>{let G=$.getCol(K),F=_&&G===0?0:$.getColumnOffset(G,L),Z;if(_){let b=$.getRow(K),R=0,x=-1;for(let I=0;I<K;I++){let d=$.getRow(I);if(d<b&&d!==x){let n=Y.getSize(I);R+=n,x=d}}Z=R}else Z=B2(K,T);if(y)return`translate(${Math.round(Z)}px, ${Math.round(F)}px)`;return`translate(${Math.round(F)}px, ${Math.round(Z)}px)`},u=(K,T)=>{let G=K.classList.contains(p),k=G?L:$.getColumnWidth(L),F;if(_||G)F=Y.getSize(T)-$.gap;else{let Z=$.getRow(T);F=Y.getSize(Z)-$.gap}if(y)K.style.width=`${F}px`,K.style.height=`${k}px`;else K.style.width=`${k}px`,K.style.height=`${F}px`},m=(K,T,G,k,F)=>{let Z=z.acquire(),b=!!T.__groupHeader,R=w(G,k);if(Z.className=b?p:C,Z.dataset.index=String(K),Z.dataset.id=String(T.id),Z.dataset.row=String($.getRow(K)),Z.dataset.col=String($.getCol(K)),b)Z.setAttribute("role","presentation"),Z.removeAttribute("aria-selected"),Z.removeAttribute("aria-setsize"),Z.removeAttribute("aria-posinset"),Z.removeAttribute("id");else if(V!==!1){if(Z.setAttribute("role","option"),Z.ariaSelected=String(G),O)Z.id=`${O}-item-${K}`;if(q){let d=q();if(d!==E)E=d,X=String(d);Z.setAttribute("aria-setsize",X);let n=M?M(K):K+1;Z.setAttribute("aria-posinset",String(n))}}else if(Z.setAttribute("role","listitem"),Z.removeAttribute("aria-selected"),q){let d=q();if(d!==E)E=d,X=String(d);Z.setAttribute("aria-setsize",X);let n=M?M(K):K+1;Z.setAttribute("aria-posinset",String(n))}u(Z,K);let x=Q(T,K,R);if(e(Z,x),String(T.id).startsWith(E2))Z.classList.add(t);return Q2(Z,G,k),Z.style.transform=F,{element:Z,lastItemId:T.id,lastSelected:G,lastFocused:k,lastTransform:F,lastSeenFrame:W}},$2=(K,T,G,k,F)=>{if(W++,T.start===0&&K.length)_=P2(K[0]);for(let[R,x]of v)if(R>=T.start&&R<=T.end)x.lastSeenFrame=W;else if(W-x.lastSeenFrame>gJ)z.release(x.element),v.delete(R);let Z=!1;if(q){let R=q();if(R!==E)E=R,X=String(R),Z=!0}let b=null;for(let R=T.start;R<=T.end;R++){let x=R-T.start,I=K[x];if(!I){console.warn(`⚠️ RENDER: Missing item at index ${R} (range: ${T.start}-${T.end}, items.length: ${K.length})`);continue}let d=G.has(I.id),n=R===k,H=v.get(R);if(H){let S=H.lastItemId!==I.id,h=H.lastSelected!==d,j2=H.lastFocused!==n;if(S){let q2=String(H.lastItemId),K2=String(I.id),_2=q2.startsWith(E2),g=K2.startsWith(E2);if(!g&&F2(G,R,I.id))d=!0;let U2=w(d,n),D2=Q(I,R,U2);if(e(H.element,D2),H.element.dataset.id=K2,H.element.dataset.row=String($.getRow(R)),H.element.dataset.col=String($.getCol(R)),u(H.element,R),H.element.classList.toggle(t,g),_2&&!g)H.element.classList.add(J2),setTimeout(()=>H.element.classList.remove(J2),300);if(H.lastItemId=I.id,!I.__groupHeader){let X2=M?M(R):R+1;H.element.setAttribute("aria-posinset",String(X2))}}if(S||h||j2)Q2(H.element,d,n),H.element.ariaSelected=String(d),H.lastSelected=d,H.lastFocused=n;let o=Y2(R,F);if(H.lastTransform!==o)H.element.style.transform=o,H.lastTransform=o;if(Z&&!I.__groupHeader)H.element.setAttribute("aria-setsize",X)}else{if(F2(G,R,I.id))d=!0;let S=Y2(R,F),h=m(R,I,d,n,S);if(!b)b=document.createDocumentFragment();b.appendChild(h.element),v.set(R,h)}}if(b)J.appendChild(b)},A=(K)=>{for(let[T,G]of v){let k=Y2(T,K);if(G.lastTransform!==k)G.element.style.transform=k,G.lastTransform=k}},U=(K,T,G,k)=>{let F=v.get(K);if(!F)return;let Z=w(G,k),b=Q(T,K,Z);e(F.element,b),Q2(F.element,G,k),F.element.dataset.id=String(T.id),F.element.ariaSelected=String(G),u(F.element,K),F.lastItemId=T.id,F.lastSelected=G,F.lastFocused=k},N=(K,T,G)=>{let k=v.get(K);if(!k)return;let F=k.lastSelected!==T,Z=k.lastFocused!==G;if(F||Z)Q2(k.element,T,G),k.lastSelected=T,k.lastFocused=G},D=(K)=>{return v.get(K)?.element},f=(K)=>{if(Math.abs(K-L)<1)return;L=K;for(let[T,G]of v){u(G.element,T);let k=Y2(T);G.element.style.transform=k,G.lastTransform=k}},a=()=>{k2(J,v.keys(),(K)=>v.get(K)?.element)},r=()=>{for(let[,K]of v)z.release(K.element);v.clear()};return{render:$2,updatePositions:A,updateItem:U,updateItemClasses:N,getElement:D,sortDOM:a,updateContainerWidth:f,clear:r,destroy:()=>{r(),z.clear()}}};var DJ=(J,Q=50,Y=1/0,$=!0)=>{let B=J,j=[],q=0,O=()=>{j=B.map((X,E)=>({def:X,index:E,width:0,minWidth:uJ(X.minWidth??Q,1),maxWidth:X.maxWidth??Y,resizable:X.resizable??$,offset:0}))},y=(X)=>{if(j.length===0){q=0;return}let E=0,P=0;for(let w=0;w<j.length;w++){let C=j[w],p=C.def;if(p.width!==void 0)C.width=g2(p.width,C.minWidth,C.maxWidth),E+=C.width;else P++}if(P){let C=Math.max(0,X-E)/P;for(let p=0;p<j.length;p++){let l=j[p];if(l.def.width===void 0)l.width=g2(C,l.minWidth,l.maxWidth)}}M()},M=()=>{let X=0;for(let E=0;E<j.length;E++){let P=j[E];P.offset=X,X+=P.width}q=X},V=(X,E)=>{if(X<0||X>=j.length)return 0;let P=j[X];if(!P.resizable)return P.width;let w=g2(E,P.minWidth,P.maxWidth);return P.width=w,M(),w},z=(X)=>{return j[X]},v=(X)=>{if(j.length===0)return;if(X<0)return j[0];if(X>=q)return j[j.length-1];let E=0,P=j.length-1;while(E<P){let w=E+P>>>1,C=j[w];if(X<C.offset)P=w-1;else if(X>=C.offset+C.width)E=w+1;else return C}return j[E]},L=(X)=>{if(X<0||X>=j.length)return 0;return j[X].offset},_=(X)=>{if(X<0||X>=j.length)return 0;return j[X].width},W=(X)=>{B=X,O()};return O(),{get columns(){return j},get totalWidth(){return q},resolve:y,updateColumns:W,resizeColumn:V,getColumn:z,getColumnAtX:v,getColumnOffset:L,getColumnWidth:_}},g2=(J,Q,Y)=>Math.min(Y,Math.max(Q,J)),uJ=(J,Q)=>Math.max(Q,J);var WJ=(J,Q,Y,$,B,j)=>{let q=document.createElement("div");q.setAttribute("role","rowgroup");let O=document.createElement("div");O.className=`${Y}-table-header`,O.setAttribute("role","row"),O.setAttribute("aria-rowindex","1"),O.style.height=`${Q}px`;let y=document.createElement("div");y.className=`${Y}-table-header-scroll`,y.setAttribute("role","presentation"),O.appendChild(y),q.appendChild(O),J.insertBefore(q,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let M=[],V=[],z=!0,v=null,L="asc",_=null,W=!1,X=-1,E=0,P=0,w=0,C=(U,N)=>{let D=document.createElement("div");D.className=`${Y}-table-header-cell`,D.setAttribute("role","columnheader"),D.setAttribute("aria-colindex",String(N+1)),D.setAttribute("tabindex",N===0?"0":"-1"),D.dataset.columnKey=U.def.key;let f=U.def.align;if(f==="center")D.classList.add(`${Y}-table-header-cell--center`);else if(f==="right")D.classList.add(`${Y}-table-header-cell--right`);let a=document.createElement("div");a.className=`${Y}-table-header-content`;let r=U.def.header?U.def.header(U.def):U.def.label;if(typeof r==="string")a.textContent=r;else a.appendChild(r);if(D.appendChild(a),U.def.sortable){let s=document.createElement("span");s.className=`${Y}-table-header-sort`,s.setAttribute("aria-hidden","true"),D.appendChild(s),V.push(s),D.classList.add(`${Y}-table-header-cell--sortable`)}else V.push(null);if(U.resizable){let s=document.createElement("div");s.className=`${Y}-table-header-resize`,s.dataset.resizeIndex=String(N),D.appendChild(s)}return D},p=(U)=>{_=U,y.textContent="",M=[],V=[];let N=U.columns;for(let D=0;D<N.length;D++){let f=N[D],a=C(f,D);M.push(a),y.appendChild(a)}if(l(U),v)c(v,L)},l=(U)=>{_=U;let N=U.columns;y.style.width=`${U.totalWidth}px`;for(let D=0;D<M.length&&D<N.length;D++){let f=M[D],a=N[D];f.style.width=`${a.width}px`}},c=(U,N)=>{if(v=U,L=N,!_)return;let D=_.columns;for(let f=0;f<V.length&&f<D.length;f++){let a=V[f];if(!a)continue;if(D[f].def.key===U)a.textContent=N==="asc"?"▲":"▼",a.style.opacity="0.7",M[f].setAttribute("aria-sort",N==="asc"?"ascending":"descending");else a.textContent="",a.style.opacity="0",M[f].removeAttribute("aria-sort")}},t=(U)=>{y.style.transform=`translateX(${-U}px)`},J2=(U)=>{let N=U.target;if(!N.dataset.resizeIndex)return;if(U.preventDefault(),U.stopPropagation(),X=+N.dataset.resizeIndex,!_)return;let D=_.getColumn(X);if(!D?.resizable)return;W=!0,E=U.clientX,P=D.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",N.classList.add(`${Y}-table-header-resize--active`),N.setPointerCapture(U.pointerId),N.addEventListener("pointermove",e),N.addEventListener("pointerup",Q2),N.addEventListener("pointercancel",Q2)},e=(U)=>{if(!W||!_)return;let N=U.clientX-E;if(Math.abs(N)<1)return;let D=Math.max(0,P+N);$(X,D)},Q2=(U)=>{if(!W)return;let N=U.target;N.removeEventListener("pointermove",e),N.removeEventListener("pointerup",Q2),N.removeEventListener("pointercancel",Q2);try{N.releasePointerCapture(U.pointerId)}catch{}N.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",W=!1,X=-1},B2=(U)=>{let N=U.target;if(N.dataset.resizeIndex)return;if(W)return;let D=N;while(D&&!D.dataset.columnKey)if(D=D.parentElement,D===O||D===null)return;let f=D.dataset.columnKey;if(!_)return;let a=_.columns,r=-1;for(let K=0;K<a.length;K++)if(a[K].def.key===f){r=K;break}if(r===-1)return;let s=a[r];if(j)j({key:f,index:r,event:U});if(s.def.sortable&&B){let K;if(v===f)K=L==="asc"?"desc":null;else K="asc";B({key:f,index:r,direction:K})}},Y2=(U)=>{if(U<0||U>=M.length)return;M[w]?.setAttribute("tabindex","-1"),w=U;let N=M[w];N.setAttribute("tabindex","0"),N.focus()},u=(U)=>{let N=U.key;if(N==="ArrowRight"){if(U.ctrlKey||U.metaKey){if(!_)return;let D=_.getColumn(w);if(D?.resizable)$(w,D.width+10),U.preventDefault()}else if(w<M.length-1)Y2(w+1),U.preventDefault();U.stopPropagation();return}if(N==="ArrowLeft"){if(U.ctrlKey||U.metaKey){if(!_)return;let D=_.getColumn(w);if(D?.resizable)$(w,D.width-10),U.preventDefault()}else if(w>0)Y2(w-1),U.preventDefault();U.stopPropagation();return}if(N==="Home"){Y2(0),U.preventDefault(),U.stopPropagation();return}if(N==="End"){Y2(M.length-1),U.preventDefault(),U.stopPropagation();return}if(N==="Enter"||N===" "){if(!_)return;let D=_.getColumn(w);if(D?.def.sortable&&B){let f;if(v===D.def.key)f=L==="asc"?"desc":null;else f="asc";B({key:D.def.key,index:w,direction:f}),U.preventDefault()}U.stopPropagation();return}if(N==="ArrowDown"){J.focus(),U.preventDefault(),U.stopPropagation();return}};return O.addEventListener("pointerdown",J2),O.addEventListener("click",B2),O.addEventListener("keydown",u),{element:O,update:l,updateSort:c,rebuild:p,show:()=>{if(z)return;z=!0,O.style.display=""},hide:()=>{if(!z)return;z=!1,O.style.display="none"},destroy:()=>{O.removeEventListener("pointerdown",J2),O.removeEventListener("click",B2),O.removeEventListener("keydown",u),J.style.removeProperty("--vlist-table-header-height"),q.remove(),M=[],V=[],_=null,z=!1},syncScroll:t}};var mJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},VJ=(J,Q,Y,$,B,j,q,O,y)=>{let M=mJ(),V=new Map,z=-1,v=Y,L=null,_=null,W=null,X=(Z,b)=>{_=Z,W=b},E=(Z,b)=>{b?Z.setAttribute("aria-selected","true"):Z.removeAttribute("aria-selected")},P=(Z,b,R,x)=>{Z.setAttribute("role",b),Z.setAttribute("data-id",String(R)),Z.setAttribute("data-index",String(x))},w=(Z)=>String(Z).startsWith("__placeholder_"),C=`${B}-item ${B}-table-row`,p=`${B}-item--selected`,l=`${B}-item--focused`,c=`${B}-table-cell`,t=`${B}-table-cell--center`,J2=`${B}-table-cell--right`,e=`${B}-item--odd`,Q2=`${B}-item--placeholder`,B2=`${B}-item--replaced`,Y2=`${B}-item ${B}-table-row ${B}-table-group-header`,u=`${B}-table-group-header-content`,m=(Z,b,R,x,I=!1)=>{if(R.def.cell){let d=R.def.cell(b,R.def,x);if(typeof d==="string")Z.innerHTML=d;else Z.replaceChildren(d)}else{let d=b[R.def.key],n=d!=null?String(d):"";if(I&&n)Z.innerHTML=`<span>${n}</span>`;else Z.textContent=n}},$2=(Z,b,R,x,I=!1)=>{let d=C;if(O){if(L){let n=L(b);if(n>=0&&(n&1)===1)d+=` ${e}`}else if((b&1)===1)d+=` ${e}`}if(I)d+=` ${Q2}`;if(R)d+=` ${p}`;if(x)d+=` ${l}`;Z.className=d},A=(Z,b,R)=>{if(R?.compression?.isCompressed)return Math.round(L2(Z,R.scrollPosition,b,R.totalItems,R.containerSize,R.compression,R.rangeStart));return b.getOffset(Z)},U=(Z,b)=>{let R=b.def.align;if(R==="center")Z.classList.add(t),Z.classList.remove(J2);else if(R==="right")Z.classList.add(J2),Z.classList.remove(t);else Z.classList.remove(t,J2)},N=(Z,b)=>{let x=v.columns.length;if(b.length===x)return b;let I=[];for(let d=0;d<x;d++){let n;if(d<b.length)n=b[d];else n=document.createElement("div"),n.className=c,Z.appendChild(n);I.push(n)}for(let d=x;d<b.length;d++)b[d].remove();return I},D=(Z,b,R,x)=>{let I=M.acquire(),d=Z,n=R.getSize(b),H=A(b,R,x);I.style.cssText=`width:${v.totalWidth}px;height:${n}px;transform:translateY(${H}px)`,I.className=Y2,P(I,"presentation",Z.id,b),I.removeAttribute("aria-selected"),I.removeAttribute("aria-rowindex"),I.replaceChildren();let S=document.createElement("div");if(S.className=u,W){let h=W(d.groupKey,d.groupIndex);if(typeof h==="string")S.innerHTML=h;else S.appendChild(h)}return I.appendChild(S),{element:I,cells:[],index:b,isGroupHeader:!0,lastItemId:Z.id,lastSelected:!1,lastFocused:!1,lastOffset:H,lastHeight:n}},f=(Z,b,R,x,I,d)=>{let n=M.acquire(),H=I.getSize(b),S=A(b,I,d),h=w(Z.id);n.style.cssText=`width:${v.totalWidth}px;height:${H}px;transform:translateY(${S}px)`,$2(n,b,R,x,h),P(n,"row",Z.id,b),n.id=`${j}-item-${b}`,n.setAttribute("aria-rowindex",String(b+2)),E(n,R);let j2=N(n,[]),o=v.columns;for(let q2=0;q2<j2.length&&q2<o.length;q2++){let K2=j2[q2],_2=o[q2];K2.style.cssText=`left:${_2.offset}px;width:${_2.width}px`,K2.setAttribute("role","gridcell"),K2.setAttribute("aria-colindex",String(q2+1)),U(K2,_2),m(K2,Z,_2,b,h)}return{element:n,cells:j2,index:b,isGroupHeader:!1,lastItemId:Z.id,lastSelected:R,lastFocused:x,lastOffset:S,lastHeight:H}},a=(Z,b,R,x,I)=>{for(let[h,j2]of V)if(h<b.start||h>b.end)M.release(j2.element),V.delete(h);let d=!1,n=q();if(n!==z)z=n,d=!0;let H=null,S=Q();L=typeof O==="string"&&y?y():null;for(let h=b.start;h<=b.end;h++){let j2=h-b.start,o=Z[j2];if(!o)continue;let q2=R.has(o.id),K2=h===x,_2=_?_(o):!1,g=V.get(h);if(g){if(g.isGroupHeader!==_2){M.release(g.element),V.delete(h);let U2=_2?D(o,h,S,I):f(o,h,q2,K2,S,I);if(V.set(h,U2),!H)H=document.createDocumentFragment();H.appendChild(U2.element);continue}if(_2){if(g.lastItemId!==o.id){let X2=o,V2=g.element.firstElementChild;if(V2&&W){let W2=W(X2.groupKey,X2.groupIndex);if(typeof W2==="string")V2.innerHTML=W2;else V2.replaceChildren(W2)}g.element.setAttribute("data-id",String(o.id)),g.lastItemId=o.id}let D2=A(h,S,I);if(g.lastOffset!==D2)g.lastOffset=D2,g.element.style.transform=`translateY(${D2}px)`;let M2=S.getSize(h);if(g.lastHeight!==M2)g.lastHeight=M2,g.element.style.height=`${M2}px`}else{let U2=g.lastItemId!==o.id,D2=g.lastSelected!==q2,M2=g.lastFocused!==K2;if(U2){let W2=g.lastItemId!=null&&w(g.lastItemId),i=w(o.id);if(!i&&F2(R,h,o.id))q2=!0;let N2=v.columns;for(let Z2=0;Z2<g.cells.length&&Z2<N2.length;Z2++)m(g.cells[Z2],o,N2[Z2],h,i);if($2(g.element,h,q2,K2,i),g.element.setAttribute("data-id",String(o.id)),E(g.element,q2),W2&&!i)g.element.classList.add(B2),setTimeout(()=>{g.element.classList.remove(B2)},300);g.lastItemId=o.id,g.lastSelected=q2,g.lastFocused=K2}else if(D2||M2)$2(g.element,h,q2,K2,w(o.id)),E(g.element,q2),g.lastSelected=q2,g.lastFocused=K2;let X2=A(h,S,I);if(g.lastOffset!==X2)g.lastOffset=X2,g.element.style.transform=`translateY(${X2}px)`;let V2=S.getSize(h);if(g.lastHeight!==V2)g.lastHeight=V2,g.element.style.height=`${V2}px`;if(d)g.element.setAttribute("aria-rowindex",String(h+2))}}else{if(F2(R,h,o.id))q2=!0;let U2=_2?D(o,h,S,I):f(o,h,q2,K2,S,I);if(V.set(h,U2),!H)H=document.createDocumentFragment();H.appendChild(U2.element)}}if(H)J.appendChild(H)},r=(Z)=>{let b=Q();for(let[R,x]of V){let I=A(R,b,Z);if(x.lastOffset!==I)x.lastOffset=I,x.element.style.transform=`translateY(${I}px)`}},s=(Z,b,R,x)=>{let I=V.get(Z);if(!I)return;if(I.isGroupHeader)return;let d=v.columns;for(let n=0;n<I.cells.length&&n<d.length;n++)m(I.cells[n],b,d[n],Z);I.element.setAttribute("data-id",String(b.id)),I.lastItemId=b.id,$2(I.element,Z,R,x),E(I.element,R),I.lastSelected=R,I.lastFocused=x},K=(Z,b,R)=>{let x=V.get(Z);if(!x)return;if(x.isGroupHeader)return;let I=x.lastSelected!==b,d=x.lastFocused!==R;if(I||d)$2(x.element,Z,b,R),E(x.element,b),x.lastSelected=b,x.lastFocused=R},T=(Z)=>{v=Z;let b=Z.columns;for(let[,R]of V)if(R.element.style.width=`${Z.totalWidth}px`,R.cells.length>0)for(let x=0;x<R.cells.length&&x<b.length;x++){let I=R.cells[x],d=b[x];I.style.left=`${d.offset}px`,I.style.width=`${d.width}px`}},G=(Z)=>{return V.get(Z)?.element},k=()=>{for(let[,Z]of V)M.release(Z.element);V.clear(),z=-1};return{render:a,updatePositions:r,updateItem:s,updateItemClasses:K,getElement:G,updateColumnLayout:T,setGroupHeaderFn:X,clear:k,destroy:()=>{k(),M.clear()}}};var MJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,$=J.containerSize,B=0,j=[],q=()=>{let W=(Q-1)*Y;B=Math.max(0,($-W)/Q),j=Array(Q);let X=B+Y;for(let E=0;E<Q;E++)j[E]=E*X};q();let O=[],y=0,M=[],V=(W,X)=>{if(W<=0)return y=0,O=[],[];let E=Array(Q).fill(0),P=Array(Q);for(let p=0;p<Q;p++)P[p]=[];let w=Array(W);for(let p=0;p<W;p++){let l=0,c=E[0];for(let e=1;e<Q;e++){let Q2=E[e];if(Q2<c)c=Q2,l=e}let t=X(p),J2=E[l];w[p]={index:p,x:j[l],y:J2,lane:l,size:t,crossSize:B},P[l].push(p),E[l]=J2+t+Y}O=P;let C=0;for(let p=0;p<Q;p++){let l=E[p],c=l>0?l-Y:0;if(c>C)C=c}return y=C,w},z=(W)=>{if(W.length===0)return y;if(y)return y;let X=Array(Q).fill(0);for(let P of W){let w=P.y+P.size,C=X[P.lane];if(w>C)X[P.lane]=w}let E=0;for(let P=0;P<Q;P++)if(X[P]>E)E=X[P];return E},v=(W,X,E)=>{if(W.length===0||E<=X)return M.length=0,M;if(O.length===0||O.length!==Q)return L(W,X,E);M.length=0;for(let P=0;P<Q;P++){let w=O[P],C=w.length;if(!C)continue;let p=0,l=C;while(p<l){let c=p+l>>>1,t=W[w[c]];if(t.y+t.size<=X)p=c+1;else l=c}for(let c=p;c<C;c++){let t=W[w[c]];if(t.y>=E)break;M.push(t)}}return M},L=(W,X,E)=>{M.length=0;for(let P of W)if(P.y+P.size>X&&P.y<E)M.push(P);return M};return{get columns(){return Q},get gap(){return Y},get containerSize(){return $},update:(W)=>{let X=!1;if(W.columns!==void 0){let E=Math.max(1,Math.floor(W.columns));if(E!==Q)Q=E,X=!0}if(W.gap!==void 0&&W.gap!==Y)Y=W.gap,X=!0;if(W.containerSize!==void 0&&W.containerSize!==$)$=W.containerSize,X=!0;if(X)q()},calculateLayout:V,getTotalSize:z,getVisibleItems:v}};var dJ=(J=200)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:(j)=>{if(j.remove(),Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),j.removeAttribute("data-lane"),Q.push(j)},clear:()=>{Q.length=0}}},cJ=1,GJ=(J,Q,Y,$=!1,B,j,q,O)=>{let y=dJ(),M=new Map,V=new Set,z=0,v="",L=-1,_={selected:!1,focused:!1},W=(u,m)=>{return _.selected=u,_.focused=m,_},X=`${Y}-item ${Y}-masonry-item`,E=`${Y}-group-header`,P=`${Y}-item--selected`,w=`${Y}-item--focused`,C=(u,m)=>{if(typeof m==="string")u.innerHTML=m;else u.replaceChildren(m)},p=(u,m,$2)=>{u.classList.toggle(P,m),u.classList.toggle(w,$2)},l=(u,m)=>{if($)u.style.transform=`translate(${Math.round(m.y)}px, ${Math.round(m.x)}px)`;else u.style.transform=`translate(${Math.round(m.x)}px, ${Math.round(m.y)}px)`},c=(u,m)=>{if($)u.style.width=`${m.size}px`,u.style.height=`${m.crossSize}px`;else u.style.width=`${m.crossSize}px`,u.style.height=`${m.size}px`},t=(u,m,$2,A,U)=>{let N=y.acquire(),D=m.__groupHeader,f=W(A,U);if(N.className=D?E:X,N.dataset.index=String(u),N.dataset.id=String(m.id),N.dataset.lane=String($2.lane),D)N.setAttribute("role","presentation"),N.removeAttribute("aria-selected"),N.removeAttribute("aria-setsize"),N.removeAttribute("aria-posinset"),N.removeAttribute("id");else if(O!==!1){if(N.setAttribute("role","option"),N.ariaSelected=String(A),j)N.id=`${j}-item-${u}`;if(B){let r=B();if(r!==L)L=r,v=String(r);N.setAttribute("aria-setsize",v);let s=q?q(u):u+1;N.setAttribute("aria-posinset",String(s))}}else if(N.setAttribute("role","listitem"),N.removeAttribute("aria-selected"),B){let r=B();if(r!==L)L=r,v=String(r);N.setAttribute("aria-setsize",v);let s=q?q(u):u+1;N.setAttribute("aria-posinset",String(s))}c(N,$2);let a=Q(m,u,f);return C(N,a),p(N,A,U),l(N,$2),{element:N,lastItemId:m.id,lastSelected:A,lastFocused:U,lastY:$2.y,lastX:$2.x,lastSize:$2.size,lastCrossSize:$2.crossSize,lastSeenFrame:z}},J2=(u,m,$2,A)=>{z++,V.clear();for(let N=0;N<m.length;N++)V.add(m[N].index);for(let[N,D]of M)if(V.has(N))D.lastSeenFrame=z;else if(z-D.lastSeenFrame>cJ)y.release(D.element),M.delete(N);let U=null;for(let N=0;N<m.length;N++){let D=m[N],f=D.index,a=u(f);if(!a)continue;let r=$2.has(a.id),s=f===A,K=M.get(f);if(K){let T=K.lastItemId!==a.id,G=K.lastSelected!==r,k=K.lastFocused!==s,F=K.lastY!==D.y||K.lastX!==D.x,Z=K.lastSize!==D.size||K.lastCrossSize!==D.crossSize;if(T){let b=W(r,s),R=Q(a,f,b);if(C(K.element,R),K.element.dataset.id=String(a.id),K.lastItemId=a.id,!a.__groupHeader){let I=q?q(f):f+1;K.element.setAttribute("aria-posinset",String(I))}}if(T||G||k)p(K.element,r,s),K.element.ariaSelected=String(r),K.lastSelected=r,K.lastFocused=s;if(Z)c(K.element,D),K.lastSize=D.size,K.lastCrossSize=D.crossSize;if(F)l(K.element,D),K.lastY=D.y,K.lastX=D.x}else{let T=t(f,a,D,r,s);if(!U)U=document.createDocumentFragment();U.appendChild(T.element),M.set(f,T)}}if(U)J.appendChild(U)},e=()=>{for(let u of M.values())y.release(u.element);M.clear(),J.innerHTML=""};return{render:J2,getElement:(u)=>M.get(u)?.element,updateItemClasses:(u,m,$2)=>{let A=M.get(u);if(!A)return;let U=A.lastSelected!==m,N=A.lastFocused!==$2;if(U||N)p(A.element,m,$2),A.lastSelected=m,A.lastFocused=$2},sortDOM:()=>{k2(J,M.keys(),(u)=>M.get(u)?.element)},clear:e,destroy:()=>{e(),y.clear()}}};var OJ=(J,Q)=>{let Y=new Map,$=(j)=>Y.get(j)??J,B=R2($,Q);return{getOffset(j){return B.getOffset(j)},getSize(j){return $(j)},indexAtOffset(j){return B.indexAtOffset(j)},getTotalSize(){return B.getTotalSize()},getTotal(){return B.getTotal()},rebuild(j){if(j<B.getTotal()){for(let q of Y.keys())if(q>=j)Y.delete(q)}B=R2($,j)},isVariable(){return!0},setMeasuredSize(j,q){Y.set(j,q)},isMeasured(j){return Y.has(j)},getEstimatedSize(){return J},measuredCount(){return Y.size}}};var EJ=(J,Q,Y,$,B,j)=>{if($===0||Q===0)return j.start=0,j.end=-1,j;let q=Y.indexAtOffset(J),O=Y.indexAtOffset(J+Q);if(O<$-1)O++;return j.start=Math.max(0,q),j.end=Math.min($-1,Math.max(0,O)),j},AJ=(J,Q,Y,$)=>{if(Y===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(Y-1,J.end+Q),$},FJ=(J,Q,Y,$,B,j)=>{if($===0)return 0;let q=Math.max(0,Math.min(J,$-1)),O=Q.getOffset(q),y=Q.getSize(q),M=Q.getTotalSize(),V=Math.max(0,M-Y),z;switch(j){case"center":z=O-Y/2+y/2;break;case"end":z=O-Y+y;break;case"start":default:z=O;break}return Math.max(0,Math.min(z,V))},LJ=(J,Q,Y)=>{if(Y&&Y.isCompressed)return Y.virtualSize;return Q.getTotalSize()},HJ=(J,Q)=>{return Q.getTotalSize()},bJ=(J,Q)=>{return Q.getOffset(J)},TJ=(J,Q,Y)=>{let $=Math.max(0,Q-Y);return Math.max(0,Math.min(J,$))};var RJ=(J,Q,Y,$,B="start",j,q=FJ)=>{return q(J,Q,Y,$,j,B)},yJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},PJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},kJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var wJ=(J,Q)=>{let Y=[],$=[];for(let B=J.start;B<=J.end;B++)if(B<Q.start||B>Q.end)$.push(B);for(let B=Q.start;B<=Q.end;B++)if(B<J.start||B>J.end)Y.push(B);return{add:Y,remove:$}};var zJ=()=>{let J={},Q=(j,q)=>{if(!J[j])J[j]=new Set;return J[j].add(q),()=>Y(j,q)},Y=(j,q)=>{J[j]?.delete(q)};return{on:Q,off:Y,emit:(j,q)=>{J[j]?.forEach((O)=>{try{O(q)}catch(y){console.error(`[vlist] Error in event handler for "${String(j)}":`,y)}})},clear:(j)=>{if(j)delete J[j];else for(let q in J)delete J[q]}}};var w2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:Y=5000,evictionBuffer:$=200,onEvict:B}=J,j=new Map,q=0,O=0,y=(A)=>{let U=j.get(A);if(!U)U={items:Array(Q),count:0,lastAccess:Date.now()},j.set(A,U);else U.lastAccess=Date.now();return U},M=(A)=>{return Math.floor(A/Q)},V=(A)=>{return A%Q},z=()=>q,v=(A)=>{q=A},L=(A)=>{if(A<0||A>=q)return;let U=M(A),N=j.get(U);if(!N)return;return N.items[V(A)]},_=(A)=>{if(A<0||A>=q)return!1;let U=M(A),N=j.get(U);if(!N)return!1;return N.items[V(A)]!==void 0},W=(A,U)=>{let N=M(A),D=y(N),f=V(A),a=D.items[f]===void 0;if(D.items[f]=U,a)D.count++,O++;if(A>=q)q=A+1},X=(A,U)=>{for(let N=0;N<U.length;N++){let D=U[N];if(D!==void 0)W(A+N,D)}},E=(A,U)=>{if(A<0||A>q)return;let N=M(A),D=Array.from(j.keys()).filter((K)=>K>=N).sort((K,T)=>K-T),f=[];for(let K of D){let T=j.get(K),G=K*Q;for(let k=0;k<Q;k++){if(T.items[k]===void 0)continue;let F=G+k;if(F<A)continue;f.push({oldIndex:F,item:T.items[k]})}}for(let{oldIndex:K}of f){let T=M(K),G=j.get(T);if(!G)continue;let k=V(K);if(G.items[k]!==void 0){if(G.items[k]=void 0,G.count--,O--,G.count===0)j.delete(T)}}q++;for(let{oldIndex:K,item:T}of f){let G=K+1,k=M(G),F=y(k),Z=V(G);F.items[Z]=T,F.count++,O++}let a=M(A),r=y(a),s=V(A);r.items[s]=U,r.count++,O++},P=(A)=>{if(A<0||A>=q)return!1;let U=M(A),N=j.get(U),D=V(A);if(!(N!==void 0&&N.items[D]!==void 0))return!1;let a=U,r=Array.from(j.keys()).filter((K)=>K>=a).sort((K,T)=>K-T),s=[];for(let K of r){let T=j.get(K),G=K*Q;for(let k=0;k<Q;k++){if(T.items[k]===void 0)continue;let F=G+k;if(F<=A)continue;s.push({oldIndex:F,item:T.items[k]})}}if(N.items[D]=void 0,N.count--,O--,N.count===0)j.delete(U);for(let{oldIndex:K}of s){let T=M(K),G=j.get(T);if(!G)continue;let k=V(K);if(G.items[k]!==void 0){if(G.items[k]=void 0,G.count--,O--,G.count===0)j.delete(T)}}for(let{oldIndex:K,item:T}of s){let G=K-1,k=M(G),F=y(k),Z=V(G);F.items[Z]=T,F.count++,O++}return q--,!0},w=(A,U)=>{let N=[];for(let D=A;D<=U&&D<q;D++)N.push(L(D));return N},C=(A,U)=>{for(let N=A;N<=U&&N<q;N++)if(!_(N))return!1;return!0},p=()=>{let A=[],U=null,N=Array.from(j.keys()).sort((D,f)=>D-f);for(let D of N){let f=j.get(D);if(!f)continue;let a=D*Q;for(let r=0;r<Q;r++){let s=a+r;if(s>=q)break;if(f.items[r]!==void 0)if(U===null)U={start:s,end:s};else if(s===U.end+1)U.end=s;else A.push(U),U={start:s,end:s};else if(U!==null)A.push(U),U=null}}if(U!==null)A.push(U);return A},l=(A,U)=>{let N=[],D=null;for(let f=A;f<=U&&f<q;f++)if(!_(f))if(D===null)D={start:f,end:f};else D.end=f;else if(D!==null)N.push(D),D=null;if(D!==null)N.push(D);return N},c=(A)=>{return j.has(A)},t=(A)=>{let U=j.get(A);if(!U)return!1;let N=A*Q,D=Math.min(Q,q-N);return U.count>=D},J2=(A)=>{let U=j.get(A);if(U)U.lastAccess=Date.now()},e=(A,U)=>{if(A>U||j.size===0)return;let N=Date.now(),D=M(Math.max(0,A)),f=M(Math.min(q-1,U));for(let a=D;a<=f;a++){let r=j.get(a);if(r)r.lastAccess=N}},Q2=(A,U)=>{if(O<=Y)return 0;let N=Math.max(0,A-$),D=Math.min(q-1,U+$),f=M(N),a=M(D),r=0,s=[];for(let[K,T]of j)if(K<f||K>a)r+=T.count,s.push(K),O-=T.count,j.delete(K);if(r>0&&B)B(r,s);return r},B2=()=>{if(O<=Y)return 0;let A=Array.from(j.entries()).sort(([,D],[,f])=>D.lastAccess-f.lastAccess),U=0,N=[];for(let[D,f]of A){if(O<=Y)break;U+=f.count,O-=f.count,N.push(D),j.delete(D)}if(U>0&&B)B(U,N);return U},Y2=()=>{return{totalItems:q,cachedItems:O,cachedChunks:j.size,chunkSize:Q,maxCachedItems:Y,memoryEfficiency:q>0?1-O/q:1}},u=()=>O,m=()=>{j.clear(),O=0};return{chunkSize:Q,maxCachedItems:Y,getTotal:z,setTotal:v,get:L,has:_,set:W,setRange:X,insert:E,delete:P,getRange:w,isRangeLoaded:C,getLoadedRanges:p,findUnloadedRanges:l,getChunkIndex:M,isChunkLoaded:c,isChunkFullyLoaded:t,touchChunk:J2,touchChunksForRange:e,evictDistant:Q2,evictToLimit:B2,getStats:Y2,getCachedCount:u,clear:m,reset:()=>{m(),q=0}}},z2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,B)=>$.start-B.start),Y=[{...Q[0]}];for(let $=1;$<Q.length;$++){let B=Q[$],j=Y[Y.length-1];if(B.start<=j.end+1)j.end=Math.max(j.end,B.end);else Y.push({...B})}return Y},u2=(J,Q,Y)=>{let $=Math.floor(J.start/Y)*Y,B=Math.ceil((J.end+1)/Y)*Y-1,j={start:$,end:B};if(Q.length===0)return[j];let q=[],O=z2(Q),y=j.start;for(let M of O){if(M.end<y)continue;if(M.start>j.end)break;if(M.start>y)q.push({start:y,end:Math.min(M.start-1,j.end)});if(y=M.end+1,y>j.end)break}if(y<=j.end)q.push({start:y,end:j.end});return q};var v2=(J={})=>{let{maskCharacter:Q=o2,maxSampleSize:Y=i2}=J,$=[],B=!1,j=(V)=>{if(B||V.length===0)return;let z=Math.min(V.length,Y);for(let v=0;v<z;v++){let L=V[v];if(!L||typeof L!=="object")continue;let _={},W=!1;for(let[X,E]of Object.entries(L)){if(X.startsWith("_")||X==="id")continue;_[X]=String(E??"").length,W=!0}if(W)$.push(_)}B=!0},q=()=>B,O=(V)=>{let z={id:`${E2}${V}`,[I2]:!0,_index:V};if($.length===0)return z.label=Q.repeat(12),z;let v=$[V%$.length];for(let[L,_]of Object.entries(v))z[L]=Q.repeat(Math.max(1,_));return z};return{analyzeStructure:j,hasAnalyzedStructure:q,generate:O,generateRange:(V,z)=>{let v=[];for(let L=V;L<=z;L++)v.push(O(L));return v},clear:()=>{$=[],B=!1}}},A2=(J)=>{if(!J||typeof J!=="object")return!1;return J[I2]===!0},m2=(J)=>{return J.filter((Q)=>!A2(Q))};var lJ=50,vJ=(J={})=>{let{adapter:Q,initialItems:Y,initialTotal:$,storage:B,placeholder:j,pageSize:q=lJ,onStateChange:O,onItemsLoaded:y,onItemsEvicted:M}=J,V=w2({...B,onEvict:(H,S)=>{M?.(H),c()}}),z=null,v=()=>{if(!z)z=v2(j);return z},L=new Map,_=!1,W,X=!0,E,P,w=[],C=0,p=new Map,l=()=>{for(let H of p.values())H[1].abort();p.clear()},c=()=>{O?.($2())},t=()=>{L.clear();let H=V.getLoadedRanges();for(let S of H)for(let h=S.start;h<=S.end;h++){let j2=V.get(h);if(j2&&!A2(j2))L.set(j2.id,h)}},J2=(H,S)=>{if(!A2(S))L.set(S.id,H)},e=(H)=>{L.delete(H)},Q2=(H,S)=>{return`${H}-${S}`},B2=()=>V.getTotal(),Y2=()=>V.getCachedCount(),u=()=>_,m=()=>X,$2=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:_,pendingRanges:w,error:W,hasMore:X,cursor:E}),A=()=>V,U=()=>v(),N=(H)=>{let S=V.get(H);if(S!==void 0)return S;if(H>=0&&H<V.getTotal())return v().generate(H);return},D=(H)=>{let S=L.get(H);if(S===void 0)return;return V.get(S)},f=(H)=>{return L.get(H)??-1},a=(H)=>{let S=V.get(H);return S!==void 0&&!A2(S)},r=(H,S)=>{let h=[],j2=V.getTotal();V.touchChunksForRange(H,Math.min(S,j2-1));for(let o=H;o<=S&&o<j2;o++){let q2=V.get(o);if(q2!==void 0)h.push(q2);else h.push(v().generate(o))}return h},s=(H)=>{V.setTotal(H),X=V.getCachedCount()<H,c()},K=(H,S=0,h)=>{if(Q&&H.length>0){let j2=v();if(!j2.hasAnalyzedStructure())j2.analyzeStructure(H)}for(let j2=0;j2<H.length;j2++){let o=H[j2];if(o!==void 0){let q2=S+j2;V.set(q2,o),J2(q2,o)}}if(h!==void 0)V.setTotal(h);else if(S+H.length>V.getTotal())V.setTotal(S+H.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)X=!1;c(),y?.(H,S,V.getTotal())},T=(H,S)=>{let h=V.get(H);if(!h)return!1;let j2=h.id,o={...h,...S};if(V.set(H,o),S.id!==void 0&&S.id!==j2)e(j2);return J2(H,o),c(),!0},G=(H,S)=>{V.insert(S,H),t(),l(),c()},k=(H)=>{let S=L.get(H);if(S===void 0)return!1;if(!V.delete(S))return!1;return t(),l(),c(),!0},F=async(H,S)=>{if(!Q)return;let h=V.chunkSize,j2=Math.floor(H/h),o=Math.floor(S/h),q2=h*2;for(let[g,U2]of p){let D2=g.indexOf("-"),M2=parseInt(g.slice(0,D2),10);if(Math.abs(M2-H)>q2)U2[1].abort(),p.delete(g)}let K2=[],_2=[];for(let g=j2;g<=o;g++){let U2=g*h,D2=U2+h-1,M2=Q2(U2,D2);if(V.isChunkFullyLoaded(g))continue;let V2=p.get(M2);if(V2)_2.push(V2[0]);else K2.push({start:U2,end:D2})}if(K2.length===0)return;for(let g of K2){let U2=Q2(g.start,g.end),D2=new AbortController,M2=(async()=>{w.push(g),_=!0,W=void 0,c();try{let X2=g.end-g.start+1,V2={offset:g.start,limit:X2,cursor:g.start===P?E:void 0,signal:D2.signal},W2=await Q.read(V2);if(K(W2.items,g.start,W2.total),W2.cursor)E=W2.cursor,P=g.start+W2.items.length;let i=g.start+W2.items.length;if(i>=C){if(C=i,W2.hasMore!==void 0)X=W2.hasMore;else if(W2.total!==void 0)X=i<W2.total}}catch(X2){if(X2?.name==="AbortError")return;W=X2 instanceof Error?X2:Error(String(X2))}finally{p.delete(U2),w=w.filter((X2)=>X2.start!==g.start||X2.end!==g.end),_=p.size>0,c()}})();p.set(U2,[M2,D2]),_2.push(M2)}await Promise.all(_2)},Z=async(H,S)=>{if(V.isRangeLoaded(H,S))return;await F(H,S)},b=async()=>{if(!Q)return;await F(0,q-1)},R=async()=>{if(!Q||_||!X)return!1;let H=V.getCachedCount(),S=V.getTotal(),h=H,j2=Math.min(h+q-1,S>0?S-1:h+q-1);if(h>=S&&S>0)return X=!1,!1;return await F(h,j2),V.getCachedCount()>H},x=async()=>{if(V.clear(),V.setTotal(0),L.clear(),z)z.clear();l(),w=[],_=!1,E=void 0,P=void 0,X=!0,C=0,W=void 0,c()},I=(H,S)=>{if(V.evictDistant(H,S)>0)t()},d=()=>{V.clear(),L.clear(),E=void 0,P=void 0,W=void 0,w=[],_=!1,c()},n=()=>{if(V.reset(),L.clear(),z)z.clear();E=void 0,P=void 0,X=!0,C=0,W=void 0,w=[],_=!1,c()};if(Y&&Y.length>0)K(Y,0,$??Y.length);else if($!==void 0)V.setTotal($),c();return{getState:$2,getTotal:B2,getCached:Y2,getIsLoading:u,getHasMore:m,getStorage:A,getPlaceholders:U,getItem:N,getItemById:D,getIndexById:f,isItemLoaded:a,getItemsInRange:r,setTotal:s,setItems:K,updateItem:T,insertItem:G,removeItem:k,loadRange:F,ensureRange:Z,loadInitial:b,loadMore:R,reload:x,evictDistant:I,clear:d,reset:n}};var CJ=(J=0)=>{let Q=[,,,,,,,,];for(let Y=0;Y<8;Y++)Q[Y]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},C2=(J,Q)=>{let Y=performance.now(),$=Y-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let j=J.samples[0];return j.position=Q,j.time=Y,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=Y,J}let B=J.samples[J.sampleIndex];if(B.position=Q,B.time=Y,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let j=(J.sampleIndex-J.sampleCount+8)%8,q=J.samples[j],O=Q-q.position,y=Y-q.time;J.velocity=y>0?O/y:0}return J.lastPosition=Q,J.lastTime=Y,J},aJ=(J)=>J.sampleCount>=3,fJ=(J,Q={})=>{let{wheel:Y=!0,sensitivity:$=1,smoothing:B=!1,idleTimeout:j=150,onScroll:q,onIdle:O,scrollElement:y,horizontal:M=!1}=Q,V=!!y,z=0,v=0,L=V?M?window.innerWidth:window.innerHeight:M?J.clientWidth:J.clientHeight,_=Q.compressed??!1,W=Q.compression,X=CJ(),E=!1,P=null,C=f2(()=>{let G=M?J.scrollLeft:J.scrollTop,k=G>=z?"down":"up";if(X=C2(X,G),z=G,q)q({scrollTop:z,direction:k,velocity:X.velocity});e()}),l=f2(()=>{let G=J.getBoundingClientRect(),k=M?Math.max(0,-G.left):Math.max(0,-G.top),F=k>=z?"down":"up";if(X=C2(X,k),z=k,!E)E=!0;if(q)q({scrollTop:z,direction:F,velocity:X.velocity});e()}),c=(G)=>{G.preventDefault()},t=(G)=>{if(G.deltaX)return;G.preventDefault(),J.scrollLeft+=G.deltaY},J2=(G)=>{if(!_)return;G.preventDefault();let k=(M?G.deltaX||G.deltaY:G.deltaY)*$,F=z+k;if(B)F=z+k*0.3;if(F=Math.max(0,Math.min(F,v)),F!==z){let b=F>=z?"down":"up";if(X=C2(X,F),z=F,!E)E=!0;if(q)q({scrollTop:z,direction:b,velocity:X.velocity});e()}},e=()=>{if(P)clearTimeout(P);P=setTimeout(()=>{if(E=!1,X=CJ(z),O)O()},j)},Q2=(G)=>{if(_)return;if(_=!0,W=G,v=G.virtualSize-L,V)return;if(C.cancel(),J.removeEventListener("scroll",C),!Y)J.removeEventListener("wheel",c);else if(M)J.removeEventListener("wheel",t);if(M)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Y)J.addEventListener("wheel",J2,{passive:!1});let k=M?J.scrollLeft:J.scrollTop;if(k>0){let F=M?W?.actualSize??J.scrollWidth:W?.actualSize??J.scrollHeight;z=k/F*v}if(M)J.scrollLeft=0;else J.scrollTop=0},B2=()=>{if(!_)return;if(_=!1,V){W=void 0;return}if(J.removeEventListener("wheel",J2),M)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",C,{passive:!0}),!Y)J.addEventListener("wheel",c,{passive:!1});else if(M)J.addEventListener("wheel",t,{passive:!1});if(W&&z>0){let k=z/v*(W.actualSize-L);if(M)J.scrollLeft=k;else J.scrollTop=k}W=void 0},Y2=()=>{if(V||_)return z;return M?J.scrollLeft:J.scrollTop},u=(G,k=!1)=>{let F=Math.max(0,Math.min(G,v||1/0));if(V){let Z=J.getBoundingClientRect();if(M){let b=Z.left+window.scrollX;window.scrollTo({left:b+F,behavior:k?"smooth":"auto"})}else{let b=Z.top+window.scrollY;window.scrollTo({top:b+F,behavior:k?"smooth":"auto"})}}else if(_){if(F===z)return;let b=F>=z?"down":"up";if(X=C2(X,F),z=F,!E)E=!0;if(q)q({scrollTop:z,direction:b,velocity:X.velocity});e()}else if(M)J.scrollTo({left:F,behavior:k?"smooth":"auto"});else J.scrollTo({top:F,behavior:k?"smooth":"auto"})},m=(G)=>{u(Y2()+G)},$2=()=>{return Y2()<=0},A=(G=0)=>{let k=Y2(),F=V||_?v:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return k>=F-G},U=()=>{let G=Y2(),k=V||_?v:M?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(k<=0)return 0;return Math.min(1,Math.max(0,G/k))},N=(G)=>{if(G.compression)W=G.compression,v=W.virtualSize-L},D=()=>_,f=()=>Math.abs(X.velocity),a=()=>aJ(X),r=()=>E,s=()=>V,K=(G)=>{if(L=G,W)v=W.virtualSize-L},T=()=>{if(P)clearTimeout(P);if(V)l.cancel(),window.removeEventListener("scroll",l);else C.cancel(),J.removeEventListener("scroll",C),J.removeEventListener("wheel",J2),J.removeEventListener("wheel",c),J.removeEventListener("wheel",t)};if(V){if(_&&W)v=W.virtualSize-L;window.addEventListener("scroll",l,{passive:!0})}else if(_&&W){if(v=W.virtualSize-L,M)J.style.overflowX="hidden";else J.style.overflow="hidden";if(Y)J.addEventListener("wheel",J2,{passive:!1})}else{if(M)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",C,{passive:!0}),!Y)J.addEventListener("wheel",c,{passive:!1});else if(M)J.addEventListener("wheel",t,{passive:!1})}return{getScrollTop:Y2,scrollTo:u,scrollBy:m,isAtTop:$2,isAtBottom:A,getScrollPercentage:U,getVelocity:f,isTracking:a,isScrolling:r,updateConfig:N,enableCompression:Q2,disableCompression:B2,isCompressed:D,isWindowMode:s,updateContainerHeight:K,destroy:T}},f2=(J)=>{let Q=null,Y=null,$=(...B)=>{if(Y=B,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,Y)J(...Y)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var sJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},SJ=(J,Q,Y={},$="vlist",B=!1,j)=>{let{autoHide:q=!0,autoHideDelay:O=1000,minThumbSize:y=15,showOnHover:M=!0,showOnViewportEnter:V=!0,clickBehavior:z="scroll"}=Y,v=z==="page"?"scroll":z,L=j??J,_=sJ(Y.padding),W=B?_.left:_.top,X=B?_.right:_.bottom,E=B?_.bottom:_.right,P=Y.hoverZoneWidth??E+16,w=0,C=0,p=0,l=0,c=!1,t=!1,J2=0,e=0,Q2=0,B2=null,Y2=!1,u=null,m=null,$2=0,A=0,U=null,N=null,D=null,f=B?"width":"height",a=B?"translateX":"translateY",r=B?(i)=>i.clientX:(i)=>i.clientY,s=B?"left":"top",K=document.createElement("div"),T=document.createElement("div"),G=document.createElement("div"),k=B?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",F=()=>{if(L===J)return;let i=J.offsetTop;K.style[B?"left":"top"]=i?`calc(var(${k}) + ${i}px)`:`var(${k})`,G.style[B?"left":"top"]=`${i}px`},Z=()=>{if(K.className=`${$}-scrollbar`,T.className=`${$}-scrollbar-thumb`,B)K.classList.add(`${$}-scrollbar--horizontal`);if(Y.padding!==void 0)L.style.setProperty("--vlist-custom-scrollbar-padding-top",`${_.top}px`),L.style.setProperty("--vlist-custom-scrollbar-padding-right",`${_.right}px`),L.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${_.bottom}px`),L.style.setProperty("--vlist-custom-scrollbar-padding-left",`${_.left}px`);if(Y.minThumbSize!==void 0)K.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${y}px`);if(K.appendChild(T),L.appendChild(K),G.className=`${$}-scrollbar-hover`,B)G.classList.add(`${$}-scrollbar-hover--horizontal`),G.style.height=`${P}px`;else G.style.width=`${P}px`;if(L.appendChild(G),L!==J)F()},b=()=>{if(B2)clearTimeout(B2),B2=null},R=()=>{if(!q)return;b(),B2=setTimeout(I,O)},x=()=>{if(w<=C)return;if(b(),!Y2)K.classList.add(`${$}-scrollbar--visible`),Y2=!0;if(q&&!c&&!t)R()},I=()=>{if(c||t)return;K.classList.remove(`${$}-scrollbar--visible`),Y2=!1},d=(i,N2)=>{if(w=i,C=N2,F(),w<=C){K.style.display="none",I();return}K.style.display="";let Z2=Math.max(0,C-W-X),O2=C/w;if(p=Math.max(y,O2*Z2),T.style[f]=`${p}px`,l=Z2-p,n(Q2),!q)x()},n=(i)=>{if(Q2=i,w<=C||l<=0)return;let N2=w-C,Z2=Math.min(1,Math.max(0,i/N2));T.style.transform=`${a}(${Z2*l}px)`},H=(i)=>{if(i.target===T||v!=="jump"||l<=0)return;let N2=w-C,Z2=K.getBoundingClientRect(),O2=r(i)-Z2[s],H2=Math.max(0,Math.min(O2-p/2,l));Q(H2/l*N2),x()},S=()=>{if(U!==null)clearTimeout(U),U=null;if(N!==null)cancelAnimationFrame(N),N=null;D=null},h=(i)=>{let N2=l>0?A/i*l:0;if($2<N2)return-1;if($2>=N2+p)return 1;return 0},j2=()=>{let i=w-C,N2=h(i);if(N2===0){S();return}if(N2===-1){if(A<=0){S();return}let Z2=Math.max(0,A-C);A=Z2,Q(Z2)}else{if(A>=i){S();return}let Z2=Math.min(i,A+C);A=Z2,Q(Z2)}x()},o=(i)=>{if(D===null){D=i,N=requestAnimationFrame(o);return}let N2=w-C,Z2=i-D;D=i;let O2=h(N2);if(O2===0){S();return}let H2=12*C/1000,b2=Math.min(H2*Z2,C);if(O2===-1){if(A<=0){S();return}let T2=Math.max(0,A-b2);A=T2,Q(T2)}else{if(A>=N2){S();return}let T2=Math.min(N2,A+b2);A=T2,Q(T2)}b(),N=requestAnimationFrame(o)},q2=()=>{S(),R(),document.removeEventListener("mouseup",q2)},K2=(i)=>{if(i.target===T||v!=="scroll")return;i.preventDefault();let N2=K.getBoundingClientRect();$2=r(i)-N2[s],A=Q2,j2(),U=setTimeout(()=>{N=requestAnimationFrame(o)},350),document.addEventListener("mouseup",q2)},_2=(i)=>{i.preventDefault(),i.stopPropagation(),c=!0,J2=r(i),e=Q2,b(),K.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",g),document.addEventListener("mouseup",U2)},g=(i)=>{if(!c)return;let N2=r(i)-J2,Z2=l>0?N2/l:0,O2=w-C,H2=Z2*O2,b2=Math.max(0,Math.min(e+H2,O2));if(T.style.transform=`${a}(${b2/O2*l}px)`,m=b2,u===null)u=requestAnimationFrame(()=>{if(m!==null)Q(m);u=null})},U2=()=>{if(c=!1,u!==null)cancelAnimationFrame(u),u=null;if(m!==null)Q(m),m=null;if(K.classList.remove(`${$}-scrollbar--dragging`),q&&!t)R();document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",U2)},D2=()=>{if(V)x()},M2=()=>{if(!c){if(t=!1,q)R()}},X2=()=>{t=!0,b(),x()},V2=()=>{if(t=!1,!c&&q)R()},W2=()=>{if(b(),S(),u!==null)cancelAnimationFrame(u),u=null;K.removeEventListener("click",H),K.removeEventListener("mousedown",K2),K.removeEventListener("mouseenter",X2),document.removeEventListener("mouseup",q2),K.removeEventListener("mouseleave",V2),T.removeEventListener("mousedown",_2),J.removeEventListener("mouseenter",D2),J.removeEventListener("mouseleave",M2),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",U2),G.removeEventListener("click",H),G.removeEventListener("mousedown",K2),G.removeEventListener("mouseenter",X2),G.removeEventListener("mouseleave",V2),G.remove(),L.style.removeProperty("--vlist-custom-scrollbar-padding-top"),L.style.removeProperty("--vlist-custom-scrollbar-padding-right"),L.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),L.style.removeProperty("--vlist-custom-scrollbar-padding-left"),K.remove()};if(Z(),K.addEventListener("click",H),K.addEventListener("mousedown",K2),K.addEventListener("mouseenter",X2),K.addEventListener("mouseleave",V2),T.addEventListener("mousedown",_2),J.addEventListener("mouseenter",D2),J.addEventListener("mouseleave",M2),G.addEventListener("click",H),G.addEventListener("mousedown",K2),M)G.addEventListener("mouseenter",X2),G.addEventListener("mouseleave",V2);return{show:x,hide:I,updateBounds:d,updatePosition:n,isVisible:()=>Y2,destroy:W2}};var nJ=50,oJ=0.1;function iJ(J){let Q=0,Y=0,$=0;function B(){return $>0?Y/$:0}function j(y){if(Q=y,y>oJ&&y<nJ)Y+=y,$++}function q(){let y=J.getTotal();if(y===0)return 0;let M=J.getItemSize();if(M<=0)return 0;let V=J.getContainerSize();if(V<=0)return 0;let z=J.getScrollPosition(),v=typeof J.getColumns==="function"?J.getColumns():1,_=Math.ceil(y/v)*M,X=Math.min(_,G2)-V,E=_-V,P=X>0?E/X:1,w=z*P,C=Math.ceil((w+V)/M);return Math.min(C*v,y)}function O(){let y=J.getTotal(),M=q();return{progress:y>0?Math.min(100,Math.max(0,M/y*100)):0,velocity:Q,velocityAvg:B(),itemCount:M,total:y}}return{getState:O,onVelocity:j}}export{e2 as toggleSelection,EJ as simpleVisibleRange,p2 as selectItems,JJ as selectAll,yJ as rangesEqual,f2 as rafThrottle,UJ as needsScaling,z2 as mergeRanges,$J as isSelected,A2 as isPlaceholderItem,PJ as isInRange,P2 as isGroupHeader,jJ as getSelectedItems,YJ as getSelectedIds,y2 as getScaleState,ZJ as getScaleInfo,y2 as getScale,kJ as getRangeCount,NJ as getMaxItemsWithoutScaling,m2 as filterPlaceholders,wJ as diffRanges,h2 as deselectItems,VJ as createTableRenderer,DJ as createTableLayout,WJ as createTableHeader,s2 as createStickyHeader,iJ as createStats,w2 as createSparseStorage,R2 as createSizeCache,t2 as createSelectionState,SJ as createScrollbar,fJ as createScrollController,v2 as createPlaceholderManager,OJ as createMeasuredSizeCache,GJ as createMasonryRenderer,MJ as createMasonryLayout,l2 as createGroupedSizeFn,a2 as createGroupLayout,_J as createGridRenderer,n2 as createGridLayout,zJ as createEmitter,vJ as createAsyncManager,QJ as clearSelection,TJ as clampScrollPosition,LJ as calculateTotalSize,RJ as calculateScrollToIndex,qJ as calculateScaledVisibleRange,KJ as calculateScaledScrollToIndex,BJ as calculateScaledRenderRange,L2 as calculateScaledItemPosition,AJ as calculateRenderRange,u2 as calculateMissingRanges,bJ as calculateItemOffset,XJ as calculateIndexFromScrollPosition,HJ as calculateActualSize,r2 as buildLayoutItems,G2 as MAX_VIRTUAL_SIZE};
|
|
1
|
+
var v2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var h2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let j=q+$+1>>>1;if(J[j].headerLayoutIndex<=Q)q=j;else $=j-1}return q},a2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let j=q+$+1>>>1;if(J[j].firstDataIndex<=Q)q=j;else $=j-1}return q},s2=(J,Q,q)=>{if(J===0)return[];let $=[],j=null,Y=0,B=0;for(let D=0;D<J;D++){let P=q?.(D);if(!P)continue;let V=Q(D,P);if(j===null)j=V,Y=0;else if(V!==j){let y=D-Y;$.push({key:j,groupIndex:$.length,headerLayoutIndex:B,firstDataIndex:Y,count:y}),B=B+1+y,j=V,Y=D}}if(j!==null)$.push({key:j,groupIndex:$.length,headerLayoutIndex:B,firstDataIndex:Y,count:J-Y});return $},n2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let q=J.length+Q.length,$=Array(q),j=0;for(let Y of Q){$[j]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},j++;for(let B=0;B<Y.count;B++)$[j]=J[Y.firstDataIndex+B],j++}return $},o2=(J,Q,q=!1)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header"){if(q&&Y.group.groupIndex===0)return 0;return J.getHeaderHeight(Y.group.groupIndex)}return $(Y.dataIndex)}},i2=(J,Q,q)=>{let $=s2(J,Q.getGroupForIndex,q),j=J+$.length,Y=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(E)=>{if($.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let W=h2($,E),_=$[W];if(E===_.headerLayoutIndex)return{type:"header",group:_};let Z=E-_.headerLayoutIndex-1;return{type:"item",dataIndex:_.firstDataIndex+Z,group:_}},layoutToDataIndex:(E)=>{if($.length===0)return E;let W=h2($,E),_=$[W];if(E===_.headerLayoutIndex)return-1;let Z=E-_.headerLayoutIndex-1;return _.firstDataIndex+Z},dataToLayoutIndex:(E)=>{if($.length===0)return E;let W=a2($,E),_=$[W],Z=E-_.firstDataIndex;return _.headerLayoutIndex+1+Z},getGroupAtLayoutIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let W=h2($,E);return $[W]},getGroupAtDataIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let W=a2($,E);return $[W]},getHeaderHeight:typeof Y==="number"?(E)=>Y:(E)=>{let W=$[E];if(!W)return 0;return Y(W.key,E)},rebuild:(E,W)=>{$=s2(E,Q.getGroupForIndex,W??q),j=E+$.length}}};var hJ=(J,Q,q,$,j=0)=>{let Y=q?"width":"height",B=document.createElement("div");return B.className=`${Q}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${j||0}px`:`top:${j||0}px`),B.style[Y]=`${$}px`,J.insertBefore(B,J.firstChild),B},t2=(J,Q,q,$,j,Y=!1,B=0,D,P)=>{let V=Y?"width":"height",y=Y?"height":"width",f=Y?"X":"Y",G=(F,K)=>{F.style[V]=`${K}px`},E=P??hJ(J,j,Y,0,B),W=()=>{let F=document.createElement("div");return F.className="sticky-group",F.style.position="absolute",F.style.willChange="transform",F.style[y]="100%",F},_=W(),Z=W();E.append(_,Z);let O=_,T=Z,z=Q.groups,w=[],I=[],g=[],u=0,Y2=()=>{z=Q.groups,u=z.length,w=Array(u),I=Array(u),g=Array(u);let F=D?D():1;for(let K=0;K<u;K++)w[K]=q.getOffset(z[K].headerLayoutIndex)*F,I[K]=Q.getHeaderHeight(K),g[K]=I[K]*F};Y2();let o=-1,i=0,$2=0,U2=-1,j2=!1,r=0,d=!1,J2=(F,K)=>{$(F,K);let R=I[K];return G(F,R),R},L=(F)=>{F.replaceChildren(),F.style.transform=""},X=(F)=>{if(F===o)return;if(o=F,i=0,$2=0,F<0||F>=u){L(O);return}i=J2(O,F),$2=g[F],G(E,i),O.style.transform=""},U=(F)=>{if(F===r)return;r=F;let K=Math.round(F);O.style.transform=`translate${f}(${K}px)`,T.style.transform=`translate${f}(${K+i}px)`},M=()=>{r=0,O.style.transform="",T.style.transform=""},v=()=>{if(!d)return;let F=O;O=T,T=F,o=U2,i=o>=0?I[o]:0,$2=o>=0?g[o]:0,G(E,i),L(T),U2=-1,d=!1,M()},c=()=>{if(!d)return;L(T),U2=-1,d=!1,M()},l=!!P,S=()=>{if(j2)return;if(j2=!0,l)E.style.visibility="";else E.style.display=""},N=()=>{if(!j2)return;if(j2=!1,l)E.style.visibility="hidden";else E.style.display="none";L(O),o=-1,i=0,$2=0,c()},H=(F)=>{if(u===0){N();return}if(F<w[0]){N();return}let K=0,R=u-1;while(K<R){let h=K+R+1>>>1;if(w[h]+g[h]<=F)K=h;else R=h-1}if(!j2)S();X(K);let b=K+1;if(b<u){let h=w[b]-F;if(h<=0&&h>-$2){if(U2!==b||!d)U2=b,J2(T,b),d=!0;let p=$2>0?h/$2*i:h;U(p)}else if(h<=-$2){if(d)v()}else if(d)c()}else if(d)c()},A=()=>{Y2();let F=o;if(o=-1,i=0,$2=0,F>=0)X(F)},k=()=>{E.remove(),o=-1,i=0,$2=0,U2=-1,j2=!1,d=!1};if(!P)E.style.display="none";return{update:H,refresh:A,show:S,hide:N,destroy:k}};var e2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.isHeaderFn,j={row:0,col:0},Y=(W)=>{if(W<=0)return 0;if(!$)return Math.ceil(W/Q);let _=0,Z=0,O=0;for(let T=0;T<W;T++)if($(T)){if(O++,Z)_++,Z=0;_++,Z=0}else if(Z++,Z>=Q)_++,Z=0;if(Z)_++;return _},B=(W)=>{return j.row=D(W),j.col=P(W),j},D=(W)=>{if(!$)return Math.floor(W/Q);let _=0,Z=0;for(let O=0;O<=W;O++)if($(O)){if(Z)_++,Z=0;if(O===W)return _;_++,Z=0}else{if(O===W)return _;if(Z++,Z>=Q)_++,Z=0}return console.warn(`⚠️ getRow(${W}) fell through - returning ${_}`),_},P=(W)=>{if(!$)return W%Q;if($(W))return 0;let _=0;for(let Z=0;Z<=W;Z++)if($(Z))_=0;else{if(Z===W)return _;if(_++,_>=Q)_=0}return _},V=(W,_,Z)=>{if(Z<=0)return{start:0,end:-1};if(!$){let I=Math.max(0,W*Q),g=Math.min(Z-1,(_+1)*Q-1);return{start:I,end:g}}let O=-1,T=-1,z=0,w=0;for(let I=0;I<Z;I++){if($(I)){if(w)z++,w=0;if(z>=W&&z<=_){if(O<0)O=I;T=I}z++,w=0}else{if(z>=W&&z<=_){if(O<0)O=I;T=I}if(w++,w>=Q)z++,w=0}if(z>_&&!w)break}if(O<0)return{start:0,end:-1};return{start:O,end:T}},y=(W,_,Z)=>{if(_<0||_>=Q)return-1;let O=W*Q+_;if(O<0||O>=Z)return-1;return O},f=(W)=>{let _=(Q-1)*q;return Math.max(0,(W-_)/Q)};return{get columns(){return Q},get gap(){return q},update:(W)=>{if(W.columns!==void 0)Q=Math.max(1,Math.floor(W.columns));if(W.gap!==void 0)q=W.gap;if(W.isHeaderFn!==void 0)$=W.isHeaderFn},getTotalRows:Y,getPosition:B,getRow:D,getCol:P,getItemRange:V,getItemIndex:y,getColumnWidth:f,getColumnOffset:(W,_)=>{let Z=f(_);return W*(Z+q)}}};var H2=16000000;var JJ="x",QJ=20,g2="_isPlaceholder",R2="__placeholder_";var y2=(J,Q,q)=>{if(String(q).startsWith(R2))return!1;let $=R2+Q;if(J.has($))return J.delete($),J.add(q),!0;return!1},$J=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),u2=(J,Q,q)=>{if(q==="none")return J;let $=new Set(J.selected);if(q==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let j of Q)$.add(j);return{...J,selected:$}},m2=(J,Q)=>{let q=new Set(J.selected);for(let $ of Q)q.delete($);return{...J,selected:q}},qJ=(J,Q,q)=>{if(q==="none")return J;if(J.selected.has(Q))return m2(J,[Q]);else return u2(J,[Q],q)},YJ=(J,Q,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},jJ=(J)=>({...J,selected:new Set});var BJ=(J,Q)=>{return J.selected.has(Q)},XJ=(J)=>{return Array.from(J.selected)},UJ=(J,Q)=>{let q=[];for(let $ of J.selected){let j=Q($);if(j)q.push(j)}return q};var gJ=(J,Q)=>{let q=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:($)=>{q=$},isVariable:()=>!1}},uJ=(J,Q)=>{let q=Q,$=new Float64Array(0),j=(B)=>{q=B,$=new Float64Array(B+1),$[0]=0;for(let D=0;D<B;D++)$[D+1]=$[D]+J(D)};j(Q);let Y=(B)=>{if(q===0)return 0;if(B<=0)return 0;if(B>=$[q])return q-1;let D=0,P=q-1;while(D<P){let V=D+P+1>>>1;if($[V]<=B)D=V;else P=V-1}return D};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=q)return $[q];return $[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Y(B),getTotalSize:()=>$[q]??0,getTotal:()=>q,rebuild:(B)=>j(B),isVariable:()=>!0}},z2=(J,Q)=>{if(typeof J==="number")return gJ(J,Q);return uJ(J,Q)},d2=(J,Q,q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let j=0,Y=0,B=Q;while(B<$&&Y<q)Y+=J.getSize(B),j++,B++;return Math.max(1,j)};var w2=(J,Q,q)=>{let $=Q.getTotalSize(),j=q===!0||$>H2,Y=$>H2?H2:$,B=$>0?Y/$:1;return{isCompressed:j,actualSize:$,virtualSize:Y,ratio:B}},NJ=(J,Q,q,$,j,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!j.isCompressed||j.ratio===1){let E=q.indexAtOffset(J),W=q.indexAtOffset(J+Q);if(W<$-1)W++;return Y.start=Math.max(0,E),Y.end=Math.min($-1,Math.max(0,W)),Y}let{virtualSize:B}=j,D=J/B,P=q.getTotalSize(),V=D*P,y=q.indexAtOffset(V),f=d2(q,Math.max(0,y),Q,$),G=y+f;return Y.start=Math.max(0,y),Y.end=Math.min($-1,Math.max(0,G)),Y},KJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},P2=(J,Q,q,$,j,Y,B)=>{if(!Y.isCompressed||$===0)return q.getOffset(J);if(Y.ratio===1)return q.getOffset(J)-Q;let{virtualSize:D}=Y,P=Q/D,V=q.getTotalSize(),y=P*V;return q.getOffset(J)-y},ZJ=(J,Q,q,$,j,Y="start")=>{if($===0)return 0;let B;if(j.isCompressed&&j.ratio!==1){B=J/$*j.virtualSize;let y=Q.getSize(J);switch(Y){case"center":B-=(q-y)/2*j.ratio;break;case"end":B-=(q-y)*j.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let D=Q.getSize(J);switch(Y){case"center":B-=(q-D)/2;break;case"end":B-=q-D;break}let P=j.virtualSize-q;return Math.max(0,Math.min(B,P))},_J=(J,Q,q,$)=>{if(q===0)return 0;if($.isCompressed&&$.ratio!==1){let j=J/$.virtualSize;return Math.floor(j*q)}return Q.indexAtOffset(J)},WJ=(J,Q)=>{if(typeof Q==="number")return J*Q>H2;return Q.getTotalSize()>H2},VJ=(J)=>{if(J<=0)return 0;return Math.floor(H2/J)},MJ=(J,Q,q)=>{let $=w2(J,Q,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 C2=(J,Q,q)=>{let $=Array.from(Q).sort((B,D)=>B-D);if($.length<=1)return;let j=[];for(let B=0;B<$.length;B++){let D=q($[B]);if(D)j.push(D)}if(j.length<=1)return;let Y=J.firstChild;for(let B=0;B<j.length;B++){let D=j[B];if(D===Y)Y=Y.nextSibling;else J.insertBefore(D,Y)}};var mJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},dJ=1,cJ=(J,Q,q,$,j,Y,B,D,P=!1,V,y)=>{let f=mJ(),G=new Map,E=Y,W=!1,_=0,Z="",O=-1,T={selected:!1,focused:!1},z=(N,H)=>{return T.selected=N,T.focused=H,T},w=`${j}-item ${j}-grid-item`,I=`${j}-group-header`,g=`${j}-item--selected`,u=`${j}-item--focused`,Y2=`${j}-item--placeholder`,o=`${j}-item--replaced`,i=(N,H)=>{if(typeof H==="string")N.innerHTML=H;else N.replaceChildren(H)},$2=(N,H,A)=>{N.classList.toggle(g,H),N.classList.toggle(u,A)},U2=(N,H)=>{let A=$.getRow(N);if(H?.compression?.isCompressed)return P2(A,H.scrollPosition,q,H.totalItems,H.containerSize,H.compression,H.rangeStart);return q.getOffset(A)},j2=(N,H)=>{let A=$.getCol(N),F=W&&A===0?0:$.getColumnOffset(A,E),K;if(W){let R=$.getRow(N),b=0,h=-1;for(let p=0;p<N;p++){let m=$.getRow(p);if(m<R&&m!==h){let n=q.getSize(p);b+=n,h=m}}K=b}else K=U2(N,H);if(P)return`translate(${Math.round(K)}px, ${Math.round(F)}px)`;return`translate(${Math.round(F)}px, ${Math.round(K)}px)`},r=(N,H)=>{let A=N.classList.contains(I),k=A?E:$.getColumnWidth(E),F;if(W||A)F=q.getSize(H)-$.gap;else{let K=$.getRow(H);F=q.getSize(K)-$.gap}if(P)N.style.width=`${F}px`,N.style.height=`${k}px`;else N.style.width=`${k}px`,N.style.height=`${F}px`},d=(N,H,A,k,F)=>{let K=f.acquire(),R=!!H.__groupHeader,b=z(A,k);if(K.className=R?I:w,K.dataset.index=String(N),K.dataset.id=String(H.id),K.dataset.row=String($.getRow(N)),K.dataset.col=String($.getCol(N)),R)K.setAttribute("role","presentation"),K.removeAttribute("aria-selected"),K.removeAttribute("aria-setsize"),K.removeAttribute("aria-posinset"),K.removeAttribute("id");else if(y!==!1){if(K.setAttribute("role","option"),K.ariaSelected=String(A),D)K.id=`${D}-item-${N}`;if(B){let m=B();if(m!==O)O=m,Z=String(m);K.setAttribute("aria-setsize",Z);let n=V?V(N):N+1;K.setAttribute("aria-posinset",String(n))}}else if(K.setAttribute("role","listitem"),K.removeAttribute("aria-selected"),B){let m=B();if(m!==O)O=m,Z=String(m);K.setAttribute("aria-setsize",Z);let n=V?V(N):N+1;K.setAttribute("aria-posinset",String(n))}r(K,N);let h=Q(H,N,b);if(i(K,h),String(H.id).startsWith(R2))K.classList.add(Y2);return $2(K,A,k),K.style.transform=F,{element:K,lastItemId:H.id,lastSelected:A,lastFocused:k,lastTransform:F,lastSeenFrame:_}},J2=(N,H,A,k,F)=>{if(_++,H.start===0&&N.length)W=v2(N[0]);for(let[b,h]of G)if(b>=H.start&&b<=H.end)h.lastSeenFrame=_;else if(_-h.lastSeenFrame>dJ)f.release(h.element),G.delete(b);let K=!1;if(B){let b=B();if(b!==O)O=b,Z=String(b),K=!0}let R=null;for(let b=H.start;b<=H.end;b++){let h=b-H.start,p=N[h];if(!p)continue;let m=A.has(p.id),n=b===k,e=G.get(b);if(e){let K2=e.lastItemId!==p.id,Q2=e.lastSelected!==m,x=e.lastFocused!==n;if(K2){let a=String(e.lastItemId),q2=String(p.id),X2=a.startsWith(R2),s=q2.startsWith(R2);if(!s&&y2(A,b,p.id))m=!0;let V2=z(m,n),E2=Q(p,b,V2);if(i(e.element,E2),e.element.dataset.id=q2,e.element.dataset.row=String($.getRow(b)),e.element.dataset.col=String($.getCol(b)),r(e.element,b),e.element.classList.toggle(Y2,s),X2&&!s)e.element.classList.add(o),setTimeout(()=>e.element.classList.remove(o),300);if(e.lastItemId=p.id,!p.__groupHeader){let W2=V?V(b):b+1;e.element.setAttribute("aria-posinset",String(W2))}}if(K2||Q2||x)$2(e.element,m,n),e.element.ariaSelected=String(m),e.lastSelected=m,e.lastFocused=n;let C=j2(b,F);if(e.lastTransform!==C)e.element.style.transform=C,e.lastTransform=C;if(K&&!p.__groupHeader)e.element.setAttribute("aria-setsize",Z)}else{if(y2(A,b,p.id))m=!0;let K2=j2(b,F),Q2=d(b,p,m,n,K2);if(!R)R=document.createDocumentFragment();R.appendChild(Q2.element),G.set(b,Q2)}}if(R)J.appendChild(R)},L=(N)=>{for(let[H,A]of G){let k=j2(H,N);if(A.lastTransform!==k)A.element.style.transform=k,A.lastTransform=k}},X=(N,H,A,k)=>{let F=G.get(N);if(!F)return;let K=z(A,k),R=Q(H,N,K);i(F.element,R),$2(F.element,A,k),F.element.dataset.id=String(H.id),F.element.ariaSelected=String(A),r(F.element,N),F.lastItemId=H.id,F.lastSelected=A,F.lastFocused=k},U=(N,H,A)=>{let k=G.get(N);if(!k)return;let F=k.lastSelected!==H,K=k.lastFocused!==A;if(F||K)$2(k.element,H,A),k.lastSelected=H,k.lastFocused=A},M=(N)=>{return G.get(N)?.element},v=(N)=>{if(Math.abs(N-E)<1)return;E=N;for(let[H,A]of G){r(A.element,H);let k=j2(H);A.element.style.transform=k,A.lastTransform=k}},c=()=>{C2(J,G.keys(),(N)=>G.get(N)?.element)},l=()=>{for(let[,N]of G)f.release(N.element);G.clear()};return{render:J2,updatePositions:L,updateItem:X,updateItemClasses:U,getElement:M,sortDOM:c,updateContainerWidth:v,clear:l,destroy:()=>{l(),f.clear()}}};var DJ=(J,Q=50,q=1/0,$=!0)=>{let j=J,Y=[],B=0,D=()=>{Y=j.map((Z,O)=>({def:Z,index:O,width:0,minWidth:rJ(Z.minWidth??Q,1),maxWidth:Z.maxWidth??q,resizable:Z.resizable??$,offset:0}))},P=(Z)=>{if(Y.length===0){B=0;return}let O=0,T=0;for(let z=0;z<Y.length;z++){let w=Y[z],I=w.def;if(I.width!==void 0)w.width=c2(I.width,w.minWidth,w.maxWidth),O+=w.width;else T++}if(T){let w=Math.max(0,Z-O)/T;for(let I=0;I<Y.length;I++){let g=Y[I];if(g.def.width===void 0)g.width=c2(w,g.minWidth,g.maxWidth)}}V()},V=()=>{let Z=0;for(let O=0;O<Y.length;O++){let T=Y[O];T.offset=Z,Z+=T.width}B=Z},y=(Z,O)=>{if(Z<0||Z>=Y.length)return 0;let T=Y[Z];if(!T.resizable)return T.width;let z=c2(O,T.minWidth,T.maxWidth);return T.width=z,V(),z},f=(Z)=>{return Y[Z]},G=(Z)=>{if(Y.length===0)return;if(Z<0)return Y[0];if(Z>=B)return Y[Y.length-1];let O=0,T=Y.length-1;while(O<T){let z=O+T>>>1,w=Y[z];if(Z<w.offset)T=z-1;else if(Z>=w.offset+w.width)O=z+1;else return w}return Y[O]},E=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].offset},W=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].width},_=(Z)=>{j=Z,D()};return D(),{get columns(){return Y},get totalWidth(){return B},resolve:P,updateColumns:_,resizeColumn:y,getColumn:f,getColumnAtX:G,getColumnOffset:E,getColumnWidth:W}},c2=(J,Q,q)=>Math.min(q,Math.max(Q,J)),rJ=(J,Q)=>Math.max(Q,J);var GJ=(J,Q,q,$,j,Y)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let D=document.createElement("div");D.className=`${q}-table-header`,D.setAttribute("role","row"),D.setAttribute("aria-rowindex","1"),D.style.height=`${Q}px`;let P=document.createElement("div");P.className=`${q}-table-header-scroll`,P.setAttribute("role","presentation"),D.appendChild(P),B.appendChild(D),J.insertBefore(B,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let V=[],y=[],f=!0,G=null,E="asc",W=null,_=!1,Z=-1,O=0,T=0,z=0,w=(X,U)=>{let M=document.createElement("div");M.className=`${q}-table-header-cell`,M.setAttribute("role","columnheader"),M.setAttribute("aria-colindex",String(U+1)),M.setAttribute("tabindex",U===0?"0":"-1"),M.dataset.columnKey=X.def.key;let v=X.def.align;if(v==="center")M.classList.add(`${q}-table-header-cell--center`);else if(v==="right")M.classList.add(`${q}-table-header-cell--right`);let c=document.createElement("div");c.className=`${q}-table-header-content`;let l=X.def.header?X.def.header(X.def):X.def.label;if(typeof l==="string")c.textContent=l;else c.appendChild(l);if(M.appendChild(c),X.def.sortable){let S=document.createElement("span");S.className=`${q}-table-header-sort`,S.setAttribute("aria-hidden","true"),M.appendChild(S),y.push(S),M.classList.add(`${q}-table-header-cell--sortable`)}else y.push(null);if(X.resizable){let S=document.createElement("div");S.className=`${q}-table-header-resize`,S.dataset.resizeIndex=String(U),M.appendChild(S)}return M},I=(X)=>{W=X,P.textContent="",V=[],y=[];let U=X.columns;for(let M=0;M<U.length;M++){let v=U[M],c=w(v,M);V.push(c),P.appendChild(c)}if(g(X),G)u(G,E)},g=(X)=>{W=X;let U=X.columns;P.style.width=`${X.totalWidth}px`;for(let M=0;M<V.length&&M<U.length;M++){let v=V[M],c=U[M];v.style.width=`${c.width}px`}},u=(X,U)=>{if(G=X,E=U,!W)return;let M=W.columns;for(let v=0;v<y.length&&v<M.length;v++){let c=y[v];if(!c)continue;if(M[v].def.key===X)c.textContent=U==="asc"?"▲":"▼",c.style.opacity="0.7",V[v].setAttribute("aria-sort",U==="asc"?"ascending":"descending");else c.textContent="",c.style.opacity="0",V[v].removeAttribute("aria-sort")}},Y2=(X)=>{P.style.transform=`translateX(${-X}px)`},o=(X)=>{let U=X.target;if(!U.dataset.resizeIndex)return;if(X.preventDefault(),X.stopPropagation(),Z=+U.dataset.resizeIndex,!W)return;let M=W.getColumn(Z);if(!M?.resizable)return;_=!0,O=X.clientX,T=M.width,J.classList.add(`${q}--col-resizing`),J.style.cursor="col-resize",U.classList.add(`${q}-table-header-resize--active`),U.setPointerCapture(X.pointerId),U.addEventListener("pointermove",i),U.addEventListener("pointerup",$2),U.addEventListener("pointercancel",$2)},i=(X)=>{if(!_||!W)return;let U=X.clientX-O;if(Math.abs(U)<1)return;let M=Math.max(0,T+U);$(Z,M)},$2=(X)=>{if(!_)return;let U=X.target;U.removeEventListener("pointermove",i),U.removeEventListener("pointerup",$2),U.removeEventListener("pointercancel",$2);try{U.releasePointerCapture(X.pointerId)}catch{}U.classList.remove(`${q}-table-header-resize--active`),J.classList.remove(`${q}--col-resizing`),J.style.cursor="",_=!1,Z=-1},U2=(X)=>{let U=X.target;if(U.dataset.resizeIndex)return;if(_)return;let M=U;while(M&&!M.dataset.columnKey)if(M=M.parentElement,M===D||M===null)return;let v=M.dataset.columnKey;if(!W)return;let c=W.columns,l=-1;for(let N=0;N<c.length;N++)if(c[N].def.key===v){l=N;break}if(l===-1)return;let S=c[l];if(Y)Y({key:v,index:l,event:X});if(S.def.sortable&&j){let N;if(G===v)N=E==="asc"?"desc":null;else N="asc";j({key:v,index:l,direction:N})}},j2=(X)=>{if(X<0||X>=V.length)return;V[z]?.setAttribute("tabindex","-1"),z=X;let U=V[z];U.setAttribute("tabindex","0"),U.focus()},r=(X)=>{let U=X.key;if(U==="ArrowRight"){if(X.ctrlKey||X.metaKey){if(!W)return;let M=W.getColumn(z);if(M?.resizable)$(z,M.width+10),X.preventDefault()}else if(z<V.length-1)j2(z+1),X.preventDefault();X.stopPropagation();return}if(U==="ArrowLeft"){if(X.ctrlKey||X.metaKey){if(!W)return;let M=W.getColumn(z);if(M?.resizable)$(z,M.width-10),X.preventDefault()}else if(z>0)j2(z-1),X.preventDefault();X.stopPropagation();return}if(U==="Home"){j2(0),X.preventDefault(),X.stopPropagation();return}if(U==="End"){j2(V.length-1),X.preventDefault(),X.stopPropagation();return}if(U==="Enter"||U===" "){if(!W)return;let M=W.getColumn(z);if(M?.def.sortable&&j){let v;if(G===M.def.key)v=E==="asc"?"desc":null;else v="asc";j({key:M.def.key,index:z,direction:v}),X.preventDefault()}X.stopPropagation();return}if(U==="ArrowDown"){J.focus(),X.preventDefault(),X.stopPropagation();return}};return D.addEventListener("pointerdown",o),D.addEventListener("click",U2),D.addEventListener("keydown",r),{element:D,update:g,updateSort:u,rebuild:I,show:()=>{if(f)return;f=!0,D.style.display=""},hide:()=>{if(!f)return;f=!1,D.style.display="none"},destroy:()=>{D.removeEventListener("pointerdown",o),D.removeEventListener("click",U2),D.removeEventListener("keydown",r),J.style.removeProperty("--vlist-table-header-height"),B.remove(),V=[],y=[],W=null,f=!1},syncScroll:Y2}};var lJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},OJ=(J,Q,q,$,j,Y,B,D,P)=>{let V=lJ(),y=new Map,f=-1,G=q,E=null,W=null,_=null,Z=(K,R)=>{W=K,_=R},O=(K,R)=>{R?K.setAttribute("aria-selected","true"):K.removeAttribute("aria-selected")},T=(K,R,b,h)=>{K.setAttribute("role",R),K.setAttribute("data-id",String(b)),K.setAttribute("data-index",String(h))},z=(K)=>String(K).startsWith("__placeholder_"),w=`${j}-item ${j}-table-row`,I=`${j}-item--selected`,g=`${j}-item--focused`,u=`${j}-table-cell`,Y2=`${j}-table-cell--center`,o=`${j}-table-cell--right`,i=`${j}-item--odd`,$2=`${j}-item--placeholder`,U2=`${j}-item--replaced`,j2=`${j}-item ${j}-table-row ${j}-table-group-header`,r=`${j}-table-group-header-content`,d=(K,R,b,h,p=!1)=>{if(b.def.cell){let m=b.def.cell(R,b.def,h);if(typeof m==="string")K.innerHTML=m;else K.replaceChildren(m)}else{let m=R[b.def.key],n=m!=null?String(m):"";if(p&&n)K.innerHTML=`<span>${n}</span>`;else K.textContent=n}},J2=(K,R,b,h,p=!1)=>{let m=w;if(D){if(E){let n=E(R);if(n>=0&&(n&1)===1)m+=` ${i}`}else if((R&1)===1)m+=` ${i}`}if(p)m+=` ${$2}`;if(b)m+=` ${I}`;if(h)m+=` ${g}`;K.className=m},L=(K,R,b)=>{if(b?.compression?.isCompressed)return Math.round(P2(K,b.scrollPosition,R,b.totalItems,b.containerSize,b.compression,b.rangeStart));return R.getOffset(K)},X=(K,R)=>{let b=R.def.align;if(b==="center")K.classList.add(Y2),K.classList.remove(o);else if(b==="right")K.classList.add(o),K.classList.remove(Y2);else K.classList.remove(Y2,o)},U=(K,R)=>{let h=G.columns.length;if(R.length===h)return R;let p=[];for(let m=0;m<h;m++){let n;if(m<R.length)n=R[m];else n=document.createElement("div"),n.className=u,K.appendChild(n);p.push(n)}for(let m=h;m<R.length;m++)R[m].remove();return p},M=(K,R,b,h)=>{let p=V.acquire(),m=K,n=b.getSize(R),e=L(R,b,h);p.style.cssText=`width:${G.totalWidth}px;height:${n}px;transform:translateY(${e}px)`,p.className=j2,T(p,"presentation",K.id,R),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let K2=document.createElement("div");if(K2.className=r,_){let Q2=_(m.groupKey,m.groupIndex);if(typeof Q2==="string")K2.innerHTML=Q2;else K2.appendChild(Q2)}return p.appendChild(K2),{element:p,cells:[],index:R,isGroupHeader:!0,lastItemId:K.id,lastSelected:!1,lastFocused:!1,lastOffset:e,lastHeight:n}},v=(K,R,b,h,p,m)=>{let n=V.acquire(),e=p.getSize(R),K2=L(R,p,m),Q2=z(K.id);n.style.cssText=`width:${G.totalWidth}px;height:${e}px;transform:translateY(${K2}px)`,J2(n,R,b,h,Q2),T(n,"row",K.id,R),n.id=`${Y}-item-${R}`,n.setAttribute("aria-rowindex",String(R+2)),O(n,b);let x=U(n,[]),C=G.columns;for(let a=0;a<x.length&&a<C.length;a++){let q2=x[a],X2=C[a];q2.style.cssText=`left:${X2.offset}px;width:${X2.width}px`,q2.setAttribute("role","gridcell"),q2.setAttribute("aria-colindex",String(a+1)),X(q2,X2),d(q2,K,X2,R,Q2)}return{element:n,cells:x,index:R,isGroupHeader:!1,lastItemId:K.id,lastSelected:b,lastFocused:h,lastOffset:K2,lastHeight:e}},c=(K,R,b,h,p)=>{for(let[Q2,x]of y)if(Q2<R.start||Q2>R.end)V.release(x.element),y.delete(Q2);let m=!1,n=B();if(n!==f)f=n,m=!0;let e=null,K2=Q();E=typeof D==="string"&&P?P():null;for(let Q2=R.start;Q2<=R.end;Q2++){let x=Q2-R.start,C=K[x];if(!C)continue;let a=b.has(C.id),q2=Q2===h,X2=W?W(C):!1,s=y.get(Q2);if(s){if(s.isGroupHeader!==X2){V.release(s.element),y.delete(Q2);let V2=X2?M(C,Q2,K2,p):v(C,Q2,a,q2,K2,p);if(y.set(Q2,V2),!e)e=document.createDocumentFragment();e.appendChild(V2.element);continue}if(X2){if(s.lastItemId!==C.id){let W2=C,D2=s.element.firstElementChild;if(D2&&_){let A2=_(W2.groupKey,W2.groupIndex);if(typeof A2==="string")D2.innerHTML=A2;else D2.replaceChildren(A2)}s.element.setAttribute("data-id",String(C.id)),s.lastItemId=C.id}let E2=L(Q2,K2,p);if(s.lastOffset!==E2)s.lastOffset=E2,s.element.style.transform=`translateY(${E2}px)`;let B2=K2.getSize(Q2);if(s.lastHeight!==B2)s.lastHeight=B2,s.element.style.height=`${B2}px`}else{let V2=s.lastItemId!==C.id,E2=s.lastSelected!==a,B2=s.lastFocused!==q2;if(V2){let A2=s.lastItemId!=null&&z(s.lastItemId),_2=z(C.id);if(!_2&&y2(b,Q2,C.id))a=!0;let G2=G.columns;for(let Z2=0;Z2<s.cells.length&&Z2<G2.length;Z2++)d(s.cells[Z2],C,G2[Z2],Q2,_2);if(J2(s.element,Q2,a,q2,_2),s.element.setAttribute("data-id",String(C.id)),O(s.element,a),A2&&!_2)s.element.classList.add(U2),setTimeout(()=>{s.element.classList.remove(U2)},300);s.lastItemId=C.id,s.lastSelected=a,s.lastFocused=q2}else if(E2||B2)J2(s.element,Q2,a,q2,z(C.id)),O(s.element,a),s.lastSelected=a,s.lastFocused=q2;let W2=L(Q2,K2,p);if(s.lastOffset!==W2)s.lastOffset=W2,s.element.style.transform=`translateY(${W2}px)`;let D2=K2.getSize(Q2);if(s.lastHeight!==D2)s.lastHeight=D2,s.element.style.height=`${D2}px`;if(m)s.element.setAttribute("aria-rowindex",String(Q2+2))}}else{if(y2(b,Q2,C.id))a=!0;let V2=X2?M(C,Q2,K2,p):v(C,Q2,a,q2,K2,p);if(y.set(Q2,V2),!e)e=document.createDocumentFragment();e.appendChild(V2.element)}}if(e)J.appendChild(e)},l=(K)=>{let R=Q();for(let[b,h]of y){let p=L(b,R,K);if(h.lastOffset!==p)h.lastOffset=p,h.element.style.transform=`translateY(${p}px)`}},S=(K,R,b,h)=>{let p=y.get(K);if(!p)return;if(p.isGroupHeader)return;let m=G.columns;for(let n=0;n<p.cells.length&&n<m.length;n++)d(p.cells[n],R,m[n],K);p.element.setAttribute("data-id",String(R.id)),p.lastItemId=R.id,J2(p.element,K,b,h),O(p.element,b),p.lastSelected=b,p.lastFocused=h},N=(K,R,b)=>{let h=y.get(K);if(!h)return;if(h.isGroupHeader)return;let p=h.lastSelected!==R,m=h.lastFocused!==b;if(p||m)J2(h.element,K,R,b),O(h.element,R),h.lastSelected=R,h.lastFocused=b},H=(K)=>{G=K;let R=K.columns;for(let[,b]of y)if(b.element.style.width=`${K.totalWidth}px`,b.cells.length>0)for(let h=0;h<b.cells.length&&h<R.length;h++){let p=b.cells[h],m=R[h];p.style.left=`${m.offset}px`,p.style.width=`${m.width}px`}},A=(K)=>{return y.get(K)?.element},k=()=>{for(let[,K]of y)V.release(K.element);y.clear(),f=-1};return{render:c,updatePositions:l,updateItem:S,updateItemClasses:N,getElement:A,updateColumnLayout:H,setGroupHeaderFn:Z,clear:k,destroy:()=>{k(),V.clear()}}};var EJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.containerSize,j=0,Y=[],B=()=>{let _=(Q-1)*q;j=Math.max(0,($-_)/Q),Y=Array(Q);let Z=j+q;for(let O=0;O<Q;O++)Y[O]=O*Z};B();let D=[],P=0,V=[],y=(_,Z)=>{if(_<=0)return P=0,D=[],[];let O=Array(Q).fill(0),T=Array(Q);for(let I=0;I<Q;I++)T[I]=[];let z=Array(_);for(let I=0;I<_;I++){let g=0,u=O[0];for(let i=1;i<Q;i++){let $2=O[i];if($2<u)u=$2,g=i}let Y2=Z(I),o=O[g];z[I]={index:I,x:Y[g],y:o,lane:g,size:Y2,crossSize:j},T[g].push(I),O[g]=o+Y2+q}D=T;let w=0;for(let I=0;I<Q;I++){let g=O[I],u=g>0?g-q:0;if(u>w)w=u}return P=w,z},f=(_)=>{if(_.length===0)return P;if(P)return P;let Z=Array(Q).fill(0);for(let T of _){let z=T.y+T.size,w=Z[T.lane];if(z>w)Z[T.lane]=z}let O=0;for(let T=0;T<Q;T++)if(Z[T]>O)O=Z[T];return O},G=(_,Z,O)=>{if(_.length===0||O<=Z)return V.length=0,V;if(D.length===0||D.length!==Q)return E(_,Z,O);V.length=0;for(let T=0;T<Q;T++){let z=D[T],w=z.length;if(!w)continue;let I=0,g=w;while(I<g){let u=I+g>>>1,Y2=_[z[u]];if(Y2.y+Y2.size<=Z)I=u+1;else g=u}for(let u=I;u<w;u++){let Y2=_[z[u]];if(Y2.y>=O)break;V.push(Y2)}}return V},E=(_,Z,O)=>{V.length=0;for(let T of _)if(T.y+T.size>Z&&T.y<O)V.push(T);return V};return{get columns(){return Q},get gap(){return q},get containerSize(){return $},update:(_)=>{let Z=!1;if(_.columns!==void 0){let O=Math.max(1,Math.floor(_.columns));if(O!==Q)Q=O,Z=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,Z=!0;if(_.containerSize!==void 0&&_.containerSize!==$)$=_.containerSize,Z=!0;if(Z)B()},calculateLayout:y,getTotalSize:f,getVisibleItems:G}};var aJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},sJ=1,AJ=(J,Q,q,$=!1,j,Y,B,D)=>{let P=aJ(),V=new Map,y=new Set,f=0,G="",E=-1,W={selected:!1,focused:!1},_=(r,d)=>{return W.selected=r,W.focused=d,W},Z=`${q}-item ${q}-masonry-item`,O=`${q}-group-header`,T=`${q}-item--selected`,z=`${q}-item--focused`,w=(r,d)=>{if(typeof d==="string")r.innerHTML=d;else r.replaceChildren(d)},I=(r,d,J2)=>{r.classList.toggle(T,d),r.classList.toggle(z,J2)},g=(r,d)=>{if($)r.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else r.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},u=(r,d)=>{if($)r.style.width=`${d.size}px`,r.style.height=`${d.crossSize}px`;else r.style.width=`${d.crossSize}px`,r.style.height=`${d.size}px`},Y2=(r,d,J2,L,X)=>{let U=P.acquire(),M=d.__groupHeader,v=_(L,X);if(U.className=M?O:Z,U.dataset.index=String(r),U.dataset.id=String(d.id),U.dataset.lane=String(J2.lane),M)U.setAttribute("role","presentation"),U.removeAttribute("aria-selected"),U.removeAttribute("aria-setsize"),U.removeAttribute("aria-posinset"),U.removeAttribute("id");else if(D!==!1){if(U.setAttribute("role","option"),U.ariaSelected=String(L),Y)U.id=`${Y}-item-${r}`;if(j){let l=j();if(l!==E)E=l,G=String(l);U.setAttribute("aria-setsize",G);let S=B?B(r):r+1;U.setAttribute("aria-posinset",String(S))}}else if(U.setAttribute("role","listitem"),U.removeAttribute("aria-selected"),j){let l=j();if(l!==E)E=l,G=String(l);U.setAttribute("aria-setsize",G);let S=B?B(r):r+1;U.setAttribute("aria-posinset",String(S))}u(U,J2);let c=Q(d,r,v);return w(U,c),I(U,L,X),g(U,J2),{element:U,lastItemId:d.id,lastSelected:L,lastFocused:X,lastY:J2.y,lastX:J2.x,lastSize:J2.size,lastCrossSize:J2.crossSize,lastSeenFrame:f}},o=(r,d,J2,L)=>{f++,y.clear();for(let U=0;U<d.length;U++)y.add(d[U].index);for(let[U,M]of V)if(y.has(U))M.lastSeenFrame=f;else if(f-M.lastSeenFrame>sJ)P.release(M.element),V.delete(U);let X=null;for(let U=0;U<d.length;U++){let M=d[U],v=M.index,c=r(v);if(!c)continue;let l=J2.has(c.id),S=v===L,N=V.get(v);if(N){let H=N.lastItemId!==c.id,A=N.lastSelected!==l,k=N.lastFocused!==S,F=N.lastY!==M.y||N.lastX!==M.x,K=N.lastSize!==M.size||N.lastCrossSize!==M.crossSize;if(H){let R=_(l,S),b=Q(c,v,R);if(w(N.element,b),N.element.dataset.id=String(c.id),N.lastItemId=c.id,!c.__groupHeader){let p=B?B(v):v+1;N.element.setAttribute("aria-posinset",String(p))}}if(H||A||k)I(N.element,l,S),N.element.ariaSelected=String(l),N.lastSelected=l,N.lastFocused=S;if(K)u(N.element,M),N.lastSize=M.size,N.lastCrossSize=M.crossSize;if(F)g(N.element,M),N.lastY=M.y,N.lastX=M.x}else{let H=Y2(v,c,M,l,S);if(!X)X=document.createDocumentFragment();X.appendChild(H.element),V.set(v,H)}}if(X)J.appendChild(X)},i=()=>{for(let r of V.values())P.release(r.element);V.clear(),J.innerHTML=""};return{render:o,getElement:(r)=>V.get(r)?.element,updateItemClasses:(r,d,J2)=>{let L=V.get(r);if(!L)return;let X=L.lastSelected!==d,U=L.lastFocused!==J2;if(X||U)I(L.element,d,J2),L.lastSelected=d,L.lastFocused=J2},sortDOM:()=>{C2(J,V.keys(),(r)=>V.get(r)?.element)},clear:i,destroy:()=>{i(),P.clear()}}};var FJ=(J,Q)=>{let q=new Map,$=(Y)=>q.get(Y)??J,j=z2($,Q);return{getOffset(Y){return j.getOffset(Y)},getSize(Y){return $(Y)},indexAtOffset(Y){return j.indexAtOffset(Y)},getTotalSize(){return j.getTotalSize()},getTotal(){return j.getTotal()},rebuild(Y){if(Y<j.getTotal()){for(let B of q.keys())if(B>=Y)q.delete(B)}j=z2($,Y)},isVariable(){return!0},setMeasuredSize(Y,B){q.set(Y,B)},isMeasured(Y){return q.has(Y)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var LJ=(J,Q,q,$,j,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;let B=q.indexAtOffset(J),D=q.indexAtOffset(J+Q);if(D<$-1)D++;return Y.start=Math.max(0,B),Y.end=Math.min($-1,Math.max(0,D)),Y},HJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},bJ=(J,Q,q,$,j,Y)=>{if($===0)return 0;let B=Math.max(0,Math.min(J,$-1)),D=Q.getOffset(B),P=Q.getSize(B),V=Q.getTotalSize(),y=Math.max(0,V-q),f;switch(Y){case"center":f=D-q/2+P/2;break;case"end":f=D-q+P;break;case"start":default:f=D;break}return Math.max(0,Math.min(f,y))},RJ=(J,Q,q)=>{if(q&&q.isCompressed)return q.virtualSize;return Q.getTotalSize()},TJ=(J,Q)=>{return Q.getTotalSize()},yJ=(J,Q)=>{return Q.getOffset(J)},PJ=(J,Q,q)=>{let $=Math.max(0,Q-q);return Math.max(0,Math.min(J,$))};var kJ=(J,Q,q,$,j="start",Y,B=bJ)=>{return B(J,Q,q,$,Y,j)},zJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},wJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},vJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var CJ=(J,Q)=>{let q=[],$=[];for(let j=J.start;j<=J.end;j++)if(j<Q.start||j>Q.end)$.push(j);for(let j=Q.start;j<=Q.end;j++)if(j<J.start||j>J.end)q.push(j);return{add:q,remove:$}};var fJ=()=>{let J={},Q=(Y,B)=>{if(!J[Y])J[Y]=new Set;return J[Y].add(B),()=>q(Y,B)},q=(Y,B)=>{J[Y]?.delete(B)};return{on:Q,off:q,emit:(Y,B)=>{J[Y]?.forEach((D)=>{try{D(B)}catch(P){console.error(`[vlist] Error in event handler for "${String(Y)}":`,P)}})},clear:(Y)=>{if(Y)delete J[Y];else for(let B in J)delete J[B]}}};var f2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:q=5000,evictionBuffer:$=200,onEvict:j}=J,Y=new Map,B=0,D=0,P=(L)=>{let X=Y.get(L);if(!X)X={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(L,X);else X.lastAccess=Date.now();return X},V=(L)=>{return Math.floor(L/Q)},y=(L)=>{return L%Q},f=()=>B,G=(L)=>{B=L},E=(L)=>{if(L<0||L>=B)return;let X=V(L),U=Y.get(X);if(!U)return;return U.items[y(L)]},W=(L)=>{if(L<0||L>=B)return!1;let X=V(L),U=Y.get(X);if(!U)return!1;return U.items[y(L)]!==void 0},_=(L,X)=>{let U=V(L),M=P(U),v=y(L),c=M.items[v]===void 0;if(M.items[v]=X,c)M.count++,D++;if(L>=B)B=L+1},Z=(L,X)=>{for(let U=0;U<X.length;U++){let M=X[U];if(M!==void 0)_(L+U,M)}},O=(L,X)=>{if(L<0||L>B)return;let U=V(L),M=Array.from(Y.keys()).filter((N)=>N>=U).sort((N,H)=>N-H),v=[];for(let N of M){let H=Y.get(N),A=N*Q;for(let k=0;k<Q;k++){if(H.items[k]===void 0)continue;let F=A+k;if(F<L)continue;v.push({oldIndex:F,item:H.items[k]})}}for(let{oldIndex:N}of v){let H=V(N),A=Y.get(H);if(!A)continue;let k=y(N);if(A.items[k]!==void 0){if(A.items[k]=void 0,A.count--,D--,A.count===0)Y.delete(H)}}B++;for(let{oldIndex:N,item:H}of v){let A=N+1,k=V(A),F=P(k),K=y(A);F.items[K]=H,F.count++,D++}let c=V(L),l=P(c),S=y(L);l.items[S]=X,l.count++,D++},T=(L)=>{if(L<0||L>=B)return!1;let X=V(L),U=Y.get(X),M=y(L);if(!(U!==void 0&&U.items[M]!==void 0))return!1;let c=X,l=Array.from(Y.keys()).filter((N)=>N>=c).sort((N,H)=>N-H),S=[];for(let N of l){let H=Y.get(N),A=N*Q;for(let k=0;k<Q;k++){if(H.items[k]===void 0)continue;let F=A+k;if(F<=L)continue;S.push({oldIndex:F,item:H.items[k]})}}if(U.items[M]=void 0,U.count--,D--,U.count===0)Y.delete(X);for(let{oldIndex:N}of S){let H=V(N),A=Y.get(H);if(!A)continue;let k=y(N);if(A.items[k]!==void 0){if(A.items[k]=void 0,A.count--,D--,A.count===0)Y.delete(H)}}for(let{oldIndex:N,item:H}of S){let A=N-1,k=V(A),F=P(k),K=y(A);F.items[K]=H,F.count++,D++}return B--,!0},z=(L,X)=>{let U=[];for(let M=L;M<=X&&M<B;M++)U.push(E(M));return U},w=(L,X)=>{for(let U=L;U<=X&&U<B;U++)if(!W(U))return!1;return!0},I=()=>{let L=[],X=null,U=Array.from(Y.keys()).sort((M,v)=>M-v);for(let M of U){let v=Y.get(M);if(!v)continue;let c=M*Q;for(let l=0;l<Q;l++){let S=c+l;if(S>=B)break;if(v.items[l]!==void 0)if(X===null)X={start:S,end:S};else if(S===X.end+1)X.end=S;else L.push(X),X={start:S,end:S};else if(X!==null)L.push(X),X=null}}if(X!==null)L.push(X);return L},g=(L,X)=>{let U=[],M=null;for(let v=L;v<=X&&v<B;v++)if(!W(v))if(M===null)M={start:v,end:v};else M.end=v;else if(M!==null)U.push(M),M=null;if(M!==null)U.push(M);return U},u=(L)=>{return Y.has(L)},Y2=(L)=>{let X=Y.get(L);if(!X)return!1;let U=L*Q,M=Math.min(Q,B-U);return X.count>=M},o=(L)=>{let X=Y.get(L);if(X)X.lastAccess=Date.now()},i=(L,X)=>{if(L>X||Y.size===0)return;let U=Date.now(),M=V(Math.max(0,L)),v=V(Math.min(B-1,X));for(let c=M;c<=v;c++){let l=Y.get(c);if(l)l.lastAccess=U}},$2=(L,X)=>{if(D<=q)return 0;let U=Math.max(0,L-$),M=Math.min(B-1,X+$),v=V(U),c=V(M),l=0,S=[];for(let[N,H]of Y)if(N<v||N>c)l+=H.count,S.push(N),D-=H.count,Y.delete(N);if(l>0&&j)j(l,S);return l},U2=()=>{if(D<=q)return 0;let L=Array.from(Y.entries()).sort(([,M],[,v])=>M.lastAccess-v.lastAccess),X=0,U=[];for(let[M,v]of L){if(D<=q)break;X+=v.count,D-=v.count,U.push(M),Y.delete(M)}if(X>0&&j)j(X,U);return X},j2=()=>{return{totalItems:B,cachedItems:D,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:q,memoryEfficiency:B>0?1-D/B:1}},r=()=>D,d=()=>{Y.clear(),D=0};return{chunkSize:Q,maxCachedItems:q,getTotal:f,setTotal:G,get:E,has:W,set:_,setRange:Z,insert:O,delete:T,getRange:z,isRangeLoaded:w,getLoadedRanges:I,findUnloadedRanges:g,getChunkIndex:V,isChunkLoaded:u,isChunkFullyLoaded:Y2,touchChunk:o,touchChunksForRange:i,evictDistant:$2,evictToLimit:U2,getStats:j2,getCachedCount:r,clear:d,reset:()=>{d(),B=0}}},S2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,j)=>$.start-j.start),q=[{...Q[0]}];for(let $=1;$<Q.length;$++){let j=Q[$],Y=q[q.length-1];if(j.start<=Y.end+1)Y.end=Math.max(Y.end,j.end);else q.push({...j})}return q},r2=(J,Q,q)=>{let $=Math.floor(J.start/q)*q,j=Math.ceil((J.end+1)/q)*q-1,Y={start:$,end:j};if(Q.length===0)return[Y];let B=[],D=S2(Q),P=Y.start;for(let V of D){if(V.end<P)continue;if(V.start>Y.end)break;if(V.start>P)B.push({start:P,end:Math.min(V.start-1,Y.end)});if(P=V.end+1,P>Y.end)break}if(P<=Y.end)B.push({start:P,end:Y.end});return B};var I2=(J={})=>{let{maskCharacter:Q=JJ,maxSampleSize:q=QJ}=J,$=[],j=!1,Y=(y)=>{if(j||y.length===0)return;let f=Math.min(y.length,q);for(let G=0;G<f;G++){let E=y[G];if(!E||typeof E!=="object")continue;let W={},_=!1;for(let[Z,O]of Object.entries(E)){if(Z.startsWith("_")||Z==="id")continue;W[Z]=String(O??"").length,_=!0}if(_)$.push(W)}j=!0},B=()=>j,D=(y)=>{let f={id:`${R2}${y}`,[g2]:!0,_index:y};if($.length===0)return f.label=Q.repeat(12),f;let G=$[y%$.length];for(let[E,W]of Object.entries(G))f[E]=Q.repeat(Math.max(1,W));return f};return{analyzeStructure:Y,hasAnalyzedStructure:B,generate:D,generateRange:(y,f)=>{let G=[];for(let E=y;E<=f;E++)G.push(D(E));return G},clear:()=>{$=[],j=!1}}},T2=(J)=>{if(!J||typeof J!=="object")return!1;return J[g2]===!0},l2=(J)=>{return J.filter((Q)=>!T2(Q))};var oJ=50,SJ=(J={})=>{let{adapter:Q,initialItems:q,initialTotal:$,storage:j,placeholder:Y,pageSize:B=oJ,maxConcurrent:D=0,onStateChange:P,onDataChange:V,onItemsLoaded:y,onItemsEvicted:f}=J,G=f2({...j,onEvict:(x,C)=>{f?.(x),i(),o()}}),E=null,W=()=>{if(!E)E=I2(Y);return E},_=new Map,Z=!1,O,T=!0,z,w,I=[],g=0,u=new Map,Y2=()=>{for(let x of u.values())x[1].abort();u.clear()},o=()=>{P?.(U())},i=()=>{V?.()},$2=()=>{_.clear();let x=G.getLoadedRanges();for(let C of x)for(let a=C.start;a<=C.end;a++){let q2=G.get(a);if(q2&&!T2(q2))_.set(q2.id,a)}},U2=(x,C)=>{if(!T2(C))_.set(C.id,x)},j2=(x)=>{_.delete(x)},r=(x,C)=>{return`${x}-${C}`},d=()=>G.getTotal(),J2=()=>G.getCachedCount(),L=()=>Z,X=()=>T,U=()=>({total:G.getTotal(),cached:G.getCachedCount(),isLoading:Z,pendingRanges:I,error:O,hasMore:T,cursor:z}),M=()=>G,v=()=>W(),c=(x)=>{let C=G.get(x);if(C!==void 0)return C;if(x>=0&&x<G.getTotal())return W().generate(x);return},l=(x)=>{let C=_.get(x);if(C===void 0)return;return G.get(C)},S=(x)=>{return _.get(x)??-1},N=(x)=>{let C=G.get(x);return C!==void 0&&!T2(C)},H=(x,C)=>{let a=[],q2=G.getTotal();G.touchChunksForRange(x,Math.min(C,q2-1));for(let X2=x;X2<=C&&X2<q2;X2++){let s=G.get(X2);if(s!==void 0)a.push(s);else a.push(W().generate(X2))}return a},A=(x)=>{G.setTotal(x),T=G.getCachedCount()<x,i(),o()},k=(x,C=0,a)=>{if(Q&&x.length>0){let q2=W();if(!q2.hasAnalyzedStructure())q2.analyzeStructure(x)}for(let q2=0;q2<x.length;q2++){let X2=x[q2];if(X2!==void 0){let s=C+q2;G.set(s,X2),U2(s,X2)}}if(a!==void 0)G.setTotal(a);else if(C+x.length>G.getTotal())G.setTotal(C+x.length);if(G.getCachedCount()>=G.getTotal()&&G.getTotal()>0)T=!1;i(),o(),y?.(x,C,G.getTotal())},F=(x,C)=>{let a=G.get(x);if(!a)return!1;let q2=a.id,X2={...a,...C};if(G.set(x,X2),C.id!==void 0&&C.id!==q2)j2(q2);return U2(x,X2),i(),o(),!0},K=(x,C)=>{G.insert(C,x),$2(),Y2(),i(),o()},R=(x)=>{let C=_.get(x);if(C===void 0)return!1;if(!G.delete(C))return!1;return $2(),Y2(),i(),o(),!0},b=async(x,C)=>{if(!Q)return;let a=G.chunkSize,q2=Math.floor(x/a),X2=Math.floor(C/a),s=a*2;for(let[B2,W2]of u){let D2=B2.indexOf("-"),A2=parseInt(B2.slice(0,D2),10);if(Math.abs(A2-x)>s)W2[1].abort(),u.delete(B2)}let V2=[],E2=[];for(let B2=q2;B2<=X2;B2++){let W2=B2*a,D2=W2+a-1,A2=r(W2,D2);if(G.isChunkFullyLoaded(B2))continue;let G2=u.get(A2);if(G2)E2.push(G2[0]);else V2.push({start:W2,end:D2})}if(V2.length===0){if(E2.length>0)await Promise.all(E2);return}if(D>0){let B2=u.size+V2.length;if(B2>D){let W2=(x+C)/2,D2=Math.min(B2-D,u.size);while(D2>0){let _2=null,G2=-1,Z2=null;for(let[F2,t]of u){let N2=F2.indexOf("-"),M2=parseInt(F2.slice(0,N2),10),O2=parseInt(F2.slice(N2+1),10),L2=Math.abs((M2+O2)/2-W2);if(L2>G2)G2=L2,_2=F2,Z2=t[1]}if(_2)Z2.abort(),u.delete(_2);D2--}let A2=D-u.size;if(V2.length>A2)V2.sort((_2,G2)=>{let Z2=Math.abs((_2.start+_2.end)/2-W2),F2=Math.abs((G2.start+G2.end)/2-W2);return Z2-F2}),V2.length=Math.max(0,A2)}}if(V2.length===0){if(E2.length>0)await Promise.all(E2);return}for(let B2 of V2){let W2=r(B2.start,B2.end),D2=new AbortController,A2=(async()=>{I.push(B2),Z=!0,O=void 0,o();try{let _2=B2.end-B2.start+1,G2={offset:B2.start,limit:_2,cursor:B2.start===w?z:void 0,signal:D2.signal},Z2=await Q.read(G2);if(k(Z2.items,B2.start,Z2.total),Z2.cursor)z=Z2.cursor,w=B2.start+Z2.items.length;let F2=B2.start+Z2.items.length;if(F2>=g){if(g=F2,Z2.hasMore!==void 0)T=Z2.hasMore;else if(Z2.total!==void 0)T=F2<Z2.total}}catch(_2){if(_2?.name==="AbortError")return;O=_2 instanceof Error?_2:Error(String(_2))}finally{u.delete(W2);let _2=I.findIndex((G2)=>G2.start===B2.start&&G2.end===B2.end);if(_2>=0)I.splice(_2,1);Z=u.size>0,o()}})();u.set(W2,[A2,D2]),E2.push(A2)}await Promise.all(E2)},h=async(x,C)=>{if(G.isRangeLoaded(x,C))return;await b(x,C)},p=async()=>{if(!Q)return;await b(0,B-1)},m=async()=>{if(!Q||Z||!T)return!1;let x=G.getCachedCount(),C=G.getTotal(),a=x,q2=Math.min(a+B-1,C>0?C-1:a+B-1);if(a>=C&&C>0)return T=!1,!1;return await b(a,q2),G.getCachedCount()>x},n=async()=>{if(G.clear(),G.setTotal(0),_.clear(),E)E.clear();Y2(),I=[],Z=!1,z=void 0,w=void 0,T=!0,g=0,O=void 0,i(),o()},e=(x,C)=>{if(G.evictDistant(x,C)>0)$2()},K2=()=>{G.clear(),_.clear(),z=void 0,w=void 0,O=void 0,I=[],Z=!1,i(),o()},Q2=()=>{if(G.reset(),_.clear(),E)E.clear();z=void 0,w=void 0,T=!0,g=0,O=void 0,I=[],Z=!1,i(),o()};if(q&&q.length>0)k(q,0,$??q.length);else if($!==void 0)G.setTotal($),i(),o();return{getState:U,getTotal:d,getCached:J2,getIsLoading:L,getHasMore:X,getStorage:M,getPlaceholders:v,getItem:c,getItemById:l,getIndexById:S,isItemLoaded:N,getItemsInRange:H,setTotal:A,setItems:k,updateItem:F,insertItem:K,removeItem:R,loadRange:b,ensureRange:h,loadInitial:p,loadMore:m,reload:n,evictDistant:e,clear:K2,reset:Q2}};var iJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},IJ=(J,Q,q={},$="vlist",j=!1,Y)=>{let{autoHide:B=!0,autoHideDelay:D=1000,minThumbSize:P=15,showOnHover:V=!0,showOnViewportEnter:y=!0,clickBehavior:f="scroll"}=q,G=f==="page"?"scroll":f,E=Y??J,W=iJ(q.padding),_=j?W.left:W.top,Z=j?W.right:W.bottom,O=j?W.bottom:W.right,T=q.hoverZoneWidth??O+16,z=0,w=0,I=0,g=0,u=!1,Y2=!1,o=0,i=0,$2=0,U2=null,j2=!1,r=null,d=0,J2=0,L=null,X=null,U=null,M=j?"width":"height",v=j?"translateX":"translateY",c=j?(t)=>t.clientX:(t)=>t.clientY,l=j?"left":"top",S=document.createElement("div"),N=document.createElement("div"),H=document.createElement("div"),A=j?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",k=()=>{if(E===J)return;let t=J.offsetTop;S.style[j?"left":"top"]=t?`calc(var(${A}) + ${t}px)`:`var(${A})`,H.style[j?"left":"top"]=`${t}px`},F=()=>{if(S.className=`${$}-scrollbar`,N.className=`${$}-scrollbar__thumb`,j)S.classList.add(`${$}-scrollbar--horizontal`);if(q.padding!==void 0)E.style.setProperty("--vlist-custom-scrollbar-padding-top",`${W.top}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-right",`${W.right}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${W.bottom}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-left",`${W.left}px`);if(q.minThumbSize!==void 0)S.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${P}px`);if(S.appendChild(N),E.appendChild(S),H.className=`${$}-scrollbar__hover`,j)H.classList.add(`${$}-scrollbar__hover--horizontal`),H.style.height=`${T}px`;else H.style.width=`${T}px`;if(E.appendChild(H),E!==J)k()},K=()=>{if(U2)clearTimeout(U2),U2=null},R=()=>{if(!B)return;K(),U2=setTimeout(h,D)},b=()=>{if(z<=w)return;if(K(),!j2)S.classList.add(`${$}-scrollbar--visible`),j2=!0;if(B&&!u&&!Y2)R()},h=()=>{if(u||Y2)return;S.classList.remove(`${$}-scrollbar--visible`),j2=!1},p=(t,N2)=>{if(z=t,w=N2,k(),z<=w){S.style.display="none",h();return}S.style.display="";let M2=Math.max(0,w-_-Z),O2=w/z;if(I=Math.max(P,O2*M2),N.style[M]=`${I}px`,g=M2-I,m($2),!B)b()},m=(t)=>{if($2=t,z<=w||g<=0)return;let N2=z-w,M2=Math.min(1,Math.max(0,t/N2));N.style.transform=`${v}(${M2*g}px)`},n=(t)=>{if(t.target===N||G!=="jump"||g<=0)return;let N2=z-w,M2=S.getBoundingClientRect(),O2=c(t)-M2[l],L2=Math.max(0,Math.min(O2-I/2,g));Q(L2/g*N2),b()},e=()=>{if(L!==null)clearTimeout(L),L=null;if(X!==null)cancelAnimationFrame(X),X=null;U=null},K2=(t)=>{let N2=g>0?J2/t*g:0;if(d<N2)return-1;if(d>=N2+I)return 1;return 0},Q2=()=>{let t=z-w,N2=K2(t);if(N2===0){e();return}if(N2===-1){if(J2<=0){e();return}let M2=Math.max(0,J2-w);J2=M2,Q(M2)}else{if(J2>=t){e();return}let M2=Math.min(t,J2+w);J2=M2,Q(M2)}b()},x=(t)=>{if(U===null){U=t,X=requestAnimationFrame(x);return}let N2=z-w,M2=t-U;U=t;let O2=K2(N2);if(O2===0){e();return}let L2=12*w/1000,b2=Math.min(L2*M2,w);if(O2===-1){if(J2<=0){e();return}let k2=Math.max(0,J2-b2);J2=k2,Q(k2)}else{if(J2>=N2){e();return}let k2=Math.min(N2,J2+b2);J2=k2,Q(k2)}K(),X=requestAnimationFrame(x)},C=()=>{e(),R(),document.removeEventListener("mouseup",C)},a=(t)=>{if(t.target===N||G!=="scroll")return;t.preventDefault();let N2=S.getBoundingClientRect();d=c(t)-N2[l],J2=$2,Q2(),L=setTimeout(()=>{X=requestAnimationFrame(x)},350),document.addEventListener("mouseup",C)},q2=(t)=>{t.preventDefault(),t.stopPropagation(),u=!0,o=c(t),i=$2,K(),S.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",X2),document.addEventListener("mouseup",s)},X2=(t)=>{if(!u)return;let N2=c(t)-o,M2=g>0?N2/g:0,O2=z-w,L2=M2*O2,b2=Math.max(0,Math.min(i+L2,O2));N.style.transform=`${v}(${b2/O2*g}px)`,Q(b2)},s=()=>{if(u=!1,S.classList.remove(`${$}-scrollbar--dragging`),B&&!Y2)R();document.removeEventListener("mousemove",X2),document.removeEventListener("mouseup",s)},V2=j?(t)=>t.touches[0].clientX:(t)=>t.touches[0].clientY,E2=(t)=>{t.stopPropagation(),u=!0,o=V2(t),i=$2,K(),S.classList.add(`${$}-scrollbar--dragging`)},B2=(t)=>{if(!u)return;t.preventDefault();let N2=V2(t)-o,M2=g>0?N2/g:0,O2=z-w,L2=M2*O2,b2=Math.max(0,Math.min(i+L2,O2));N.style.transform=`${v}(${b2/O2*g}px)`,Q(b2)},W2=()=>{if(u=!1,S.classList.remove(`${$}-scrollbar--dragging`),B)R()},D2=(t)=>{if(t.target===N)return;if(g<=0)return;let N2=t.touches[0],M2=S.getBoundingClientRect(),O2=(j?N2.clientX:N2.clientY)-M2[l];if(G==="jump"){let L2=z-w,b2=Math.max(0,Math.min(O2-I/2,g));Q(b2/g*L2)}else d=O2,J2=$2,Q2();b()},A2=()=>{if(y)b()},_2=()=>{if(!u){if(Y2=!1,B)R()}},G2=()=>{Y2=!0,K(),b()},Z2=()=>{if(Y2=!1,!u&&B)R()},F2=()=>{if(K(),e(),r!==null)cancelAnimationFrame(r),r=null;S.removeEventListener("click",n),S.removeEventListener("mousedown",a),S.removeEventListener("mouseenter",G2),document.removeEventListener("mouseup",C),S.removeEventListener("mouseleave",Z2),S.removeEventListener("touchstart",D2),N.removeEventListener("mousedown",q2),N.removeEventListener("touchstart",E2),N.removeEventListener("touchmove",B2),N.removeEventListener("touchend",W2),J.removeEventListener("mouseenter",A2),J.removeEventListener("mouseleave",_2),document.removeEventListener("mousemove",X2),document.removeEventListener("mouseup",s),H.removeEventListener("click",n),H.removeEventListener("mousedown",a),H.removeEventListener("mouseenter",G2),H.removeEventListener("mouseleave",Z2),H.remove(),E.style.removeProperty("--vlist-custom-scrollbar-padding-top"),E.style.removeProperty("--vlist-custom-scrollbar-padding-right"),E.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),E.style.removeProperty("--vlist-custom-scrollbar-padding-left"),S.remove()};if(F(),S.addEventListener("click",n),S.addEventListener("mousedown",a),S.addEventListener("mouseenter",G2),S.addEventListener("mouseleave",Z2),S.addEventListener("touchstart",D2,{passive:!0}),N.addEventListener("mousedown",q2),N.addEventListener("touchstart",E2,{passive:!0}),N.addEventListener("touchmove",B2,{passive:!1}),N.addEventListener("touchend",W2,{passive:!0}),J.addEventListener("mouseenter",A2),J.addEventListener("mouseleave",_2),H.addEventListener("click",n),H.addEventListener("mousedown",a),V)H.addEventListener("mouseenter",G2),H.addEventListener("mouseleave",Z2);return{show:b,hide:h,updateBounds:p,updatePosition:m,isVisible:()=>j2,destroy:F2}};var pJ=(J=0)=>{let Q=[,,,,,,,,];for(let q=0;q<8;q++)Q[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},p2=(J,Q)=>{let q=performance.now(),$=q-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=q,J}let j=J.samples[J.sampleIndex];if(j.position=Q,j.time=q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,B=J.samples[Y],D=Q-B.position,P=q-B.time;J.velocity=P>0?D/P:0}return J.lastPosition=Q,J.lastTime=q,J},tJ=(J)=>J.sampleCount>=3,xJ=(J,Q={})=>{let{wheel:q=!0,sensitivity:$=1,smoothing:j=!1,idleTimeout:Y=150,onScroll:B,onIdle:D,scrollElement:P,horizontal:V=!1}=Q,y=!!P,f=0,G=0,E=y?V?window.innerWidth:window.innerHeight:V?J.clientWidth:J.clientHeight,W=Q.compressed??!1,_=Q.compression,Z=pJ(),O=!1,T=null,w=x2(()=>{let A=V?J.scrollLeft:J.scrollTop,k=A>=f?"down":"up";if(Z=p2(Z,A),f=A,B)B({scrollTop:f,direction:k,velocity:Z.velocity});i()}),g=x2(()=>{let A=J.getBoundingClientRect(),k=V?Math.max(0,-A.left):Math.max(0,-A.top),F=k>=f?"down":"up";if(Z=p2(Z,k),f=k,!O)O=!0;if(B)B({scrollTop:f,direction:F,velocity:Z.velocity});i()}),u=(A)=>{A.preventDefault()},Y2=(A)=>{if(A.deltaX)return;A.preventDefault(),J.scrollLeft+=A.deltaY},o=(A)=>{if(!W)return;A.preventDefault();let k=(V?A.deltaX||A.deltaY:A.deltaY)*$,F=f+k;if(j)F=f+k*0.3;if(F=Math.max(0,Math.min(F,G)),F!==f){let R=F>=f?"down":"up";if(Z=p2(Z,F),f=F,!O)O=!0;if(B)B({scrollTop:f,direction:R,velocity:Z.velocity});i()}},i=()=>{if(T)clearTimeout(T);T=setTimeout(()=>{if(O=!1,Z=pJ(f),D)D()},Y)},$2=(A)=>{if(W)return;if(W=!0,_=A,G=A.virtualSize-E,y)return;if(w.cancel(),J.removeEventListener("scroll",w),!q)J.removeEventListener("wheel",u);else if(V)J.removeEventListener("wheel",Y2);if(V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",o,{passive:!1});let k=V?J.scrollLeft:J.scrollTop;if(k>0){let F=V?_?.actualSize??J.scrollWidth:_?.actualSize??J.scrollHeight;f=k/F*G}if(V)J.scrollLeft=0;else J.scrollTop=0},U2=()=>{if(!W)return;if(W=!1,y){_=void 0;return}if(J.removeEventListener("wheel",o),V)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",w,{passive:!0}),!q)J.addEventListener("wheel",u,{passive:!1});else if(V)J.addEventListener("wheel",Y2,{passive:!1});if(_&&f>0){let k=f/G*(_.actualSize-E);if(V)J.scrollLeft=k;else J.scrollTop=k}_=void 0},j2=()=>{if(y||W)return f;return V?J.scrollLeft:J.scrollTop},r=(A,k=!1)=>{let F=Math.max(0,Math.min(A,G||1/0));if(y){let K=J.getBoundingClientRect();if(V){let R=K.left+window.scrollX;window.scrollTo({left:R+F,behavior:k?"smooth":"auto"})}else{let R=K.top+window.scrollY;window.scrollTo({top:R+F,behavior:k?"smooth":"auto"})}}else if(W){if(F===f)return;let R=F>=f?"down":"up";if(Z=p2(Z,F),f=F,!O)O=!0;if(B)B({scrollTop:f,direction:R,velocity:Z.velocity});i()}else if(V)J.scrollTo({left:F,behavior:k?"smooth":"auto"});else J.scrollTo({top:F,behavior:k?"smooth":"auto"})},d=(A)=>{r(j2()+A)},J2=()=>{return j2()<=0},L=(A=0)=>{let k=j2(),F=y||W?G:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return k>=F-A},X=()=>{let A=j2(),k=y||W?G:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(k<=0)return 0;return Math.min(1,Math.max(0,A/k))},U=(A)=>{if(A.compression)_=A.compression,G=_.virtualSize-E},M=()=>W,v=()=>Math.abs(Z.velocity),c=()=>tJ(Z),l=()=>O,S=()=>y,N=(A)=>{if(E=A,_)G=_.virtualSize-E},H=()=>{if(T)clearTimeout(T);if(y)g.cancel(),window.removeEventListener("scroll",g);else w.cancel(),J.removeEventListener("scroll",w),J.removeEventListener("wheel",o),J.removeEventListener("wheel",u),J.removeEventListener("wheel",Y2)};if(y){if(W&&_)G=_.virtualSize-E;window.addEventListener("scroll",g,{passive:!0})}else if(W&&_){if(G=_.virtualSize-E,V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",o,{passive:!1})}else{if(V)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",w,{passive:!0}),!q)J.addEventListener("wheel",u,{passive:!1});else if(V)J.addEventListener("wheel",Y2,{passive:!1})}return{getScrollTop:j2,scrollTo:r,scrollBy:d,isAtTop:J2,isAtBottom:L,getScrollPercentage:X,getVelocity:v,isTracking:c,isScrolling:l,updateConfig:U,enableCompression:$2,disableCompression:U2,isCompressed:M,isWindowMode:S,updateContainerHeight:N,destroy:H}},x2=(J)=>{let Q=null,q=null,$=(...j)=>{if(q=j,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,q)J(...q)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var eJ=50,JQ=0.1;function QQ(J){let Q=0,q=0,$=0;function j(){return $>0?q/$:0}function Y(P){if(Q=P,P>JQ&&P<eJ)q+=P,$++}function B(){let P=J.getTotal();if(P===0)return 0;let V=J.getItemSize();if(V<=0)return 0;let y=J.getContainerSize();if(y<=0)return 0;let f=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,W=Math.ceil(P/G)*V,Z=Math.min(W,H2)-y,O=W-y,T=Z>0?O/Z:1,z=f*T,w=Math.ceil((z+y)/V);return Math.min(w*G,P)}function D(){let P=J.getTotal(),V=B();return{progress:P>0?Math.min(100,Math.max(0,V/P*100)):0,velocity:Q,velocityAvg:j(),itemCount:V,total:P}}return{getState:D,onVelocity:Y}}export{qJ as toggleSelection,LJ as simpleVisibleRange,u2 as selectItems,YJ as selectAll,zJ as rangesEqual,x2 as rafThrottle,WJ as needsScaling,S2 as mergeRanges,BJ as isSelected,T2 as isPlaceholderItem,wJ as isInRange,v2 as isGroupHeader,UJ as getSelectedItems,XJ as getSelectedIds,w2 as getScaleState,MJ as getScaleInfo,w2 as getScale,vJ as getRangeCount,VJ as getMaxItemsWithoutScaling,l2 as filterPlaceholders,CJ as diffRanges,m2 as deselectItems,OJ as createTableRenderer,DJ as createTableLayout,GJ as createTableHeader,t2 as createStickyHeader,QQ as createStats,f2 as createSparseStorage,z2 as createSizeCache,$J as createSelectionState,IJ as createScrollbar,xJ as createScrollController,I2 as createPlaceholderManager,FJ as createMeasuredSizeCache,AJ as createMasonryRenderer,EJ as createMasonryLayout,o2 as createGroupedSizeFn,i2 as createGroupLayout,cJ as createGridRenderer,e2 as createGridLayout,fJ as createEmitter,SJ as createAsyncManager,jJ as clearSelection,PJ as clampScrollPosition,RJ as calculateTotalSize,kJ as calculateScrollToIndex,NJ as calculateScaledVisibleRange,ZJ as calculateScaledScrollToIndex,KJ as calculateScaledRenderRange,P2 as calculateScaledItemPosition,HJ as calculateRenderRange,r2 as calculateMissingRanges,yJ as calculateItemOffset,_J as calculateIndexFromScrollPosition,TJ as calculateActualSize,n2 as buildLayoutItems,H2 as MAX_VIRTUAL_SIZE};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — A11y Plugin
|
|
3
|
+
*
|
|
4
|
+
* Baseline keyboard navigation, single-select, focus management, and ARIA.
|
|
5
|
+
* Extracted from createVList() so it tree-shakes when selection() is used.
|
|
6
|
+
*
|
|
7
|
+
* Priority 55 — runs after selection (50). If selection already set
|
|
8
|
+
* itemStateFn, this plugin becomes a no-op.
|
|
9
|
+
*/
|
|
10
|
+
import type { VListItem } from "../../types";
|
|
11
|
+
import type { VListPlugin } from "../../core/types";
|
|
12
|
+
export declare function a11y<T extends VListItem = VListItem>(): VListPlugin<T>;
|
|
13
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* vlist - Data Domain
|
|
3
3
|
* Data management, sparse storage, and placeholder generation
|
|
4
4
|
*/
|
|
5
|
-
export {
|
|
5
|
+
export { data, type DataPluginConfig } from "./plugin";
|
|
6
6
|
export { createDataManager, mergeRanges, calculateMissingRanges, isPlaceholderItem, filterPlaceholders, countRealItems, type DataManager, type DataManagerConfig, type DataState, } from "./manager";
|
|
7
7
|
export { createSparseStorage, type SparseStorage, type SparseStorageConfig, type SparseStorageStats, } from "./sparse";
|
|
8
8
|
export { createPlaceholderManager, type PlaceholderManager, type PlaceholderConfig, } from "./placeholder";
|
|
@@ -19,8 +19,12 @@ export interface DataManagerConfig<T extends VListItem = VListItem> {
|
|
|
19
19
|
placeholder?: PlaceholderConfig;
|
|
20
20
|
/** Items per load request (default: 50) */
|
|
21
21
|
pageSize?: number;
|
|
22
|
-
/**
|
|
22
|
+
/** Maximum concurrent chunk requests (0 = unlimited, default: 6) */
|
|
23
|
+
maxConcurrent?: number;
|
|
24
|
+
/** Callback when state changes (all changes including loading flags) */
|
|
23
25
|
onStateChange?: (state: DataState<T>) => void;
|
|
26
|
+
/** Callback when data mutates (total, items, eviction) — NOT for loading-state-only changes */
|
|
27
|
+
onDataChange?: () => void;
|
|
24
28
|
/** Callback when items are loaded */
|
|
25
29
|
onItemsLoaded?: (items: T[], offset: number, total: number) => void;
|
|
26
30
|
/** Callback when items are evicted */
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Async Plugin
|
|
3
|
+
*
|
|
4
|
+
* Enables async data loading with sparse storage, placeholders, and infinite scroll.
|
|
5
|
+
* Priority 20 — runs before scrollbar and selection, after layout plugins.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Replaces default data source with async adapter-backed storage
|
|
9
|
+
* - Lazy-loads data in chunks on scroll + idle detection
|
|
10
|
+
* - Shows placeholders for unloaded items
|
|
11
|
+
* - Deduplicates concurrent fetch requests
|
|
12
|
+
* - Velocity-aware loading: skips loads during fast scrolling, loads on idle
|
|
13
|
+
* - Infinite scroll: loads next page when scrolling near bottom
|
|
14
|
+
* - Public methods: reload(), loadVisibleRange()
|
|
15
|
+
* - Emits: load:start, load:end, error events
|
|
16
|
+
*/
|
|
17
|
+
import type { VListItem, VListAdapter } from "../../types";
|
|
18
|
+
import type { VListPlugin } from "../../core/types";
|
|
19
|
+
export interface DataPluginConfig<T extends VListItem = VListItem> {
|
|
20
|
+
/** Async data source (required) */
|
|
21
|
+
adapter: VListAdapter<T>;
|
|
22
|
+
/** Total number of items (optional - if not provided, adapter must return it) */
|
|
23
|
+
total?: number;
|
|
24
|
+
/** Whether to automatically load initial data (default: true) */
|
|
25
|
+
autoLoad?: boolean;
|
|
26
|
+
/** Storage configuration */
|
|
27
|
+
storage?: {
|
|
28
|
+
/** Number of items per chunk (default: 100) */
|
|
29
|
+
chunkSize?: number;
|
|
30
|
+
/** Maximum cached items before eviction (default: 10000) */
|
|
31
|
+
maxCachedItems?: number;
|
|
32
|
+
/** Extra items to keep around visible range (default: 500) */
|
|
33
|
+
evictionBuffer?: number;
|
|
34
|
+
};
|
|
35
|
+
/** Loading behavior configuration */
|
|
36
|
+
loading?: {
|
|
37
|
+
/** Velocity threshold above which data loading is cancelled (px/ms) */
|
|
38
|
+
cancelThreshold?: number;
|
|
39
|
+
/** Velocity threshold for preloading (px/ms) */
|
|
40
|
+
preloadThreshold?: number;
|
|
41
|
+
/** Number of items to preload in scroll direction */
|
|
42
|
+
preloadAhead?: number;
|
|
43
|
+
/** Maximum concurrent chunk requests (0 = unlimited, default: 6) */
|
|
44
|
+
maxConcurrent?: number;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export declare function data<T extends VListItem = VListItem>(config: DataPluginConfig<T>): VListPlugin<T>;
|
|
48
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Autosize Plugin
|
|
3
|
+
*
|
|
4
|
+
* Enables dynamic item measurement via ResizeObserver for items with
|
|
5
|
+
* unknown sizes. Items are rendered without an explicit main-axis size,
|
|
6
|
+
* measured once by ResizeObserver, then pinned to their measured size.
|
|
7
|
+
*
|
|
8
|
+
* Priority 5 — runs before grid/masonry (10) so the measured cache
|
|
9
|
+
* is in place before layout plugins consume it.
|
|
10
|
+
*
|
|
11
|
+
* Requires: `item.estimatedHeight` or `item.estimatedWidth` in config
|
|
12
|
+
*/
|
|
13
|
+
import type { VListItem } from "../../types";
|
|
14
|
+
import type { VListPlugin } from "../../core/types";
|
|
15
|
+
export interface AutosizePluginConfig {
|
|
16
|
+
gap?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function autosize<T extends VListItem = VListItem>(config?: AutosizePluginConfig): VListPlugin<T>;
|
|
19
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Grid Plugin
|
|
3
|
+
*/
|
|
4
|
+
export { grid, type GridPluginConfig } from "./plugin";
|
|
5
|
+
export { createGridLayout, type GridConfigWithGroups, } from "./layout";
|
|
6
|
+
export type { GridLayout, GridPosition, ItemRange, } from "./types";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Grid Plugin
|
|
3
|
+
*
|
|
4
|
+
* Switches from list layout to a 2D grid with configurable columns and gap.
|
|
5
|
+
* Priority 10 — runs before selection (50) so layout is ready for other plugins.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Replaces the default 1D render pipeline with a grid-aware render
|
|
9
|
+
* - Size cache operates in ROW space (each row has height = itemHeight + gap)
|
|
10
|
+
* - Visible range is calculated in row space, then expanded to flat item indices
|
|
11
|
+
* - Items are positioned with translate(colOffset, rowOffset)
|
|
12
|
+
*
|
|
13
|
+
* Restrictions:
|
|
14
|
+
* - Cannot be combined with masonry or table plugins
|
|
15
|
+
*/
|
|
16
|
+
import type { VListItem } from "../../types";
|
|
17
|
+
import type { VListPlugin } from "../../core/types";
|
|
18
|
+
export interface GridPluginConfig {
|
|
19
|
+
columns: number;
|
|
20
|
+
gap?: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function grid<T extends VListItem = VListItem>(config: GridPluginConfig): VListPlugin<T>;
|
|
23
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* vlist - Groups Domain
|
|
3
3
|
* Sticky headers and grouped lists
|
|
4
4
|
*/
|
|
5
|
-
export {
|
|
5
|
+
export { groups, type GroupsPluginConfig } from "./plugin";
|
|
6
6
|
export type { GroupsConfig, GroupBoundary, LayoutEntry, GroupHeaderItem, GroupLayout, StickyHeader, } from "./types";
|
|
7
7
|
export { isGroupHeader } from "./types";
|
|
8
8
|
export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, } from "./layout";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Groups Plugin
|
|
3
|
+
*
|
|
4
|
+
* Adds grouped lists with sticky headers.
|
|
5
|
+
* Priority 10 — runs before selection (50).
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - Transforms items list: inserts group header pseudo-items at group boundaries
|
|
9
|
+
* - Replaces size function: headers use header height, items use item height
|
|
10
|
+
* - Replaces render pipeline: handles grouped layout rendering
|
|
11
|
+
* - Sticky header: floating header that updates on scroll
|
|
12
|
+
* - CSS class: adds .vlist--grouped to root
|
|
13
|
+
*
|
|
14
|
+
* Restrictions:
|
|
15
|
+
* - Items must be pre-sorted by group
|
|
16
|
+
*/
|
|
17
|
+
import type { VListItem, GroupsConfig } from "../../types";
|
|
18
|
+
import type { VListPlugin } from "../../core/types";
|
|
19
|
+
export interface GroupsPluginConfig extends GroupsConfig {
|
|
20
|
+
}
|
|
21
|
+
export declare function groups<T extends VListItem = VListItem>(config: GroupsPluginConfig): VListPlugin<T>;
|
|
22
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Masonry Plugin
|
|
3
|
+
*/
|
|
4
|
+
export { masonry, type MasonryPluginConfig, type MasonryContext } from "./plugin";
|
|
5
|
+
export { createMasonryLayout } from "./layout";
|
|
6
|
+
export { createMasonryRenderer, type MasonryRenderer, type GetItemFn } from "./renderer";
|
|
7
|
+
export type { MasonryConfig, MasonryLayout, ItemPlacement } from "./types";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Masonry Plugin
|
|
3
|
+
*
|
|
4
|
+
* Switches from list layout to masonry/Pinterest-style layout with
|
|
5
|
+
* shortest-lane placement. Each item is positioned in the shortest
|
|
6
|
+
* column, creating an organic packed layout.
|
|
7
|
+
*
|
|
8
|
+
* Priority 10 — runs before selection (50) so layout is ready.
|
|
9
|
+
*
|
|
10
|
+
* Restrictions:
|
|
11
|
+
* - Cannot be combined with grid or table plugins
|
|
12
|
+
* - Cannot be combined with reverse: true
|
|
13
|
+
*/
|
|
14
|
+
import type { VListItem } from "../../types";
|
|
15
|
+
import type { VListPlugin } from "../../core/types";
|
|
16
|
+
export interface MasonryPluginConfig {
|
|
17
|
+
columns: number;
|
|
18
|
+
gap?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Optional size function for responsive sizing relative to column width.
|
|
21
|
+
* If omitted, reads sizes from the main config's item.height/width.
|
|
22
|
+
*/
|
|
23
|
+
size?: (index: number, context: MasonryContext) => number;
|
|
24
|
+
}
|
|
25
|
+
export interface MasonryContext {
|
|
26
|
+
columnWidth: number;
|
|
27
|
+
columns: number;
|
|
28
|
+
gap: number;
|
|
29
|
+
containerWidth: number;
|
|
30
|
+
}
|
|
31
|
+
export declare function masonry<T extends VListItem = VListItem>(config: MasonryPluginConfig): VListPlugin<T>;
|
|
32
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Page (Window Scroll) Plugin
|
|
3
|
+
*
|
|
4
|
+
* Redirects scroll from the viewport to the window, enabling
|
|
5
|
+
* the list to scroll with the page. Useful for infinite feeds,
|
|
6
|
+
* full-page lists, and document-integrated virtual scrolling.
|
|
7
|
+
*
|
|
8
|
+
* Priority: 5 (runs early, before plugins that depend on scroll)
|
|
9
|
+
*/
|
|
10
|
+
import type { VListItem } from "../../types";
|
|
11
|
+
import type { VListPlugin } from "../../core/types";
|
|
12
|
+
export interface PagePluginConfig {
|
|
13
|
+
scrollPadding?: {
|
|
14
|
+
top?: number | (() => number);
|
|
15
|
+
bottom?: number | (() => number);
|
|
16
|
+
left?: number | (() => number);
|
|
17
|
+
right?: number | (() => number);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function page<T extends VListItem = VListItem>(config?: PagePluginConfig): VListPlugin<T>;
|
|
21
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vlist v2 — Scale Plugin
|
|
3
|
+
*
|
|
4
|
+
* Enables support for 1M+ item lists by compressing the scroll space
|
|
5
|
+
* when total content size exceeds the browser's ~16.7M pixel limit.
|
|
6
|
+
*
|
|
7
|
+
* Priority 20 — runs after layout plugins (10), before selection (50).
|
|
8
|
+
*
|
|
9
|
+
* When compressed:
|
|
10
|
+
* - Native scroll is disabled (overflow: hidden)
|
|
11
|
+
* - Custom wheel handler with lerp smooth scroll
|
|
12
|
+
* - Custom touch handler with momentum
|
|
13
|
+
* - Items positioned relative to viewport via onCalculate hook
|
|
14
|
+
* - Fallback scrollbar created if no scrollbar plugin present
|
|
15
|
+
*
|
|
16
|
+
* Uses v1's rendering/scale.ts pure math functions directly.
|
|
17
|
+
*/
|
|
18
|
+
import type { VListItem } from "../../types";
|
|
19
|
+
import type { VListPlugin } from "../../core/types";
|
|
20
|
+
export interface ScalePluginConfig {
|
|
21
|
+
force?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare function scale<T extends VListItem = VListItem>(config?: ScalePluginConfig): VListPlugin<T>;
|
|
24
|
+
//# sourceMappingURL=plugin.d.ts.map
|