vlist 1.5.6 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/size.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Lightweight, high-performance virtual list with zero dependencies and dimension-agnostic architecture.
|
|
4
4
|
|
|
5
|
-
**v1.
|
|
5
|
+
**v1.6.0** — [Changelog](./changelog.txt)
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/vlist)
|
|
8
8
|
[](https://github.com/floor/vlist/actions/workflows/ci.yml)
|
|
@@ -480,9 +480,9 @@ This makes the codebase clearer and eliminates semantic confusion when working w
|
|
|
480
480
|
|
|
481
481
|
| Configuration | Gzipped |
|
|
482
482
|
|---------------|---------|
|
|
483
|
-
| Base only | 10.
|
|
483
|
+
| Base only | 10.5 KB |
|
|
484
484
|
| + Grid | 14.3 KB |
|
|
485
|
-
| + Groups | 13.
|
|
485
|
+
| + Groups | 13.2 KB |
|
|
486
486
|
| + Async | 14.8 KB |
|
|
487
487
|
| + Table | 15.9 KB |
|
|
488
488
|
|
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,6 @@ export { withTable } from "./features/table";
|
|
|
23
23
|
export { withAutoSize } from "./features/autosize";
|
|
24
24
|
export { createStats } from "./utils/stats";
|
|
25
25
|
export type { Stats, StatsConfig, StatsState } from "./utils/stats";
|
|
26
|
-
export type { VListItem, VListEvents, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridSizeContext, GridHeightContext, } from "./types";
|
|
26
|
+
export type { VListItem, VListEvents, ItemConfig, ItemTemplate, ItemState, SelectionMode, SelectionConfig, SelectionState, ScrollbarConfig, ScrollbarOptions, ScrollConfig, ScrollToOptions, ScrollSnapshot, VListAdapter, AdapterParams, AdapterResponse, Range, ViewportState, EventHandler, Unsubscribe, GridConfig, MasonryConfig, GroupsConfig, GroupHeaderConfig, GridSizeContext, GridHeightContext, } from "./types";
|
|
27
27
|
export type { VListBuilder, VList, BuilderConfig, VListConfig, VListFeature, BuilderContext, ReloadOptions, } from "./builder";
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var J1=2,Q1=(J=0)=>({velocity:0,sampleCount:0}),q1=(J,Q)=>{let j=performance.now(),Y=J._lt??j,K=J._lp??Q,q=j-Y;if(J._lp=Q,J._lt=j,q===0)return J.sampleCount=Math.min(J.sampleCount+1,5),J;if(q>100)return J.velocity=0,J.sampleCount=1,J;return J.velocity=Math.abs(Q-K)/q,J.sampleCount=Math.min(J.sampleCount+1,5),J};var J4=(J,Q)=>{let j=Q;return{getOffset:(Y)=>Y*J,getSize:(Y)=>J,indexAtOffset:(Y)=>{if(j===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(Y/J),j-1))},getTotalSize:()=>j*J,getTotal:()=>j,rebuild:(Y)=>{j=Y},isVariable:()=>!1}},Q4=(J,Q)=>{let j=Q,Y=new Float64Array(0),K=(B)=>{j=B,Y=new Float64Array(B+1),Y[0]=0;for(let D=0;D<B;D++)Y[D+1]=Y[D]+J(D)};K(Q);let q=(B)=>{if(j===0)return 0;if(B<=0)return 0;if(B>=Y[j])return j-1;let D=0,U=j-1;while(D<U){let Z=D+U+1>>>1;if(Y[Z]<=B)D=Z;else U=Z-1}return D};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=j)return Y[j];return Y[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>q(B),getTotalSize:()=>Y[j]??0,getTotal:()=>j,rebuild:(B)=>K(B),isVariable:()=>!0}},S0=(J,Q)=>{if(typeof J==="number")return J4(J,Q);return Q4(J,Q)},Y1=(J,Q,j,Y)=>{if(Y===0)return 0;if(!J.isVariable())return Math.ceil(j/J.getSize(0));let K=0,q=0,B=Q;while(B<Y&&q<j)q+=J.getSize(B),K++,B++;return Math.max(1,K)};var j1=()=>{let J={},Q=(q,B)=>{if(!J[q])J[q]=new Set;return J[q].add(B),()=>j(q,B)},j=(q,B)=>{J[q]?.delete(B)};return{on:Q,off:j,emit:(q,B)=>{J[q]?.forEach((D)=>{try{D(B)}catch(U){console.error(`[vlist] Error in event handler for "${String(q)}":`,U)}})},clear:(q)=>{if(q)delete J[q];else for(let B in J)delete J[B]}}};var X1=(J)=>{if(typeof J==="string"){let Q=document.querySelector(J);if(!Q)throw Error(`[vlist] Container not found: ${J}`);return Q}return J},o0=(J,Q)=>{let j=document.createElement("div");if(j.className=J,Q)j.style.cssText=Q;return j},K1=(J,Q,j,Y,K)=>{let q=Y,B=o0(Q);if(q)B.classList.add(`${Q}--horizontal`);if(K!==!1)B.setAttribute("tabindex","0");let D=o0(`${Q}-viewport`,q?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%");D.setAttribute("tabindex","-1");let U=o0(`${Q}-content`,q?"position:relative;height:100%":"position:relative;width:100%"),Z=o0(`${Q}-items`,q?"position:relative;height:100%":"position:relative;width:100%");if(Z.setAttribute("role","listbox"),j)Z.setAttribute("aria-label",j);if(q)Z.setAttribute("aria-orientation","horizontal");let N=o0(`${Q}-live`,"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0");return N.setAttribute("aria-live","polite"),N.setAttribute("aria-atomic","true"),N.setAttribute("role","status"),U.appendChild(Z),D.appendChild(U),B.appendChild(N),B.appendChild(D),J.appendChild(B),{root:B,viewport:D,content:U,items:Z,liveRegion:N}};var U1=(J=100)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},release:(j)=>{if(Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),Q.push(j)},clear:()=>{Q.length=0}}};var Z1=(J,Q,j,Y,K)=>{if(Y===0||Q===0){K.start=0,K.end=-1;return}let q=j.indexAtOffset(J),B=j.indexAtOffset(J+Q);if(B<Y-1)B++;K.start=Math.max(0,q),K.end=Math.min(Y-1,Math.max(0,B))},B1=(J,Q,j,Y)=>{Y.start=Math.max(0,J.start-Q),Y.end=Math.min(j-1,J.end+Q)},N1=(J,Q,j,Y,K,q=0)=>{if(Y===0)return 0;let B=Math.max(0,Math.min(J,Y-1)),D=Q.getOffset(B),U=Q.getSize(B),Z=Q.getTotalSize(),N=Math.max(0,Z+q-j),w;switch(K){case"center":w=D-(j-U)/2;break;case"end":w=q>0&&D+U>=Z?N:D-j+U;break;default:w=D}return Math.max(0,Math.min(w,N))};var YJ={top:0,right:0,bottom:0,left:0},k0=(J)=>{if(J==null)return YJ;if(typeof J==="number")return J===0?YJ:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[q,B]=J;return q===0&&B===0?YJ:{top:q,right:B,bottom:q,left:B}}let[Q,j,Y,K]=J;return Q===0&&j===0&&Y===0&&K===0?YJ:{top:Q,right:j,bottom:Y,left:K}},u0=(J,Q)=>Q?J.left+J.right:J.top+J.bottom,jJ=(J,Q)=>Q?J.top+J.bottom:J.left+J.right;var g0=(J,Q,j)=>{let Y=Array.from(Q).sort((B,D)=>B-D);if(Y.length<=1)return;let K=[];for(let B=0;B<Y.length;B++){let D=j(Y[B]);if(D)K.push(D)}if(K.length<=1)return;let q=J.firstChild;for(let B=0;B<K.length;B++){let D=K[B];if(D===q)q=q.nextSibling;else J.insertBefore(D,q)}};var W1=(J,Q)=>{let{dom:j,emitter:Y,resolvedConfig:K,rawConfig:q,rendered:B,pool:D,sharedState:U,isHorizontal:Z,classPrefix:N,contentSizeHandlers:w,idleHandlers:G,afterScroll:k,clickHandlers:v,keydownHandlers:C,resizeHandlers:O,destroyHandlers:z,methods:y,onScrollFrame:g,resizeObserver:a,renderRange:c,afterRenderBatch:s}=Q;return{get dom(){return j},get sizeCache(){return J.hc},get emitter(){return Y},get config(){return K},get rawConfig(){return q},adjustScrollPosition($){if(J.mp===0)return $;let o=Z?J.cw:J.ch,e=J.hc.getTotalSize(),t=Math.max(0,e-o),P=Math.max(0,e+J.mp-o);if($>=t)return P;return Math.min($,P)},get renderer(){return{render:($,o,e,t,P)=>{J.ss=e,J.fi=t,J.ffn()},updateItemClasses:($,o,e)=>{J.uic($,o,e)},updatePositions:()=>{},updateItem:()=>{},getElement:($)=>B.get($)??null,clear:()=>{},destroy:()=>{}}},set renderer($){},get dataManager(){return J.dm},set dataManager($){J.dm=$},get scrollController(){return J.sc},set scrollController($){J.sc=$},state:U,getContainerWidth(){return J.cw},afterScroll:k,idleHandlers:G,afterRenderBatch:s,clickHandlers:v,keydownHandlers:C,resizeHandlers:O,contentSizeHandlers:w,destroyHandlers:z,methods:y,replaceTemplate($){J.at=$},replaceRenderer($){},replaceDataManager($){J.dm=$},replaceScrollController($){J.sc=$},getItemsForRange($){let{dm:o,it:e}=J,t=[];for(let P=$.start;P<=$.end;P++){let S=o?o.getItem(P):e[P];if(S)t.push(S)}return t},getAllLoadedItems(){let $=J.dm;if($){let o=$.getTotal(),e=[];for(let t=0;t<o;t++){let P=$.getItem(t);if(P)e.push(P)}return e}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let $=J.hc;return{isCompressed:!1,actualSize:$.getTotalSize(),virtualSize:$.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:c.start,compression:U.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,$]of B)$.remove(),D.release($);B.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns($,o){J.rfn=$,J.ffn=o},setVirtualTotalFn($){J.vtf=$},rebuildSizeCache($){J.hc.rebuild($??J.vtf())},setSizeConfig($){if(J.hc=S0($,J.vtf()),J.gp>0){let o=J.hc.getTotalSize,e=J.gp;J.hc.getTotalSize=()=>{let t=o();return t>0?t-e:0}}},updateContentSize($){let o=`${$+J.mp}px`;if(Z)j.content.style.width=o;else j.content.style.height=o},updateCompressionMode(){for(let $=0;$<w.length;$++)w[$]()},setVisibleRangeFn($){J.gvr=$},setScrollToPosFn($){J.gsp=$},getScrollToPos($,o,e,t){return J.gsp($,J.hc,o,e,t)},setPositionElementFn($){J.pef=$},setScrollFns($,o){J.sgt=$,J.sst=(e)=>{o(e),g()}},setScrollTarget($){J.st.removeEventListener("scroll",g),J.st=$,J.st.addEventListener("scroll",g,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions($){J.gcw=$.width,J.gch=$.height,J.cw=$.width(),J.ch=$.height(),U.viewportState.containerSize=Z?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,a.unobserve(j.viewport)},disableWheelHandler(){if(J.wh)j.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn($){J.sif=$},getItemToScrollIndexFn(){return J.i2s},setItemToScrollIndexFn($){J.i2s=$},setUpdateItemClassesFn($){J.uic=$}}},V1=(J,Q,j)=>{let{rendered:Y,itemState:K,applyTemplate:q,updateContentSize:B}=Q,D=()=>{J.hc.rebuild(J.vtf()),B(),j.updateCompressionMode(),J.ffn()},U=()=>J.it.length;return{getState:()=>({total:U(),cached:U(),isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:U,getCached:U,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Z)=>J.it[Z],isItemLoaded:(Z)=>Z>=0&&Z<U()&&J.it[Z]!==void 0,getItemsInRange:(Z,N)=>{let w=[];for(let G=Math.max(0,Z),k=Math.min(N,U()-1);G<=k;G++)w.push(J.it[G]);return w},setTotal:()=>{},setItems:(Z,N=0,w)=>{if(N===0&&(w!==void 0||U()===0))J.it=Z;else{let G=N+Z.length;if(U()<G)J.it.length=G;for(let k=0;k<Z.length;k++)J.it[N+k]=Z[k]}if(J.ii)D()},updateItem:(Z,N)=>{let w=J.it;if(Z<0||Z>=w.length)return!1;let G=w[Z];if(!G)return!1;w[Z]={...G,...N};let k=Y.get(Z);if(k)q(k,J.at(w[Z],Z,K)),k.dataset.id=String(w[Z].id);return!0},removeItem:(Z)=>{let N=typeof Z==="number"?Z:J.it.findIndex((w)=>w.id===Z);if(N<0||N>=J.it.length)return!1;if(J.it.splice(N,1),J.ii)D();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},_1=(J,Q)=>{let{dom:j,classPrefix:Y}=Q;return{getScrollTop:()=>J.sgt(),scrollTo:(K)=>{J.sst(K),J.ls=K,J.rfn()},scrollBy:(K)=>{let q=J.sgt()+K;J.sst(q),J.ls=q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(K=2)=>J.sab(K),getScrollPercentage:()=>{let K=J.hc.getTotalSize(),q=Math.max(0,K-J.ch);return q>0?J.ls/q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>j.root.classList.contains(`${Y}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{J.ch=K},destroy:()=>{}}};var AJ=(J,Q,j,Y,K=0,q=0)=>{let B=Q.getOffset(J),D=Q.getSize(J),U=B+K,Z=U+D,N=j+Y;if(U<j)return Math.max(0,B);if(Z>N)return Z+q-Y;return j},XJ=(J,Q,j,Y,K=0,q=0,B,D,U)=>{if(!(B!=null&&B.isCompressed&&B.ratio!==1))return AJ(J,Q,j,Y,K,q);let N=D,{virtualSize:w}=B,G=Q.getSize(Math.max(0,J)),k=Y-K-q,v=Math.max(1,Math.floor(k/G)),C=w/N;if(U){if(J>=U.start+v){let y=k/G,g=J+1-y;return Math.max(0,g*C)}if(J<=U.start)return Math.max(0,J*C);return j}let O=j/w*N,z=O+v;if(J>=z){let y=k/G,g=J+1-y;return Math.max(0,g*C)}if(J<O)return Math.max(0,J*C);return j};var D1=(J,Q,j,Y,K,q,B,D,U,Z,N,w,G)=>{let k=`${j}-item--focused`,v=!1,C=null,O=null,z=null,y=null,g=!1,a=()=>{if(g)return;g=!0,C=U.get("_getNavTotal")??null,O=U.get("_getNavDelta")??null,z=U.get("_navigate")??null,y=U.get("_scrollItemIntoView")??null},c=()=>{return a(),C?C():J.vtf()},s=()=>{return a(),O?O():{ud:1,lr:0,cols:0}};U.set("_getFocusedIndex",()=>v?J.fi:-1);let $=(f)=>{if(Q.root.setAttribute("aria-activedescendant",`${Y}-item-${f}`),a(),y)y(f);else{let R=K?J.cw:J.ch,E=J.i2s(f),b=AJ(E,J.hc,J.ls,R,q,B);if(b!==J.ls)J.sst(b),J.ls=J.sgt()}J.ffn()},o=(f)=>{J.fi=f,v=!0,$(f)},e=(f,R)=>{if(J.fi=f,R)v=!0;let E=J.dm?J.dm.getItem(f):J.it[f];if(E&&J.ss.has(E.id))J.ss.clear();else if(J.ss.clear(),E)J.ss.add(E.id);$(f)},t=(f,R,E)=>{let b=f;while(b>=0&&b<E){let H=J.dm?J.dm.getItem(b):J.it[b];if(!H||!H.__groupHeader)return b;b+=R}b=f-R;while(b>=0&&b<E){let H=J.dm?J.dm.getItem(b):J.it[b];if(!H||!H.__groupHeader)return b;b-=R}return f},P=()=>{if(J.id)return;if(!Q.root.matches(":focus-visible"))return;let f=c();if(f===0)return;let R=J.fi>=0?Math.min(J.fi,f-1):0;R=t(R,1,f),o(R)};Q.root.addEventListener("focusin",P);let S=(f)=>{if(J.id)return;let R=f.relatedTarget;if(R&&Q.root.contains(R))return;if(v=!1,J.fi>=0)Z.get(J.fi)?.classList.remove(k);Q.root.removeAttribute("aria-activedescendant")};Q.root.addEventListener("focusout",S),N.push((f)=>{if(J.id)return;let R=c();if(R===0)return;let E=J.fi,b=E;if(f.key===" "||f.key==="Enter"){if(E>=0){let H=J.dm?J.dm.getItem(E):J.it[E];if(H&&!H.__groupHeader)e(E,!0)}f.preventDefault();return}if(a(),z)switch(f.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":b=z(E,f.key,R);break;default:return}else{let{ud:H,lr:p}=s();switch(f.key){case"ArrowUp":b=E-H;break;case"ArrowDown":b=E+H;break;case"ArrowLeft":if(!p)return;b=E-p;break;case"ArrowRight":if(!p)return;b=E+p;break;case"PageUp":case"PageDown":{let r=J.hc.getSize(J.i2s(Math.max(0,E))),l=Math.max(H,Math.floor((K?J.cw:J.ch)/r)*H);b=f.key==="PageUp"?E-l:E+l;break}case"Home":b=0;break;case"End":b=R-1;break;default:return}if(b<0)b=D?R-1:0;else if(b>=R)b=D?0:R-1}if(f.preventDefault(),b=t(b,b>=E?1:-1,R),b!==E)o(b)}),w.push((f)=>{if(J.id)return;let R=f.target.closest("[data-index]");if(!R)return;let E=parseInt(R.dataset.index??"-1",10);if(E<0)return;let b=J.dm?.getItem(E)??J.it[E];if(!b||b.__groupHeader)return;v=!1,Q.root.focus(),e(E,!1)}),G.push(()=>{Q.root.removeEventListener("focusin",P),Q.root.removeEventListener("focusout",S)})};var LJ=200,x0=50;var G1=50,M1=12,O1=2,m0=16000000;var E1="x",A1=20,FJ="_isPlaceholder",y0="__placeholder_";var P0=(J,Q,j)=>{if(String(j).startsWith(y0))return!1;let Y=y0+Q;if(J.has(Y))return J.delete(Y),J.add(j),!0;return!1},L1=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),d0=(J,Q,j)=>{if(j==="none")return J;let Y=new Set(J.selected);if(j==="single"){if(Y.clear(),Q.length>0)Y.add(Q[0])}else for(let K of Q)Y.add(K);return{...J,selected:Y}},TJ=(J,Q)=>{let j=new Set(J.selected);for(let Y of Q)j.delete(Y);return{...J,selected:j}},c0=(J,Q,j)=>{if(j==="none")return J;if(J.selected.has(Q))return TJ(J,[Q]);else return d0(J,[Q],j)},kJ=(J,Q,j)=>{if(j!=="multiple")return J;return{...J,selected:new Set(Q.map((Y)=>Y.id))}},HJ=(J)=>({...J,selected:new Set}),l0=(J,Q)=>{return J.focusedIndex=Q,J},KJ=(J,Q,j=!1,Y=1)=>{if(Q===0)return J;let K=J.focusedIndex-Y;if(K<0)K=j?Q-1:0;return J.focusedIndex=K,J},UJ=(J,Q,j=!1,Y=1)=>{if(Q===0)return J;let K=J.focusedIndex+Y;if(K>=Q)K=j?0:Q-1;return J.focusedIndex=K,J},F1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=0,J},T1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=Q-1,J},bJ=(J,Q,j,Y)=>{if(Q===0)return J;let K=Y==="up"?J.focusedIndex-j:J.focusedIndex+j;return K=Math.max(0,Math.min(Q-1,K)),J.focusedIndex=K,J};var $J=(J)=>{return Array.from(J.selected)},yJ=(J,Q)=>{let j=[];for(let Y of J.selected){let K=Q(Y);if(K)j.push(K)}return j};var ZJ=(J,Q,j,Y,K)=>{if(K!=="multiple")return J;let q=Math.min(j,Y),B=Math.max(j,Y),D=[];for(let U=q;U<=B;U++){let Z=Q[U];if(Z)D.push(Z.id)}return d0(J,D,K)};var PJ=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,w0=(J)=>{let Q=typeof J==="object"&&J?J:null;return{align:typeof J==="string"?J:Q?.align??"start",behavior:Q?.behavior??"auto",duration:Q?.duration??300}},r0=(J,Q)=>{let j=null,Y=()=>{if(j!==null)cancelAnimationFrame(j),j=null};return{animateScroll:(q,B,D)=>{if(Y(),Math.abs(B-q)<1){J.scrollTo(B);return}let U=performance.now(),Z=(N)=>{let w=N-U,G=Math.min(w/D,1),k=q+(B-q)*PJ(G);if(J.scrollTo(k),Q(),G<1)j=requestAnimationFrame(Z);else j=null};j=requestAnimationFrame(Z)},cancelScroll:Y}};var k1=(J,Q,j,Y,K,q,B,D,U,Z,N,w,G,k,v,C,O,z)=>{let y=(A)=>{{if(!Array.isArray(A)){console.warn("[vlist] setItems() expects an array, got:",typeof A);return}if(A.length>0&&A[0]&&!("id"in A[0]))console.warn('[vlist] Items must have an "id" property. First item:',A[0]);let _=Math.min(A.length,1e4),W=new Set;for(let x=0;x<_;x++){let M=A[x];if(M&&"id"in M){if(W.has(M.id)){console.warn(`[vlist] Duplicate item ID "${M.id}" at index ${x}. updateItem() and removeItem() will only match the first occurrence.`);break}W.add(M.id)}}}H(),U.dataManager.setItems(A,0,A.length)},g=(A)=>{let _=Z&&J.sab(2);if(U.dataManager.setItems(A,J.it.length),_&&J.it.length>0){let W=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(W),J.ls=W,J.rfn()}},a=(A)=>{let _=Z?J.sgt():0,W=Z?J.hc.getTotalSize():0,x=[...J.it];if(U.dataManager.clear(),U.dataManager.setItems([...A,...x],0),Z){let M=J.hc.getTotalSize()-W;if(M>0)J.sst(_+M),J.ls=_+M}},c=null,s=null,$=null,o=!1,e=()=>{if(o)return;o=!0,c=q.get("_updateRenderedItem")??null,s=q.get("_getSelectedIds")??null,$=q.get("_getFocusedIndex")??null},t=(A,_)=>{{let x=J.vtf();if(A<0||A>=x)console.warn(`[vlist] updateItem() index ${A} is out of range (0–${x-1}).`)}if(U.dataManager.updateItem(A,_),e(),!c)return;let W=U.dataManager.getItem(A);if(W){let M=(s?s():J.ss).has(W.id),F=($?$():J.fi)===A;c(A,W,M,F)}},P=!1,S=(A)=>{let _=typeof document<"u"?document.activeElement:null,W=_&&Q.items.contains(_)?parseInt(_.dataset?.index??"-1",10):-1;if(!U.dataManager.removeItem(A))return console.warn(`[vlist] removeItem() could not find item with id "${A}".`),!1;if(j.emit("data:change",{type:"remove",id:A}),U.forceRender(),!P){let M=U.dataManager;if(typeof M.ensureRange==="function")P=!0,queueMicrotask(()=>{P=!1;let F=U.dataManager.getTotal(),{start:m,end:n}=U.state.viewportState.renderRange;if(F>0&&n>=m)M.ensureRange(m,n).catch(()=>{})})}if(W>=0){let M=J.vtf();if(M>0)Y.get(Math.min(W,M-1))?.focus()}return!0},f=(A)=>{return U.dataManager.getItem(A)},R=(A)=>{return U.dataManager.getIndexById?.(A)??-1},E=async(A)=>{if(U.dataManager.reload)await U.dataManager.reload()},b=null,H=()=>{if(b!==null)cancelAnimationFrame(b),b=null},p=(A,_,W,x)=>{if(H(),Math.abs(_-A)<1){J.sst(_),J.ls=_,J.rfn();return}let M=performance.now(),F=(m)=>{let n=m-M,I=Math.min(n/W,1),u=x?x():_,i=A+(u-A)*PJ(I);if(J.sst(i),J.ls=i,J.rfn(),I<1)b=requestAnimationFrame(F);else b=null};b=requestAnimationFrame(F)},r=(A,_)=>{{let I=J.vtf();if(I>0&&(A<0||A>=I))console.warn(`[vlist] scrollToIndex(${A}) is out of range (0–${I-1}).`)}let{align:W,behavior:x,duration:M}=w0(_),F=J.vtf(),m=A;if(N&&F>0)m=(m%F+F)%F;let n=J.gsp(m,J.hc,J.ch,F,W);if(x==="smooth"){let I=m,u=W;p(J.sgt(),n,M,()=>J.gsp(I,J.hc,J.ch,J.vtf(),u))}else H(),J.sst(n)},l=()=>J.sgt(),h=(A,_)=>{return j.on(A,_)},L=(A,_)=>{j.off(A,_)},V=()=>{if(J.id)return;if(J.id=!0,U.state.isDestroyed=!0,Q.items.removeEventListener("click",w),Q.items.removeEventListener("dblclick",G),Q.root.removeEventListener("keydown",k),J.st.removeEventListener("scroll",v),C.disconnect(),O(),J.wh)Q.viewport.removeEventListener("wheel",J.wh);z();let A=[];for(let _=0;_<D.length;_++)try{D[_]()}catch(W){A.push(W instanceof Error?W:Error(String(W)))}for(let _ of B)if(_.destroy)try{_.destroy()}catch(W){A.push(W instanceof Error?W:Error(String(W)))}H();for(let[,_]of Y)_.remove(),K.release(_);Y.clear(),K.clear(),j.emit("destroy",void 0);for(let _ of A)j.emit("error",{error:_,context:"destroy"});j.clear(),Q.root.remove()},X=(A,_)=>q.has(A)?q.get(A):_,T={get element(){return Q.root},get items(){let A=q.get("_getItems");return A?A():J.it},get total(){let A=q.get("_getTotal");return A?A():J.vtf()},setItems:X("setItems",y),appendItems:X("appendItems",g),prependItems:X("prependItems",a),updateItem:X("updateItem",t),removeItem:X("removeItem",S),reload:X("reload",E),getItemAt:f,getIndexById:R,scrollToIndex:X("scrollToIndex",r),cancelScroll:X("cancelScroll",H),getScrollPosition:X("getScrollPosition",l),on:h,off:L,destroy:V};for(let[A,_]of q){if(A.charCodeAt(0)===95||A==="setItems"||A==="appendItems"||A==="prependItems"||A==="updateItem"||A==="removeItem"||A==="reload"||A==="scrollToIndex"||A==="scrollToItem"||A==="cancelScroll"||A==="getScrollPosition")continue;T[A]=_}return T};var q4=3,Y4="vlist",j4=150,X4=16000000,K4=0,wJ=(J)=>{if(!J.container)throw Error("[vlist] Container is required");if(!J.item)throw Error("[vlist] item configuration is required");let Q=J.orientation==="horizontal",j=Q?"width":"height",Y=Q?"estimatedWidth":"estimatedHeight",K=Q?J.item.width:J.item.height,q=Q?J.item.estimatedWidth:J.item.estimatedHeight;if(K==null&&q==null)throw Error(`[vlist] item.${j} or item.${Y} is required${Q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist] item.${j} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist] item.${j} must be a number or a function (index) => number`)}else if(q!=null){if(typeof q!=="number"||q<=0)throw Error(`[vlist] item.${Y} must be a positive number`)}if(!J.item.template)throw Error("[vlist] item.template is required");if(Q&&J.reverse)throw Error("[vlist] horizontal direction cannot be combined with reverse mode");let B=new Map,D=!1,U={use(Z){if(D)throw Error("[vlist] Cannot call .use() after .build()");return B.set(Z.name,Z),U},build(){if(D)throw Error("[vlist] .build() can only be called once");return D=!0,U4(J,B,Q,K,q??null)}};return U};function U4(J,Q,j,Y,K){let{item:q,items:B,overscan:D=q4,classPrefix:U=Y4,ariaLabel:Z,padding:N,reverse:w=!1,scroll:G,accessible:k,interactive:v}=J,C=v??k??!0,O=G,z=O?.wheel??!0,y=O?.wrap??!1,g=w,a=`${U}-${K4++}`,c=Q.has("withGrid")||Q.has("withMasonry")?0:q.gap??0,s=Y??K,$=Y==null&&K!=null,o=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,e=j?typeof q.height==="number"?q.height:void 0:typeof q.width==="number"?q.width:void 0,t={overscan:D,classPrefix:U,reverse:g,wrap:y,horizontal:j,ariaIdPrefix:a,interactive:C},P=Array.from(Q.values()).sort((d,J0)=>(d.priority??50)-(J0.priority??50)),S=new Set(P.map((d)=>d.name));for(let d of P)if(d.conflicts){for(let J0 of d.conflicts)if(S.has(J0))throw Error(`[vlist] ${d.name} and ${J0} cannot be combined`)}if(g){if(S.has("withGrid"))throw Error("[vlist] withGrid cannot be used with reverse: true")}let f=X1(J.container),R=K1(f,U,Z,j,C);if(O?.wheel===!1)if(j)R.viewport.style.overflowX="hidden";else R.viewport.style.overflow="hidden";if(O?.scrollbar==="none")R.viewport.classList.add(`${U}-viewport--no-scrollbar`);if(O?.gutter==="stable")R.viewport.classList.add(`${U}-viewport--gutter-stable`);let E=k0(N),b=u0(E,j);if(E.top||E.right||E.bottom||E.left)R.content.style.boxSizing="border-box",R.content.style.padding=`${E.top}px ${E.right}px ${E.bottom}px ${E.left}px`;let H=j1(),p=B||[],r=typeof s==="function"&&(Q.has("withGrid")||Q.has("withMasonry")),l=c>0?typeof s==="function"?(d)=>s(d)+c:s+c:s,h=$?K+c:l,L=S0(h,r?0:p.length);if(c>0){let d=L.getTotalSize;L.getTotalSize=()=>{let J0=d();return J0>0?J0-c:0}}let V=U1(),X={it:p,hc:L,ch:R.viewport.clientHeight,cw:R.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:Q1(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:j?()=>R.viewport.scrollLeft:()=>R.viewport.scrollTop,sst:j?(d)=>{R.viewport.scrollLeft=d}:(d)=>{R.viewport.scrollTop=d},sab:(d=2)=>{let J0=X.hc.getTotalSize();return X.ls+X.ch>=J0-d},sic:!1,rfn:null,ffn:null,gvr:(d,J0,Q0,B0,M0)=>{Z1(d,J0,Q0,B0,M0)},gsp:(d,J0,Q0,B0,M0)=>{return N1(d,J0,Q0,B0,M0,X.mp)},pef:null,at:q.template,vre:!0,st:R.viewport,wh:null,gcw:()=>X.cw,gch:()=>X.ch,gp:c,mp:b,sif:(d)=>d,i2s:(d)=>d,uic:(d,J0,Q0)=>{let B0=m.get(d);if(!B0)return;q0(B0,J0,Q0)},csi:null};X.vtf=()=>X.dm?X.dm.getTotal():X.it.length;let T=null,A=!1,_={start:0,end:0},W={start:0,end:0},x={start:-1,end:-1},M={viewportState:{scrollPosition:0,containerSize:j?X.cw:X.ch,totalSize:X.hc.getTotalSize(),actualSize:X.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},F=()=>({...M.viewportState,totalItems:X.vtf()}),m=new Map,n=()=>{g0(R.items,m.keys(),(d)=>m.get(d))},I=()=>{let d=X.hc.getTotalSize(),Q0=`${(X.sic?d:Math.min(d,X4))+b}px`;if(j)R.content.style.width=Q0;else R.content.style.height=Q0},u={selected:!1,focused:!1},i=`${U}-item`,Y0=`${U}-item--selected`,X0=`${U}-item--focused`,q0=(d,J0,Q0)=>{d.classList.toggle(Y0,J0),d.classList.toggle(X0,Q0),d.ariaSelected=J0?"true":"false"},Z0=q.striped,U0=!!Z0,K0=Z0==="data"||Z0==="even"||Z0==="odd",W0=`${U}-item--odd`,_0=`${U}-item--placeholder`,j0=`${U}-item--replaced`,D0=`${U}--scrolling`,V0=[],G0=[],E0=[],F0=[],b0=[],f0=[],z0=[],H0=[],$0=new Map,NJ="__placeholder_",WJ={scrollPosition:0,direction:"down"},I0={velocity:0,reliable:!1},VJ={range:{start:0,end:0}},_J=null,DJ=null,rJ=!1,l1=()=>{if(rJ)return;rJ=!0,_J=$0.get("_getSelectedIds")??null,DJ=$0.get("_getFocusedIndex")??null},e0=(d,J0,Q0)=>{if(!J0)console.warn(`[vlist] Template returned falsy value${Q0!==void 0?` for item at index ${Q0}`:""}. The element will render as blank.`);else if(typeof J0==="string"&&J0==="")console.warn(`[vlist] Template returned empty string${Q0!==void 0?` for item at index ${Q0}`:""}. The element will render as blank.`);if(typeof J0==="string")d.innerHTML=J0;else d.replaceChildren(J0)},r1=(d,J0)=>{let Q0=Math.round(X.hc.getOffset(J0));if(j)d.style.transform=`translateX(${Q0}px)`;else d.style.transform=`translateY(${Q0}px)`};X.pef=r1;let a1=(d,J0)=>{let Q0=V.acquire();Q0.className=i;let B0=!X.csi||X.csi(d);if(j){if(B0)Q0.style.width=`${X.hc.getSize(d)-c}px`;else Q0.style.width="";if(e!=null)Q0.style.height=`${e}px`}else if(B0)Q0.style.height=`${X.hc.getSize(d)-c}px`;else Q0.style.height="";if(Q0.dataset.index=String(d),Q0.dataset.id=String(J0.id),Q0.ariaSelected="false",Q0.id=`${a}-item-${d}`,X.la=String(X.vtf()),Q0.setAttribute("aria-setsize",X.la),Q0.setAttribute("aria-posinset",String(d+1)),String(J0.id).startsWith(NJ))Q0.classList.add(_0);if(U0)if(K0){let T0=X.sif(d);if(T0<0)Q0.classList.remove(W0);else Q0.classList.toggle(W0,(T0&1)===1)}else Q0.classList.toggle(W0,(d&1)===1);try{e0(Q0,X.at(J0,d,u),d)}catch(T0){let O0=T0 instanceof Error?T0:Error(String(T0));H.emit("error",{error:O0,context:`tpl(${d},${J0.id})`,viewport:F()}),Q0.textContent=""}return X.pef(Q0,d),Q0},s1=()=>{if(X.id)return;let d=j?X.cw:X.ch;if(d<=0)return;l1();let J0=_J?_J():X.ss,Q0=DJ?DJ():X.fi,B0=X.vtf();if(X.gvr(X.ls,d,X.hc,B0,_),B1(_,D,B0,W),W.start===x.start&&W.end===x.end){if(X.sic)for(let[N0,A0]of m)X.pef(A0,N0);M.viewportState.scrollPosition=X.ls,M.viewportState.containerSize=d,M.viewportState.visibleRange.start=_.start,M.viewportState.visibleRange.end=_.end,M.viewportState.renderRange.start=W.start,M.viewportState.renderRange.end=W.end;return}let M0=String(B0),T0=M0!==X.la;X.la=M0;for(let[N0,A0]of m)if(N0<W.start||N0>W.end)A0.remove(),V.release(A0),m.delete(N0);let O0=document.createDocumentFragment(),C0=!1,s0=z0.length>0?[]:null;for(let N0=W.start;N0<=W.end;N0++){let A0=X.dm?X.dm.getItem(N0):X.it[N0];if(A0===void 0)continue;let L0=m.get(N0);if(L0){let v0=L0.dataset.id,p0=String(A0.id);if(v0!==p0){let t1=v0?.startsWith(NJ),OJ=p0.startsWith(NJ);try{e0(L0,X.at(A0,N0,u),N0)}catch(EJ){let e1=EJ instanceof Error?EJ:Error(String(EJ));H.emit("error",{error:e1,context:`tpl(${N0},${A0.id})`,viewport:F()}),L0.textContent=""}L0.dataset.id=p0;let eJ=!X.csi||X.csi(N0);if(j)L0.style.width=eJ?`${X.hc.getSize(N0)-c}px`:"";else L0.style.height=eJ?`${X.hc.getSize(N0)-c}px`:"";if(OJ)L0.classList.add(_0);else L0.classList.remove(_0);if(t1&&!OJ)L0.classList.add(j0),setTimeout(()=>{L0.classList.remove(j0)},300);if(X.dm&&!OJ)P0(J0,N0,A0.id)}X.pef(L0,N0);let qJ=J0.has(A0.id);if(q0(L0,qJ,N0===Q0),T0)L0.setAttribute("aria-setsize",X.la)}else{let v0=a1(N0,A0);if(s0)s0.push({index:N0,element:v0});if(X.dm)P0(J0,N0,A0.id);let p0=J0.has(A0.id),qJ=N0===Q0;if(p0||qJ)q0(v0,p0,qJ);O0.appendChild(v0),m.set(N0,v0),C0=!0}}if(C0)R.items.appendChild(O0);if(s0&&s0.length>0)for(let N0=0;N0<z0.length;N0++)z0[N0](s0);x.start=W.start,x.end=W.end,M.lastRenderRange.start=W.start,M.lastRenderRange.end=W.end,M.viewportState.scrollPosition=X.ls,M.viewportState.visibleRange.start=_.start,M.viewportState.visibleRange.end=_.end,M.viewportState.renderRange.start=W.start,M.viewportState.renderRange.end=W.end,VJ.range.start=W.start,VJ.range.end=W.end,H.emit("range:change",VJ)},o1=()=>{x.start=-1,x.end=-1,X.rfn()};X.rfn=s1,X.ffn=o1;let n1=()=>{R.root.classList.remove(D0),A=!1,X.vt.velocity=0,X.vt.sampleCount=0,I0.velocity=0,I0.reliable=!1,H.emit("velocity:change",I0),n();for(let d=0;d<G0.length;d++)G0[d]();H.emit("scroll:idle",{scrollPosition:X.ls})},i1=()=>{if(T)clearTimeout(T);T=setTimeout(n1,O?.idleTimeout??j4)},JJ=()=>{if(X.id)return;let d=X.sgt();if(d===X.ls&&A)return;let J0=d>=X.ls?"down":"up";if(X.vt=q1(X.vt,d),!R.root.classList.contains(D0))R.root.classList.add(D0);A=!0,X.ls=d,X.rfn(),WJ.scrollPosition=d,WJ.direction=J0,H.emit("scroll",WJ),I0.velocity=X.vt.velocity,I0.reliable=X.vt.sampleCount>=J1,H.emit("velocity:change",I0);for(let Q0=0;Q0<V0.length;Q0++)V0[Q0](d,J0);i1()},h0=null;if(X.st.addEventListener("scroll",JJ,{passive:!0}),z&&!j&&!o)h0=(d)=>{if(M.viewportState.isCompressed)return;let J0=R.viewport.scrollWidth>R.viewport.clientWidth;if(J0&&Math.abs(d.deltaX)>Math.abs(d.deltaY))return;if(d.preventDefault(),J0&&d.deltaX!==0)R.viewport.scrollLeft+=d.deltaX;let Q0=X.sgt(),B0=R.viewport.scrollHeight-R.viewport.clientHeight,M0=Math.max(0,Math.min(Q0+d.deltaY,B0));if(Math.abs(M0-Q0)<1)return;X.sst(M0),JJ()},X.wh=h0,R.viewport.addEventListener("wheel",h0,{passive:!1});else if(j&&z)h0=(d)=>{if(d.deltaX)return;d.preventDefault(),R.viewport.scrollLeft+=d.deltaY},X.wh=h0,R.viewport.addEventListener("wheel",h0,{passive:!1});let aJ=(d)=>{let J0=d.target.closest("[data-index]");if(!J0)return null;let Q0=parseInt(J0.dataset.index??"-1",10);if(Q0<0)return null;let B0=X.dm?.getItem(Q0)??X.it[Q0];if(!B0||B0.__groupHeader)return null;return{item:B0,index:Q0}},sJ=(d)=>{let J0=aJ(d);if(J0)H.emit("item:click",{item:J0.item,index:J0.index,event:d});for(let Q0=0;Q0<E0.length;Q0++)E0[Q0](d)},oJ=(d)=>{let J0=aJ(d);if(J0)H.emit("item:dblclick",{item:J0.item,index:J0.index,event:d})},nJ=(d)=>{for(let J0=0;J0<F0.length;J0++)F0[J0](d)};if(R.items.addEventListener("click",sJ),R.items.addEventListener("dblclick",oJ),R.root.addEventListener("keydown",nJ),C){let d=null,J0=(Q0)=>{if(d)clearTimeout(d);d=setTimeout(()=>{if(d=null,X.id)return;let B0=X.vtf();R.liveRegion.textContent=`Showing items ${Q0.range.start+1} to ${Math.min(Q0.range.end+1,B0)} of ${B0}`},300)};H.on("range:change",J0),H0.push(()=>{if(d)clearTimeout(d);H.off("range:change",J0)})}let GJ=new ResizeObserver((d)=>{if(X.id)return;for(let J0 of d){let Q0=J0.contentRect.height,B0=J0.contentRect.width,M0=j?B0:Q0,T0=j?X.cw:X.ch;if(X.cw=B0,X.ch=Q0,Math.abs(M0-T0)>1){if(M.viewportState.containerSize=M0,X.ii){let O0=M.cachedCompression;if(O0&&O0.state.isCompressed){let C0=`${O0.state.virtualSize+b}px`;if(j)R.content.style.width=C0;else R.content.style.height=C0}else I();X.rfn(),H.emit("resize",{height:Q0,width:B0})}}if(X.ii)for(let O0=0;O0<b0.length;O0++)b0[O0](B0,Q0)}});if(X.vre)GJ.observe(R.viewport);let MJ={dom:R,emitter:H,resolvedConfig:t,rawConfig:J,rendered:m,pool:V,itemState:u,sharedState:M,renderRange:W,isHorizontal:j,classPrefix:U,contentSizeHandlers:f0,idleHandlers:G0,afterScroll:V0,clickHandlers:E0,keydownHandlers:F0,resizeHandlers:b0,destroyHandlers:H0,methods:$0,onScrollFrame:JJ,resizeObserver:GJ,afterRenderBatch:z0,applyTemplate:e0,updateContentSize:I},QJ=W1(X,MJ);X.dm=V1(X,MJ,QJ),X.sc=_1(X,MJ),$0.set("_updateRenderedItem",(d,J0,Q0,B0)=>{let M0=m.get(d);if(!M0)return;let T0={selected:Q0,focused:B0};try{let O0=X.at(J0,d,T0);e0(M0,O0,d)}catch(O0){let C0=O0 instanceof Error?O0:Error(String(O0));H.emit("error",{error:C0,context:`tpl(${d},${J0.id})`,viewport:F()})}M0.dataset.id=String(J0.id),q0(M0,Q0,B0)});let iJ=new WeakSet;$0.set("_setSizeCache",(d)=>{if(X.hc=d,X.gp>0&&!iJ.has(d)){iJ.add(d);let J0=X.hc.getTotalSize,Q0=X.gp;X.hc.getTotalSize=()=>{let B0=J0();return B0>0?B0-Q0:0}}}),$0.set("_setConstrainSize",(d)=>{X.csi=d});let tJ=new Map;for(let d of P)if(d.methods)for(let J0 of d.methods){let Q0=tJ.get(J0);if(Q0)throw Error(`[vlist] Method "${J0}" is registered by both "${Q0}" and "${d.name}"`);tJ.set(J0,d.name)}for(let d of P)try{d.setup(QJ)}catch(J0){let Q0=J0 instanceof Error?J0:Error(String(J0));console.error(`[vlist] Feature "${d.name}" setup failed:`,Q0),H.emit("error",{error:Q0,context:d.name,viewport:F()})}if($&&!Q.has("withAutoSize"))console.warn("[vlist] estimatedHeight/estimatedWidth requires .use(withAutoSize()). Items will use the estimated size as a fixed size.");if(C&&!$0.has("_getFocusedIndex")){let d=j?E.left:E.top,J0=j?E.right:E.bottom;D1(X,R,U,a,j,d,J0,y,$0,m,F0,E0,H0)}if(X.ii=!0,QJ.state.isInitialized=!0,I(),X.rfn(),g&&X.it.length>0){let d=X.gsp(X.it.length-1,X.hc,X.ch,X.it.length,"end");X.sst(d),X.ls=d,X.rfn()}return k1(X,R,H,m,V,$0,P,H0,QJ,g,y,sJ,oJ,nJ,JJ,GJ,()=>{},()=>{if(T)clearTimeout(T)})}var n0=(J,Q,j)=>{let Y=Q.getTotalSize(),K=j===!0||Y>m0,q=Y>m0?m0:Y,B=Y>0?q/Y:1;return{isCompressed:K,actualSize:Y,virtualSize:q,ratio:B}},H1=(J,Q,j,Y,K,q)=>{if(Y===0||Q===0)return q.start=0,q.end=-1,q;if(!K.isCompressed||K.ratio===1){let G=j.indexAtOffset(J),k=j.indexAtOffset(J+Q);if(k<Y-1)k++;return q.start=Math.max(0,G),q.end=Math.min(Y-1,Math.max(0,k)),q}let{virtualSize:B}=K,U=J/B*Y,Z=Math.floor(U),N=Y1(j,Math.max(0,Z),Q,Y),w=Math.ceil(U)+N;return q.start=Math.max(0,Z),q.end=Math.min(Y-1,Math.max(0,w)),q};var a0=(J,Q,j,Y,K,q,B)=>{if(!q.isCompressed||Y===0)return j.getOffset(J);if(q.ratio===1)return j.getOffset(J)-Q;let{virtualSize:D}=q,U=Q/D,Z=j.getTotalSize(),N=U*Z;return j.getOffset(J)-N},b1=(J,Q,j,Y,K,q="start")=>{if(Y===0)return 0;let B;if(K.isCompressed&&K.ratio!==1){B=J/Y*K.virtualSize;let N=Q.getSize(J);switch(q){case"center":B-=(j-N)/2*K.ratio;break;case"end":B-=(j-N)*K.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let D=Q.getSize(J);switch(q){case"center":B-=(j-D)/2;break;case"end":B-=j-D;break}let U=K.virtualSize-j;return Math.max(0,Math.min(B,U))};var i0=(J,Q,j={},Y="vlist",K=!1)=>{let{autoHide:q=!0,autoHideDelay:B=1000,minThumbSize:D=30,showOnHover:U=!0,hoverZoneWidth:Z=16,showOnViewportEnter:N=!0}=j,w=0,G=0,k=0,v=0,C=!1,O=!1,z=0,y=0,g=0,a=null,c=!1,s=null,$=null,o=K?"width":"height",e=K?"translateX":"translateY",t=K?(F)=>F.clientX:(F)=>F.clientY,P=K?"left":"top",S=document.createElement("div"),f=document.createElement("div"),R=U?document.createElement("div"):null,E=()=>{if(S.className=`${Y}-scrollbar`,f.className=`${Y}-scrollbar-thumb`,K)S.classList.add(`${Y}-scrollbar--horizontal`);if(S.appendChild(f),J.appendChild(S),R){if(R.className=`${Y}-scrollbar-hover`,K)R.classList.add(`${Y}-scrollbar-hover--horizontal`),R.style.height=`${Z}px`;else R.style.width=`${Z}px`;J.appendChild(R)}},b=()=>{if(a)clearTimeout(a),a=null},H=()=>{if(!q)return;b(),a=setTimeout(r,B)},p=()=>{if(w<=G)return;if(b(),!c)S.classList.add(`${Y}-scrollbar--visible`),c=!0;if(q&&!C&&!O)H()},r=()=>{if(C||O)return;S.classList.remove(`${Y}-scrollbar--visible`),c=!1},l=(F,m)=>{w=F,G=m;let n=w>G;if(S.style.display=n?"":"none",!n){r();return}let I=G/w;k=Math.max(D,I*G),f.style[o]=`${k}px`,v=G-k,h(g)},h=(F)=>{if(g=F,w<=G||v<=0)return;let m=w-G,I=Math.min(1,Math.max(0,F/m))*v;f.style.transform=`${e}(${I}px)`},L=(F)=>{if(F.target===f)return;let m=S.getBoundingClientRect(),u=t(F)-m[P]-k/2,Y0=Math.max(0,Math.min(u,v))/v,X0=w-G,q0=Y0*X0;Q(q0),p()},V=(F)=>{F.preventDefault(),F.stopPropagation(),C=!0,z=t(F),y=g,b(),S.classList.add(`${Y}-scrollbar--dragging`),document.addEventListener("mousemove",X),document.addEventListener("mouseup",T)},X=(F)=>{if(!C)return;let m=t(F)-z,n=v>0?m/v:0,I=w-G,u=n*I,i=Math.max(0,Math.min(y+u,I)),X0=i/I*v;if(f.style.transform=`${e}(${X0}px)`,$=i,s===null)s=requestAnimationFrame(()=>{if($!==null)Q($);s=null})},T=()=>{if(C=!1,s!==null)cancelAnimationFrame(s),s=null;if($!==null)Q($),$=null;if(S.classList.remove(`${Y}-scrollbar--dragging`),q&&!O)H();document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",T)},A=()=>{if(N)p()},_=()=>{if(!C){if(O=!1,q)H()}},W=()=>{O=!0,b(),p()},x=()=>{if(O=!1,!C&&q)H()},M=()=>{if(b(),s!==null)cancelAnimationFrame(s),s=null;if(S.removeEventListener("click",L),S.removeEventListener("mouseenter",W),S.removeEventListener("mouseleave",x),f.removeEventListener("mousedown",V),J.removeEventListener("mouseenter",A),J.removeEventListener("mouseleave",_),document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",T),R){if(R.removeEventListener("mouseenter",W),R.removeEventListener("mouseleave",x),R.parentNode)R.parentNode.removeChild(R)}if(S.parentNode)S.parentNode.removeChild(S)};if(E(),S.addEventListener("click",L),S.addEventListener("mouseenter",W),S.addEventListener("mouseleave",x),f.addEventListener("mousedown",V),J.addEventListener("mouseenter",A),J.addEventListener("mouseleave",_),R)R.addEventListener("mouseenter",W),R.addEventListener("mouseleave",x);return{show:p,hide:r,updateBounds:l,updatePosition:h,isVisible:()=>c,destroy:M}};var RJ=(J)=>{let Q=null;return{name:"withScrollbar",priority:30,setup(j){let{dom:Y,config:K}=j,{classPrefix:q,horizontal:B}=K;if(Q=i0(Y.viewport,(U)=>j.scrollController.scrollTo(U),J??{},q,B),!Y.viewport.classList.contains(`${q}-viewport--custom-scrollbar`))Y.viewport.classList.add(`${q}-viewport--custom-scrollbar`);Q.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize);let D=Q;j.afterScroll.push((U,Z)=>{D.updatePosition(U),D.show()}),j.resizeHandlers.push((U,Z)=>{if(D)D.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize)}),j.contentSizeHandlers.push(()=>{if(D)D.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize)}),j.destroyHandlers.push(()=>{if(D)D.destroy()})},destroy(){if(Q)Q.destroy(),Q=null}}};var Z4=0.65,B4=0.5,$1=1.7,N4=0.95,W4=0.1,V4=5,_4=100,y1=(J,Q,j,Y=0)=>{if(J<=0)return 0;let K=Q-Y;return Math.max(0,K*(1-j)+Y)},zJ=(J)=>{let Q=J?.force??!1,j=null,Y=0,K=!1,q=0,B=0,D=null,U=0,Z=0,N=null,w=[];return{name:"withScale",priority:20,setup(G){let{dom:k,config:v}=G,{classPrefix:C,horizontal:O}=v,z=k0(G.rawConfig.padding),y=O?z.left+z.right:z.top+z.bottom,g=()=>{let t=G.getVirtualTotal(),P=n0(t,G.sizeCache,Q);if(P.isCompressed&&!K){K=!0,G.scrollController.enableCompression(P);let f=O?k.viewport.scrollLeft:k.viewport.scrollTop;if(O)k.viewport.style.overflowX="hidden";else k.viewport.style.overflow="hidden";if(O)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0;if(f>0)Y=f,B=f;q=y1(P.virtualSize,G.state.viewportState.containerSize,P.ratio,y),G.updateContentSize(P.virtualSize+q),G.setScrollFns(()=>Y,(V)=>{if(Y=V,B=V,D!==null)cancelAnimationFrame(D),D=null});let R=()=>{let V=B-Y;if(G.getVirtualTotal()===0){Y=0,B=0,D=null,G.scrollController.scrollTo(0);return}if(Math.abs(V)<B4){let X=G.getCachedCompression(),T=Math.max(0,X.virtualSize+q-G.state.viewportState.containerSize);Y=Math.max(0,Math.min(B,T)),B=Y,D=null}else{Y+=V*Z4;let T=G.getCachedCompression().virtualSize+q-G.state.viewportState.containerSize;Y=Math.max(0,Math.min(Y,T)),D=requestAnimationFrame(R)}G.scrollController.scrollTo(Y)},E=k.viewport,b=(V)=>{V.preventDefault();let X=G.getCachedCompression(),T=X.virtualSize+q-G.state.viewportState.containerSize;if(B=Math.max(0,Math.min(B+V.deltaY*X.ratio*$1,T)),D===null)D=requestAnimationFrame(R)};E.addEventListener("wheel",b,{passive:!1});let H=()=>{if(N!==null)cancelAnimationFrame(N),N=null},p=(V)=>{if(H(),D!==null)cancelAnimationFrame(D),D=null;let X=V.touches[0];if(!X)return;let T=O?X.clientX:X.clientY;U=T,Z=Y,w=[{time:performance.now(),y:T}]},r=(V)=>{V.preventDefault();let X=V.touches[0];if(!X)return;let T=O?X.clientX:X.clientY,A=performance.now();if(w.push({time:A,y:T}),w.length>V4)w.shift();let _=U-T,W=G.getCachedCompression(),x=W.virtualSize+q-G.state.viewportState.containerSize,M=Math.max(0,Math.min(Z+_*W.ratio*$1,x));Y=M,B=M,G.scrollController.scrollTo(M)},l=(V)=>{let X=performance.now(),T=w.filter((x)=>X-x.time<_4),A=0;if(T.length>=2){let x=T[0],M=T[T.length-1],F=M.time-x.time;if(F>0)A=(x.y-M.y)/F}if(w=[],Math.abs(A)<W4)return;let _=A*16,W=()=>{if(_*=N4,Math.abs(_)<0.5){N=null;return}let M=G.getCachedCompression().virtualSize+q-G.state.viewportState.containerSize,F=Y+_;if(F=Math.max(0,Math.min(F,M)),F<=0&&_<0||F>=M&&_>0){Y=F,B=F,G.scrollController.scrollTo(F),N=null;return}Y=F,B=F,G.scrollController.scrollTo(F),N=requestAnimationFrame(W)};N=requestAnimationFrame(W)};E.addEventListener("touchstart",p,{passive:!0}),E.addEventListener("touchmove",r,{passive:!1}),E.addEventListener("touchend",l,{passive:!0}),E.addEventListener("touchcancel",l,{passive:!0}),G.destroyHandlers.push(()=>{E.removeEventListener("wheel",b),E.removeEventListener("touchstart",p),E.removeEventListener("touchmove",r),E.removeEventListener("touchend",l),E.removeEventListener("touchcancel",l)});let h=k.viewport.querySelector(`.${C}-scrollbar`),L=()=>{if((O?k.viewport.scrollLeft:k.viewport.scrollTop)!==0)if(O)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0};if(E.addEventListener("scroll",L,{passive:!0}),G.destroyHandlers.push(()=>{E.removeEventListener("scroll",L)}),!h){if(j=i0(k.viewport,(X)=>G.scrollController.scrollTo(X),{},C,O),!k.viewport.classList.contains(`${C}-viewport--custom-scrollbar`))k.viewport.classList.add(`${C}-viewport--custom-scrollbar`);j.updateBounds(P.virtualSize,G.state.viewportState.containerSize);let V=j;G.afterScroll.push((X,T)=>{if(V)V.updatePosition(X),V.show()}),G.resizeHandlers.push((X,T)=>{if(V){let A=G.getCachedCompression();V.updateBounds(A.virtualSize,G.state.viewportState.containerSize)}})}}else if(!P.isCompressed&&K){if(K=!1,D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null;if(Y=0,B=0,w=[],G.setScrollFns(O?()=>k.viewport.scrollLeft:()=>k.viewport.scrollTop,O?(f)=>{k.viewport.scrollLeft=f}:(f)=>{k.viewport.scrollTop=f}),O)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0;if(G.scrollController.disableCompression(),O)k.viewport.style.overflowX="auto";else k.viewport.style.overflow="auto";if(j)j.destroy(),j=null;q=0,G.updateContentSize(P.actualSize)}else if(P.isCompressed)G.scrollController.updateConfig({compression:P}),q=y1(P.virtualSize,G.state.viewportState.containerSize,P.ratio,y),G.updateContentSize(P.virtualSize+q);if(j)j.updateBounds(P.virtualSize+q,G.state.viewportState.containerSize);let S=G.state.viewportState;if(S.isCompressed=P.isCompressed,S.compressionRatio=P.ratio,S.totalSize=P.virtualSize+q,S.actualSize=P.actualSize,G.state.cachedCompression={state:P,totalItems:t},K){let f=Math.max(0,P.virtualSize+q-G.state.viewportState.containerSize),R=Y;if(R>f)R=f;else if(R<0)R=0;if(R!==Y){if(D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null;G.scrollController.scrollTo(R)}}for(let f=0;f<G.contentSizeHandlers.length;f++)G.contentSizeHandlers[f]()};G.updateCompressionMode=g;let a=G.getCachedCompression.bind(G);G.getCachedCompression=()=>{if(G.state.cachedCompression)return G.state.cachedCompression.state;return a()},G.setVisibleRangeFn((t,P,S,f,R)=>{c=null,s=null;let E=n0(f,S,Q);H1(t,P,S,f,E,R)}),G.setScrollToPosFn((t,P,S,f,R)=>{let E=n0(f,P,Q);return b1(t,P,S,f,E,R)});let c=null,s=null;G.setPositionElementFn((t,P)=>{let S=G.getVirtualTotal(),f=n0(S,G.sizeCache,Q);if(f.isCompressed){let R=G.scrollController.getScrollTop();if(c===null||P<s)s=P,c=Math.round(a0(P,R,G.sizeCache,S,G.state.viewportState.containerSize,f));let E=c+G.sizeCache.getOffset(P)-G.sizeCache.getOffset(s),b=G.config.horizontal;t.style.transform=b?`translateX(${E}px)`:`translateY(${E}px)`}else{let R=Math.round(G.sizeCache.getOffset(P)),E=G.config.horizontal;t.style.transform=E?`translateX(${R}px)`:`translateY(${R}px)`}});let $=O?z.left:z.top,o=O?z.right:z.bottom,e=G.getItemToScrollIndexFn();G.methods.set("_scrollItemIntoView",(t)=>{let P=G.getCachedCompression(),S=G.state.viewportState.containerSize,f=G.state.viewportState.scrollPosition,R=G.getVirtualTotal(),{visibleRange:E}=G.state.viewportState,b=e(t),H=XJ(b,G.sizeCache,f,S,$,o,P,R,E);if(H!==f)G.scrollController.scrollTo(H)}),g(),G.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;if(D!==null)cancelAnimationFrame(D),D=null;if(N!==null)cancelAnimationFrame(N),N=null})}}};var P1=(J={})=>{let{chunkSize:Q=100,maxCachedItems:j=5000,evictionBuffer:Y=200,onEvict:K}=J,q=new Map,B=0,D=0,U=(E)=>{let b=q.get(E);if(!b)b={items:Array(Q),count:0,lastAccess:Date.now()},q.set(E,b);else b.lastAccess=Date.now();return b},Z=(E)=>{return Math.floor(E/Q)},N=(E)=>{return E%Q},w=()=>B,G=(E)=>{B=E},k=(E)=>{if(E<0||E>=B)return;let b=Z(E),H=q.get(b);if(!H)return;return H.items[N(E)]},v=(E)=>{if(E<0||E>=B)return!1;let b=Z(E),H=q.get(b);if(!H)return!1;return H.items[N(E)]!==void 0},C=(E,b)=>{let H=Z(E),p=U(H),r=N(E),l=p.items[r]===void 0;if(p.items[r]=b,l)p.count++,D++;if(E>=B)B=E+1},O=(E,b)=>{for(let H=0;H<b.length;H++){let p=b[H];if(p!==void 0)C(E+H,p)}},z=(E)=>{if(E<0||E>=B)return!1;let b=Z(E),H=q.get(b),p=N(E);if(!(H!==void 0&&H.items[p]!==void 0))return!1;let l=b,h=Array.from(q.keys()).filter((V)=>V>=l).sort((V,X)=>V-X),L=[];for(let V of h){let X=q.get(V),T=V*Q;for(let A=0;A<Q;A++){if(X.items[A]===void 0)continue;let _=T+A;if(_<=E)continue;L.push({oldIndex:_,item:X.items[A]})}}if(H.items[p]=void 0,H.count--,D--,H.count===0)q.delete(b);for(let{oldIndex:V}of L){let X=Z(V),T=q.get(X);if(!T)continue;let A=N(V);if(T.items[A]!==void 0){if(T.items[A]=void 0,T.count--,D--,T.count===0)q.delete(X)}}for(let{oldIndex:V,item:X}of L){let T=V-1,A=Z(T),_=U(A),W=N(T);_.items[W]=X,_.count++,D++}return B--,!0},y=(E,b)=>{let H=[];for(let p=E;p<=b&&p<B;p++)H.push(k(p));return H},g=(E,b)=>{for(let H=E;H<=b&&H<B;H++)if(!v(H))return!1;return!0},a=()=>{let E=[],b=null,H=Array.from(q.keys()).sort((p,r)=>p-r);for(let p of H){let r=q.get(p);if(!r)continue;let l=p*Q;for(let h=0;h<Q;h++){let L=l+h;if(L>=B)break;if(r.items[h]!==void 0)if(b===null)b={start:L,end:L};else if(L===b.end+1)b.end=L;else E.push(b),b={start:L,end:L};else if(b!==null)E.push(b),b=null}}if(b!==null)E.push(b);return E},c=(E,b)=>{let H=[],p=null;for(let r=E;r<=b&&r<B;r++)if(!v(r))if(p===null)p={start:r,end:r};else p.end=r;else if(p!==null)H.push(p),p=null;if(p!==null)H.push(p);return H},s=(E)=>{return q.has(E)},$=(E)=>{let b=q.get(E);if(b)b.lastAccess=Date.now()},o=(E,b)=>{if(E>b||q.size===0)return;let H=Date.now(),p=Z(Math.max(0,E)),r=Z(Math.min(B-1,b));for(let l=p;l<=r;l++){let h=q.get(l);if(h)h.lastAccess=H}},e=(E,b)=>{if(D<=j)return 0;let H=Math.max(0,E-Y),p=Math.min(B-1,b+Y),r=Z(H),l=Z(p),h=0,L=[];for(let[V,X]of q)if(V<r||V>l)h+=X.count,L.push(V),D-=X.count,q.delete(V);if(h>0&&K)K(h,L);return h},t=()=>{if(D<=j)return 0;let E=Array.from(q.entries()).sort(([,p],[,r])=>p.lastAccess-r.lastAccess),b=0,H=[];for(let[p,r]of E){if(D<=j)break;b+=r.count,D-=r.count,H.push(p),q.delete(p)}if(b>0&&K)K(b,H);return b},P=()=>{return{totalItems:B,cachedItems:D,cachedChunks:q.size,chunkSize:Q,maxCachedItems:j,memoryEfficiency:B>0?1-D/B:1}},S=()=>D,f=()=>{q.clear(),D=0};return{chunkSize:Q,maxCachedItems:j,getTotal:w,setTotal:G,get:k,has:v,set:C,setRange:O,delete:z,getRange:y,isRangeLoaded:g,getLoadedRanges:a,findUnloadedRanges:c,getChunkIndex:Z,isChunkLoaded:s,touchChunk:$,touchChunksForRange:o,evictDistant:e,evictToLimit:t,getStats:P,getCachedCount:S,clear:f,reset:()=>{f(),B=0}}},D4=(J)=>{if(J.length===0)return[];let Q=[...J].sort((Y,K)=>Y.start-K.start),j=[{...Q[0]}];for(let Y=1;Y<Q.length;Y++){let K=Q[Y],q=j[j.length-1];if(K.start<=q.end+1)q.end=Math.max(q.end,K.end);else j.push({...K})}return j},w1=(J,Q,j)=>{let Y=Math.floor(J.start/j)*j,K=Math.ceil((J.end+1)/j)*j-1,q={start:Y,end:K};if(Q.length===0)return[q];let B=[],D=D4(Q),U=q.start;for(let Z of D){if(Z.end<U)continue;if(Z.start>q.end)break;if(Z.start>U)B.push({start:U,end:Math.min(Z.start-1,q.end)});if(U=Z.end+1,U>q.end)break}if(U<=q.end)B.push({start:U,end:q.end});return B};var R1=(J={})=>{let{maskCharacter:Q=E1,maxSampleSize:j=A1}=J,Y=[],K=!1,q=(N)=>{if(K||N.length===0)return;let w=Math.min(N.length,j);for(let G=0;G<w;G++){let k=N[G];if(!k||typeof k!=="object")continue;let v={};for(let[C,O]of Object.entries(k)){if(C.startsWith("_")||C==="id")continue;v[C]=String(O??"").length}if(Object.keys(v).length>0)Y.push(v)}K=!0},B=()=>K,D=(N)=>{let w={id:`${y0}${N}`,[FJ]:!0,_index:N};if(Y.length===0)return w.label=Q.repeat(12),w;let G=Y[N%Y.length];for(let[k,v]of Object.entries(G))w[k]=Q.repeat(Math.max(1,v));return w};return{analyzeStructure:q,hasAnalyzedStructure:B,generate:D,generateRange:(N,w)=>{let G=[];for(let k=N;k<=w;k++)G.push(D(k));return G},clear:()=>{Y=[],K=!1}}},BJ=(J)=>{if(!J||typeof J!=="object")return!1;return J[FJ]===!0};var G4=50,z1=(J={})=>{let{adapter:Q,initialItems:j,initialTotal:Y,storage:K,placeholder:q,pageSize:B=G4,onStateChange:D,onItemsLoaded:U,onItemsEvicted:Z}=J,N=P1({...K,onEvict:(I,u)=>{Z?.(I),c()}}),w=null,G=()=>{if(!w)w=R1(q);return w},k=new Map,v=!1,C,O=!0,z,y=[],g=0,a=new Map,c=()=>{D?.(R())},s=()=>{k.clear();let I=N.getLoadedRanges();for(let u of I)for(let i=u.start;i<=u.end;i++){let Y0=N.get(i);if(Y0&&!BJ(Y0))k.set(Y0.id,i)}},$=(I,u)=>{if(!BJ(u))k.set(u.id,I)},o=(I)=>{k.delete(I)},e=(I,u)=>{return`${I}-${u}`},t=()=>N.getTotal(),P=()=>N.getCachedCount(),S=()=>v,f=()=>O,R=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:v,pendingRanges:y,error:C,hasMore:O,cursor:z}),E=()=>N,b=()=>G(),H=(I)=>{let u=N.get(I);if(u!==void 0)return u;if(I>=0&&I<N.getTotal())return G().generate(I);return},p=(I)=>{let u=k.get(I);if(u===void 0)return;return N.get(u)},r=(I)=>{return k.get(I)??-1},l=(I)=>{let u=N.get(I);return u!==void 0&&!BJ(u)},h=(I,u)=>{let i=[],Y0=N.getTotal(),X0=0,q0=0;N.touchChunksForRange(I,Math.min(u,Y0-1));for(let Z0=I;Z0<=u&&Z0<Y0;Z0++){let U0=N.get(Z0);if(U0!==void 0)i.push(U0),X0++;else i.push(G().generate(Z0)),q0++}return i},L=(I)=>{N.setTotal(I),O=N.getCachedCount()<I,c()},V=(I,u=0,i)=>{if(Q&&I.length>0){let Y0=G();if(!Y0.hasAnalyzedStructure())Y0.analyzeStructure(I)}for(let Y0=0;Y0<I.length;Y0++){let X0=I[Y0];if(X0!==void 0){let q0=u+Y0;N.set(q0,X0),$(q0,X0)}}if(i!==void 0)N.setTotal(i);else if(u+I.length>N.getTotal())N.setTotal(u+I.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)O=!1;c(),U?.(I,u,N.getTotal())},X=(I,u)=>{let i=N.get(I);if(!i)return!1;let Y0=i.id,X0={...i,...u};if(N.set(I,X0),u.id!==void 0&&u.id!==Y0)o(Y0);return $(I,X0),c(),!0},T=(I)=>{let u=k.get(I);if(u===void 0)return!1;if(!N.delete(u))return!1;return s(),a.clear(),c(),!0},A=async(I,u)=>{if(!Q)return;let i=e(I,u);if(a.has(i))return;let Y0=N.getLoadedRanges(),X0=w1({start:I,end:u},Y0,N.chunkSize);if(X0.length===0)return;let q0=N.chunkSize,Z0=[];for(let K0 of X0){let W0=Math.floor(K0.start/q0),_0=Math.floor(K0.end/q0);for(let j0=W0;j0<=_0;j0++){let D0=j0*q0,V0=D0+q0-1,G0=e(D0,V0);if(!Z0.some((E0)=>E0.start===D0)&&!a.has(G0))Z0.push({start:D0,end:V0})}}let U0=[];for(let K0 of X0){let W0=Math.floor(K0.start/q0),_0=Math.floor(K0.end/q0);for(let j0=W0;j0<=_0;j0++){let D0=j0*q0,V0=D0+q0-1,G0=e(D0,V0);if(a.has(G0)){let E0=a.get(G0);if(!U0.includes(E0))U0.push(E0)}}}for(let K0 of Z0){let W0=e(K0.start,K0.end),_0=(async()=>{y.push(K0),v=!0,C=void 0,c();try{let j0=K0.end-K0.start+1,D0={offset:K0.start,limit:j0,cursor:void 0},V0=await Q.read(D0);if(V(V0.items,K0.start,V0.total),V0.cursor)z=V0.cursor;let G0=K0.start+V0.items.length;if(G0>=g){if(g=G0,V0.hasMore!==void 0)O=V0.hasMore;else if(V0.total!==void 0)O=G0<V0.total}}catch(j0){C=j0 instanceof Error?j0:Error(String(j0))}finally{a.delete(W0),y=y.filter((j0)=>j0.start!==K0.start||j0.end!==K0.end),v=a.size>0,c()}})();a.set(W0,_0),U0.push(_0)}await Promise.all(U0)},_=async(I,u)=>{if(N.isRangeLoaded(I,u))return;await A(I,u)},W=async()=>{if(!Q)return;await A(0,B-1)},x=async()=>{if(!Q||v||!O)return!1;let I=N.getCachedCount(),u=N.getTotal(),i=I,Y0=Math.min(i+B-1,u>0?u-1:i+B-1);if(i>=u&&u>0)return O=!1,!1;return await A(i,Y0),N.getCachedCount()>I},M=async()=>{if(N.clear(),N.setTotal(0),k.clear(),w)w.clear();a.clear(),y=[],v=!1,z=void 0,O=!0,g=0,C=void 0,c()},F=(I,u)=>{if(N.evictDistant(I,u)>0)s()},m=()=>{N.clear(),k.clear(),z=void 0,C=void 0,y=[],v=!1,c()},n=()=>{if(N.reset(),k.clear(),w)w.clear();z=void 0,O=!0,g=0,C=void 0,y=[],v=!1,c()};if(j&&j.length>0)V(j,0,Y??j.length);else if(Y!==void 0)N.setTotal(Y),c();return{getState:R,getTotal:t,getCached:P,getIsLoading:S,getHasMore:f,getStorage:E,getPlaceholders:b,getItem:H,getItemById:p,getIndexById:r,isItemLoaded:l,getItemsInRange:h,setTotal:L,setItems:V,updateItem:X,removeItem:T,loadRange:A,ensureRange:_,loadInitial:W,loadMore:x,reload:M,evictDistant:F,clear:m,reset:n}};var CJ=(J)=>{let{adapter:Q,loading:j,storage:Y,total:K,autoLoad:q=!0}=J,B=j?.cancelThreshold??M1,D=j?.preloadThreshold??O1,U=j?.preloadAhead??G1;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Z){let{emitter:N}=Z,w=Z.config.reverse,G=Z.methods.get("_getGridLayout"),k=(P)=>{if(G){let S=G();if(S){let f=Z.dataManager.getTotal();return S.getItemRange(P.start,P.end,f)}}return P},v=z1({adapter:Q,...K!==void 0&&{initialTotal:K},pageSize:Y?.chunkSize??x0,...Y&&{storage:{...Y.chunkSize!==void 0&&{chunkSize:Y.chunkSize},...Y.maxCachedItems!==void 0&&{maxCachedItems:Y.maxCachedItems}}},onStateChange:()=>{if(Z.state.isInitialized){let P=Z.getVirtualTotal();Z.sizeCache.rebuild(P),Z.updateCompressionMode();let S=Z.getCachedCompression();Z.state.viewportState.totalSize=S.virtualSize,Z.state.viewportState.actualSize=S.actualSize,Z.state.viewportState.isCompressed=S.isCompressed,Z.state.viewportState.compressionRatio=S.ratio,Z.updateContentSize(S.virtualSize),Z.renderIfNeeded()}},onItemsLoaded:(P,S,f)=>{if(Z.state.isInitialized)Z.forceRender(),N.emit("load:end",{items:P,total:f,offset:S})}});Z.replaceDataManager(v);let C=null,O=null,z=0,y=!1,g=null,a=120,c=(P=!1)=>{if(y=!1,O=null,P)C=null;if(g!==null)clearTimeout(g),g=null},s=()=>{if(!O)return;O=null;let{renderRange:P}=Z.state.viewportState;if(P.end<P.start)return;C=null;let S=k(P);Z.dataManager.ensureRange(S.start,S.end).catch((f)=>{N.emit("error",{error:f,context:"ensureRange"})})};Z.afterScroll.push((P,S)=>{if(Z.state.isDestroyed)return;let f=Z.scrollController.getVelocity(),E=Z.scrollController.isTracking()&&f<=B;if(z>B&&f<=B)y=!0;else if(y&&f>B)c();if(y&&f<0.5)c(!0);if(z=f,(Z.scrollController.isAtTop()||Z.scrollController.isAtBottom())&&(y||O))c(!0),E=!0;let H=y&&f>0.5;if(E&&!Z.dataManager.getIsLoading()&&Z.dataManager.getHasMore()){if(w){if(P<LJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:x0}),Z.dataManager.loadMore().catch((l)=>{N.emit("error",{error:l,context:"loadMore"})})}else if(Z.state.viewportState.totalSize-P-Z.state.viewportState.containerSize<LJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:x0}),Z.dataManager.loadMore().catch((h)=>{N.emit("error",{error:h,context:"loadMore"})})}let{renderRange:p}=Z.state.viewportState;if(!C||p.start!==C.start||p.end!==C.end){if(C={start:p.start,end:p.end},E&&!H){if(O=null,g!==null)clearTimeout(g),g=null;let l=k(p),h=l.start,L=l.end,V=G?Z.dataManager.getTotal():Z.getVirtualTotal();if(f>D)if(S==="down")L=Math.min(l.end+U,V-1);else h=Math.max(l.start-U,0);Z.dataManager.ensureRange(h,L).catch((X)=>{N.emit("error",{error:X,context:"ensureRange"})})}else if(O={start:p.start,end:p.end},H){if(g!==null)clearTimeout(g);g=setTimeout(()=>{g=null,s(),c()},a)}}});let $=200,o=null;Z.afterScroll.push((P,S)=>{if(o!==null)clearTimeout(o);o=setTimeout(()=>{o=null,s(),c()},$)}),Z.destroyHandlers.push(()=>{if(o!==null)clearTimeout(o),o=null;c()});let e=()=>{if(Z.state.isDestroyed)return;C=null;let{renderRange:P}=Z.state.viewportState;if(P.end>0){let S=k(P);Z.dataManager.ensureRange(S.start,S.end).catch((f)=>{N.emit("error",{error:f,context:"ensureRange"})})}s()};window.addEventListener("online",e),Z.destroyHandlers.push(()=>{window.removeEventListener("online",e)}),N.on("load:start",()=>{Z.dom.root.setAttribute("aria-busy","true")}),N.on("load:end",()=>{Z.dom.root.removeAttribute("aria-busy")}),Z.methods.set("loadVisibleRange",async()=>{C=null,O=null,Z.forceRender();let{renderRange:P}=Z.state.viewportState;if(P.end>0){let S=k(P);N.emit("load:start",{offset:S.start,limit:S.end-S.start+1}),await Z.dataManager.ensureRange(S.start,S.end)}}),Z.methods.set("reload",async(P)=>{C=null,O=null;let S=P?.snapshot,f=S!=null&&(S.total??0)>0&&S.index>0,R=f||P?.skipInitialLoad===!0;if(Z.invalidateRendered(),await Z.dataManager.reload(),!f)Z.scrollController.scrollTo(0);if(!R){N.emit("load:start",{offset:0,limit:x0}),await Z.dataManager.loadInitial(),Z.forceRender();let{renderRange:E}=Z.state.viewportState;if(E.end>0){let b=k(E);await Z.dataManager.ensureRange(b.start,b.end)}}if(f){let E=Z.methods.get("restoreScroll");if(E)E(S)}});let t=!1;if(Z.methods.set("_cancelAutoLoad",()=>{t=!0}),q)queueMicrotask(()=>{if(t)return;N.emit("load:start",{offset:0,limit:x0}),Z.dataManager.loadInitial().catch((P)=>{N.emit("error",{error:P,context:"loadInitial"})})});else if(K!==void 0)Z.dataManager.setTotal(K)}}};var vJ=()=>{let J=null;return{name:"withPage",priority:5,setup(Q){let{dom:j,state:Y,config:K,emitter:q}=Q;if(j.root.style.overflow="visible",j.root.style.height="auto",K.horizontal)j.viewport.style.overflowX="visible",j.viewport.style.overflowY="visible";else j.viewport.style.overflow="visible";j.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),Q.disableViewportResize(),Q.disableWheelHandler(),Q.setScrollTarget(window),Q.setScrollFns(()=>{let Z=j.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-Z.left);else return Math.max(0,-Z.top)},(Z)=>{let N=j.viewport.getBoundingClientRect();if(K.horizontal){let w=N.left+window.scrollX;window.scrollTo(w+Z,window.scrollY)}else{let w=N.top+window.scrollY;window.scrollTo(window.scrollX,w+Z)}}),Q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),Y.viewportState.containerSize=window.innerHeight;let{innerHeight:B,innerWidth:D}=window,U=()=>{let{innerWidth:Z,innerHeight:N}=window,w=K.horizontal?Z:N,G=K.horizontal?D:B;if(Math.abs(w-G)<=1)return;B=N,D=Z,Y.viewportState.containerSize=N,q.emit("resize",{width:Z,height:N});for(let k=0;k<Q.resizeHandlers.length;k++)Q.resizeHandlers[k](Z,N);Q.renderIfNeeded()};window.addEventListener("resize",U,{passive:!0}),J=()=>{window.removeEventListener("resize",U)},Q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var SJ=(J,Q)=>{let j=0,Y=J.length-1;while(j<Y){let K=j+Y+1>>>1;if(J[K].headerLayoutIndex<=Q)j=K;else Y=K-1}return j},C1=(J,Q)=>{let j=0,Y=J.length-1;while(j<Y){let K=j+Y+1>>>1;if(J[K].firstDataIndex<=Q)j=K;else Y=K-1}return j},v1=(J,Q)=>{if(J===0)return[];let j=[],Y=Q(0),K=0,q=0;for(let B=1;B<J;B++){let D=Q(B);if(D!==Y){let U=B-K;j.push({key:Y,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:K,count:U}),q=q+1+U,Y=D,K=B}}return j.push({key:Y,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:K,count:J-K}),j},fJ=(J,Q)=>{if(J.length===0||Q.length===0)return[];let j=J.length+Q.length,Y=Array(j),K=0;for(let q of Q){Y[K]={id:`__group_header_${q.groupIndex}`,__groupHeader:!0,groupKey:q.key,groupIndex:q.groupIndex},K++;for(let B=0;B<q.count;B++)Y[K]=J[q.firstDataIndex+B],K++}return Y},IJ=(J,Q,j=!1)=>{let Y=typeof Q==="number"?(K)=>Q:Q;return(K)=>{let q=J.getEntry(K);if(q.type==="header"){if(j&&q.group.groupIndex===0)return 0;return J.getHeaderHeight(q.group.groupIndex)}return Y(q.dataIndex)}},S1=(J,Q)=>{let j=v1(J,Q.getGroupForIndex),Y=J+j.length,K=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return Y},get groupCount(){return j.length},get groups(){return j},getEntry:(G)=>{if(j.length===0)return{type:"item",dataIndex:G,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let k=SJ(j,G),v=j[k];if(G===v.headerLayoutIndex)return{type:"header",group:v};let C=G-v.headerLayoutIndex-1;return{type:"item",dataIndex:v.firstDataIndex+C,group:v}},layoutToDataIndex:(G)=>{if(j.length===0)return G;let k=SJ(j,G),v=j[k];if(G===v.headerLayoutIndex)return-1;let C=G-v.headerLayoutIndex-1;return v.firstDataIndex+C},dataToLayoutIndex:(G)=>{if(j.length===0)return G;let k=C1(j,G),v=j[k],C=G-v.firstDataIndex;return v.headerLayoutIndex+1+C},getGroupAtLayoutIndex:(G)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=SJ(j,G);return j[k]},getGroupAtDataIndex:(G)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=C1(j,G);return j[k]},getHeaderHeight:typeof K==="number"?(G)=>K:(G)=>{let k=j[G];if(!k)return 0;return K(k.key,G)},rebuild:(G)=>{j=v1(G,Q.getGroupForIndex),Y=G+j.length}}};var f1=(J,Q,j,Y,K,q=!1,B=0)=>{let D=q?"width":"height",U=q?"height":"width",Z=q?"X":"Y",N=(X,T)=>{X.style[D]=`${T}px`},w=document.createElement("div");w.className=`${K}-sticky-header`,w.setAttribute("role","presentation"),w.setAttribute("aria-hidden","true"),w.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`);let G=()=>{let X=document.createElement("div");return X.className="sticky-group",X.style.position="absolute",X.style.willChange="transform",X.style[U]="100%",X},k=G(),v=G();w.append(k,v),J.insertBefore(w,J.firstChild);let C=k,O=v,z=Q.groups,y=[],g=[],a=0,c=()=>{z=Q.groups,a=z.length,y=Array(a),g=Array(a);for(let X=0;X<a;X++)y[X]=j.getOffset(z[X].headerLayoutIndex),g[X]=Q.getHeaderHeight(X)};c();let s=-1,$=0,o=-1,e=!1,t=0,P=!1,S=(X,T)=>{Y(X,T);let A=g[T];return N(X,A),A},f=(X)=>{X.replaceChildren(),X.style.transform=""},R=(X)=>{if(X===s)return;if(s=X,$=0,X<0||X>=a){f(C);return}$=S(C,X),N(w,$),C.style.transform=""},E=(X)=>{if(X===t)return;t=X;let T=Math.round(X);C.style.transform=`translate${Z}(${T}px)`,O.style.transform=`translate${Z}(${T+$}px)`},b=()=>{t=0,C.style.transform="",O.style.transform=""},H=()=>{if(!P)return;let X=C;C=O,O=X,s=o,$=s>=0?g[s]:0,N(w,$),f(O),o=-1,P=!1,b()},p=()=>{if(!P)return;f(O),o=-1,P=!1,b()},r=()=>{if(e)return;e=!0,w.style.display=""},l=()=>{if(!e)return;e=!1,w.style.display="none",f(C),s=-1,$=0,p()},h=(X)=>{if(a===0){l();return}if(X<y[0]){l();return}let T=0,A=a-1;while(T<A){let W=T+A+1>>>1;if(y[W]+g[W]<=X)T=W;else A=W-1}if(!e)r();R(T);let _=T+1;if(_<a){let W=y[_]-X;if(W<=0&&W>-$){if(o!==_||!P)o=_,S(O,_),P=!0;E(W)}else if(W<=-$){if(P)H()}else if(P)p()}else if(P)p()},L=()=>{c();let X=s;if(s=-1,$=0,X>=0)R(X)},V=()=>{w.remove(),s=-1,$=0,o=-1,e=!1,P=!1};return w.style.display="none",{update:h,refresh:L,show:r,hide:l,destroy:V}};var R0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var I1=(J,Q,j,Y,K,q)=>{if(Y===0)return 0;let B=Math.max(0,Math.min(J,Y-1)),D=Q.getOffset(B),U=Q.getSize(B),Z=Q.getTotalSize(),N=Math.max(0,Z-j),w;switch(q){case"center":w=D-j/2+U/2;break;case"end":w=D-j+U;break;case"start":default:w=D;break}return Math.max(0,Math.min(w,N))};var t0=(J,Q,j,Y,K="start",q,B=I1)=>{return B(J,Q,j,Y,q,K)};var M4=(J,Q)=>{if(J.header){let j=Q?J.header.width??J.header.height:J.header.height??J.header.width;return{...J,header:{...J.header,height:j}}}if(J.headerHeight!=null&&J.headerTemplate)return{...J,header:{height:J.headerHeight,template:J.headerTemplate}};return J},hJ=(J)=>{let Q=J.header,j=Q?Q.height??Q.width:J.headerHeight,Y=Q?.template??J.headerTemplate;if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(j==null||j<=0)throw Error("[vlist/builder] withGroups: header.height must be a positive number");if(!Y)throw Error("[vlist/builder] withGroups: header.template is required");let K=null,q=null,B=[],D=[];return{name:"withGroups",priority:10,setup(U){let{dom:Z,config:N,rawConfig:w}=U,{classPrefix:G}=N,k=M4(J,N.horizontal),C=w.item.height;B=w.items?[...w.items]:[];let O=B.length,z={getGroupForIndex:k.getGroupForIndex,header:{height:k.header.height,template:k.header.template},sticky:k.sticky??!1};K=S1(O,z),D=fJ(B,K.groups);let y=k.sticky!==!1,g=IJ(K,C,y);U.setSizeConfig(g),U.rebuildSizeCache(D.length),U.dataManager.setItems(D,0,D.length);let a=w.item.template,{template:c}=k.header,s=(l,h,L)=>{if(R0(l))return c(l.groupKey,l.groupIndex);return a(l,h,L)},$=U.methods.get("_getGridLayout"),o=U.methods.get("_replaceGridRenderer"),e=U.methods.get("_updateGridLayoutForGroups"),t=U.methods.get("_createGridRenderer"),P=U.methods.get("_getTableLayout"),S=U.methods.get("_updateTableForGroups"),f=U.methods.get("_getTableHeaderHeight");if($&&o&&t){if(e)e((L)=>{let V=D[L];return!!(V&&R0(V))});let l=$(),h=t(Z.items,s,U.sizeCache,l,G,U.getContainerWidth(),()=>U.dataManager.getTotal(),N.ariaIdPrefix);o(h)}else if(P&&S)S((l)=>R0(l),k.header.template);else U.replaceTemplate(s);let R=f?f():0;if(Z.root.classList.add(`${G}--grouped`),k.sticky!==!1)if(U.methods.set("_getStickyHeaderHeight",()=>k.header.height),!N.horizontal)Z.viewport.style.height=`calc(100% - ${k.header.height}px)`;else Z.viewport.style.width=`calc(100% - ${k.header.height}px)`;if(k.sticky!==!1){let l=k.header.template,h=(V,X)=>{let T=K.groups[X];if(!T)return;let A=l(T.key,T.groupIndex);if(typeof A==="string")V.innerHTML=A;else V.replaceChildren(A)};q=f1(Z.root,K,U.sizeCache,h,G,N.horizontal,R);let L=q;U.afterScroll.push((V,X)=>{L.update(V)}),q.update(U.scrollController.getScrollTop())}let E=w.item?.striped,b=()=>{if(E!=="data"&&E!=="even"&&E!=="odd")return;let l=new Int32Array(D.length),h=E==="odd"?1:0,L=0;for(let V=0;V<D.length;V++)if(R0(D[V])){if(l[V]=-1,E==="even"||E==="odd")L=0}else l[V]=L+++h;U.setStripeIndexFn((V)=>{if(V<0||V>=l.length)return V;return l[V]})};b();let H=()=>{if(!K)return;K.rebuild(B.length),D=fJ(B,K.groups);let l=IJ(K,C,y);if(U.setSizeConfig(l),U.rebuildSizeCache(D.length),U.dataManager.setItems(D,0,D.length),b(),q)q.refresh()};U.methods.set("setItems",(l)=>{B=l.slice(),H()}),U.methods.set("appendItems",(l)=>{B.push(...l),H()}),U.methods.set("prependItems",(l)=>{B.unshift(...l),H()}),U.methods.set("removeItem",(l)=>{B=B.filter((h)=>h.id!==l),H()});let{animateScroll:p,cancelScroll:r}=r0(U.scrollController,U.renderIfNeeded);U.methods.set("scrollToIndex",(l,h)=>{let L=K.dataToLayoutIndex(l),{align:V,behavior:X,duration:T}=w0(h),A=U.dataManager.getTotal(),_=U.adjustScrollPosition(t0(L,U.sizeCache,U.state.viewportState.containerSize,A,V,U.getCachedCompression()));if(X==="smooth")p(U.scrollController.getScrollTop(),_,T);else r(),U.scrollController.scrollTo(_)}),U.methods.set("_getItems",()=>B),U.methods.set("_getTotal",()=>B.length),U.methods.set("_isGroupHeader",(l)=>{let h=D[l];return!!(h&&R0(h))}),U.destroyHandlers.push(()=>{if(r(),q)q.destroy(),q=null;Z.root.classList.remove(`${G}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var h1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),j=J.gap??0,Y=J.isHeaderFn,K={row:0,col:0},q=(v)=>{if(v<=0)return 0;if(!Y)return Math.ceil(v/Q);let C=0,O=0,z=0;for(let y=0;y<v;y++)if(Y(y)){if(z++,O>0)C++,O=0;C++,O=0}else if(O++,O>=Q)C++,O=0;if(O>0)C++;return C},B=(v)=>{return K.row=D(v),K.col=U(v),K},D=(v)=>{if(!Y)return Math.floor(v/Q);let C=0,O=0;for(let z=0;z<=v;z++)if(Y(z)){if(O>0)C++,O=0;if(z===v)return C;C++,O=0}else{if(z===v)return C;if(O++,O>=Q)C++,O=0}return console.warn(`⚠️ getRow(${v}) fell through - returning ${C}`),C},U=(v)=>{if(!Y)return v%Q;if(Y(v))return 0;let C=0;for(let O=0;O<=v;O++)if(Y(O))C=0;else{if(O===v)return C;if(C++,C>=Q)C=0}return C},Z=(v,C,O)=>{if(O<=0)return{start:0,end:-1};if(!Y){let c=Math.max(0,v*Q),s=Math.min(O-1,(C+1)*Q-1);return{start:c,end:s}}let z=-1,y=-1,g=0,a=0;for(let c=0;c<O;c++){if(Y(c)){if(a>0)g++,a=0;if(g>=v&&g<=C){if(z===-1)z=c;y=c}g++,a=0}else{if(g>=v&&g<=C){if(z===-1)z=c;y=c}if(a++,a>=Q)g++,a=0}if(g>C&&a===0)break}if(z===-1)return{start:0,end:-1};return{start:z,end:y}},N=(v,C,O)=>{if(C<0||C>=Q)return-1;let z=v*Q+C;if(z<0||z>=O)return-1;return z},w=(v)=>{let C=(Q-1)*j;return Math.max(0,(v-C)/Q)};return{get columns(){return Q},get gap(){return j},update:(v)=>{if(v.columns!==void 0)Q=Math.max(1,Math.floor(v.columns));if(v.gap!==void 0)j=v.gap;if(v.isHeaderFn!==void 0)Y=v.isHeaderFn},getTotalRows:q,getPosition:B,getRow:D,getCol:U,getItemRange:Z,getItemIndex:N,getColumnWidth:w,getColumnOffset:(v,C)=>{let O=w(C);return v*(O+j)}}};var O4=(J=200)=>{let Q=[];return{acquire:()=>{let q=Q.pop();if(q)return q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(q)=>{if(q.remove(),Q.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-row"),q.removeAttribute("data-col"),Q.push(q)},clear:()=>{Q.length=0}}},E4=1,pJ=(J,Q,j,Y,K,q,B,D,U=!1)=>{let Z=O4(),N=new Map,w=q,G=!1,k=0,v="",C=-1,O={selected:!1,focused:!1},z=(V,X)=>{return O.selected=V,O.focused=X,O},y=`${K}-item ${K}-grid-item`,g=`${K}-item--selected`,a=`${K}-item--focused`,c=`${K}-item--placeholder`,s=`${K}-item--replaced`,$=(V,X)=>{if(typeof X==="string")V.innerHTML=X;else V.replaceChildren(X)},o=(V,X,T)=>{V.classList.toggle(g,X),V.classList.toggle(a,T)},e=(V,X)=>{let T=Y.getRow(V);if(X?.compression?.isCompressed)return a0(T,X.scrollPosition,j,X.totalItems,X.containerSize,X.compression,X.rangeStart);return j.getOffset(T)},t=(V,X)=>{let T=G&&Y.getCol(V)===0,A=T?0:Y.getCol(V),_=T?0:Y.getColumnOffset(A,w),W;if(G){let x=Y.getRow(V),M=0,F=new Set;for(let m=0;m<V;m++){let n=Y.getRow(m);if(n<x&&!F.has(n)){let I=j.getSize(m);M+=I,F.add(n)}}W=M}else W=e(V,X);if(U)return`translate(${Math.round(W)}px, ${Math.round(_)}px)`;return`translate(${Math.round(_)}px, ${Math.round(W)}px)`},P=(V,X)=>{V.style.transform=X},S=(V,X)=>{let T=V.dataset.id?.startsWith("__group_header"),A=T?w:Y.getColumnWidth(w),_;if(G||T)_=j.getSize(X)-Y.gap;else{let W=Y.getRow(X);_=j.getSize(W)-Y.gap}if(U)V.style.width=`${_}px`,V.style.height=`${A}px`;else V.style.width=`${A}px`,V.style.height=`${_}px`},f=(V,X,T,A,_)=>{let W=Z.acquire(),x=z(T,A);if(W.className=y,W.dataset.index=String(V),W.dataset.id=String(X.id),W.dataset.row=String(Y.getRow(V)),W.dataset.col=String(Y.getCol(V)),W.ariaSelected=String(T),D)W.id=`${D}-item-${V}`;if(B){let m=B();if(m!==C)C=m,v=String(m);W.setAttribute("aria-setsize",v),W.setAttribute("aria-posinset",String(V+1))}S(W,V);let M=Q(X,V,x);if($(W,M),String(X.id).startsWith(y0))W.classList.add(c);return o(W,T,A),P(W,_),{element:W,lastItemId:X.id,lastSelected:T,lastFocused:A,lastTransform:_,lastSeenFrame:k}},R=(V,X,T,A,_)=>{if(k++,X.start===0&&V.length>0)G=R0(V[0]);for(let[M,F]of N)if(M>=X.start&&M<=X.end)F.lastSeenFrame=k;else if(k-F.lastSeenFrame>E4)Z.release(F.element),N.delete(M);let W=!1;if(B){let M=B();if(M!==C)C=M,v=String(M),W=!0}let x=null;for(let M=X.start;M<=X.end;M++){let F=M-X.start,m=V[F];if(!m){console.warn(`⚠️ RENDER: Missing item at index ${M} (range: ${X.start}-${X.end}, items.length: ${V.length})`);continue}let n=T.has(m.id),I=M===A,u=N.get(M);if(u){let i=u.lastItemId!==m.id,Y0=u.lastSelected!==n,X0=u.lastFocused!==I;if(i){let Z0=String(u.lastItemId),U0=String(m.id),K0=Z0.startsWith(y0),W0=U0.startsWith(y0);if(!W0&&P0(T,M,m.id))n=!0;let _0=z(n,I),j0=Q(m,M,_0);if($(u.element,j0),u.element.dataset.id=U0,u.element.dataset.row=String(Y.getRow(M)),u.element.dataset.col=String(Y.getCol(M)),S(u.element,M),u.element.classList.toggle(c,W0),K0&&!W0)u.element.classList.add(s),setTimeout(()=>u.element.classList.remove(s),300);u.lastItemId=m.id}if(i||Y0||X0)o(u.element,n,I),u.element.ariaSelected=String(n),u.lastSelected=n,u.lastFocused=I;let q0=t(M,_);if(u.lastTransform!==q0)P(u.element,q0),u.lastTransform=q0;if(W)u.element.setAttribute("aria-setsize",v)}else{if(P0(T,M,m.id))n=!0;let i=t(M,_),Y0=f(M,m,n,I,i);if(!x)x=document.createDocumentFragment();x.appendChild(Y0.element),N.set(M,Y0)}}if(x)J.appendChild(x)},E=(V)=>{for(let[X,T]of N){let A=t(X,V);if(T.lastTransform!==A)P(T.element,A),T.lastTransform=A}},b=(V,X,T,A)=>{let _=N.get(V);if(!_)return;let W=z(T,A),x=Q(X,V,W);$(_.element,x),o(_.element,T,A),_.element.dataset.id=String(X.id),_.element.ariaSelected=String(T),S(_.element,V),_.lastItemId=X.id,_.lastSelected=T,_.lastFocused=A},H=(V,X,T)=>{let A=N.get(V);if(!A)return;let _=A.lastSelected!==X,W=A.lastFocused!==T;if(_||W)o(A.element,X,T),A.lastSelected=X,A.lastFocused=T},p=(V)=>{return N.get(V)?.element},r=(V)=>{if(Math.abs(V-w)<1)return;w=V;for(let[X,T]of N){S(T.element,X);let A=t(X);P(T.element,A),T.lastTransform=A}},l=()=>{g0(J,N.keys(),(V)=>N.get(V)?.element)},h=()=>{for(let[,V]of N)Z.release(V.element);N.clear()};return{render:R,updatePositions:E,updateItem:b,updateItemClasses:H,getElement:p,sortDOM:l,updateContainerWidth:r,clear:h,destroy:()=>{h(),Z.clear()}}};var A4=new Set,uJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let Q=null,j=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(Y){let{dom:K,emitter:q,config:B,rawConfig:D}=Y,{classPrefix:U}=B;if(B.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Z=B.horizontal,N=jJ(k0(D.padding),Z),w=()=>{return(Z?K.viewport.clientHeight:Y.getContainerWidth())-N},G=D.items?.some((h)=>h.__groupHeader===!0),k={columns:J.columns,gap:J.gap??0};if(G)k.isHeaderFn=(h)=>{let L=Y.dataManager.getItem(h);return!!(L&&L.__groupHeader===!0)};Q=h1(k);let v=Q.gap;Y.setVirtualTotalFn(()=>{let h=Y.dataManager.getTotal();return Q.getTotalRows(h)}),Y.setItemToScrollIndexFn((h)=>Math.floor(h/k.columns)),Y.methods.set("_getNavTotal",()=>Y.dataManager.getTotal()),Y.methods.set("_getNavDelta",()=>Z?{ud:1,lr:k.columns,cols:k.columns}:{ud:k.columns,lr:1,cols:k.columns});let C=D.item,O=B.horizontal?C.width:C.height,z={containerWidth:w(),columns:Q.columns,gap:Q.gap},y={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof O==="function")Y.setSizeConfig((h)=>{let L=z.containerWidth-2,V=(z.columns-1)*z.gap;return y.containerWidth=z.containerWidth,y.columns=z.columns,y.gap=z.gap,y.columnWidth=(L-V)/z.columns,y.row=Q.getRow(h),y.column=Q.getCol(h),y.totalRows=Q.getTotalRows(Y.dataManager.getTotal()),y.totalColumns=z.columns,O(h,y)+z.gap});else if(v>0)Y.setSizeConfig(O+v);if(Y.rebuildSizeCache(),v>0){let h=Y.sizeCache.getTotalSize;Y.sizeCache.getTotalSize=()=>{let L=h();return L>0?L-z.gap:0}}K.root.classList.add(`${U}--grid`);let g=w(),a=D.item.template,c=()=>{j=pJ(K.items,a,Y.sizeCache,Q,U,g,()=>Y.dataManager.getTotal(),B.ariaIdPrefix,B.horizontal),Y.replaceRenderer(j)};c(),Y.setUpdateItemClassesFn((h,L,V)=>{j?.updateItemClasses(h,L,V)}),Y.methods.set("_updateRenderedItem",(h,L,V,X)=>{j?.updateItem(h,L,V,X)}),Y.methods.set("_getGridLayout",()=>Q),Y.methods.set("_getGridConfig",()=>k),Y.methods.set("_replaceGridRenderer",(h)=>{j=h}),Y.methods.set("_createGridRenderer",pJ),Y.methods.set("_updateGridLayoutForGroups",(h)=>{Q.update({isHeaderFn:h});let L=Y.dataManager.getTotal(),V=0;for(let X=0;X<L;X++)if(Q.getCol(X)===0){let T=Y.sizeCache.getSize(X);V+=T}Y.sizeCache.getTotalSize=()=>V,Y.updateContentSize(V),c()}),Y.methods.set("updateGrid",(h)=>{if(h.columns!==void 0){if(!Number.isInteger(h.columns)||h.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");k.columns=h.columns}if(h.gap!==void 0){if(h.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");k.gap=h.gap}if(Q)Q.update(k);let L=w();if(z.containerWidth=L,z.columns=k.columns,z.gap=k.gap??0,j)j.updateContainerWidth(L);Y.rebuildSizeCache(),Y.updateContentSize(Y.sizeCache.getTotalSize()),Y.updateCompressionMode();for(let V=0;V<Y.contentSizeHandlers.length;V++)Y.contentSizeHandlers[V]();if(j)j.clear();Y.forceRender()});let s=null,$=null,o=!1,e=()=>{if(o)return;o=!0,s=Y.methods.get("_getSelectedIds")??null,$=Y.methods.get("_getFocusedIndex")??null},t=-1,P=-1,S=!0,f=B.overscan,R={start:0,end:0},E={start:0,end:0},b=()=>{if(Y.state.isDestroyed)return;let h=Y.scrollController.getScrollTop(),L=Y.state.viewportState.containerSize;if(!S&&h===t&&L===P)return;t=h,P=L,S=!1;let V=Y.getVirtualTotal();if(V===0||L===0)R.start=0,R.end=0;else R.start=Math.max(0,Y.sizeCache.indexAtOffset(h)),R.end=Math.min(V-1,Math.max(0,Y.sizeCache.indexAtOffset(h+L-1)));E.start=Math.max(0,R.start-f),E.end=Math.min(V-1,R.end+f);let X=Y.state.viewportState;X.scrollPosition=h,X.visibleRange.start=R.start,X.visibleRange.end=R.end,X.renderRange.start=E.start,X.renderRange.end=E.end;let T=Y.state.lastRenderRange,A=X.isCompressed,_=Y.dataManager.getTotal(),W=Q.getItemRange(E.start,E.end,_),x=Y.dataManager.getItemsInRange(W.start,W.end),M=A?Y.getCompressionContext():void 0;e();let F=s?s():A4,m=$?$():-1;if(j.render(x,W,F,m,M),T.start!==E.start||T.end!==E.end)T.start=E.start,T.end=E.end,q.emit("range:change",{range:{start:E.start,end:E.end}})},H=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,S=!0,b()};Y.setRenderFns(b,H);let p=typeof O==="function";Y.resizeHandlers.push((h,L)=>{let V=(Z?L:h)-N;if(Math.abs(V-z.containerWidth)<1)return;if(z.containerWidth=V,j)j.updateContainerWidth(V);if(p){Y.rebuildSizeCache(),Y.updateContentSize(Y.sizeCache.getTotalSize()),Y.updateCompressionMode();for(let X=0;X<Y.contentSizeHandlers.length;X++)Y.contentSizeHandlers[X]();if(j)j.clear();Y.forceRender()}});let{animateScroll:r,cancelScroll:l}=r0(Y.scrollController,Y.renderIfNeeded);if(Y.methods.set("cancelScroll",l),Y.methods.set("scrollToIndex",(h,L)=>{let V=Math.floor(h/J.columns),{align:X,behavior:T,duration:A}=w0(L),_=Y.dataManager.getState(),W=Q.getTotalRows(_.total),x=Math.max(0,Math.min(V,W-1)),M=Y.adjustScrollPosition(t0(x,Y.sizeCache,Y.state.viewportState.containerSize,W,X,Y.getCachedCompression()));if(T==="smooth")r(Y.scrollController.getScrollTop(),M,A);else l(),Y.scrollController.scrollTo(M)}),!Y.methods.has("_getTotal"))Y.methods.set("_getTotal",()=>Y.dataManager.getTotal());Y.idleHandlers.push(()=>{if(j)j.sortDOM()}),Y.destroyHandlers.push(()=>{if(l(),j)j.destroy(),j=null;K.root.classList.remove(`${U}--grid`)})},destroy(){if(j)j.destroy(),j=null}}};var p1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),j=J.gap??0,Y=J.containerSize,K=0,q=[],B=()=>{let O=(Q-1)*j;K=Math.max(0,(Y-O)/Q),q=Array(Q);let z=K+j;for(let y=0;y<Q;y++)q[y]=y*z};B();let D=[],U=0,Z=[],N=(O)=>{let z=0,y=O[0];for(let g=1;g<O.length;g++){let a=O[g];if(a<y)y=a,z=g}return z},w=(O,z)=>{if(O<=0)return U=0,D=[],[];let y=Array(Q).fill(0),g=Array(Q);for(let s=0;s<Q;s++)g[s]=[];let a=Array(O);for(let s=0;s<O;s++){let $=N(y),o=z(s),e=y[$];a[s]={index:s,x:q[$],y:e,lane:$,size:o,crossSize:K},g[$].push(s),y[$]=e+o+j}D=g;let c=0;for(let s=0;s<Q;s++){let $=y[s],o=$>0?$-j:0;if(o>c)c=o}return U=c,a},G=(O)=>{if(O.length===0)return U>0?U:0;if(U>0)return U;let z=Array(Q).fill(0);for(let g of O){let a=g.y+g.size,c=z[g.lane];if(a>c)z[g.lane]=a}let y=0;for(let g=0;g<Q;g++)if(z[g]>y)y=z[g];return y},k=(O,z,y)=>{if(O.length===0||y<=z)return Z.length=0,Z;if(D.length===0||D.length!==Q)return v(O,z,y);Z.length=0;for(let g=0;g<Q;g++){let a=D[g],c=a.length;if(c===0)continue;let s=0,$=c;while(s<$){let o=s+$>>>1,e=O[a[o]];if(e.y+e.size<=z)s=o+1;else $=o}for(let o=s;o<c;o++){let e=O[a[o]];if(e.y>=y)break;Z.push(e)}}return Z},v=(O,z,y)=>{let g=[];for(let a of O)if(a.y+a.size>z&&a.y<y)g.push(a);return g};return{get columns(){return Q},get gap(){return j},get containerSize(){return Y},update:(O)=>{let z=!1;if(O.columns!==void 0){let y=Math.max(1,Math.floor(O.columns));if(y!==Q)Q=y,z=!0}if(O.gap!==void 0&&O.gap!==j)j=O.gap,z=!0;if(O.containerSize!==void 0&&O.containerSize!==Y)Y=O.containerSize,z=!0;if(z)B()},calculateLayout:w,getTotalSize:G,getVisibleItems:k}};var L4=(J=200)=>{let Q=[];return{acquire:()=>{let q=Q.pop();if(q)return q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(q)=>{if(q.remove(),Q.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-lane"),Q.push(q)},clear:()=>{Q.length=0}}},F4=1,u1=(J,Q,j,Y=!1,K,q)=>{let B=L4(),D=new Map,U=new Set,Z=0,N="",w=-1,G={selected:!1,focused:!1},k=(P,S)=>{return G.selected=P,G.focused=S,G},v=`${j}-item ${j}-masonry-item`,C=`${j}-item--selected`,O=`${j}-item--focused`,z=(P,S)=>{if(typeof S==="string")P.innerHTML=S;else P.replaceChildren(S)},y=(P,S,f)=>{P.classList.toggle(C,S),P.classList.toggle(O,f)},g=(P,S)=>{if(Y)P.style.transform=`translate(${Math.round(S.y)}px, ${Math.round(S.x)}px)`;else P.style.transform=`translate(${Math.round(S.x)}px, ${Math.round(S.y)}px)`},a=(P,S)=>{if(Y)P.style.width=`${S.size}px`,P.style.height=`${S.crossSize}px`;else P.style.width=`${S.crossSize}px`,P.style.height=`${S.size}px`},c=(P,S,f,R,E)=>{let b=B.acquire(),H=k(R,E);if(b.className=v,b.dataset.index=String(P),b.dataset.id=String(S.id),b.dataset.lane=String(f.lane),b.ariaSelected=String(R),q)b.id=`${q}-item-${P}`;if(K){let r=K();if(r!==w)w=r,N=String(r);b.setAttribute("aria-setsize",N),b.setAttribute("aria-posinset",String(P+1))}a(b,f);let p=Q(S,P,H);return z(b,p),y(b,R,E),g(b,f),{element:b,lastItemId:S.id,lastSelected:R,lastFocused:E,lastY:f.y,lastX:f.x,lastSize:f.size,lastCrossSize:f.crossSize,lastSeenFrame:Z}},s=(P,S,f,R)=>{Z++,U.clear();for(let b=0;b<S.length;b++)U.add(S[b].index);for(let[b,H]of D)if(U.has(b))H.lastSeenFrame=Z;else if(Z-H.lastSeenFrame>F4)B.release(H.element),D.delete(b);let E=null;for(let b=0;b<S.length;b++){let H=S[b],p=H.index,r=P(p);if(!r)continue;let l=f.has(r.id),h=p===R,L=D.get(p);if(L){let V=L.lastItemId!==r.id,X=L.lastSelected!==l,T=L.lastFocused!==h,A=L.lastY!==H.y||L.lastX!==H.x,_=L.lastSize!==H.size||L.lastCrossSize!==H.crossSize;if(V){let W=k(l,h),x=Q(r,p,W);z(L.element,x),L.element.dataset.id=String(r.id),L.lastItemId=r.id}if(V||X||T)y(L.element,l,h),L.element.ariaSelected=String(l),L.lastSelected=l,L.lastFocused=h;if(_)a(L.element,H),L.lastSize=H.size,L.lastCrossSize=H.crossSize;if(A)g(L.element,H),L.lastY=H.y,L.lastX=H.x}else{let V=c(p,r,H,l,h);if(!E)E=document.createDocumentFragment();E.appendChild(V.element),D.set(p,V)}}if(E)J.appendChild(E)},$=()=>{for(let{element:P}of D.values())B.release(P);D.clear(),J.innerHTML=""};return{render:s,getElement:(P)=>D.get(P)?.element,updateItemClasses:(P,S,f)=>{let R=D.get(P);if(!R)return;let E=R.lastSelected!==S,b=R.lastFocused!==f;if(E||b)y(R.element,S,f),R.lastSelected=S,R.lastFocused=f},sortDOM:()=>{g0(J,D.keys(),(P)=>D.get(P)?.element)},clear:$,destroy:()=>{$(),B.clear()}}};var T4=new Set,k4=100,gJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let Q=null,j=null,Y=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(K){let{dom:q,emitter:B,config:D,rawConfig:U}=K,Z=D.classPrefix,N=D.horizontal;if(D.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");q.root.classList.add(`${Z}--masonry`);let w=k0(U.padding),G=jJ(w,N),k=u0(w,N),v=()=>{return(N?q.viewport.clientHeight:q.viewport.clientWidth)-G},C={columns:J.columns,gap:J.gap??0,containerSize:v()};Q=p1(C);let O=U.item,z=N&&U.item.width?U.item.width:O.height,y={containerWidth:0,columns:0,gap:0,columnWidth:0},g=typeof z==="function"?(W)=>z(W,y):()=>z,a=()=>{let W=K.dataManager.getTotal(),x=Q;y.containerWidth=x.containerSize,y.columns=x.columns,y.gap=x.gap;let M=(x.columns-1)*x.gap;y.columnWidth=Math.max(0,(y.containerWidth-M)/x.columns),Y=x.calculateLayout(W,g),e();let F=Q.getTotalSize(Y);K.sizeCache.getTotalSize=()=>F,K.updateContentSize(F)},c=U.item.template;j=u1(q.items,c,Z,N,()=>K.dataManager.getTotal(),D.ariaIdPrefix),K.setUpdateItemClassesFn((W,x,M)=>{j?.updateItemClasses(W,x,M)});let s=[],$=new Int32Array(0),o=[],e=()=>{let W=C.columns,x=Y.length;if(s=Array.from({length:W},()=>[]),$.length<x)$=new Int32Array(x);for(let M=0;M<x;M++){let F=Y[M],m=s[F.lane].length;s[F.lane].push(M),$[M]=m}o=Array(W);for(let M=0;M<W;M++){let F=s[M],m=new Float64Array(F.length);for(let n=0;n<F.length;n++){let I=Y[F[n]];m[n]=I.y+I.size*0.5}o[M]=m}};K.methods.set("_getNavTotal",()=>K.dataManager.getTotal());let t=(W,x)=>{let M=W.length;if(M===0)return-1;if(M===1)return 0;let F=0,m=M-1;while(F<m){let n=F+m>>1;if(W[n]<x)F=n+1;else m=n}if(F>0&&Math.abs(W[F-1]-x)<=Math.abs(W[F]-x))return F-1;return F};K.methods.set("_navigate",(W,x,M)=>{let F=Y[W];if(!F)return W;let m=F.lane,n=C.columns,I=$[W],u=s[m];switch(N?x==="ArrowDown"?"ArrowRight":x==="ArrowUp"?"ArrowLeft":x==="ArrowRight"?"ArrowDown":x==="ArrowLeft"?"ArrowUp":x:x){case"ArrowDown":{if(I+1<u.length)return u[I+1];return W}case"ArrowUp":{if(I>0)return u[I-1];return W}case"ArrowRight":{if(m>=n-1)return W;let Y0=m+1,X0=F.y+F.size*0.5,q0=s[Y0];if(q0.length===0)return W;let Z0=t(o[Y0],X0);return Z0>=0?q0[Z0]:W}case"ArrowLeft":{if(m<=0)return W;let Y0=m-1,X0=F.y+F.size*0.5,q0=s[Y0];if(q0.length===0)return W;let Z0=t(o[Y0],X0);return Z0>=0?q0[Z0]:W}case"Home":return 0;case"End":return M-1;case"PageDown":{let Y0=K.state.viewportState.containerSize,X0=F.size>0?F.size:150,q0=Math.max(1,Math.floor(Y0/X0)),Z0=Math.min(I+q0,u.length-1);return u[Z0]}case"PageUp":{let Y0=K.state.viewportState.containerSize,X0=F.size>0?F.size:150,q0=Math.max(1,Math.floor(Y0/X0)),Z0=Math.max(0,I-q0);return u[Z0]}}return W}),K.methods.set("_scrollItemIntoView",(W)=>{let x=Y[W];if(!x)return;let M=K.scrollController.getScrollTop(),F=K.state.viewportState.containerSize,m=x.y,n=m+x.size,I=M+F;if(m<M)K.scrollController.scrollTo(K.adjustScrollPosition(Math.max(0,m)));else if(n>I)K.scrollController.scrollTo(K.adjustScrollPosition(n-F))});let P=null,S=null,f=!1,R=()=>{if(f)return;f=!0,P=K.methods.get("_getSelectedIds")??null,S=K.methods.get("_getFocusedIndex")??null},E=(W)=>K.dataManager.getItem(W),b=-1,H=-1,p=!0,r=D.overscan*k4,l=()=>{if(K.state.isDestroyed)return;R();let W=K.scrollController.getScrollTop(),x=K.state.viewportState.containerSize;if(!p&&W===b&&x===H)return;b=W,H=x,p=!1;let M=Math.max(0,W-r),F=W+x+r,m=Q.getVisibleItems(Y,M,F),n=P?P():T4,I=S?S():-1;if(j&&m.length>0)j.render(E,m,n,I);let u=K.state.viewportState;u.scrollPosition=W;let i=m.length,Y0=i>0?m[0].index:0,X0=i>0?m[i-1].index:0;u.visibleRange.start=Y0,u.visibleRange.end=X0,u.renderRange.start=Y0,u.renderRange.end=X0;let q0=K.state.lastRenderRange;if(q0.start!==Y0||q0.end!==X0)q0.start=Y0,q0.end=X0,B.emit("range:change",{range:{start:Y0,end:X0}})},h=()=>{K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,p=!0,l()};K.setRenderFns(l,h);let L=(W,x)=>{let M=(N?x:W)-G;if(Q&&Q.containerSize!==M){if(Q.update({containerSize:M}),a(),j)j.clear();h()}};K.resizeHandlers.push(L);let V=()=>{a(),h()},X=K.dataManager,T=(W)=>{if(typeof X[W]!=="function")return;let x=X[W].bind(X);X[W]=(...M)=>{x(...M),V()}};T("setItems"),T("appendItems"),T("prependItems"),T("updateItem"),T("removeItem");let{animateScroll:A,cancelScroll:_}=r0(K.scrollController,K.renderIfNeeded);K.methods.set("cancelScroll",_),K.methods.set("scrollToIndex",(W,x)=>{let M=Y[W];if(!M)return;let{align:F,behavior:m,duration:n}=w0(x),I=M.y,u=K.state.viewportState.containerSize,i=I;if(F==="center")i=I-u/2+M.size/2;else if(F==="end"){i=I-u+M.size;let Y0=Q.getTotalSize(Y);if(W===Y.length-1)i=Math.max(0,Y0+k-u)}if(i=Math.max(0,i),i=K.adjustScrollPosition(i),m==="smooth")A(K.scrollController.getScrollTop(),i,n);else _(),K.scrollController.scrollTo(i)}),a(),K.idleHandlers.push(()=>{if(j)j.sortDOM()}),K.destroyHandlers.push(()=>{if(_(),j)j.destroy();q.root.classList.remove(`${Z}--masonry`)})}}};var xJ=(J)=>{let Q=J?.mode??"single",j=J?.followFocus??!1,Y=J?.initial,K=J?.shiftArrowToggle??"origin",q=L1(Y),B=null,D=-1;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems","selectNext","selectPrevious"],setup(U){let{dom:Z,emitter:N,config:w}=U,{classPrefix:G,ariaIdPrefix:k}=w;if(Q==="none"){U.methods.set("select",()=>{}),U.methods.set("deselect",()=>{}),U.methods.set("toggleSelect",()=>{}),U.methods.set("selectAll",()=>{}),U.methods.set("clearSelection",()=>{}),U.methods.set("getSelected",()=>[]),U.methods.set("getSelectedItems",()=>[]),U.methods.set("setSelectionMode",()=>{}),U.methods.set("selectNext",()=>{}),U.methods.set("selectPrevious",()=>{});return}Z.root.classList.add(`${G}--selectable`);let v=U.methods.get("_isGroupHeader"),C=(L)=>v?v(L):!1,O=(L,V,X)=>{if(!v)return L;let T=L;while(T>=0&&T<X){if(!C(T))return T;T+=V}T=L-V;while(T>=0&&T<X){if(!C(T))return T;T-=V}return L},z=new Map,y=()=>{z.clear();let L=U.dataManager.getTotal(),V=U.dataManager.getCached();if(V===0)return;if(V>=L){for(let T=0;T<L;T++){let A=U.dataManager.getItem(T);if(A)z.set(A.id,T)}return}let X=U.dataManager.getStorage();if(X&&typeof X.getLoadedRanges==="function"){let T=X.getLoadedRanges();for(let A of T)for(let _=A.start;_<=A.end;_++){let W=U.dataManager.getItem(_);if(W&&!W._isPlaceholder)z.set(W.id,_)}}};N.on("data:change",({type:L,id:V})=>{if(L==="remove")q.selected.delete(V),y()}),N.on("load:end",({items:L,offset:V})=>{if(!L||L.length===0)return;if(V!==void 0)for(let X=0;X<L.length;X++){let T=L[X];if(T&&T.id!==void 0)z.set(T.id,V+X)}else y()}),y(),U.methods.set("_getSelectedIds",()=>{return q.selected}),U.methods.set("_getFocusedIndex",()=>{return q.focusVisible?q.focusedIndex:-1});let{forceRender:g}=U.getRenderFns(),a=()=>{g();let L=(V)=>{let X=z.get(V);if(X===void 0)return;return U.dataManager.getItem(X)};N.emit("selection:change",{selected:$J(q),items:yJ(q,L)})},c=k0(U.rawConfig.padding),s=w.horizontal?c.left:c.top,$=w.horizontal?c.right:c.bottom,o=U.getItemToScrollIndexFn(),e=null,t=null,P=null,S=!1,f=()=>{if(S)return;S=!0,e=U.methods.get("_getNavDelta")??null,t=U.methods.get("_navigate")??null,P=U.methods.get("_scrollItemIntoView")??null},R=()=>{return f(),e?e():{ud:1,lr:0,cols:0}},E=(L)=>{if(L<0)return;if(f(),P)P(L);else{let V=U.state.viewportState.containerSize,X=U.state.viewportState.scrollPosition,T=U.dataManager.getTotal(),A=U.getCachedCompression(),{visibleRange:_}=U.state.viewportState,W=o(L),x=XJ(W,U.sizeCache,X,V,s,$,A,T,_);if(x!==X)U.scrollController.scrollTo(U.adjustScrollPosition(x))}},b=()=>{let L=o(Math.max(0,q.focusedIndex)),V=U.sizeCache.getSize(L),{ud:X}=R();return Math.max(X,Math.floor(U.state.viewportState.containerSize/V)*X)};B=document.createElement("div"),B.setAttribute("aria-live","polite"),B.setAttribute("aria-atomic","true"),B.className=`${G}-live-region`,B.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(Z.root.getAttribute("role")==="grid"?Z.root.parentElement??Z.root:Z.root).appendChild(B);let p=B;N.on("selection:change",({selected:L})=>{let V=L.length;if(V===0)p.textContent="";else if(V===1)p.textContent="1 item selected";else p.textContent=`${V} items selected`});let r=()=>{if(U.state.isDestroyed)return;if(!Z.root.matches(":focus-visible"))return;let L=U.dataManager.getTotal();if(L===0)return;let V=q.focusedIndex>=0?Math.min(q.focusedIndex,L-1):0;V=O(V,1,L),q=l0(q,V),q.focusVisible=!0,Z.root.setAttribute("aria-activedescendant",`${k}-item-${V}`),E(V);let X=U.dataManager.getItem(V);if(X)U.renderer.updateItemClasses(V,q.selected.has(X.id),!0)};if(w.interactive)Z.root.addEventListener("focusin",r);let l=(L)=>{if(U.state.isDestroyed)return;let V=L.relatedTarget;if(V&&Z.root.contains(V))return;let X=q.focusedIndex;if(q.focusVisible=!1,Z.root.removeAttribute("aria-activedescendant"),X>=0){let T=U.dataManager.getItem(X);if(T)U.renderer.updateItemClasses(X,q.selected.has(T.id),!1)}};if(w.interactive)Z.root.addEventListener("focusout",l);if(U.clickHandlers.push((L)=>{if(U.state.isDestroyed)return;let X=L.target.closest("[data-index]");if(!X)return;let T=parseInt(X.dataset.index??"-1",10);if(T<0)return;let A=U.dataManager.getItem(T);if(!A)return;if(C(T))return;if(N.emit("item:click",{item:A,index:T,event:L}),Q==="multiple"&&L.shiftKey&&q.focusedIndex>=0){let _=D>=0?D:q.focusedIndex,W=U.getAllLoadedItems();q=ZJ(q,W,_,T,Q),q=l0(q,T),q.focusVisible=!1,D=T,Z.root.setAttribute("aria-activedescendant",`${k}-item-${T}`),a();return}D=T,q=l0(q,T),q.focusVisible=!1,Z.root.setAttribute("aria-activedescendant",`${k}-item-${T}`),q=c0(q,A.id,Q),a()}),w.interactive)U.keydownHandlers.push((L)=>{if(U.state.isDestroyed)return;let V=U.dataManager.getTotal(),X=q.focusedIndex,T=!1,A=!1,_=q;if(f(),t)switch(L.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":{let W=t(q.focusedIndex,L.key,V);if(W!==q.focusedIndex)_=l0(q,W),_.focusVisible=!0,T=!0,A=!0;else{L.preventDefault();return}break}}if(!T)switch(L.key){case"ArrowUp":_=KJ(q,V,w.wrap,R().ud),_.focusVisible=!0,T=!0,A=!0;break;case"ArrowDown":_=UJ(q,V,w.wrap,R().ud),_.focusVisible=!0,T=!0,A=!0;break;case"ArrowLeft":{let{lr:W}=R();if(W)_=KJ(q,V,w.wrap,W),_.focusVisible=!0,T=!0,A=!0;break}case"ArrowRight":{let{lr:W}=R();if(W)_=UJ(q,V,w.wrap,W),_.focusVisible=!0,T=!0,A=!0;break}case"PageUp":_=bJ(q,V,b(),"up"),_.focusVisible=!0,T=!0,A=!0;break;case"PageDown":_=bJ(q,V,b(),"down"),_.focusVisible=!0,T=!0,A=!0;break;case"Home":{_=F1(q,V),_.focusVisible=!0,T=!0,A=!0;break}case"End":{_=T1(q,V),_.focusVisible=!0,T=!0,A=!0;break}}switch(L.key){case" ":case"Enter":if(L.key===" "&&L.shiftKey&&Q==="multiple"&&q.focusedIndex>=0){if(D>=0){let W=U.getAllLoadedItems();_=ZJ(_,W,D,q.focusedIndex,Q)}_.focusVisible=!0,T=!0;break}if(q.focusedIndex>=0&&!C(q.focusedIndex)){let W=U.dataManager.getItem(q.focusedIndex);if(W)_=c0(q,W.id,Q),_.focusVisible=!0;D=q.focusedIndex,T=!0}break;case"a":if((L.ctrlKey||L.metaKey)&&Q==="multiple"){let W=U.getAllLoadedItems();if(q.selected.size===W.length)_=HJ(_);else _=kJ(_,W,Q);_.focusVisible=!0,T=!0,A=!1}break}if(A&&v){let W=_.focusedIndex>X?1:-1;_.focusedIndex=O(_.focusedIndex,W,V)}if(L.shiftKey&&Q==="multiple"&&A&&_.focusedIndex>=0){let W=L.key==="ArrowUp"||L.key==="ArrowDown"||L.key==="ArrowLeft"||L.key==="ArrowRight",x=(L.ctrlKey||L.metaKey)&&(L.key==="Home"||L.key==="End");if(W){if(K==="origin"){if(X>=0){let M=U.dataManager.getItem(X);if(M)_=c0(_,M.id,Q)}}else{let M=U.dataManager.getItem(_.focusedIndex);if(M)_=c0(_,M.id,Q)}D=_.focusedIndex,A=!1}else if(x){let M=U.getAllLoadedItems(),F=X>=0?X:_.focusedIndex;_=ZJ(_,M,F,_.focusedIndex,Q),D=_.focusedIndex,A=!1}}if(j&&Q==="single"&&A&&_.focusedIndex>=0){let W=U.dataManager.getItem(_.focusedIndex);if(W)_=d0(_,[W.id],Q);A=!1}if(T){L.preventDefault(),q=_;let W=q.focusedIndex;if(W>=0)E(W),Z.root.setAttribute("aria-activedescendant",`${k}-item-${W}`);else Z.root.removeAttribute("aria-activedescendant");if(A){let{selected:x}=q;if(X>=0&&X!==W){let M=U.dataManager.getItem(X);if(M)U.renderer.updateItemClasses(X,x.has(M.id),!1)}if(W>=0){let M=U.dataManager.getItem(W);if(M)U.renderer.updateItemClasses(W,x.has(M.id),!0)}}else a()}});U.methods.set("select",(...L)=>{q=d0(q,L,Q),a()}),U.methods.set("deselect",(...L)=>{q=TJ(q,L),a()}),U.methods.set("toggleSelect",(L)=>{q=c0(q,L,Q),a()}),U.methods.set("selectAll",()=>{if(Q!=="multiple")return;let L=U.getAllLoadedItems();q=kJ(q,L,Q),y(),a()}),U.methods.set("clearSelection",()=>{q=HJ(q),a()}),U.methods.set("getSelected",()=>{return $J(q)}),U.methods.set("getSelectedItems",()=>{return yJ(q,(V)=>{let X=z.get(V);return X===void 0?void 0:U.dataManager.getItem(X)})});let h=(L)=>{let V=U.dataManager.getTotal();if(V===0)return;if(f(),t){let _=L==="next"?"ArrowDown":"ArrowUp",W=t(q.focusedIndex,_,V);q=l0(q,W)}else{let{ud:_}=R();q=L==="next"?UJ(q,V,w.wrap,_):KJ(q,V,w.wrap,_)}let X=L==="next"?1:-1;q.focusedIndex=O(q.focusedIndex,X,V);let T=q.focusedIndex,A=U.dataManager.getItem(T);if(!A)return;q=d0(q,[A.id],Q),E(T),a()};U.methods.set("selectNext",()=>{h("next")}),U.methods.set("selectPrevious",()=>{h("previous")}),U.destroyHandlers.push(()=>{if(p&&p.parentNode)p.remove();Z.root.removeEventListener("focusin",r),Z.root.removeEventListener("focusout",l)})},destroy(){if(B&&B.parentNode)B.remove();B=null}}};var H4=(J)=>{try{let Q=sessionStorage.getItem(J);if(!Q)return;return JSON.parse(Q)}catch{return}},mJ=(J)=>{let Q=J?.autoSave,j=Q?H4(Q):J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Y){Y.methods.set("getScrollSnapshot",()=>{let q=Y.scrollController.getScrollTop(),B=Y.getCachedCompression(),D=Y.getVirtualTotal(),U=Y.methods.get("getSelected"),Z=U&&U().length>0?U():void 0;if(D===0){let k={index:0,offsetInItem:0,total:0};if(Z)k.selectedIds=Z;return k}let N,w;if(B.isCompressed){let v=q/B.virtualSize*D;N=Math.max(0,Math.min(Math.floor(v),D-1)),w=(v-N)*Y.sizeCache.getSize(N)}else N=Y.sizeCache.indexAtOffset(q),w=q-Y.sizeCache.getOffset(N);w=Math.max(0,w);let G={index:N,offsetInItem:w,total:D};if(Z)G.selectedIds=Z;return G});let K=(q)=>{let{index:B,offsetInItem:D,selectedIds:U}=q,Z=Y.getVirtualTotal();if(Z===0&&q.total&&q.total>0){Y.dataManager.setTotal(q.total),Y.sizeCache.rebuild(q.total),Y.updateCompressionMode();let y=Y.getCachedCompression();Y.updateContentSize(y.virtualSize)}else if(Z===0)return;if(!Number.isFinite(B)||!Number.isFinite(D))return;let N=Y.getVirtualTotal();if(Y.sizeCache.getTotal()!==N){Y.sizeCache.rebuild(N),Y.updateCompressionMode();let y=Y.getCachedCompression();Y.updateContentSize(y.virtualSize)}let G=Y.getCachedCompression(),k=Math.max(0,Math.min(B,N-1)),v;if(G.isCompressed){let y=Y.sizeCache.getSize(k),g=y>0?D/y:0;v=(k+g)/N*G.virtualSize}else v=Y.sizeCache.getOffset(k)+D;let C=Y.state.viewportState.containerSize,O=Math.max(0,G.virtualSize-C);if(v=Math.max(0,Math.min(v,O)),Y.scrollController.scrollTo(v),U&&U.length>0){let y=Y.methods.get("select");if(y)y(...U)}let z=Y.methods.get("loadVisibleRange");if(z){let g=0,a=v,c=()=>{g++;let s=Y.state.viewportState.containerSize,$=Y.scrollController.getScrollTop();if(s>0){if(Math.abs($-a)>1)Y.scrollController.scrollTo(a);z()}else if(g<10)requestAnimationFrame(c)};requestAnimationFrame(c)}else{let y=Y.methods.get("reload");if(y)requestAnimationFrame(()=>{y()})}};if(Y.methods.set("restoreScroll",K),Q){let q=!!j,B=()=>{if(q)return;let D=Y.methods.get("getScrollSnapshot");if(!D)return;let U=D();try{sessionStorage.setItem(Q,JSON.stringify(U))}catch{}};if(Y.idleHandlers.push(()=>{if(q)q=!1;B()}),Y.emitter.on("selection:change",B),j&&j.total&&j.total>0){let D=Y.methods.get("_cancelAutoLoad");if(D)D();Y.dataManager.setTotal(j.total)}}if(j)queueMicrotask(()=>{K(j)})}}};var g1=(J,Q=50,j=1/0,Y=!0)=>{let K=J,q=[],B=0,D=()=>{q=K.map((O,z)=>({def:O,index:z,width:0,minWidth:b4(O.minWidth??Q,1),maxWidth:O.maxWidth??j,resizable:O.resizable??Y,offset:0}))},U=(O)=>{if(q.length===0){B=0;return}let z=0,y=0;for(let g=0;g<q.length;g++){let a=q[g],c=a.def;if(c.width!==void 0)a.width=dJ(c.width,a.minWidth,a.maxWidth),z+=a.width;else y++}if(y>0){let a=Math.max(0,O-z)/y;for(let c=0;c<q.length;c++){let s=q[c];if(s.def.width===void 0)s.width=dJ(a,s.minWidth,s.maxWidth)}}Z()},Z=()=>{let O=0;for(let z=0;z<q.length;z++){let y=q[z];y.offset=O,O+=y.width}B=O},N=(O,z)=>{if(O<0||O>=q.length)return 0;let y=q[O];if(!y.resizable)return y.width;let g=dJ(z,y.minWidth,y.maxWidth);return y.width=g,Z(),g},w=(O)=>{return q[O]},G=(O)=>{if(q.length===0)return;if(O<0)return q[0];if(O>=B)return q[q.length-1];let z=0,y=q.length-1;while(z<y){let g=z+y>>>1,a=q[g];if(O<a.offset)y=g-1;else if(O>=a.offset+a.width)z=g+1;else return a}return q[z]},k=(O)=>{if(O<0||O>=q.length)return 0;return q[O].offset},v=(O)=>{if(O<0||O>=q.length)return 0;return q[O].width},C=(O)=>{K=O,D()};return D(),{get columns(){return q},get totalWidth(){return B},resolve:U,updateColumns:C,resizeColumn:N,getColumn:w,getColumnAtX:G,getColumnOffset:k,getColumnWidth:v}},dJ=(J,Q,j)=>Math.min(j,Math.max(Q,J)),b4=(J,Q)=>Math.max(Q,J);var x1=(J,Q,j,Y,K,q,B)=>{let D=document.createElement("div");D.setAttribute("role","rowgroup");let U=document.createElement("div");U.className=`${Y}-table-header`,U.setAttribute("role","row"),U.setAttribute("aria-rowindex","1"),U.style.height=`${j}px`;let Z=document.createElement("div");Z.className=`${Y}-table-header-scroll`,Z.setAttribute("role","presentation"),U.appendChild(Z),D.appendChild(U),J.insertBefore(D,J.firstChild),Q.style.cssText=`position:absolute;top:${j}px;left:0px;right:0px;bottom:0px;height:auto`;let N=[],w=[],G=[],k=!0,v=null,C="asc",O=null,z=!1,y=-1,g=0,a=0,c=(H,p)=>{let r=document.createElement("div");r.className=`${Y}-table-header-cell`,r.setAttribute("role","columnheader"),r.setAttribute("aria-colindex",String(p+1)),r.dataset.columnKey=H.def.key;let l=H.def.align;if(l==="center")r.classList.add(`${Y}-table-header-cell--center`);else if(l==="right")r.classList.add(`${Y}-table-header-cell--right`);let h=document.createElement("div");h.className=`${Y}-table-header-content`;let L=H.def.header?H.def.header(H.def):H.def.label;if(typeof L==="string")h.textContent=L;else h.appendChild(L);if(r.appendChild(h),H.def.sortable){let V=document.createElement("span");V.className=`${Y}-table-header-sort`,V.setAttribute("aria-hidden","true"),r.appendChild(V),G.push(V),r.classList.add(`${Y}-table-header-cell--sortable`)}else G.push(null);if(H.resizable){let V=document.createElement("div");V.className=`${Y}-table-header-resize`,V.dataset.resizeIndex=String(p),r.appendChild(V),w.push(V)}return r},s=(H)=>{O=H,Z.textContent="",N=[],w=[],G=[];let p=H.columns;for(let r=0;r<p.length;r++){let l=p[r],h=c(l,r);N.push(h),Z.appendChild(h)}if($(H),v)o(v,C)},$=(H)=>{O=H;let p=H.columns;Z.style.width=`${H.totalWidth}px`;for(let r=0;r<N.length&&r<p.length;r++){let l=N[r],h=p[r];l.style.width=`${h.width}px`}},o=(H,p)=>{if(v=H,C=p,!O)return;let r=O.columns;for(let l=0;l<G.length&&l<r.length;l++){let h=G[l];if(!h)continue;if(r[l].def.key===H&&H!==null)h.textContent=p==="asc"?"▲":"▼",h.style.opacity="0.7",N[l].setAttribute("aria-sort",p==="asc"?"ascending":"descending");else h.textContent="",h.style.opacity="0",N[l].removeAttribute("aria-sort")}},e=(H)=>{Z.style.transform=`translateX(${-H}px)`},t=(H)=>{let p=H.target;if(!p.dataset.resizeIndex)return;if(H.preventDefault(),H.stopPropagation(),y=parseInt(p.dataset.resizeIndex,10),!O)return;let r=O.getColumn(y);if(!r||!r.resizable)return;z=!0,g=H.clientX,a=r.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",p.classList.add(`${Y}-table-header-resize--active`),p.setPointerCapture(H.pointerId),p.addEventListener("pointermove",P),p.addEventListener("pointerup",S),p.addEventListener("pointercancel",S)},P=(H)=>{if(!z||!O)return;let p=H.clientX-g;if(Math.abs(p)<1)return;let r=Math.max(0,a+p);K(y,r)},S=(H)=>{if(!z)return;let p=H.target;p.removeEventListener("pointermove",P),p.removeEventListener("pointerup",S),p.removeEventListener("pointercancel",S);try{p.releasePointerCapture(H.pointerId)}catch{}p.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",z=!1,y=-1},f=(H)=>{let p=H.target;if(p.dataset.resizeIndex!==void 0)return;if(z)return;let r=p;while(r&&!r.dataset.columnKey)if(r=r.parentElement,r===U||r===null)return;if(!r||!r.dataset.columnKey)return;let l=r.dataset.columnKey;if(!O)return;let h=O.columns,L=-1;for(let X=0;X<h.length;X++)if(h[X].def.key===l){L=X;break}if(L===-1)return;let V=h[L];if(B)B({key:l,index:L,event:H});if(V.def.sortable&&q){let X;if(v===l)if(C==="asc")X="desc";else X=null;else X="asc";q({key:l,index:L,direction:X})}};return U.addEventListener("pointerdown",t),U.addEventListener("click",f),{element:U,update:$,updateSort:o,rebuild:s,show:()=>{if(k)return;k=!0,U.style.display=""},hide:()=>{if(!k)return;k=!1,U.style.display="none"},destroy:()=>{U.removeEventListener("pointerdown",t),U.removeEventListener("click",f),Q.style.cssText="",D.remove(),N=[],w=[],G=[],O=null,k=!1},syncScroll:e}};var $4=()=>{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}}},m1=(J,Q,j,Y,K,q,B,D,U)=>{let Z=$4(),N=new Map,w=-1,G=j,k=null,v=null,C=null,O=(M,F)=>{v=M,C=F},z=(M,F)=>{if(F)M.setAttribute("aria-selected","true");else M.removeAttribute("aria-selected")},y=(M,F,m,n)=>{M.setAttribute("role",F),M.setAttribute("data-id",String(m)),M.setAttribute("data-index",String(n))},g=(M)=>String(M).startsWith("__placeholder_"),a=`${K}-item ${K}-table-row`,c=`${K}-item--selected`,s=`${K}-item--focused`,$=`${K}-table-cell`,o=`${K}-table-cell--center`,e=`${K}-table-cell--right`,t=`${K}-item--odd`,P=`${K}-item--placeholder`,S=`${K}-item--replaced`,f=`${K}-item ${K}-table-row ${K}-table-group-header`,R=`${K}-table-group-header-content`,E=(M,F,m,n,I=!1)=>{if(m.def.cell){let u=m.def.cell(F,m.def,n);if(typeof u==="string")M.innerHTML=u;else M.replaceChildren(u)}else{let u=F[m.def.key],i=u!=null?String(u):"";if(I&&i)M.innerHTML=`<span>${i}</span>`;else M.textContent=i}},b=(M,F,m,n,I=!1)=>{let u=a;if(D){if(k){let i=k(F);if(i>=0&&(i&1)===1)u+=` ${t}`}else if((F&1)===1)u+=` ${t}`}if(I)u+=` ${P}`;if(m)u+=` ${c}`;if(n)u+=` ${s}`;M.className=u},H=(M,F,m)=>{if(m?.compression?.isCompressed)return Math.round(a0(M,m.scrollPosition,F,m.totalItems,m.containerSize,m.compression,m.rangeStart));return F.getOffset(M)},p=(M,F)=>{let m=F.def.align;if(m==="center")M.classList.add(o),M.classList.remove(e);else if(m==="right")M.classList.add(e),M.classList.remove(o);else M.classList.remove(o,e)},r=(M,F)=>{let n=G.columns.length;if(F.length===n)return F;let I=[];for(let u=0;u<n;u++){let i;if(u<F.length)i=F[u];else i=document.createElement("div"),i.className=$,M.appendChild(i);I.push(i)}for(let u=n;u<F.length;u++)F[u].remove();return I},l=(M,F,m,n)=>{let I=Z.acquire(),u=M,i=m.getSize(F),Y0=H(F,m,n);I.style.cssText=`width:${G.totalWidth}px;height:${i}px;transform:translateY(${Y0}px)`,I.className=f,y(I,"presentation",M.id,F),I.removeAttribute("aria-selected"),I.removeAttribute("aria-rowindex"),I.replaceChildren();let X0=document.createElement("div");if(X0.className=R,C){let q0=C(u.groupKey,u.groupIndex);if(typeof q0==="string")X0.innerHTML=q0;else X0.appendChild(q0)}return I.appendChild(X0),{element:I,cells:[],index:F,isGroupHeader:!0,lastItemId:M.id,lastSelected:!1,lastFocused:!1,lastOffset:Y0,lastHeight:i}},h=(M,F,m,n,I,u)=>{let i=Z.acquire(),Y0=I.getSize(F),X0=H(F,I,u),q0=g(M.id);i.style.cssText=`width:${G.totalWidth}px;height:${Y0}px;transform:translateY(${X0}px)`,b(i,F,m,n,q0),y(i,"row",M.id,F),i.id=`${q}-${F}`,i.setAttribute("aria-rowindex",String(F+2)),z(i,m);let Z0=r(i,[]),U0=G.columns;for(let K0=0;K0<Z0.length&&K0<U0.length;K0++){let W0=Z0[K0],_0=U0[K0];W0.style.cssText=`left:${_0.offset}px;width:${_0.width}px`,W0.setAttribute("role","gridcell"),W0.setAttribute("aria-colindex",String(K0+1)),p(W0,_0),E(W0,M,_0,F,q0)}return{element:i,cells:Z0,index:F,isGroupHeader:!1,lastItemId:M.id,lastSelected:m,lastFocused:n,lastOffset:X0,lastHeight:Y0}},L=(M,F,m,n,I)=>{for(let[q0,Z0]of N)if(q0<F.start||q0>F.end)Z.release(Z0.element),N.delete(q0);let u=!1,i=B();if(i!==w)w=i,u=!0;let Y0=null,X0=Q();k=typeof D==="string"&&U?U():null;for(let q0=F.start;q0<=F.end;q0++){let Z0=q0-F.start,U0=M[Z0];if(!U0)continue;let K0=m.has(U0.id),W0=q0===n,_0=v?v(U0):!1,j0=N.get(q0);if(j0){if(j0.isGroupHeader!==_0){Z.release(j0.element),N.delete(q0);let D0=_0?l(U0,q0,X0,I):h(U0,q0,K0,W0,X0,I);if(N.set(q0,D0),!Y0)Y0=document.createDocumentFragment();Y0.appendChild(D0.element);continue}if(_0){if(j0.lastItemId!==U0.id){let E0=U0,F0=j0.element.firstElementChild;if(F0&&C){let b0=C(E0.groupKey,E0.groupIndex);if(typeof b0==="string")F0.innerHTML=b0;else F0.replaceChildren(b0)}j0.element.setAttribute("data-id",String(U0.id)),j0.lastItemId=U0.id}let V0=H(q0,X0,I);if(j0.lastOffset!==V0)j0.lastOffset=V0,j0.element.style.transform=`translateY(${V0}px)`;let G0=X0.getSize(q0);if(j0.lastHeight!==G0)j0.lastHeight=G0,j0.element.style.height=`${G0}px`}else{let D0=j0.lastItemId!==U0.id,V0=j0.lastSelected!==K0,G0=j0.lastFocused!==W0;if(D0){let b0=j0.lastItemId!=null&&g(j0.lastItemId),f0=g(U0.id);if(!f0&&P0(m,q0,U0.id))K0=!0;let z0=G.columns;for(let H0=0;H0<j0.cells.length&&H0<z0.length;H0++)E(j0.cells[H0],U0,z0[H0],q0,f0);if(b(j0.element,q0,K0,W0,f0),j0.element.setAttribute("data-id",String(U0.id)),z(j0.element,K0),b0&&!f0)j0.element.classList.add(S),setTimeout(()=>{j0.element.classList.remove(S)},300);j0.lastItemId=U0.id,j0.lastSelected=K0,j0.lastFocused=W0}else if(V0||G0)b(j0.element,q0,K0,W0,g(U0.id)),z(j0.element,K0),j0.lastSelected=K0,j0.lastFocused=W0;let E0=H(q0,X0,I);if(j0.lastOffset!==E0)j0.lastOffset=E0,j0.element.style.transform=`translateY(${E0}px)`;let F0=X0.getSize(q0);if(j0.lastHeight!==F0)j0.lastHeight=F0,j0.element.style.height=`${F0}px`;if(u)j0.element.setAttribute("aria-rowindex",String(q0+2))}}else{if(P0(m,q0,U0.id))K0=!0;let D0=_0?l(U0,q0,X0,I):h(U0,q0,K0,W0,X0,I);if(N.set(q0,D0),!Y0)Y0=document.createDocumentFragment();Y0.appendChild(D0.element)}}if(Y0)J.appendChild(Y0)},V=(M)=>{let F=Q();for(let[m,n]of N){let I=H(m,F,M);if(n.lastOffset!==I)n.lastOffset=I,n.element.style.transform=`translateY(${I}px)`}},X=(M,F,m,n)=>{let I=N.get(M);if(!I)return;if(I.isGroupHeader)return;let u=G.columns;for(let i=0;i<I.cells.length&&i<u.length;i++)E(I.cells[i],F,u[i],M);I.element.setAttribute("data-id",String(F.id)),I.lastItemId=F.id,b(I.element,M,m,n),z(I.element,m),I.lastSelected=m,I.lastFocused=n},T=(M,F,m)=>{let n=N.get(M);if(!n)return;if(n.isGroupHeader)return;let I=n.lastSelected!==F,u=n.lastFocused!==m;if(I||u)b(n.element,M,F,m),z(n.element,F),n.lastSelected=F,n.lastFocused=m},A=(M)=>{G=M;let F=M.columns;for(let[,m]of N)if(m.element.style.width=`${M.totalWidth}px`,m.cells.length>0)for(let n=0;n<m.cells.length&&n<F.length;n++){let I=m.cells[n],u=F[n];I.style.left=`${u.offset}px`,I.style.width=`${u.width}px`}},_=(M)=>{return N.get(M)?.element},W=()=>{for(let[,M]of N)Z.release(M.element);N.clear(),w=-1};return{render:L,updatePositions:V,updateItem:X,updateItemClasses:T,getElement:_,updateColumnLayout:A,setGroupHeaderFn:O,clear:W,destroy:()=>{W(),Z.clear()}}};var y4=new Set,cJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist] withTable: either rowHeight or estimatedRowHeight is required");let Q=null,j=null,Y=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(K){let{dom:q,emitter:B,config:D}=K,{classPrefix:U}=D;if(D.horizontal)throw Error("[vlist] withTable cannot be used with orientation: 'horizontal'");if(D.reverse)throw Error("[vlist] withTable cannot be used with reverse: true");let Z=J.resizable??!0,N=J.minColumnWidth??50,w=J.maxColumnWidth??1/0,G=J.columnBorders??!1,k=J.rowBorders??!0,v=J.rowHeight,C=K.rawConfig.padding,O=!C?0:typeof C==="number"?C*2:C.length===2?C[1]*2:C[1]+C[3],z=J.headerHeight??(typeof v==="number"?v:40),y=J.sort?.key??null,g=J.sort?.direction??"asc";if(Q=g1(J.columns,N,w,Z),typeof v==="function")K.setSizeConfig(v);else if(typeof v==="number")K.setSizeConfig(v);if(K.rebuildSizeCache(),q.root.classList.add(`${U}--table`),k)q.root.classList.add(`${U}--table-row-borders`);if(G)q.root.classList.add(`${U}--table-col-borders`);q.root.setAttribute("role","grid"),q.root.setAttribute("aria-colcount",String(J.columns.length));let a=-1,c=q.items.getAttribute("aria-label");if(c)q.root.setAttribute("aria-label",c),q.items.removeAttribute("aria-label");q.items.setAttribute("role","rowgroup"),q.viewport.setAttribute("role","none"),q.content.setAttribute("role","none"),q.viewport.removeAttribute("tabindex");let s=K.getContainerWidth()-O;Q.resolve(s);let $=(_,W)=>{if(!Q)return;let x=Q.getColumn(_);if(!x)return;let M=x.width,F=Q.resizeColumn(_,W);if(j)j.update(Q);if(Y)Y.updateColumnLayout(Q);t(),B.emit("column:resize",{key:x.def.key,index:_,previousWidth:M,width:F})},o=(_)=>{if(_.direction===null)y=null,g="asc";else y=_.key,g=_.direction;if(j)j.updateSort(y,g);B.emit("column:sort",_)},e=(_)=>{B.emit("column:click",_)};if(j=x1(q.root,q.viewport,z,U,$,o,e),j.rebuild(Q),y)j.updateSort(y,g);let t=()=>{if(!Q)return;let _=Q.totalWidth;q.content.style.minWidth=`${_}px`,q.items.style.minWidth=`${_}px`};t(),Y=m1(q.items,()=>K.sizeCache,Q,J.columns,U,D.ariaIdPrefix,()=>K.dataManager.getTotal(),K.rawConfig.item?.striped,()=>K.getStripeIndexFn());let P=null,S=null,f=!1,R=()=>{if(f)return;f=!0,P=K.methods.get("_getSelectedIds")??null,S=K.methods.get("_getFocusedIndex")??null},E=-1,b=-1,H=-1,p=!0,r=D.overscan,l={start:0,end:0},h={start:0,end:0},L=()=>{if(K.state.isDestroyed)return;let _=K.scrollController.getScrollTop(),W=K.state.viewportState.containerSize,x=K.getVirtualTotal(),M=K.state.viewportState.isCompressed;if(!p&&_===E&&W===b&&x===H)return;E=_,b=W,H=x,p=!1;let F=x+1;if(F!==a)a=F,q.root.setAttribute("aria-rowcount",String(F));if(x===0||W===0)l.start=0,l.end=0;else l.start=Math.max(0,K.sizeCache.indexAtOffset(_)),l.end=Math.min(x-1,Math.max(0,K.sizeCache.indexAtOffset(_+W-1)));h.start=Math.max(0,l.start-r),h.end=Math.min(x-1,l.end+r);let m=K.state.viewportState;m.scrollPosition=_,m.visibleRange.start=l.start,m.visibleRange.end=l.end,m.renderRange.start=h.start,m.renderRange.end=h.end;let n=K.state.lastRenderRange,I=M?K.getCompressionContext():void 0,u=K.dataManager.getItemsInRange(h.start,h.end);R();let i=P?P():y4,Y0=S?S():-1;if(Y.render(u,h,i,Y0,I),n.start!==h.start||n.end!==h.end)n.start=h.start,n.end=h.end,B.emit("range:change",{range:{start:h.start,end:h.end}})},V=()=>{if(K.state.isDestroyed)return;K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,p=!0,L()};K.setRenderFns(L,V),K.setUpdateItemClassesFn((_,W,x)=>{Y?.updateItemClasses(_,W,x)});let X=j,T=-1,A=()=>{let _=q.viewport.scrollLeft;if(_!==T){if(T=_,X.syncScroll)X.syncScroll(_)}};K.afterScroll.push(A),q.viewport.addEventListener("scroll",A,{passive:!0}),K.resizeHandlers.push((_,W)=>{if(!Q)return;if(Q.resolve(_-O),j)j.update(Q);if(Y)Y.updateColumnLayout(Q);t()}),K.methods.set("updateColumns",(_)=>{if(!Q||!j)return;if(Q.updateColumns(_),Q.resolve(K.getContainerWidth()-O),j.rebuild(Q),y)j.updateSort(y,g);if(t(),Y)Y.updateColumnLayout(Q),Y.clear();K.forceRender()}),K.methods.set("resizeColumn",(_,W)=>{if(!Q)return;let x;if(typeof _==="string"){let M=Q.columns;x=-1;for(let F=0;F<M.length;F++)if(M[F].def.key===_){x=F;break}if(x===-1)return}else x=_;$(x,W)}),K.methods.set("getColumnWidths",()=>{if(!Q)return{};let _={},W=Q.columns;for(let x=0;x<W.length;x++)_[W[x].def.key]=W[x].width;return _}),K.methods.set("setSort",(_,W)=>{if(y=_,g=W??"asc",j)j.updateSort(y,g)}),K.methods.set("getSort",()=>{return{key:y,direction:g}}),K.methods.set("_getTableLayout",()=>Q),K.methods.set("_updateRenderedItem",(_,W,x,M)=>{Y?.updateItem(_,W,x,M)}),K.methods.set("_replaceTableRenderer",(_)=>{Y=_}),K.methods.set("_updateTableForGroups",(_,W)=>{if(Y)Y.setGroupHeaderFn(_,W)}),K.methods.set("_getTableHeaderHeight",()=>z),K.keydownHandlers.push((_)=>{if(_.key!=="ArrowLeft"&&_.key!=="ArrowRight")return;if(!Q)return;let W=Q.columns;if(W.length===0)return;let x=q.viewport.clientWidth;if(Q.totalWidth<=x)return;let M=q.viewport.scrollLeft;if(_.key==="ArrowRight"){for(let F=0;F<W.length;F++)if(W[F].offset>M+1){q.viewport.scrollLeft=W[F].offset,_.preventDefault();return}}else{for(let F=W.length-1;F>=0;F--)if(W[F].offset<M-1){q.viewport.scrollLeft=W[F].offset,_.preventDefault();return}if(M>0)q.viewport.scrollLeft=0,_.preventDefault()}}),K.contentSizeHandlers.push(()=>{t()}),K.destroyHandlers.push(()=>{if(q.viewport.removeEventListener("scroll",A),j)j.destroy(),j=null;if(Y)Y.destroy(),Y=null;q.content.style.minWidth="",q.items.style.minWidth="",q.root.classList.remove(`${U}--table`),q.root.removeAttribute("role"),q.root.removeAttribute("aria-colcount"),q.viewport.removeAttribute("role"),q.viewport.setAttribute("tabindex","-1"),q.content.removeAttribute("role");let _=q.root.getAttribute("aria-label");if(_)q.items.setAttribute("aria-label",_),q.root.removeAttribute("aria-label");q.root.removeAttribute("aria-rowcount"),q.items.setAttribute("role","listbox")})},destroy(){if(j)j.destroy(),j=null;if(Y)Y.destroy(),Y=null}}};var d1=(J,Q)=>{let j=new Map,Y=(q)=>{let B=j.get(q);return B!==void 0?B:J},K=S0(Y,Q);return{getOffset(q){return K.getOffset(q)},getSize(q){return Y(q)},indexAtOffset(q){return K.indexAtOffset(q)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(q){if(q<K.getTotal()){for(let B of j.keys())if(B>=q)j.delete(B)}K=S0(Y,q)},isVariable(){return!0},setMeasuredSize(q,B){j.set(q,B)},isMeasured(q){return j.has(q)},getEstimatedSize(){return J},measuredCount(){return j.size}}};var lJ=()=>{let J=null;return{name:"withAutoSize",priority:5,setup(Q){let j=Q.config.horizontal,K=Q.rawConfig.item,q=j?K.estimatedWidth:K.estimatedHeight;if(q==null||q<=0)throw Error("[vlist/withAutoSize] Requires item.estimatedHeight (or item.estimatedWidth for horizontal)");let B=K.gap??0,D=Q.getVirtualTotal(),U=k0(Q.rawConfig.padding),Z=u0(U,j),N=d1(q+B,D),w=Q.methods.get("_setSizeCache"),G=Q.methods.get("_setConstrainSize");if(!w||!G)throw Error("[vlist/withAutoSize] Incompatible builder version");w(N),G((c)=>N.isMeasured(c));let k=new WeakMap,v=0,C=!1,O=2,z=(c)=>{let s=Q.scrollController.getScrollTop(),$=Q.state.viewportState.containerSize;if($<=0)return!1;let o=Math.max(0,c+Z-$);return s>=o-O},y=()=>{let c=N.getTotalSize(),s=Q.state.viewportState.containerSize;if(s<=0)return;let $=Math.max(0,c+Z-s),o=Q.scrollController.getScrollTop();if($>o)Q.scrollController.scrollTo($)},g=()=>{let c=N.getTotalSize();Q.updateContentSize(c)},a=()=>{if(C){let c=Q.dom.viewport,s=c.scrollHeight,$=s-c.clientHeight,o=Q.scrollController.getScrollTop(),e=$>0&&o>=$-O,t=Q.getVirtualTotal(),P=Q.state.viewportState.renderRange.end,S=t>0&&P>=t-1,f=N.getTotalSize()+Z,R=Math.abs(f-s),E=S&&$>0&&o>=$-R-O,b=e||E;if(g(),C=!1,b)c.scrollHeight,y(),Q.forceRender()}};J=new ResizeObserver((c)=>{if(Q.state.isDestroyed)return;let s=!1,$=Q.state.viewportState.visibleRange.start;for(let H of c){let p=k.get(H.target);if(p===void 0)continue;let r=j?H.borderBoxSize[0].inlineSize:H.borderBoxSize[0].blockSize;if(!N.isMeasured(p)){let l=r+B,h=N.getSize(p);if(N.setMeasuredSize(p,l),s=!0,p<$&&l!==h)v+=l-h;J.unobserve(H.target);let L=H.target;if(j)L.style.width=`${r}px`;else L.style.height=`${r}px`}}if(!s)return;let o=N.getTotalSize();if(N.rebuild(Q.getVirtualTotal()),v!==0){let H=Q.scrollController.getScrollTop();Q.scrollController.scrollTo(H+v),v=0}let e=z(o),t=Q.getVirtualTotal(),P=Q.state.viewportState.renderRange.end,S=t>0&&P>=t-1,f=Q.dom.viewport,R=f.scrollHeight-f.clientHeight,E=Q.scrollController.getScrollTop(),b=R>0&&E>=R-O;if(e||S||!Q.scrollController.isScrolling()){if(g(),C=!1,e||S&&b)f.scrollHeight,y()}else C=!0;Q.forceRender()}),Q.afterRenderBatch.push((c)=>{for(let{index:s,element:$}of c)if(!N.isMeasured(s))k.set($,s),J.observe($)}),Q.idleHandlers.push(a),Q.destroyHandlers.push(()=>{if(J)J.disconnect(),J=null})},destroy(){if(J)J.disconnect(),J=null}}};var P4=50,w4=0.1;function c1(J){let Q=0,j=0,Y=0;function K(){return Y>0?j/Y:0}function q(U){if(Q=U,U>w4&&U<P4)j+=U,Y++}function B(){let U=J.getTotal();if(U===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let w=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,v=Math.ceil(U/G)*Z,O=Math.min(v,m0)-N,z=v-N,y=O>0?z/O:1,g=w*y,a=Math.ceil((g+N)/Z);return Math.min(a*G,U)}function D(){let U=J.getTotal(),Z=B();return{progress:U>0?Math.min(100,Math.max(0,Z/U*100)):0,velocity:Q,velocityAvg:K(),itemCount:Z,total:U}}return{getState:D,onVelocity:q}}export{cJ as withTable,mJ as withSnapshots,xJ as withSelection,RJ as withScrollbar,zJ as withScale,vJ as withPage,gJ as withMasonry,hJ as withGroups,uJ as withGrid,lJ as withAutoSize,CJ as withAsync,wJ as vlist,c1 as createStats};
|
|
1
|
+
var eJ=2,J1=(J=0)=>({velocity:0,sampleCount:0}),Q1=(J,Q)=>{let j=performance.now(),Y=J._lt??j,K=J._lp??Q,q=j-Y;if(J._lp=Q,J._lt=j,q===0)return J.sampleCount=Math.min(J.sampleCount+1,5),J;if(q>100)return J.velocity=0,J.sampleCount=1,J;return J.velocity=Math.abs(Q-K)/q,J.sampleCount=Math.min(J.sampleCount+1,5),J};var e1=(J,Q)=>{let j=Q;return{getOffset:(Y)=>Y*J,getSize:(Y)=>J,indexAtOffset:(Y)=>{if(j===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(Y/J),j-1))},getTotalSize:()=>j*J,getTotal:()=>j,rebuild:(Y)=>{j=Y},isVariable:()=>!1}},J4=(J,Q)=>{let j=Q,Y=new Float64Array(0),K=(B)=>{j=B,Y=new Float64Array(B+1),Y[0]=0;for(let _=0;_<B;_++)Y[_+1]=Y[_]+J(_)};K(Q);let q=(B)=>{if(j===0)return 0;if(B<=0)return 0;if(B>=Y[j])return j-1;let _=0,U=j-1;while(_<U){let Z=_+U+1>>>1;if(Y[Z]<=B)_=Z;else U=Z-1}return _};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=j)return Y[j];return Y[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>q(B),getTotalSize:()=>Y[j]??0,getTotal:()=>j,rebuild:(B)=>K(B),isVariable:()=>!0}},S0=(J,Q)=>{if(typeof J==="number")return e1(J,Q);return J4(J,Q)},q1=(J,Q,j,Y)=>{if(Y===0)return 0;if(!J.isVariable())return Math.ceil(j/J.getSize(0));let K=0,q=0,B=Q;while(B<Y&&q<j)q+=J.getSize(B),K++,B++;return Math.max(1,K)};var Y1=()=>{let J={},Q=(q,B)=>{if(!J[q])J[q]=new Set;return J[q].add(B),()=>j(q,B)},j=(q,B)=>{J[q]?.delete(B)};return{on:Q,off:j,emit:(q,B)=>{J[q]?.forEach((_)=>{try{_(B)}catch(U){console.error(`[vlist] Error in event handler for "${String(q)}":`,U)}})},clear:(q)=>{if(q)delete J[q];else for(let B in J)delete J[B]}}};var j1=(J)=>{if(typeof J==="string"){let Q=document.querySelector(J);if(!Q)throw Error(`[vlist] Container not found: ${J}`);return Q}return J},s0=(J,Q)=>{let j=document.createElement("div");if(j.className=J,Q)j.style.cssText=Q;return j},X1=(J,Q,j,Y,K)=>{let q=Y,B=s0(Q);if(q)B.classList.add(`${Q}--horizontal`);if(K!==!1)B.setAttribute("tabindex","0");let _=s0(`${Q}-viewport`,q?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%");_.setAttribute("tabindex","-1");let U=s0(`${Q}-content`,q?"position:relative;height:100%":"position:relative;width:100%"),Z=s0(`${Q}-items`,q?"position:relative;height:100%":"position:relative;width:100%");if(Z.setAttribute("role","listbox"),j)Z.setAttribute("aria-label",j);if(q)Z.setAttribute("aria-orientation","horizontal");let N=s0(`${Q}-live`,"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0");return N.setAttribute("aria-live","polite"),N.setAttribute("aria-atomic","true"),N.setAttribute("role","status"),U.appendChild(Z),_.appendChild(U),B.appendChild(N),B.appendChild(_),J.appendChild(B),{root:B,viewport:_,content:U,items:Z,liveRegion:N}};var K1=(J=100)=>{let Q=[];return{acquire:()=>{let j=Q.pop();if(j)return j;let Y=document.createElement("div");return Y.setAttribute("role","option"),Y},release:(j)=>{if(Q.length<J)j.className="",j.textContent="",j.removeAttribute("style"),j.removeAttribute("data-index"),j.removeAttribute("data-id"),Q.push(j)},clear:()=>{Q.length=0}}};var U1=(J,Q,j,Y,K)=>{if(Y===0||Q===0){K.start=0,K.end=-1;return}let q=j.indexAtOffset(J),B=j.indexAtOffset(J+Q);if(B<Y-1)B++;K.start=Math.max(0,q),K.end=Math.min(Y-1,Math.max(0,B))},Z1=(J,Q,j,Y)=>{Y.start=Math.max(0,J.start-Q),Y.end=Math.min(j-1,J.end+Q)},B1=(J,Q,j,Y,K,q=0)=>{if(Y===0)return 0;let B=Math.max(0,Math.min(J,Y-1)),_=Q.getOffset(B),U=Q.getSize(B),Z=Q.getTotalSize(),N=Math.max(0,Z+q-j),R;switch(K){case"center":R=_-(j-U)/2;break;case"end":R=q>0&&_+U>=Z?N:_-j+U;break;default:R=_}return Math.max(0,Math.min(R,N))};var qJ={top:0,right:0,bottom:0,left:0},k0=(J)=>{if(J==null)return qJ;if(typeof J==="number")return J===0?qJ:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[q,B]=J;return q===0&&B===0?qJ:{top:q,right:B,bottom:q,left:B}}let[Q,j,Y,K]=J;return Q===0&&j===0&&Y===0&&K===0?qJ:{top:Q,right:j,bottom:Y,left:K}},h0=(J,Q)=>Q?J.left+J.right:J.top+J.bottom,YJ=(J,Q)=>Q?J.top+J.bottom:J.left+J.right;var p0=(J,Q,j)=>{let Y=Array.from(Q).sort((B,_)=>B-_);if(Y.length<=1)return;let K=[];for(let B=0;B<Y.length;B++){let _=j(Y[B]);if(_)K.push(_)}if(K.length<=1)return;let q=J.firstChild;for(let B=0;B<K.length;B++){let _=K[B];if(_===q)q=q.nextSibling;else J.insertBefore(_,q)}};var N1=(J,Q)=>{let{dom:j,emitter:Y,resolvedConfig:K,rawConfig:q,rendered:B,pool:_,sharedState:U,isHorizontal:Z,classPrefix:N,contentSizeHandlers:R,idleHandlers:G,afterScroll:k,clickHandlers:v,keydownHandlers:z,resizeHandlers:M,destroyHandlers:C,methods:y,onScrollFrame:g,resizeObserver:a,renderRange:m,afterRenderBatch:s}=Q;return{get dom(){return j},get sizeCache(){return J.hc},get emitter(){return Y},get config(){return K},get rawConfig(){return q},adjustScrollPosition($){if(J.mp===0)return $;let o=Z?J.cw:J.ch,J0=J.hc.getTotalSize(),i=Math.max(0,J0-o),w=Math.max(0,J0+J.mp-o);if($>=i)return w;return Math.min($,w)},get renderer(){return{render:($,o,J0,i,w)=>{J.ss=J0,J.fi=i,J.ffn()},updateItemClasses:($,o,J0)=>{J.uic($,o,J0)},updatePositions:()=>{},updateItem:()=>{},getElement:($)=>B.get($)??null,clear:()=>{},destroy:()=>{}}},set renderer($){},get dataManager(){return J.dm},set dataManager($){J.dm=$},get scrollController(){return J.sc},set scrollController($){J.sc=$},state:U,getContainerWidth(){return J.cw},afterScroll:k,idleHandlers:G,afterRenderBatch:s,clickHandlers:v,keydownHandlers:z,resizeHandlers:M,contentSizeHandlers:R,destroyHandlers:C,methods:y,replaceTemplate($){J.at=$},replaceRenderer($){},replaceDataManager($){J.dm=$},replaceScrollController($){J.sc=$},getItemsForRange($){let{dm:o,it:J0}=J,i=[];for(let w=$.start;w<=$.end;w++){let S=o?o.getItem(w):J0[w];if(S)i.push(S)}return i},getAllLoadedItems(){let $=J.dm;if($){let o=$.getTotal(),J0=[];for(let i=0;i<o;i++){let w=$.getItem(i);if(w)J0.push(w)}return J0}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let $=J.hc;return{isCompressed:!1,actualSize:$.getTotalSize(),virtualSize:$.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:m.start,compression:U.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,$]of B)$.remove(),_.release($);B.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns($,o){J.rfn=$,J.ffn=o},setVirtualTotalFn($){J.vtf=$},rebuildSizeCache($){J.hc.rebuild($??J.vtf())},setSizeConfig($){if(J.hc=S0($,J.vtf()),J.gp>0){let o=J.hc.getTotalSize,J0=J.gp;J.hc.getTotalSize=()=>{let i=o();return i>0?i-J0:0}}},updateContentSize($){let o=`${$+J.mp}px`;if(Z)j.content.style.width=o;else j.content.style.height=o},updateCompressionMode(){for(let $=0;$<R.length;$++)R[$]()},setVisibleRangeFn($){J.gvr=$},setScrollToPosFn($){J.gsp=$},getScrollToPos($,o,J0,i){return J.gsp($,J.hc,o,J0,i)},setPositionElementFn($){J.pef=$},setScrollFns($,o){J.sgt=$,J.sst=(J0)=>{o(J0),g()}},setScrollTarget($){J.st.removeEventListener("scroll",g),J.st=$,J.st.addEventListener("scroll",g,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions($){J.gcw=$.width,J.gch=$.height,J.cw=$.width(),J.ch=$.height(),U.viewportState.containerSize=Z?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,a.unobserve(j.viewport)},disableWheelHandler(){if(J.wh)j.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn($){J.sif=$},getItemToScrollIndexFn(){return J.i2s},setItemToScrollIndexFn($){J.i2s=$},setUpdateItemClassesFn($){J.uic=$}}},W1=(J,Q,j)=>{let{rendered:Y,itemState:K,applyTemplate:q,updateContentSize:B}=Q,_=()=>{J.hc.rebuild(J.vtf()),B(),j.updateCompressionMode(),J.ffn()},U=()=>J.it.length;return{getState:()=>({total:U(),cached:U(),isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:U,getCached:U,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(Z)=>J.it[Z],isItemLoaded:(Z)=>Z>=0&&Z<U()&&J.it[Z]!==void 0,getItemsInRange:(Z,N)=>{let R=[];for(let G=Math.max(0,Z),k=Math.min(N,U()-1);G<=k;G++)R.push(J.it[G]);return R},setTotal:()=>{},setItems:(Z,N=0,R)=>{if(N===0&&(R!==void 0||U()===0))J.it=Z;else{let G=N+Z.length;if(U()<G)J.it.length=G;for(let k=0;k<Z.length;k++)J.it[N+k]=Z[k]}if(J.ii)_()},updateItem:(Z,N)=>{let R=J.it;if(Z<0||Z>=R.length)return!1;let G=R[Z];if(!G)return!1;R[Z]={...G,...N};let k=Y.get(Z);if(k)q(k,J.at(R[Z],Z,K)),k.dataset.id=String(R[Z].id);return!0},removeItem:(Z)=>{let N=typeof Z==="number"?Z:J.it.findIndex((R)=>R.id===Z);if(N<0||N>=J.it.length)return!1;if(J.it.splice(N,1),J.ii)_();return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{J.it=[]},reset:()=>{if(J.it=[],J.ii)J.hc.rebuild(0),B(),J.ffn()}}},V1=(J,Q)=>{let{dom:j,classPrefix:Y}=Q;return{getScrollTop:()=>J.sgt(),scrollTo:(K)=>{J.sst(K),J.ls=K,J.rfn()},scrollBy:(K)=>{let q=J.sgt()+K;J.sst(q),J.ls=q,J.rfn()},isAtTop:()=>J.ls<=2,isAtBottom:(K=2)=>J.sab(K),getScrollPercentage:()=>{let K=J.hc.getTotalSize(),q=Math.max(0,K-J.ch);return q>0?J.ls/q:0},getVelocity:()=>J.vt.velocity,isTracking:()=>J.vt.sampleCount>=2,isScrolling:()=>j.root.classList.contains(`${Y}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{J.ch=K},destroy:()=>{}}};var EJ=(J,Q,j,Y,K=0,q=0)=>{let B=Q.getOffset(J),_=Q.getSize(J),U=B+K,Z=U+_,N=j+Y;if(U<j)return Math.max(0,B);if(Z>N)return Z+q-Y;return j},jJ=(J,Q,j,Y,K=0,q=0,B,_,U)=>{if(!(B!=null&&B.isCompressed&&B.ratio!==1))return EJ(J,Q,j,Y,K,q);let N=_,{virtualSize:R}=B,G=Q.getSize(Math.max(0,J)),k=Y-K-q,v=Math.max(1,Math.floor(k/G)),z=R/N;if(U){if(J>=U.start+v){let y=k/G,g=J+1-y;return Math.max(0,g*z)}if(J<=U.start)return Math.max(0,J*z);return j}let M=j/R*N,C=M+v;if(J>=C){let y=k/G,g=J+1-y;return Math.max(0,g*z)}if(J<M)return Math.max(0,J*z);return j};var _1=(J,Q,j,Y,K,q,B,_,U,Z,N,R,G)=>{let k=`${j}-item--focused`,v=!1,z=null,M=null,C=null,y=null,g=!1,a=()=>{if(g)return;g=!0,z=U.get("_getNavTotal")??null,M=U.get("_getNavDelta")??null,C=U.get("_navigate")??null,y=U.get("_scrollItemIntoView")??null},m=()=>{return a(),z?z():J.vtf()},s=()=>{return a(),M?M():{ud:1,lr:0,cols:0}};U.set("_getFocusedIndex",()=>v?J.fi:-1);let $=(b)=>{if(Q.root.setAttribute("aria-activedescendant",`${Y}-item-${b}`),a(),y)y(b);else{let x=K?J.cw:J.ch,T=J.i2s(b),L=EJ(T,J.hc,J.ls,x,q,B);if(L!==J.ls)J.sst(L),J.ls=J.sgt()}J.ffn()},o=(b)=>{J.fi=b,v=!0,$(b)},J0=(b,x)=>{if(J.fi=b,x)v=!0;let T=J.dm?J.dm.getItem(b):J.it[b];if(T&&J.ss.has(T.id))J.ss.clear();else if(J.ss.clear(),T)J.ss.add(T.id);$(b)},i=(b,x,T)=>{let L=b;while(L>=0&&L<T){let P=J.dm?J.dm.getItem(L):J.it[L];if(!P||!P.__groupHeader)return L;L+=x}L=b-x;while(L>=0&&L<T){let P=J.dm?J.dm.getItem(L):J.it[L];if(!P||!P.__groupHeader)return L;L-=x}return b},w=()=>{if(J.id)return;if(!Q.root.matches(":focus-visible"))return;let b=m();if(b===0)return;let x=J.fi>=0?Math.min(J.fi,b-1):0;x=i(x,1,b),o(x)};Q.root.addEventListener("focusin",w);let S=(b)=>{if(J.id)return;let x=b.relatedTarget;if(x&&Q.root.contains(x))return;if(v=!1,J.fi>=0)Z.get(J.fi)?.classList.remove(k);Q.root.removeAttribute("aria-activedescendant")};Q.root.addEventListener("focusout",S),N.push((b)=>{if(J.id)return;let x=m();if(x===0)return;let T=J.fi,L=T;if(b.key===" "||b.key==="Enter"){if(T>=0){let P=J.dm?J.dm.getItem(T):J.it[T];if(P&&!P.__groupHeader)J0(T,!0)}b.preventDefault();return}if(a(),C)switch(b.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":L=C(T,b.key,x);break;default:return}else{let{ud:P,lr:p}=s();switch(b.key){case"ArrowUp":L=T-P;break;case"ArrowDown":L=T+P;break;case"ArrowLeft":if(!p)return;L=T-p;break;case"ArrowRight":if(!p)return;L=T+p;break;case"PageUp":case"PageDown":{let r=J.hc.getSize(J.i2s(Math.max(0,T))),d=Math.max(P,Math.floor((K?J.cw:J.ch)/r)*P);L=b.key==="PageUp"?T-d:T+d;break}case"Home":L=0;break;case"End":L=x-1;break;default:return}if(L<0)L=_?x-1:0;else if(L>=x)L=_?0:x-1}if(b.preventDefault(),L=i(L,L>=T?1:-1,x),L!==T)o(L)}),R.push((b)=>{if(J.id)return;let x=b.target.closest("[data-index]");if(!x)return;let T=parseInt(x.dataset.index??"-1",10);if(T<0)return;let L=J.dm?.getItem(T)??J.it[T];if(!L||L.__groupHeader)return;v=!1,Q.root.focus(),J0(T,!1)}),G.push(()=>{Q.root.removeEventListener("focusin",w),Q.root.removeEventListener("focusout",S)})};var AJ=200,u0=50;var D1=50,G1=12,M1=2,g0=16000000;var O1="x",E1=20,LJ="_isPlaceholder",$0="__placeholder_";var y0=(J,Q,j)=>{if(String(j).startsWith($0))return!1;let Y=$0+Q;if(J.has(Y))return J.delete(Y),J.add(j),!0;return!1},A1=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),x0=(J,Q,j)=>{if(j==="none")return J;let Y=new Set(J.selected);if(j==="single"){if(Y.clear(),Q.length>0)Y.add(Q[0])}else for(let K of Q)Y.add(K);return{...J,selected:Y}},FJ=(J,Q)=>{let j=new Set(J.selected);for(let Y of Q)j.delete(Y);return{...J,selected:j}},m0=(J,Q,j)=>{if(j==="none")return J;if(J.selected.has(Q))return FJ(J,[Q]);else return x0(J,[Q],j)},TJ=(J,Q,j)=>{if(j!=="multiple")return J;return{...J,selected:new Set(Q.map((Y)=>Y.id))}},kJ=(J)=>({...J,selected:new Set}),d0=(J,Q)=>{return J.focusedIndex=Q,J},XJ=(J,Q,j=!1,Y=1)=>{if(Q===0)return J;let K=J.focusedIndex-Y;if(K<0)K=j?Q-1:0;return J.focusedIndex=K,J},KJ=(J,Q,j=!1,Y=1)=>{if(Q===0)return J;let K=J.focusedIndex+Y;if(K>=Q)K=j?0:Q-1;return J.focusedIndex=K,J},L1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=0,J},F1=(J,Q)=>{if(Q===0)return J;return J.focusedIndex=Q-1,J},HJ=(J,Q,j,Y)=>{if(Q===0)return J;let K=Y==="up"?J.focusedIndex-j:J.focusedIndex+j;return K=Math.max(0,Math.min(Q-1,K)),J.focusedIndex=K,J};var bJ=(J)=>{return Array.from(J.selected)},$J=(J,Q)=>{let j=[];for(let Y of J.selected){let K=Q(Y);if(K)j.push(K)}return j};var UJ=(J,Q,j,Y,K)=>{if(K!=="multiple")return J;let q=Math.min(j,Y),B=Math.max(j,Y),_=[];for(let U=q;U<=B;U++){let Z=Q[U];if(Z)_.push(Z.id)}return x0(J,_,K)};var yJ=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,P0=(J)=>{let Q=typeof J==="object"&&J?J:null;return{align:typeof J==="string"?J:Q?.align??"start",behavior:Q?.behavior??"auto",duration:Q?.duration??300}},c0=(J,Q)=>{let j=null,Y=()=>{if(j!==null)cancelAnimationFrame(j),j=null};return{animateScroll:(q,B,_)=>{if(Y(),Math.abs(B-q)<1){J.scrollTo(B);return}let U=performance.now(),Z=(N)=>{let R=N-U,G=Math.min(R/_,1),k=q+(B-q)*yJ(G);if(J.scrollTo(k),Q(),G<1)j=requestAnimationFrame(Z);else j=null};j=requestAnimationFrame(Z)},cancelScroll:Y}};var T1=(J,Q,j,Y,K,q,B,_,U,Z,N,R,G,k,v,z,M,C)=>{let y=(E)=>{{if(!Array.isArray(E)){console.warn("[vlist] setItems() expects an array, got:",typeof E);return}if(E.length>0&&E[0]&&!("id"in E[0]))console.warn('[vlist] Items must have an "id" property. First item:',E[0]);let W=Math.min(E.length,1e4),D=new Set;for(let h=0;h<W;h++){let O=E[h];if(O&&"id"in O){if(D.has(O.id)){console.warn(`[vlist] Duplicate item ID "${O.id}" at index ${h}. updateItem() and removeItem() will only match the first occurrence.`);break}D.add(O.id)}}}P(),U.dataManager.setItems(E,0,E.length)},g=(E)=>{let W=Z&&J.sab(2);if(U.dataManager.setItems(E,J.it.length),W&&J.it.length>0){let D=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(D),J.ls=D,J.rfn()}},a=(E)=>{let W=Z?J.sgt():0,D=Z?J.hc.getTotalSize():0,h=[...J.it];if(U.dataManager.clear(),U.dataManager.setItems([...E,...h],0),Z){let O=J.hc.getTotalSize()-D;if(O>0)J.sst(W+O),J.ls=W+O}},m=null,s=null,$=null,o=!1,J0=()=>{if(o)return;o=!0,m=q.get("_updateRenderedItem")??null,s=q.get("_getSelectedIds")??null,$=q.get("_getFocusedIndex")??null},i=(E,W)=>{{let h=J.vtf();if(E<0||E>=h)console.warn(`[vlist] updateItem() index ${E} is out of range (0–${h-1}).`)}if(U.dataManager.updateItem(E,W),J0(),!m)return;let D=U.dataManager.getItem(E);if(D){let O=(s?s():J.ss).has(D.id),A=($?$():J.fi)===E;m(E,D,O,A)}},w=!1,S=(E)=>{let W=typeof document<"u"?document.activeElement:null,D=W&&Q.items.contains(W)?parseInt(W.dataset?.index??"-1",10):-1;if(!U.dataManager.removeItem(E))return console.warn(`[vlist] removeItem() could not find item with id "${E}".`),!1;if(j.emit("data:change",{type:"remove",id:E}),U.forceRender(),!w){let O=U.dataManager;if(typeof O.ensureRange==="function")w=!0,queueMicrotask(()=>{w=!1;let A=U.dataManager.getTotal(),{start:l,end:n}=U.state.viewportState.renderRange;if(A>0&&n>=l)O.ensureRange(l,n).catch(()=>{})})}if(D>=0){let O=J.vtf();if(O>0)Y.get(Math.min(D,O-1))?.focus()}return!0},b=(E)=>{return U.dataManager.getItem(E)},x=(E)=>{return U.dataManager.getIndexById?.(E)??-1},T=async(E)=>{if(U.dataManager.reload)await U.dataManager.reload()},L=null,P=()=>{if(L!==null)cancelAnimationFrame(L),L=null},p=(E,W,D,h)=>{if(P(),Math.abs(W-E)<1){J.sst(W),J.ls=W,J.rfn();return}let O=performance.now(),A=(l)=>{let n=l-O,f=Math.min(n/D,1),u=h?h():W,e=E+(u-E)*yJ(f);if(J.sst(e),J.ls=e,J.rfn(),f<1)L=requestAnimationFrame(A);else L=null};L=requestAnimationFrame(A)},r=(E,W)=>{{let f=J.vtf();if(f>0&&(E<0||E>=f))console.warn(`[vlist] scrollToIndex(${E}) is out of range (0–${f-1}).`)}let{align:D,behavior:h,duration:O}=P0(W),A=J.vtf(),l=E;if(N&&A>0)l=(l%A+A)%A;let n=J.gsp(l,J.hc,J.ch,A,D);if(h==="smooth"){let f=l,u=D;p(J.sgt(),n,O,()=>J.gsp(f,J.hc,J.ch,J.vtf(),u))}else P(),J.sst(n)},d=()=>J.sgt(),I=(E,W)=>{return j.on(E,W)},F=(E,W)=>{j.off(E,W)},X=()=>{if(J.id)return;if(J.id=!0,U.state.isDestroyed=!0,Q.items.removeEventListener("click",R),Q.items.removeEventListener("dblclick",G),Q.root.removeEventListener("keydown",k),J.st.removeEventListener("scroll",v),z.disconnect(),M(),J.wh)Q.viewport.removeEventListener("wheel",J.wh);C();let E=[];for(let W=0;W<_.length;W++)try{_[W]()}catch(D){E.push(D instanceof Error?D:Error(String(D)))}for(let W of B)if(W.destroy)try{W.destroy()}catch(D){E.push(D instanceof Error?D:Error(String(D)))}P();for(let[,W]of Y)W.remove(),K.release(W);Y.clear(),K.clear(),j.emit("destroy",void 0);for(let W of E)j.emit("error",{error:W,context:"destroy"});j.clear(),Q.root.remove()},V=(E,W)=>q.has(E)?q.get(E):W,H={get element(){return Q.root},get items(){let E=q.get("_getItems");return E?E():J.it},get total(){let E=q.get("_getTotal");return E?E():J.vtf()},setItems:V("setItems",y),appendItems:V("appendItems",g),prependItems:V("prependItems",a),updateItem:V("updateItem",i),removeItem:V("removeItem",S),reload:V("reload",T),getItemAt:b,getIndexById:x,scrollToIndex:V("scrollToIndex",r),cancelScroll:V("cancelScroll",P),getScrollPosition:V("getScrollPosition",d),on:I,off:F,destroy:X};for(let[E,W]of q){if(E.charCodeAt(0)===95||E==="setItems"||E==="appendItems"||E==="prependItems"||E==="updateItem"||E==="removeItem"||E==="reload"||E==="scrollToIndex"||E==="scrollToItem"||E==="cancelScroll"||E==="getScrollPosition")continue;H[E]=W}return H};var Q4=3,q4="vlist",Y4=150,j4=16000000,X4=0,PJ=(J)=>{if(!J.container)throw Error("[vlist] Container is required");if(!J.item)throw Error("[vlist] item configuration is required");let Q=J.orientation==="horizontal",j=Q?"width":"height",Y=Q?"estimatedWidth":"estimatedHeight",K=Q?J.item.width:J.item.height,q=Q?J.item.estimatedWidth:J.item.estimatedHeight;if(K==null&&q==null)throw Error(`[vlist] item.${j} or item.${Y} is required${Q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist] item.${j} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist] item.${j} must be a number or a function (index) => number`)}else if(q!=null){if(typeof q!=="number"||q<=0)throw Error(`[vlist] item.${Y} must be a positive number`)}if(!J.item.template)throw Error("[vlist] item.template is required");if(Q&&J.reverse)throw Error("[vlist] horizontal direction cannot be combined with reverse mode");let B=new Map,_=!1,U={use(Z){if(_)throw Error("[vlist] Cannot call .use() after .build()");return B.set(Z.name,Z),U},build(){if(_)throw Error("[vlist] .build() can only be called once");return _=!0,K4(J,B,Q,K,q??null)}};return U};function K4(J,Q,j,Y,K){let{item:q,items:B,overscan:_=Q4,classPrefix:U=q4,ariaLabel:Z,padding:N,reverse:R=!1,scroll:G,accessible:k,interactive:v}=J,z=v??k??!0,M=G,C=M?.wheel??!0,y=M?.wrap??!1,g=R,a=`${U}-${X4++}`,m=Q.has("withGrid")||Q.has("withMasonry")?0:q.gap??0,s=Y??K,$=Y==null&&K!=null,o=j?typeof q.height==="number"?q.height:void 0:typeof q.width==="number"?q.width:void 0,J0={overscan:_,classPrefix:U,reverse:g,wrap:y,horizontal:j,ariaIdPrefix:a,interactive:z},i=Array.from(Q.values()).sort((c,t)=>(c.priority??50)-(t.priority??50)),w=new Set(i.map((c)=>c.name));for(let c of i)if(c.conflicts){for(let t of c.conflicts)if(w.has(t))throw Error(`[vlist] ${c.name} and ${t} cannot be combined`)}if(g){if(w.has("withGrid"))throw Error("[vlist] withGrid cannot be used with reverse: true")}let S=j1(J.container),b=X1(S,U,Z,j,z);if(M?.wheel===!1)if(j)b.viewport.style.overflowX="hidden";else b.viewport.style.overflow="hidden";if(M?.scrollbar==="none")b.viewport.classList.add(`${U}-viewport--no-scrollbar`);if(M?.gutter==="stable")b.viewport.classList.add(`${U}-viewport--gutter-stable`);let x=k0(N),T=h0(x,j);if(x.top||x.right||x.bottom||x.left)b.content.style.boxSizing="border-box",b.content.style.padding=`${x.top}px ${x.right}px ${x.bottom}px ${x.left}px`;let L=Y1(),P=B||[],p=typeof s==="function"&&(Q.has("withGrid")||Q.has("withMasonry")),r=m>0?typeof s==="function"?(c)=>s(c)+m:s+m:s,d=$?K+m:r,I=S0(d,p?0:P.length);if(m>0){let c=I.getTotalSize;I.getTotalSize=()=>{let t=c();return t>0?t-m:0}}let F=K1(),X={it:P,hc:I,ch:b.viewport.clientHeight,cw:b.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:J1(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:j?()=>b.viewport.scrollLeft:()=>b.viewport.scrollTop,sst:j?(c)=>{b.viewport.scrollLeft=c}:(c)=>{b.viewport.scrollTop=c},sab:(c=2)=>{let t=X.hc.getTotalSize();return X.ls+X.ch>=t-c},sic:!1,rfn:null,ffn:null,gvr:(c,t,Q0,U0,G0)=>{U1(c,t,Q0,U0,G0)},gsp:(c,t,Q0,U0,G0)=>{return B1(c,t,Q0,U0,G0,X.mp)},pef:null,at:q.template,vre:!0,st:b.viewport,wh:null,gcw:()=>X.cw,gch:()=>X.ch,gp:m,mp:T,sif:(c)=>c,i2s:(c)=>c,uic:(c,t,Q0)=>{let U0=A.get(c);if(!U0)return;X0(U0,t,Q0)},csi:null};X.vtf=()=>X.dm?X.dm.getTotal():X.it.length;let V=null,H=!1,E={start:0,end:0},W={start:0,end:0},D={start:-1,end:-1},h={viewportState:{scrollPosition:0,containerSize:j?X.cw:X.ch,totalSize:X.hc.getTotalSize(),actualSize:X.hc.getTotalSize(),isCompressed:!1,compressionRatio:1,visibleRange:{start:0,end:0},renderRange:{start:0,end:0}},lastRenderRange:{start:-1,end:-1},isInitialized:!1,isDestroyed:!1,cachedCompression:null},O=()=>({...h.viewportState,totalItems:X.vtf()}),A=new Map,l=()=>{p0(b.items,A.keys(),(c)=>A.get(c))},n=()=>{let c=X.hc.getTotalSize(),Q0=`${(X.sic?c:Math.min(c,j4))+T}px`;if(j)b.content.style.width=Q0;else b.content.style.height=Q0},f={selected:!1,focused:!1},u=`${U}-item`,e=`${U}-item--selected`,Y0=`${U}-item--focused`,X0=(c,t,Q0)=>{c.classList.toggle(e,t),c.classList.toggle(Y0,Q0),c.ariaSelected=t?"true":"false"},q0=q.striped,B0=!!q0,Z0=q0==="data"||q0==="even"||q0==="odd",K0=`${U}-item--odd`,W0=`${U}-item--placeholder`,D0=`${U}-item--replaced`,j0=`${U}--scrolling`,_0=[],V0=[],M0=[],E0=[],H0=[],R0=[],b0=[],z0=[],A0=new Map,BJ="__placeholder_",NJ={scrollPosition:0,direction:"down"},f0={velocity:0,reliable:!1},WJ={range:{start:0,end:0}},VJ=null,_J=null,lJ=!1,c1=()=>{if(lJ)return;lJ=!0,VJ=A0.get("_getSelectedIds")??null,_J=A0.get("_getFocusedIndex")??null},t0=(c,t,Q0)=>{if(!t)console.warn(`[vlist] Template returned falsy value${Q0!==void 0?` for item at index ${Q0}`:""}. The element will render as blank.`);else if(typeof t==="string"&&t==="")console.warn(`[vlist] Template returned empty string${Q0!==void 0?` for item at index ${Q0}`:""}. The element will render as blank.`);if(typeof t==="string")c.innerHTML=t;else c.replaceChildren(t)},l1=(c,t)=>{let Q0=Math.round(X.hc.getOffset(t));if(j)c.style.transform=`translateX(${Q0}px)`;else c.style.transform=`translateY(${Q0}px)`};X.pef=l1;let r1=(c,t)=>{let Q0=F.acquire();Q0.className=u;let U0=!X.csi||X.csi(c);if(j){if(U0)Q0.style.width=`${X.hc.getSize(c)-m}px`;else Q0.style.width="";if(o!=null)Q0.style.height=`${o}px`}else if(U0)Q0.style.height=`${X.hc.getSize(c)-m}px`;else Q0.style.height="";if(Q0.dataset.index=String(c),Q0.dataset.id=String(t.id),Q0.ariaSelected="false",Q0.id=`${a}-item-${c}`,X.la=String(X.vtf()),Q0.setAttribute("aria-setsize",X.la),Q0.setAttribute("aria-posinset",String(c+1)),String(t.id).startsWith(BJ))Q0.classList.add(W0);if(B0)if(Z0){let L0=X.sif(c);if(L0<0)Q0.classList.remove(K0);else Q0.classList.toggle(K0,(L0&1)===1)}else Q0.classList.toggle(K0,(c&1)===1);try{t0(Q0,X.at(t,c,f),c)}catch(L0){let O0=L0 instanceof Error?L0:Error(String(L0));L.emit("error",{error:O0,context:`tpl(${c},${t.id})`,viewport:O()}),Q0.textContent=""}return X.pef(Q0,c),Q0},a1=()=>{if(X.id)return;let c=j?X.cw:X.ch;if(c<=0)return;c1();let t=VJ?VJ():X.ss,Q0=_J?_J():X.fi,U0=X.vtf();if(X.gvr(X.ls,c,X.hc,U0,E),Z1(E,_,U0,W),W.start===D.start&&W.end===D.end){if(X.sic)for(let[N0,F0]of A)X.pef(F0,N0);h.viewportState.scrollPosition=X.ls,h.viewportState.containerSize=c,h.viewportState.visibleRange.start=E.start,h.viewportState.visibleRange.end=E.end,h.viewportState.renderRange.start=W.start,h.viewportState.renderRange.end=W.end;return}let G0=String(U0),L0=G0!==X.la;X.la=G0;for(let[N0,F0]of A)if(N0<W.start||N0>W.end)F0.remove(),F.release(F0),A.delete(N0);let O0=document.createDocumentFragment(),C0=!1,a0=b0.length>0?[]:null;for(let N0=W.start;N0<=W.end;N0++){let F0=X.dm?X.dm.getItem(N0):X.it[N0];if(F0===void 0)continue;let T0=A.get(N0);if(T0){let v0=T0.dataset.id,I0=String(F0.id);if(v0!==I0){let i1=v0?.startsWith(BJ),MJ=I0.startsWith(BJ);try{t0(T0,X.at(F0,N0,f),N0)}catch(OJ){let t1=OJ instanceof Error?OJ:Error(String(OJ));L.emit("error",{error:t1,context:`tpl(${N0},${F0.id})`,viewport:O()}),T0.textContent=""}T0.dataset.id=I0;let tJ=!X.csi||X.csi(N0);if(j)T0.style.width=tJ?`${X.hc.getSize(N0)-m}px`:"";else T0.style.height=tJ?`${X.hc.getSize(N0)-m}px`:"";if(MJ)T0.classList.add(W0);else T0.classList.remove(W0);if(i1&&!MJ)T0.classList.add(D0),setTimeout(()=>{T0.classList.remove(D0)},300);if(X.dm&&!MJ)y0(t,N0,F0.id)}X.pef(T0,N0);let QJ=t.has(F0.id);if(X0(T0,QJ,N0===Q0),L0)T0.setAttribute("aria-setsize",X.la)}else{let v0=r1(N0,F0);if(a0)a0.push({index:N0,element:v0});if(X.dm)y0(t,N0,F0.id);let I0=t.has(F0.id),QJ=N0===Q0;if(I0||QJ)X0(v0,I0,QJ);O0.appendChild(v0),A.set(N0,v0),C0=!0}}if(C0)b.items.appendChild(O0);if(a0&&a0.length>0)for(let N0=0;N0<b0.length;N0++)b0[N0](a0);D.start=W.start,D.end=W.end,h.lastRenderRange.start=W.start,h.lastRenderRange.end=W.end,h.viewportState.scrollPosition=X.ls,h.viewportState.visibleRange.start=E.start,h.viewportState.visibleRange.end=E.end,h.viewportState.renderRange.start=W.start,h.viewportState.renderRange.end=W.end,WJ.range.start=W.start,WJ.range.end=W.end,L.emit("range:change",WJ)},s1=()=>{D.start=-1,D.end=-1,X.rfn()};X.rfn=a1,X.ffn=s1;let o1=()=>{b.root.classList.remove(j0),H=!1,X.vt.velocity=0,X.vt.sampleCount=0,f0.velocity=0,f0.reliable=!1,L.emit("velocity:change",f0),l();for(let c=0;c<V0.length;c++)V0[c]();L.emit("scroll:idle",{scrollPosition:X.ls})},n1=()=>{if(V)clearTimeout(V);V=setTimeout(o1,M?.idleTimeout??Y4)},r0=()=>{if(X.id)return;let c=X.sgt();if(c===X.ls&&H)return;let t=c>=X.ls?"down":"up";if(X.vt=Q1(X.vt,c),!b.root.classList.contains(j0))b.root.classList.add(j0);H=!0,X.ls=c,X.rfn(),NJ.scrollPosition=c,NJ.direction=t,L.emit("scroll",NJ),f0.velocity=X.vt.velocity,f0.reliable=X.vt.sampleCount>=eJ,L.emit("velocity:change",f0);for(let Q0=0;Q0<_0.length;Q0++)_0[Q0](c,t);n1()},e0=null;if(X.st.addEventListener("scroll",r0,{passive:!0}),C){let c=b.viewport;if(j)e0=(t)=>{if(h.viewportState.isCompressed)return;if(Math.abs(t.deltaX)>Math.abs(t.deltaY))return;let Q0=X.sgt(),U0=c.scrollWidth-c.clientWidth,G0=Math.max(0,Math.min(Q0+t.deltaY,U0));if(Math.abs(G0-Q0)<1)return;t.preventDefault(),X.sst(G0),r0()};else e0=(t)=>{if(h.viewportState.isCompressed)return;let Q0=c.scrollWidth>c.clientWidth;if(Q0&&Math.abs(t.deltaX)>Math.abs(t.deltaY))return;if(Q0&&t.deltaX!==0)t.preventDefault(),c.scrollLeft+=t.deltaX;let U0=X.sgt(),G0=c.scrollHeight-c.clientHeight,L0=Math.max(0,Math.min(U0+t.deltaY,G0));if(Math.abs(L0-U0)<1)return;t.preventDefault(),X.sst(L0),r0()};X.wh=e0,c.addEventListener("wheel",e0,{passive:!1})}let rJ=(c)=>{let t=c.target.closest("[data-index]");if(!t)return null;let Q0=parseInt(t.dataset.index??"-1",10);if(Q0<0)return null;let U0=X.dm?.getItem(Q0)??X.it[Q0];if(!U0||U0.__groupHeader)return null;return{item:U0,index:Q0}},aJ=(c)=>{let t=rJ(c);if(t)L.emit("item:click",{item:t.item,index:t.index,event:c});for(let Q0=0;Q0<M0.length;Q0++)M0[Q0](c)},sJ=(c)=>{let t=rJ(c);if(t)L.emit("item:dblclick",{item:t.item,index:t.index,event:c})},oJ=(c)=>{for(let t=0;t<E0.length;t++)E0[t](c)};if(b.items.addEventListener("click",aJ),b.items.addEventListener("dblclick",sJ),b.root.addEventListener("keydown",oJ),z){let c=null,t=(Q0)=>{if(c)clearTimeout(c);c=setTimeout(()=>{if(c=null,X.id)return;let U0=X.vtf();b.liveRegion.textContent=`Showing items ${Q0.range.start+1} to ${Math.min(Q0.range.end+1,U0)} of ${U0}`},300)};L.on("range:change",t),z0.push(()=>{if(c)clearTimeout(c);L.off("range:change",t)})}let DJ=new ResizeObserver((c)=>{if(X.id)return;for(let t of c){let Q0=t.contentRect.height,U0=t.contentRect.width,G0=j?U0:Q0,L0=j?X.cw:X.ch;if(X.cw=U0,X.ch=Q0,Math.abs(G0-L0)>1){if(h.viewportState.containerSize=G0,X.ii){let O0=h.cachedCompression;if(O0&&O0.state.isCompressed){let C0=`${O0.state.virtualSize+T}px`;if(j)b.content.style.width=C0;else b.content.style.height=C0}else n();X.rfn(),L.emit("resize",{height:Q0,width:U0})}}if(X.ii)for(let O0=0;O0<H0.length;O0++)H0[O0](U0,Q0)}});if(X.vre)DJ.observe(b.viewport);let GJ={dom:b,emitter:L,resolvedConfig:J0,rawConfig:J,rendered:A,pool:F,itemState:f,sharedState:h,renderRange:W,isHorizontal:j,classPrefix:U,contentSizeHandlers:R0,idleHandlers:V0,afterScroll:_0,clickHandlers:M0,keydownHandlers:E0,resizeHandlers:H0,destroyHandlers:z0,methods:A0,onScrollFrame:r0,resizeObserver:DJ,afterRenderBatch:b0,applyTemplate:t0,updateContentSize:n},JJ=N1(X,GJ);X.dm=W1(X,GJ,JJ),X.sc=V1(X,GJ),A0.set("_updateRenderedItem",(c,t,Q0,U0)=>{let G0=A.get(c);if(!G0)return;let L0={selected:Q0,focused:U0};try{let O0=X.at(t,c,L0);t0(G0,O0,c)}catch(O0){let C0=O0 instanceof Error?O0:Error(String(O0));L.emit("error",{error:C0,context:`tpl(${c},${t.id})`,viewport:O()})}G0.dataset.id=String(t.id),X0(G0,Q0,U0)});let nJ=new WeakSet;A0.set("_setSizeCache",(c)=>{if(X.hc=c,X.gp>0&&!nJ.has(c)){nJ.add(c);let t=X.hc.getTotalSize,Q0=X.gp;X.hc.getTotalSize=()=>{let U0=t();return U0>0?U0-Q0:0}}}),A0.set("_setConstrainSize",(c)=>{X.csi=c});let iJ=new Map;for(let c of i)if(c.methods)for(let t of c.methods){let Q0=iJ.get(t);if(Q0)throw Error(`[vlist] Method "${t}" is registered by both "${Q0}" and "${c.name}"`);iJ.set(t,c.name)}for(let c of i)try{c.setup(JJ)}catch(t){let Q0=t instanceof Error?t:Error(String(t));console.error(`[vlist] Feature "${c.name}" setup failed:`,Q0),L.emit("error",{error:Q0,context:c.name,viewport:O()})}if($&&!Q.has("withAutoSize"))console.warn("[vlist] estimatedHeight/estimatedWidth requires .use(withAutoSize()). Items will use the estimated size as a fixed size.");if(z&&!A0.has("_getFocusedIndex")){let c=j?x.left:x.top,t=j?x.right:x.bottom;_1(X,b,U,a,j,c,t,y,A0,A,E0,M0,z0)}if(X.ii=!0,JJ.state.isInitialized=!0,n(),X.rfn(),g&&X.it.length>0){let c=X.gsp(X.it.length-1,X.hc,X.ch,X.it.length,"end");X.sst(c),X.ls=c,X.rfn()}return T1(X,b,L,A,F,A0,i,z0,JJ,g,y,aJ,sJ,oJ,r0,DJ,()=>{},()=>{if(V)clearTimeout(V)})}var o0=(J,Q,j)=>{let Y=Q.getTotalSize(),K=j===!0||Y>g0,q=Y>g0?g0:Y,B=Y>0?q/Y:1;return{isCompressed:K,actualSize:Y,virtualSize:q,ratio:B}},k1=(J,Q,j,Y,K,q)=>{if(Y===0||Q===0)return q.start=0,q.end=-1,q;if(!K.isCompressed||K.ratio===1){let G=j.indexAtOffset(J),k=j.indexAtOffset(J+Q);if(k<Y-1)k++;return q.start=Math.max(0,G),q.end=Math.min(Y-1,Math.max(0,k)),q}let{virtualSize:B}=K,U=J/B*Y,Z=Math.floor(U),N=q1(j,Math.max(0,Z),Q,Y),R=Math.ceil(U)+N;return q.start=Math.max(0,Z),q.end=Math.min(Y-1,Math.max(0,R)),q};var l0=(J,Q,j,Y,K,q,B)=>{if(!q.isCompressed||Y===0)return j.getOffset(J);if(q.ratio===1)return j.getOffset(J)-Q;let{virtualSize:_}=q,U=Q/_,Z=j.getTotalSize(),N=U*Z;return j.getOffset(J)-N},H1=(J,Q,j,Y,K,q="start")=>{if(Y===0)return 0;let B;if(K.isCompressed&&K.ratio!==1){B=J/Y*K.virtualSize;let N=Q.getSize(J);switch(q){case"center":B-=(j-N)/2*K.ratio;break;case"end":B-=(j-N)*K.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let _=Q.getSize(J);switch(q){case"center":B-=(j-_)/2;break;case"end":B-=j-_;break}let U=K.virtualSize-j;return Math.max(0,Math.min(B,U))};var n0=(J,Q,j={},Y="vlist",K=!1)=>{let{autoHide:q=!0,autoHideDelay:B=1000,minThumbSize:_=30,showOnHover:U=!0,hoverZoneWidth:Z=16,showOnViewportEnter:N=!0}=j,R=0,G=0,k=0,v=0,z=!1,M=!1,C=0,y=0,g=0,a=null,m=!1,s=null,$=null,o=K?"width":"height",J0=K?"translateX":"translateY",i=K?(A)=>A.clientX:(A)=>A.clientY,w=K?"left":"top",S=document.createElement("div"),b=document.createElement("div"),x=U?document.createElement("div"):null,T=()=>{if(S.className=`${Y}-scrollbar`,b.className=`${Y}-scrollbar-thumb`,K)S.classList.add(`${Y}-scrollbar--horizontal`);if(S.appendChild(b),J.appendChild(S),x){if(x.className=`${Y}-scrollbar-hover`,K)x.classList.add(`${Y}-scrollbar-hover--horizontal`),x.style.height=`${Z}px`;else x.style.width=`${Z}px`;J.appendChild(x)}},L=()=>{if(a)clearTimeout(a),a=null},P=()=>{if(!q)return;L(),a=setTimeout(r,B)},p=()=>{if(R<=G)return;if(L(),!m)S.classList.add(`${Y}-scrollbar--visible`),m=!0;if(q&&!z&&!M)P()},r=()=>{if(z||M)return;S.classList.remove(`${Y}-scrollbar--visible`),m=!1},d=(A,l)=>{R=A,G=l;let n=R>G;if(S.style.display=n?"":"none",!n){r();return}let f=G/R;k=Math.max(_,f*G),b.style[o]=`${k}px`,v=G-k,I(g)},I=(A)=>{if(g=A,R<=G||v<=0)return;let l=R-G,f=Math.min(1,Math.max(0,A/l))*v;b.style.transform=`${J0}(${f}px)`},F=(A)=>{if(A.target===b)return;let l=S.getBoundingClientRect(),u=i(A)-l[w]-k/2,Y0=Math.max(0,Math.min(u,v))/v,X0=R-G,q0=Y0*X0;Q(q0),p()},X=(A)=>{A.preventDefault(),A.stopPropagation(),z=!0,C=i(A),y=g,L(),S.classList.add(`${Y}-scrollbar--dragging`),document.addEventListener("mousemove",V),document.addEventListener("mouseup",H)},V=(A)=>{if(!z)return;let l=i(A)-C,n=v>0?l/v:0,f=R-G,u=n*f,e=Math.max(0,Math.min(y+u,f)),X0=e/f*v;if(b.style.transform=`${J0}(${X0}px)`,$=e,s===null)s=requestAnimationFrame(()=>{if($!==null)Q($);s=null})},H=()=>{if(z=!1,s!==null)cancelAnimationFrame(s),s=null;if($!==null)Q($),$=null;if(S.classList.remove(`${Y}-scrollbar--dragging`),q&&!M)P();document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",H)},E=()=>{if(N)p()},W=()=>{if(!z){if(M=!1,q)P()}},D=()=>{M=!0,L(),p()},h=()=>{if(M=!1,!z&&q)P()},O=()=>{if(L(),s!==null)cancelAnimationFrame(s),s=null;if(S.removeEventListener("click",F),S.removeEventListener("mouseenter",D),S.removeEventListener("mouseleave",h),b.removeEventListener("mousedown",X),J.removeEventListener("mouseenter",E),J.removeEventListener("mouseleave",W),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",H),x){if(x.removeEventListener("mouseenter",D),x.removeEventListener("mouseleave",h),x.parentNode)x.parentNode.removeChild(x)}if(S.parentNode)S.parentNode.removeChild(S)};if(T(),S.addEventListener("click",F),S.addEventListener("mouseenter",D),S.addEventListener("mouseleave",h),b.addEventListener("mousedown",X),J.addEventListener("mouseenter",E),J.addEventListener("mouseleave",W),x)x.addEventListener("mouseenter",D),x.addEventListener("mouseleave",h);return{show:p,hide:r,updateBounds:d,updatePosition:I,isVisible:()=>m,destroy:O}};var wJ=(J)=>{let Q=null;return{name:"withScrollbar",priority:30,setup(j){let{dom:Y,config:K}=j,{classPrefix:q,horizontal:B}=K;if(Q=n0(Y.viewport,(U)=>j.scrollController.scrollTo(U),J??{},q,B),!Y.viewport.classList.contains(`${q}-viewport--custom-scrollbar`))Y.viewport.classList.add(`${q}-viewport--custom-scrollbar`);Q.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize);let _=Q;j.afterScroll.push((U,Z)=>{_.updatePosition(U),_.show()}),j.resizeHandlers.push((U,Z)=>{if(_)_.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize)}),j.contentSizeHandlers.push(()=>{if(_)_.updateBounds(j.state.viewportState.totalSize||j.getCachedCompression().virtualSize,j.state.viewportState.containerSize)}),j.destroyHandlers.push(()=>{if(_)_.destroy()})},destroy(){if(Q)Q.destroy(),Q=null}}};var U4=0.65,Z4=0.5,b1=1.7,B4=0.95,N4=0.1,W4=5,V4=100,$1=(J,Q,j,Y=0)=>{if(J<=0)return 0;let K=Q-Y;return Math.max(0,K*(1-j)+Y)},RJ=(J)=>{let Q=J?.force??!1,j=null,Y=0,K=!1,q=0,B=0,_=null,U=0,Z=0,N=null,R=[];return{name:"withScale",priority:20,setup(G){let{dom:k,config:v}=G,{classPrefix:z,horizontal:M}=v,C=k0(G.rawConfig.padding),y=M?C.left+C.right:C.top+C.bottom,g=()=>{let i=G.getVirtualTotal(),w=o0(i,G.sizeCache,Q);if(w.isCompressed&&!K){K=!0,G.scrollController.enableCompression(w);let b=M?k.viewport.scrollLeft:k.viewport.scrollTop;if(M)k.viewport.style.overflowX="hidden";else k.viewport.style.overflow="hidden";if(M)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0;if(b>0)Y=b,B=b;q=$1(w.virtualSize,G.state.viewportState.containerSize,w.ratio,y),G.updateContentSize(w.virtualSize+q),G.setScrollFns(()=>Y,(X)=>{if(Y=X,B=X,_!==null)cancelAnimationFrame(_),_=null});let x=()=>{let X=B-Y;if(G.getVirtualTotal()===0){Y=0,B=0,_=null,G.scrollController.scrollTo(0);return}if(Math.abs(X)<Z4){let V=G.getCachedCompression(),H=Math.max(0,V.virtualSize+q-G.state.viewportState.containerSize);Y=Math.max(0,Math.min(B,H)),B=Y,_=null}else{Y+=X*U4;let H=G.getCachedCompression().virtualSize+q-G.state.viewportState.containerSize;Y=Math.max(0,Math.min(Y,H)),_=requestAnimationFrame(x)}G.scrollController.scrollTo(Y)},T=k.viewport,L=(X)=>{X.preventDefault();let V=G.getCachedCompression(),H=V.virtualSize+q-G.state.viewportState.containerSize;if(B=Math.max(0,Math.min(B+X.deltaY*V.ratio*b1,H)),_===null)_=requestAnimationFrame(x)};T.addEventListener("wheel",L,{passive:!1});let P=()=>{if(N!==null)cancelAnimationFrame(N),N=null},p=(X)=>{if(P(),_!==null)cancelAnimationFrame(_),_=null;let V=X.touches[0];if(!V)return;let H=M?V.clientX:V.clientY;U=H,Z=Y,R=[{time:performance.now(),y:H}]},r=(X)=>{X.preventDefault();let V=X.touches[0];if(!V)return;let H=M?V.clientX:V.clientY,E=performance.now();if(R.push({time:E,y:H}),R.length>W4)R.shift();let W=U-H,D=G.getCachedCompression(),h=D.virtualSize+q-G.state.viewportState.containerSize,O=Math.max(0,Math.min(Z+W*D.ratio*b1,h));Y=O,B=O,G.scrollController.scrollTo(O)},d=(X)=>{let V=performance.now(),H=R.filter((h)=>V-h.time<V4),E=0;if(H.length>=2){let h=H[0],O=H[H.length-1],A=O.time-h.time;if(A>0)E=(h.y-O.y)/A}if(R=[],Math.abs(E)<N4)return;let W=E*16,D=()=>{if(W*=B4,Math.abs(W)<0.5){N=null;return}let O=G.getCachedCompression().virtualSize+q-G.state.viewportState.containerSize,A=Y+W;if(A=Math.max(0,Math.min(A,O)),A<=0&&W<0||A>=O&&W>0){Y=A,B=A,G.scrollController.scrollTo(A),N=null;return}Y=A,B=A,G.scrollController.scrollTo(A),N=requestAnimationFrame(D)};N=requestAnimationFrame(D)};T.addEventListener("touchstart",p,{passive:!0}),T.addEventListener("touchmove",r,{passive:!1}),T.addEventListener("touchend",d,{passive:!0}),T.addEventListener("touchcancel",d,{passive:!0}),G.destroyHandlers.push(()=>{T.removeEventListener("wheel",L),T.removeEventListener("touchstart",p),T.removeEventListener("touchmove",r),T.removeEventListener("touchend",d),T.removeEventListener("touchcancel",d)});let I=k.viewport.querySelector(`.${z}-scrollbar`),F=()=>{if((M?k.viewport.scrollLeft:k.viewport.scrollTop)!==0)if(M)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0};if(T.addEventListener("scroll",F,{passive:!0}),G.destroyHandlers.push(()=>{T.removeEventListener("scroll",F)}),!I){if(j=n0(k.viewport,(V)=>G.scrollController.scrollTo(V),{},z,M),!k.viewport.classList.contains(`${z}-viewport--custom-scrollbar`))k.viewport.classList.add(`${z}-viewport--custom-scrollbar`);j.updateBounds(w.virtualSize,G.state.viewportState.containerSize);let X=j;G.afterScroll.push((V,H)=>{if(X)X.updatePosition(V),X.show()}),G.resizeHandlers.push((V,H)=>{if(X){let E=G.getCachedCompression();X.updateBounds(E.virtualSize,G.state.viewportState.containerSize)}})}}else if(!w.isCompressed&&K){if(K=!1,_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null;if(Y=0,B=0,R=[],G.setScrollFns(M?()=>k.viewport.scrollLeft:()=>k.viewport.scrollTop,M?(b)=>{k.viewport.scrollLeft=b}:(b)=>{k.viewport.scrollTop=b}),M)k.viewport.scrollLeft=0;else k.viewport.scrollTop=0;if(G.scrollController.disableCompression(),M)k.viewport.style.overflowX="auto";else k.viewport.style.overflow="auto";if(j)j.destroy(),j=null;q=0,G.updateContentSize(w.actualSize)}else if(w.isCompressed)G.scrollController.updateConfig({compression:w}),q=$1(w.virtualSize,G.state.viewportState.containerSize,w.ratio,y),G.updateContentSize(w.virtualSize+q);if(j)j.updateBounds(w.virtualSize+q,G.state.viewportState.containerSize);let S=G.state.viewportState;if(S.isCompressed=w.isCompressed,S.compressionRatio=w.ratio,S.totalSize=w.virtualSize+q,S.actualSize=w.actualSize,G.state.cachedCompression={state:w,totalItems:i},K){let b=Math.max(0,w.virtualSize+q-G.state.viewportState.containerSize),x=Y;if(x>b)x=b;else if(x<0)x=0;if(x!==Y){if(_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null;G.scrollController.scrollTo(x)}}for(let b=0;b<G.contentSizeHandlers.length;b++)G.contentSizeHandlers[b]()};G.updateCompressionMode=g;let a=G.getCachedCompression.bind(G);G.getCachedCompression=()=>{if(G.state.cachedCompression)return G.state.cachedCompression.state;return a()},G.setVisibleRangeFn((i,w,S,b,x)=>{m=null,s=null;let T=o0(b,S,Q);k1(i,w,S,b,T,x)}),G.setScrollToPosFn((i,w,S,b,x)=>{let T=o0(b,w,Q);return H1(i,w,S,b,T,x)});let m=null,s=null;G.setPositionElementFn((i,w)=>{let S=G.getVirtualTotal(),b=o0(S,G.sizeCache,Q);if(b.isCompressed){let x=G.scrollController.getScrollTop();if(m===null||w<s)s=w,m=Math.round(l0(w,x,G.sizeCache,S,G.state.viewportState.containerSize,b));let T=m+G.sizeCache.getOffset(w)-G.sizeCache.getOffset(s),L=G.config.horizontal;i.style.transform=L?`translateX(${T}px)`:`translateY(${T}px)`}else{let x=Math.round(G.sizeCache.getOffset(w)),T=G.config.horizontal;i.style.transform=T?`translateX(${x}px)`:`translateY(${x}px)`}});let $=M?C.left:C.top,o=M?C.right:C.bottom,J0=G.getItemToScrollIndexFn();G.methods.set("_scrollItemIntoView",(i)=>{let w=G.getCachedCompression(),S=G.state.viewportState.containerSize,b=G.state.viewportState.scrollPosition,x=G.getVirtualTotal(),{visibleRange:T}=G.state.viewportState,L=J0(i),P=jJ(L,G.sizeCache,b,S,$,o,w,x,T);if(P!==b)G.scrollController.scrollTo(P)}),g(),G.destroyHandlers.push(()=>{if(j)j.destroy(),j=null;if(_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null})}}};var y1=(J={})=>{let{chunkSize:Q=100,maxCachedItems:j=5000,evictionBuffer:Y=200,onEvict:K}=J,q=new Map,B=0,_=0,U=(T)=>{let L=q.get(T);if(!L)L={items:Array(Q),count:0,lastAccess:Date.now()},q.set(T,L);else L.lastAccess=Date.now();return L},Z=(T)=>{return Math.floor(T/Q)},N=(T)=>{return T%Q},R=()=>B,G=(T)=>{B=T},k=(T)=>{if(T<0||T>=B)return;let L=Z(T),P=q.get(L);if(!P)return;return P.items[N(T)]},v=(T)=>{if(T<0||T>=B)return!1;let L=Z(T),P=q.get(L);if(!P)return!1;return P.items[N(T)]!==void 0},z=(T,L)=>{let P=Z(T),p=U(P),r=N(T),d=p.items[r]===void 0;if(p.items[r]=L,d)p.count++,_++;if(T>=B)B=T+1},M=(T,L)=>{for(let P=0;P<L.length;P++){let p=L[P];if(p!==void 0)z(T+P,p)}},C=(T)=>{if(T<0||T>=B)return!1;let L=Z(T),P=q.get(L),p=N(T);if(!(P!==void 0&&P.items[p]!==void 0))return!1;let d=L,I=Array.from(q.keys()).filter((X)=>X>=d).sort((X,V)=>X-V),F=[];for(let X of I){let V=q.get(X),H=X*Q;for(let E=0;E<Q;E++){if(V.items[E]===void 0)continue;let W=H+E;if(W<=T)continue;F.push({oldIndex:W,item:V.items[E]})}}if(P.items[p]=void 0,P.count--,_--,P.count===0)q.delete(L);for(let{oldIndex:X}of F){let V=Z(X),H=q.get(V);if(!H)continue;let E=N(X);if(H.items[E]!==void 0){if(H.items[E]=void 0,H.count--,_--,H.count===0)q.delete(V)}}for(let{oldIndex:X,item:V}of F){let H=X-1,E=Z(H),W=U(E),D=N(H);W.items[D]=V,W.count++,_++}return B--,!0},y=(T,L)=>{let P=[];for(let p=T;p<=L&&p<B;p++)P.push(k(p));return P},g=(T,L)=>{for(let P=T;P<=L&&P<B;P++)if(!v(P))return!1;return!0},a=()=>{let T=[],L=null,P=Array.from(q.keys()).sort((p,r)=>p-r);for(let p of P){let r=q.get(p);if(!r)continue;let d=p*Q;for(let I=0;I<Q;I++){let F=d+I;if(F>=B)break;if(r.items[I]!==void 0)if(L===null)L={start:F,end:F};else if(F===L.end+1)L.end=F;else T.push(L),L={start:F,end:F};else if(L!==null)T.push(L),L=null}}if(L!==null)T.push(L);return T},m=(T,L)=>{let P=[],p=null;for(let r=T;r<=L&&r<B;r++)if(!v(r))if(p===null)p={start:r,end:r};else p.end=r;else if(p!==null)P.push(p),p=null;if(p!==null)P.push(p);return P},s=(T)=>{return q.has(T)},$=(T)=>{let L=q.get(T);if(L)L.lastAccess=Date.now()},o=(T,L)=>{if(T>L||q.size===0)return;let P=Date.now(),p=Z(Math.max(0,T)),r=Z(Math.min(B-1,L));for(let d=p;d<=r;d++){let I=q.get(d);if(I)I.lastAccess=P}},J0=(T,L)=>{if(_<=j)return 0;let P=Math.max(0,T-Y),p=Math.min(B-1,L+Y),r=Z(P),d=Z(p),I=0,F=[];for(let[X,V]of q)if(X<r||X>d)I+=V.count,F.push(X),_-=V.count,q.delete(X);if(I>0&&K)K(I,F);return I},i=()=>{if(_<=j)return 0;let T=Array.from(q.entries()).sort(([,p],[,r])=>p.lastAccess-r.lastAccess),L=0,P=[];for(let[p,r]of T){if(_<=j)break;L+=r.count,_-=r.count,P.push(p),q.delete(p)}if(L>0&&K)K(L,P);return L},w=()=>{return{totalItems:B,cachedItems:_,cachedChunks:q.size,chunkSize:Q,maxCachedItems:j,memoryEfficiency:B>0?1-_/B:1}},S=()=>_,b=()=>{q.clear(),_=0};return{chunkSize:Q,maxCachedItems:j,getTotal:R,setTotal:G,get:k,has:v,set:z,setRange:M,delete:C,getRange:y,isRangeLoaded:g,getLoadedRanges:a,findUnloadedRanges:m,getChunkIndex:Z,isChunkLoaded:s,touchChunk:$,touchChunksForRange:o,evictDistant:J0,evictToLimit:i,getStats:w,getCachedCount:S,clear:b,reset:()=>{b(),B=0}}},_4=(J)=>{if(J.length===0)return[];let Q=[...J].sort((Y,K)=>Y.start-K.start),j=[{...Q[0]}];for(let Y=1;Y<Q.length;Y++){let K=Q[Y],q=j[j.length-1];if(K.start<=q.end+1)q.end=Math.max(q.end,K.end);else j.push({...K})}return j},P1=(J,Q,j)=>{let Y=Math.floor(J.start/j)*j,K=Math.ceil((J.end+1)/j)*j-1,q={start:Y,end:K};if(Q.length===0)return[q];let B=[],_=_4(Q),U=q.start;for(let Z of _){if(Z.end<U)continue;if(Z.start>q.end)break;if(Z.start>U)B.push({start:U,end:Math.min(Z.start-1,q.end)});if(U=Z.end+1,U>q.end)break}if(U<=q.end)B.push({start:U,end:q.end});return B};var w1=(J={})=>{let{maskCharacter:Q=O1,maxSampleSize:j=E1}=J,Y=[],K=!1,q=(N)=>{if(K||N.length===0)return;let R=Math.min(N.length,j);for(let G=0;G<R;G++){let k=N[G];if(!k||typeof k!=="object")continue;let v={};for(let[z,M]of Object.entries(k)){if(z.startsWith("_")||z==="id")continue;v[z]=String(M??"").length}if(Object.keys(v).length>0)Y.push(v)}K=!0},B=()=>K,_=(N)=>{let R={id:`${$0}${N}`,[LJ]:!0,_index:N};if(Y.length===0)return R.label=Q.repeat(12),R;let G=Y[N%Y.length];for(let[k,v]of Object.entries(G))R[k]=Q.repeat(Math.max(1,v));return R};return{analyzeStructure:q,hasAnalyzedStructure:B,generate:_,generateRange:(N,R)=>{let G=[];for(let k=N;k<=R;k++)G.push(_(k));return G},clear:()=>{Y=[],K=!1}}},ZJ=(J)=>{if(!J||typeof J!=="object")return!1;return J[LJ]===!0};var D4=50,R1=(J={})=>{let{adapter:Q,initialItems:j,initialTotal:Y,storage:K,placeholder:q,pageSize:B=D4,onStateChange:_,onItemsLoaded:U,onItemsEvicted:Z}=J,N=y1({...K,onEvict:(f,u)=>{Z?.(f),m()}}),R=null,G=()=>{if(!R)R=w1(q);return R},k=new Map,v=!1,z,M=!0,C,y=[],g=0,a=new Map,m=()=>{_?.(x())},s=()=>{k.clear();let f=N.getLoadedRanges();for(let u of f)for(let e=u.start;e<=u.end;e++){let Y0=N.get(e);if(Y0&&!ZJ(Y0))k.set(Y0.id,e)}},$=(f,u)=>{if(!ZJ(u))k.set(u.id,f)},o=(f)=>{k.delete(f)},J0=(f,u)=>{return`${f}-${u}`},i=()=>N.getTotal(),w=()=>N.getCachedCount(),S=()=>v,b=()=>M,x=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:v,pendingRanges:y,error:z,hasMore:M,cursor:C}),T=()=>N,L=()=>G(),P=(f)=>{let u=N.get(f);if(u!==void 0)return u;if(f>=0&&f<N.getTotal())return G().generate(f);return},p=(f)=>{let u=k.get(f);if(u===void 0)return;return N.get(u)},r=(f)=>{return k.get(f)??-1},d=(f)=>{let u=N.get(f);return u!==void 0&&!ZJ(u)},I=(f,u)=>{let e=[],Y0=N.getTotal(),X0=0,q0=0;N.touchChunksForRange(f,Math.min(u,Y0-1));for(let B0=f;B0<=u&&B0<Y0;B0++){let Z0=N.get(B0);if(Z0!==void 0)e.push(Z0),X0++;else e.push(G().generate(B0)),q0++}return e},F=(f)=>{N.setTotal(f),M=N.getCachedCount()<f,m()},X=(f,u=0,e)=>{if(Q&&f.length>0){let Y0=G();if(!Y0.hasAnalyzedStructure())Y0.analyzeStructure(f)}for(let Y0=0;Y0<f.length;Y0++){let X0=f[Y0];if(X0!==void 0){let q0=u+Y0;N.set(q0,X0),$(q0,X0)}}if(e!==void 0)N.setTotal(e);else if(u+f.length>N.getTotal())N.setTotal(u+f.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)M=!1;m(),U?.(f,u,N.getTotal())},V=(f,u)=>{let e=N.get(f);if(!e)return!1;let Y0=e.id,X0={...e,...u};if(N.set(f,X0),u.id!==void 0&&u.id!==Y0)o(Y0);return $(f,X0),m(),!0},H=(f)=>{let u=k.get(f);if(u===void 0)return!1;if(!N.delete(u))return!1;return s(),a.clear(),m(),!0},E=async(f,u)=>{if(!Q)return;let e=J0(f,u);if(a.has(e))return;let Y0=N.getLoadedRanges(),X0=P1({start:f,end:u},Y0,N.chunkSize);if(X0.length===0)return;let q0=N.chunkSize,B0=[];for(let K0 of X0){let W0=Math.floor(K0.start/q0),D0=Math.floor(K0.end/q0);for(let j0=W0;j0<=D0;j0++){let _0=j0*q0,V0=_0+q0-1,M0=J0(_0,V0);if(!B0.some((E0)=>E0.start===_0)&&!a.has(M0))B0.push({start:_0,end:V0})}}let Z0=[];for(let K0 of X0){let W0=Math.floor(K0.start/q0),D0=Math.floor(K0.end/q0);for(let j0=W0;j0<=D0;j0++){let _0=j0*q0,V0=_0+q0-1,M0=J0(_0,V0);if(a.has(M0)){let E0=a.get(M0);if(!Z0.includes(E0))Z0.push(E0)}}}for(let K0 of B0){let W0=J0(K0.start,K0.end),D0=(async()=>{y.push(K0),v=!0,z=void 0,m();try{let j0=K0.end-K0.start+1,_0={offset:K0.start,limit:j0,cursor:void 0},V0=await Q.read(_0);if(X(V0.items,K0.start,V0.total),V0.cursor)C=V0.cursor;let M0=K0.start+V0.items.length;if(M0>=g){if(g=M0,V0.hasMore!==void 0)M=V0.hasMore;else if(V0.total!==void 0)M=M0<V0.total}}catch(j0){z=j0 instanceof Error?j0:Error(String(j0))}finally{a.delete(W0),y=y.filter((j0)=>j0.start!==K0.start||j0.end!==K0.end),v=a.size>0,m()}})();a.set(W0,D0),Z0.push(D0)}await Promise.all(Z0)},W=async(f,u)=>{if(N.isRangeLoaded(f,u))return;await E(f,u)},D=async()=>{if(!Q)return;await E(0,B-1)},h=async()=>{if(!Q||v||!M)return!1;let f=N.getCachedCount(),u=N.getTotal(),e=f,Y0=Math.min(e+B-1,u>0?u-1:e+B-1);if(e>=u&&u>0)return M=!1,!1;return await E(e,Y0),N.getCachedCount()>f},O=async()=>{if(N.clear(),N.setTotal(0),k.clear(),R)R.clear();a.clear(),y=[],v=!1,C=void 0,M=!0,g=0,z=void 0,m()},A=(f,u)=>{if(N.evictDistant(f,u)>0)s()},l=()=>{N.clear(),k.clear(),C=void 0,z=void 0,y=[],v=!1,m()},n=()=>{if(N.reset(),k.clear(),R)R.clear();C=void 0,M=!0,g=0,z=void 0,y=[],v=!1,m()};if(j&&j.length>0)X(j,0,Y??j.length);else if(Y!==void 0)N.setTotal(Y),m();return{getState:x,getTotal:i,getCached:w,getIsLoading:S,getHasMore:b,getStorage:T,getPlaceholders:L,getItem:P,getItemById:p,getIndexById:r,isItemLoaded:d,getItemsInRange:I,setTotal:F,setItems:X,updateItem:V,removeItem:H,loadRange:E,ensureRange:W,loadInitial:D,loadMore:h,reload:O,evictDistant:A,clear:l,reset:n}};var zJ=(J)=>{let{adapter:Q,loading:j,storage:Y,total:K,autoLoad:q=!0}=J,B=j?.cancelThreshold??G1,_=j?.preloadThreshold??M1,U=j?.preloadAhead??D1;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(Z){let{emitter:N}=Z,R=Z.config.reverse,G=Z.methods.get("_getGridLayout"),k=(w)=>{if(G){let S=G();if(S){let b=Z.dataManager.getTotal();return S.getItemRange(w.start,w.end,b)}}return w},v=R1({adapter:Q,...K!==void 0&&{initialTotal:K},pageSize:Y?.chunkSize??u0,...Y&&{storage:{...Y.chunkSize!==void 0&&{chunkSize:Y.chunkSize},...Y.maxCachedItems!==void 0&&{maxCachedItems:Y.maxCachedItems}}},onStateChange:()=>{if(Z.state.isInitialized){let w=Z.getVirtualTotal();Z.sizeCache.rebuild(w),Z.updateCompressionMode();let S=Z.getCachedCompression();Z.state.viewportState.totalSize=S.virtualSize,Z.state.viewportState.actualSize=S.actualSize,Z.state.viewportState.isCompressed=S.isCompressed,Z.state.viewportState.compressionRatio=S.ratio,Z.updateContentSize(S.virtualSize),Z.renderIfNeeded()}},onItemsLoaded:(w,S,b)=>{if(Z.state.isInitialized)Z.forceRender(),N.emit("load:end",{items:w,total:b,offset:S})}});Z.replaceDataManager(v);let z=null,M=null,C=0,y=!1,g=null,a=120,m=(w=!1)=>{if(y=!1,M=null,w)z=null;if(g!==null)clearTimeout(g),g=null},s=()=>{if(!M)return;M=null;let{renderRange:w}=Z.state.viewportState;if(w.end<w.start)return;z=null;let S=k(w);Z.dataManager.ensureRange(S.start,S.end).catch((b)=>{N.emit("error",{error:b,context:"ensureRange"})})};Z.afterScroll.push((w,S)=>{if(Z.state.isDestroyed)return;let b=Z.scrollController.getVelocity(),T=Z.scrollController.isTracking()&&b<=B;if(C>B&&b<=B)y=!0;else if(y&&b>B)m();if(y&&b<0.5)m(!0);if(C=b,(Z.scrollController.isAtTop()||Z.scrollController.isAtBottom())&&(y||M))m(!0),T=!0;let P=y&&b>0.5;if(T&&!Z.dataManager.getIsLoading()&&Z.dataManager.getHasMore()){if(R){if(w<AJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:u0}),Z.dataManager.loadMore().catch((d)=>{N.emit("error",{error:d,context:"loadMore"})})}else if(Z.state.viewportState.totalSize-w-Z.state.viewportState.containerSize<AJ)N.emit("load:start",{offset:Z.dataManager.getCached(),limit:u0}),Z.dataManager.loadMore().catch((I)=>{N.emit("error",{error:I,context:"loadMore"})})}let{renderRange:p}=Z.state.viewportState;if(!z||p.start!==z.start||p.end!==z.end){if(z={start:p.start,end:p.end},T&&!P){if(M=null,g!==null)clearTimeout(g),g=null;let d=k(p),I=d.start,F=d.end,X=G?Z.dataManager.getTotal():Z.getVirtualTotal();if(b>_)if(S==="down")F=Math.min(d.end+U,X-1);else I=Math.max(d.start-U,0);Z.dataManager.ensureRange(I,F).catch((V)=>{N.emit("error",{error:V,context:"ensureRange"})})}else if(M={start:p.start,end:p.end},P){if(g!==null)clearTimeout(g);g=setTimeout(()=>{g=null,s(),m()},a)}}});let $=200,o=null;Z.afterScroll.push((w,S)=>{if(o!==null)clearTimeout(o);o=setTimeout(()=>{o=null,s(),m()},$)}),Z.destroyHandlers.push(()=>{if(o!==null)clearTimeout(o),o=null;m()});let J0=()=>{if(Z.state.isDestroyed)return;z=null;let{renderRange:w}=Z.state.viewportState;if(w.end>0){let S=k(w);Z.dataManager.ensureRange(S.start,S.end).catch((b)=>{N.emit("error",{error:b,context:"ensureRange"})})}s()};window.addEventListener("online",J0),Z.destroyHandlers.push(()=>{window.removeEventListener("online",J0)}),N.on("load:start",()=>{Z.dom.root.setAttribute("aria-busy","true")}),N.on("load:end",()=>{Z.dom.root.removeAttribute("aria-busy")}),Z.methods.set("loadVisibleRange",async()=>{z=null,M=null,Z.forceRender();let{renderRange:w}=Z.state.viewportState;if(w.end>0){let S=k(w);N.emit("load:start",{offset:S.start,limit:S.end-S.start+1}),await Z.dataManager.ensureRange(S.start,S.end)}}),Z.methods.set("reload",async(w)=>{z=null,M=null;let S=w?.snapshot,b=S!=null&&(S.total??0)>0&&S.index>0,x=b||w?.skipInitialLoad===!0;if(Z.invalidateRendered(),await Z.dataManager.reload(),!b)Z.scrollController.scrollTo(0);if(!x){N.emit("load:start",{offset:0,limit:u0}),await Z.dataManager.loadInitial(),Z.forceRender();let{renderRange:T}=Z.state.viewportState;if(T.end>0){let L=k(T);await Z.dataManager.ensureRange(L.start,L.end)}}if(b){let T=Z.methods.get("restoreScroll");if(T)T(S)}});let i=!1;if(Z.methods.set("_cancelAutoLoad",()=>{i=!0}),q)queueMicrotask(()=>{if(i)return;N.emit("load:start",{offset:0,limit:u0}),Z.dataManager.loadInitial().catch((w)=>{N.emit("error",{error:w,context:"loadInitial"})})});else if(K!==void 0)Z.dataManager.setTotal(K)}}};var CJ=()=>{let J=null;return{name:"withPage",priority:5,setup(Q){let{dom:j,state:Y,config:K,emitter:q}=Q;if(j.root.style.overflow="visible",j.root.style.height="auto",K.horizontal)j.viewport.style.overflowX="visible",j.viewport.style.overflowY="visible";else j.viewport.style.overflow="visible";j.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),Q.disableViewportResize(),Q.disableWheelHandler(),Q.setScrollTarget(window),Q.setScrollFns(()=>{let Z=j.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-Z.left);else return Math.max(0,-Z.top)},(Z)=>{let N=j.viewport.getBoundingClientRect();if(K.horizontal){let R=N.left+window.scrollX;window.scrollTo(R+Z,window.scrollY)}else{let R=N.top+window.scrollY;window.scrollTo(window.scrollX,R+Z)}}),Q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),Y.viewportState.containerSize=window.innerHeight;let{innerHeight:B,innerWidth:_}=window,U=()=>{let{innerWidth:Z,innerHeight:N}=window,R=K.horizontal?Z:N,G=K.horizontal?_:B;if(Math.abs(R-G)<=1)return;B=N,_=Z,Y.viewportState.containerSize=N,q.emit("resize",{width:Z,height:N});for(let k=0;k<Q.resizeHandlers.length;k++)Q.resizeHandlers[k](Z,N);Q.renderIfNeeded()};window.addEventListener("resize",U,{passive:!0}),J=()=>{window.removeEventListener("resize",U)},Q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var vJ=(J,Q)=>{let j=0,Y=J.length-1;while(j<Y){let K=j+Y+1>>>1;if(J[K].headerLayoutIndex<=Q)j=K;else Y=K-1}return j},z1=(J,Q)=>{let j=0,Y=J.length-1;while(j<Y){let K=j+Y+1>>>1;if(J[K].firstDataIndex<=Q)j=K;else Y=K-1}return j},C1=(J,Q)=>{if(J===0)return[];let j=[],Y=Q(0),K=0,q=0;for(let B=1;B<J;B++){let _=Q(B);if(_!==Y){let U=B-K;j.push({key:Y,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:K,count:U}),q=q+1+U,Y=_,K=B}}return j.push({key:Y,groupIndex:j.length,headerLayoutIndex:q,firstDataIndex:K,count:J-K}),j},SJ=(J,Q)=>{if(J.length===0||Q.length===0)return[];let j=J.length+Q.length,Y=Array(j),K=0;for(let q of Q){Y[K]={id:`__group_header_${q.groupIndex}`,__groupHeader:!0,groupKey:q.key,groupIndex:q.groupIndex},K++;for(let B=0;B<q.count;B++)Y[K]=J[q.firstDataIndex+B],K++}return Y},fJ=(J,Q,j=!1)=>{let Y=typeof Q==="number"?(K)=>Q:Q;return(K)=>{let q=J.getEntry(K);if(q.type==="header"){if(j&&q.group.groupIndex===0)return 0;return J.getHeaderHeight(q.group.groupIndex)}return Y(q.dataIndex)}},v1=(J,Q)=>{let j=C1(J,Q.getGroupForIndex),Y=J+j.length,K=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return Y},get groupCount(){return j.length},get groups(){return j},getEntry:(G)=>{if(j.length===0)return{type:"item",dataIndex:G,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let k=vJ(j,G),v=j[k];if(G===v.headerLayoutIndex)return{type:"header",group:v};let z=G-v.headerLayoutIndex-1;return{type:"item",dataIndex:v.firstDataIndex+z,group:v}},layoutToDataIndex:(G)=>{if(j.length===0)return G;let k=vJ(j,G),v=j[k];if(G===v.headerLayoutIndex)return-1;let z=G-v.headerLayoutIndex-1;return v.firstDataIndex+z},dataToLayoutIndex:(G)=>{if(j.length===0)return G;let k=z1(j,G),v=j[k],z=G-v.firstDataIndex;return v.headerLayoutIndex+1+z},getGroupAtLayoutIndex:(G)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=vJ(j,G);return j[k]},getGroupAtDataIndex:(G)=>{if(j.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let k=z1(j,G);return j[k]},getHeaderHeight:typeof K==="number"?(G)=>K:(G)=>{let k=j[G];if(!k)return 0;return K(k.key,G)},rebuild:(G)=>{j=C1(G,Q.getGroupForIndex),Y=G+j.length}}};var S1=(J,Q,j,Y,K,q=!1,B=0)=>{let _=q?"width":"height",U=q?"height":"width",Z=q?"X":"Y",N=(V,H)=>{V.style[_]=`${H}px`},R=document.createElement("div");R.className=`${K}-sticky-header`,R.setAttribute("role","presentation"),R.setAttribute("aria-hidden","true"),R.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${B||0}px`:`top:${B||0}px`);let G=()=>{let V=document.createElement("div");return V.className="sticky-group",V.style.position="absolute",V.style.willChange="transform",V.style[U]="100%",V},k=G(),v=G();R.append(k,v),J.insertBefore(R,J.firstChild);let z=k,M=v,C=Q.groups,y=[],g=[],a=0,m=()=>{C=Q.groups,a=C.length,y=Array(a),g=Array(a);for(let V=0;V<a;V++)y[V]=j.getOffset(C[V].headerLayoutIndex),g[V]=Q.getHeaderHeight(V)};m();let s=-1,$=0,o=-1,J0=!1,i=0,w=!1,S=(V,H)=>{Y(V,H);let E=g[H];return N(V,E),E},b=(V)=>{V.replaceChildren(),V.style.transform=""},x=(V)=>{if(V===s)return;if(s=V,$=0,V<0||V>=a){b(z);return}$=S(z,V),N(R,$),z.style.transform=""},T=(V)=>{if(V===i)return;i=V;let H=Math.round(V);z.style.transform=`translate${Z}(${H}px)`,M.style.transform=`translate${Z}(${H+$}px)`},L=()=>{i=0,z.style.transform="",M.style.transform=""},P=()=>{if(!w)return;let V=z;z=M,M=V,s=o,$=s>=0?g[s]:0,N(R,$),b(M),o=-1,w=!1,L()},p=()=>{if(!w)return;b(M),o=-1,w=!1,L()},r=()=>{if(J0)return;J0=!0,R.style.display=""},d=()=>{if(!J0)return;J0=!1,R.style.display="none",b(z),s=-1,$=0,p()},I=(V)=>{if(a===0){d();return}if(V<y[0]){d();return}let H=0,E=a-1;while(H<E){let D=H+E+1>>>1;if(y[D]+g[D]<=V)H=D;else E=D-1}if(!J0)r();x(H);let W=H+1;if(W<a){let D=y[W]-V;if(D<=0&&D>-$){if(o!==W||!w)o=W,S(M,W),w=!0;T(D)}else if(D<=-$){if(w)P()}else if(w)p()}else if(w)p()},F=()=>{m();let V=s;if(s=-1,$=0,V>=0)x(V)},X=()=>{R.remove(),s=-1,$=0,o=-1,J0=!1,w=!1};return R.style.display="none",{update:I,refresh:F,show:r,hide:d,destroy:X}};var w0=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var f1=(J,Q,j,Y,K,q)=>{if(Y===0)return 0;let B=Math.max(0,Math.min(J,Y-1)),_=Q.getOffset(B),U=Q.getSize(B),Z=Q.getTotalSize(),N=Math.max(0,Z-j),R;switch(q){case"center":R=_-j/2+U/2;break;case"end":R=_-j+U;break;case"start":default:R=_;break}return Math.max(0,Math.min(R,N))};var i0=(J,Q,j,Y,K="start",q,B=f1)=>{return B(J,Q,j,Y,q,K)};var G4=(J,Q)=>{if(J.header){let j=Q?J.header.width??J.header.height:J.header.height??J.header.width;return{...J,header:{...J.header,height:j}}}if(J.headerHeight!=null&&J.headerTemplate)return{...J,header:{height:J.headerHeight,template:J.headerTemplate}};return J},IJ=(J)=>{let Q=J.header,j=Q?Q.height??Q.width:J.headerHeight,Y=Q?.template??J.headerTemplate;if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(j==null||j<=0)throw Error("[vlist/builder] withGroups: header.height must be a positive number");if(!Y)throw Error("[vlist/builder] withGroups: header.template is required");let K=null,q=null,B=[],_=[];return{name:"withGroups",priority:10,setup(U){let{dom:Z,config:N,rawConfig:R}=U,{classPrefix:G}=N,k=G4(J,N.horizontal),z=R.item.height;B=R.items?[...R.items]:[];let M=B.length,C={getGroupForIndex:k.getGroupForIndex,header:{height:k.header.height,template:k.header.template},sticky:k.sticky??!1};K=v1(M,C),_=SJ(B,K.groups);let y=k.sticky!==!1,g=fJ(K,z,y);U.setSizeConfig(g),U.rebuildSizeCache(_.length),U.dataManager.setItems(_,0,_.length);let a=R.item.template,{template:m}=k.header,s=(d,I,F)=>{if(w0(d))return m(d.groupKey,d.groupIndex);return a(d,I,F)},$=U.methods.get("_getGridLayout"),o=U.methods.get("_replaceGridRenderer"),J0=U.methods.get("_updateGridLayoutForGroups"),i=U.methods.get("_createGridRenderer"),w=U.methods.get("_getTableLayout"),S=U.methods.get("_updateTableForGroups"),b=U.methods.get("_getTableHeaderHeight");if($&&o&&i){if(J0)J0((F)=>{let X=_[F];return!!(X&&w0(X))});let d=$(),I=i(Z.items,s,U.sizeCache,d,G,U.getContainerWidth(),()=>U.dataManager.getTotal(),N.ariaIdPrefix);o(I)}else if(w&&S)S((d)=>w0(d),k.header.template);else U.replaceTemplate(s);let x=b?b():0;if(Z.root.classList.add(`${G}--grouped`),k.sticky!==!1)if(U.methods.set("_getStickyHeaderHeight",()=>k.header.height),!N.horizontal)Z.viewport.style.height=`calc(100% - ${k.header.height}px)`;else Z.viewport.style.width=`calc(100% - ${k.header.height}px)`;if(k.sticky!==!1){let d=k.header.template,I=(X,V)=>{let H=K.groups[V];if(!H)return;let E=d(H.key,H.groupIndex);if(typeof E==="string")X.innerHTML=E;else X.replaceChildren(E)};q=S1(Z.root,K,U.sizeCache,I,G,N.horizontal,x);let F=q;U.afterScroll.push((X,V)=>{F.update(X)}),q.update(U.scrollController.getScrollTop())}let T=R.item?.striped,L=()=>{if(T!=="data"&&T!=="even"&&T!=="odd")return;let d=new Int32Array(_.length),I=T==="odd"?1:0,F=0;for(let X=0;X<_.length;X++)if(w0(_[X])){if(d[X]=-1,T==="even"||T==="odd")F=0}else d[X]=F+++I;U.setStripeIndexFn((X)=>{if(X<0||X>=d.length)return X;return d[X]})};L();let P=()=>{if(!K)return;K.rebuild(B.length),_=SJ(B,K.groups);let d=fJ(K,z,y);if(U.setSizeConfig(d),U.rebuildSizeCache(_.length),U.dataManager.setItems(_,0,_.length),L(),q)q.refresh()};U.methods.set("setItems",(d)=>{B=d.slice(),P()}),U.methods.set("appendItems",(d)=>{B.push(...d),P()}),U.methods.set("prependItems",(d)=>{B.unshift(...d),P()}),U.methods.set("removeItem",(d)=>{B=B.filter((I)=>I.id!==d),P()});let{animateScroll:p,cancelScroll:r}=c0(U.scrollController,U.renderIfNeeded);U.methods.set("scrollToIndex",(d,I)=>{let F=K.dataToLayoutIndex(d),{align:X,behavior:V,duration:H}=P0(I),E=U.dataManager.getTotal(),W=U.adjustScrollPosition(i0(F,U.sizeCache,U.state.viewportState.containerSize,E,X,U.getCachedCompression()));if(V==="smooth")p(U.scrollController.getScrollTop(),W,H);else r(),U.scrollController.scrollTo(W)}),U.methods.set("_getItems",()=>B),U.methods.set("_getTotal",()=>B.length),U.methods.set("_isGroupHeader",(d)=>{let I=_[d];return!!(I&&w0(I))}),U.destroyHandlers.push(()=>{if(r(),q)q.destroy(),q=null;Z.root.classList.remove(`${G}--grouped`)})},destroy(){if(q)q.destroy(),q=null}}};var I1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),j=J.gap??0,Y=J.isHeaderFn,K={row:0,col:0},q=(v)=>{if(v<=0)return 0;if(!Y)return Math.ceil(v/Q);let z=0,M=0,C=0;for(let y=0;y<v;y++)if(Y(y)){if(C++,M>0)z++,M=0;z++,M=0}else if(M++,M>=Q)z++,M=0;if(M>0)z++;return z},B=(v)=>{return K.row=_(v),K.col=U(v),K},_=(v)=>{if(!Y)return Math.floor(v/Q);let z=0,M=0;for(let C=0;C<=v;C++)if(Y(C)){if(M>0)z++,M=0;if(C===v)return z;z++,M=0}else{if(C===v)return z;if(M++,M>=Q)z++,M=0}return console.warn(`⚠️ getRow(${v}) fell through - returning ${z}`),z},U=(v)=>{if(!Y)return v%Q;if(Y(v))return 0;let z=0;for(let M=0;M<=v;M++)if(Y(M))z=0;else{if(M===v)return z;if(z++,z>=Q)z=0}return z},Z=(v,z,M)=>{if(M<=0)return{start:0,end:-1};if(!Y){let m=Math.max(0,v*Q),s=Math.min(M-1,(z+1)*Q-1);return{start:m,end:s}}let C=-1,y=-1,g=0,a=0;for(let m=0;m<M;m++){if(Y(m)){if(a>0)g++,a=0;if(g>=v&&g<=z){if(C===-1)C=m;y=m}g++,a=0}else{if(g>=v&&g<=z){if(C===-1)C=m;y=m}if(a++,a>=Q)g++,a=0}if(g>z&&a===0)break}if(C===-1)return{start:0,end:-1};return{start:C,end:y}},N=(v,z,M)=>{if(z<0||z>=Q)return-1;let C=v*Q+z;if(C<0||C>=M)return-1;return C},R=(v)=>{let z=(Q-1)*j;return Math.max(0,(v-z)/Q)};return{get columns(){return Q},get gap(){return j},update:(v)=>{if(v.columns!==void 0)Q=Math.max(1,Math.floor(v.columns));if(v.gap!==void 0)j=v.gap;if(v.isHeaderFn!==void 0)Y=v.isHeaderFn},getTotalRows:q,getPosition:B,getRow:_,getCol:U,getItemRange:Z,getItemIndex:N,getColumnWidth:R,getColumnOffset:(v,z)=>{let M=R(z);return v*(M+j)}}};var M4=(J=200)=>{let Q=[];return{acquire:()=>{let q=Q.pop();if(q)return q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(q)=>{if(q.remove(),Q.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-row"),q.removeAttribute("data-col"),Q.push(q)},clear:()=>{Q.length=0}}},O4=1,hJ=(J,Q,j,Y,K,q,B,_,U=!1)=>{let Z=M4(),N=new Map,R=q,G=!1,k=0,v="",z=-1,M={selected:!1,focused:!1},C=(X,V)=>{return M.selected=X,M.focused=V,M},y=`${K}-item ${K}-grid-item`,g=`${K}-item--selected`,a=`${K}-item--focused`,m=`${K}-item--placeholder`,s=`${K}-item--replaced`,$=(X,V)=>{if(typeof V==="string")X.innerHTML=V;else X.replaceChildren(V)},o=(X,V,H)=>{X.classList.toggle(g,V),X.classList.toggle(a,H)},J0=(X,V)=>{let H=Y.getRow(X);if(V?.compression?.isCompressed)return l0(H,V.scrollPosition,j,V.totalItems,V.containerSize,V.compression,V.rangeStart);return j.getOffset(H)},i=(X,V)=>{let H=G&&Y.getCol(X)===0,E=H?0:Y.getCol(X),W=H?0:Y.getColumnOffset(E,R),D;if(G){let h=Y.getRow(X),O=0,A=new Set;for(let l=0;l<X;l++){let n=Y.getRow(l);if(n<h&&!A.has(n)){let f=j.getSize(l);O+=f,A.add(n)}}D=O}else D=J0(X,V);if(U)return`translate(${Math.round(D)}px, ${Math.round(W)}px)`;return`translate(${Math.round(W)}px, ${Math.round(D)}px)`},w=(X,V)=>{X.style.transform=V},S=(X,V)=>{let H=X.dataset.id?.startsWith("__group_header"),E=H?R:Y.getColumnWidth(R),W;if(G||H)W=j.getSize(V)-Y.gap;else{let D=Y.getRow(V);W=j.getSize(D)-Y.gap}if(U)X.style.width=`${W}px`,X.style.height=`${E}px`;else X.style.width=`${E}px`,X.style.height=`${W}px`},b=(X,V,H,E,W)=>{let D=Z.acquire(),h=C(H,E);if(D.className=y,D.dataset.index=String(X),D.dataset.id=String(V.id),D.dataset.row=String(Y.getRow(X)),D.dataset.col=String(Y.getCol(X)),D.ariaSelected=String(H),_)D.id=`${_}-item-${X}`;if(B){let l=B();if(l!==z)z=l,v=String(l);D.setAttribute("aria-setsize",v),D.setAttribute("aria-posinset",String(X+1))}S(D,X);let O=Q(V,X,h);if($(D,O),String(V.id).startsWith($0))D.classList.add(m);return o(D,H,E),w(D,W),{element:D,lastItemId:V.id,lastSelected:H,lastFocused:E,lastTransform:W,lastSeenFrame:k}},x=(X,V,H,E,W)=>{if(k++,V.start===0&&X.length>0)G=w0(X[0]);for(let[O,A]of N)if(O>=V.start&&O<=V.end)A.lastSeenFrame=k;else if(k-A.lastSeenFrame>O4)Z.release(A.element),N.delete(O);let D=!1;if(B){let O=B();if(O!==z)z=O,v=String(O),D=!0}let h=null;for(let O=V.start;O<=V.end;O++){let A=O-V.start,l=X[A];if(!l){console.warn(`⚠️ RENDER: Missing item at index ${O} (range: ${V.start}-${V.end}, items.length: ${X.length})`);continue}let n=H.has(l.id),f=O===E,u=N.get(O);if(u){let e=u.lastItemId!==l.id,Y0=u.lastSelected!==n,X0=u.lastFocused!==f;if(e){let B0=String(u.lastItemId),Z0=String(l.id),K0=B0.startsWith($0),W0=Z0.startsWith($0);if(!W0&&y0(H,O,l.id))n=!0;let D0=C(n,f),j0=Q(l,O,D0);if($(u.element,j0),u.element.dataset.id=Z0,u.element.dataset.row=String(Y.getRow(O)),u.element.dataset.col=String(Y.getCol(O)),S(u.element,O),u.element.classList.toggle(m,W0),K0&&!W0)u.element.classList.add(s),setTimeout(()=>u.element.classList.remove(s),300);u.lastItemId=l.id}if(e||Y0||X0)o(u.element,n,f),u.element.ariaSelected=String(n),u.lastSelected=n,u.lastFocused=f;let q0=i(O,W);if(u.lastTransform!==q0)w(u.element,q0),u.lastTransform=q0;if(D)u.element.setAttribute("aria-setsize",v)}else{if(y0(H,O,l.id))n=!0;let e=i(O,W),Y0=b(O,l,n,f,e);if(!h)h=document.createDocumentFragment();h.appendChild(Y0.element),N.set(O,Y0)}}if(h)J.appendChild(h)},T=(X)=>{for(let[V,H]of N){let E=i(V,X);if(H.lastTransform!==E)w(H.element,E),H.lastTransform=E}},L=(X,V,H,E)=>{let W=N.get(X);if(!W)return;let D=C(H,E),h=Q(V,X,D);$(W.element,h),o(W.element,H,E),W.element.dataset.id=String(V.id),W.element.ariaSelected=String(H),S(W.element,X),W.lastItemId=V.id,W.lastSelected=H,W.lastFocused=E},P=(X,V,H)=>{let E=N.get(X);if(!E)return;let W=E.lastSelected!==V,D=E.lastFocused!==H;if(W||D)o(E.element,V,H),E.lastSelected=V,E.lastFocused=H},p=(X)=>{return N.get(X)?.element},r=(X)=>{if(Math.abs(X-R)<1)return;R=X;for(let[V,H]of N){S(H.element,V);let E=i(V);w(H.element,E),H.lastTransform=E}},d=()=>{p0(J,N.keys(),(X)=>N.get(X)?.element)},I=()=>{for(let[,X]of N)Z.release(X.element);N.clear()};return{render:x,updatePositions:T,updateItem:L,updateItemClasses:P,getElement:p,sortDOM:d,updateContainerWidth:r,clear:I,destroy:()=>{I(),Z.clear()}}};var E4=new Set,pJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let Q=null,j=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(Y){let{dom:K,emitter:q,config:B,rawConfig:_}=Y,{classPrefix:U}=B;if(B.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let Z=B.horizontal,N=YJ(k0(_.padding),Z),R=()=>{return(Z?K.viewport.clientHeight:Y.getContainerWidth())-N},G=_.items?.some((I)=>I.__groupHeader===!0),k={columns:J.columns,gap:J.gap??0};if(G)k.isHeaderFn=(I)=>{let F=Y.dataManager.getItem(I);return!!(F&&F.__groupHeader===!0)};Q=I1(k);let v=Q.gap;Y.setVirtualTotalFn(()=>{let I=Y.dataManager.getTotal();return Q.getTotalRows(I)}),Y.setItemToScrollIndexFn((I)=>Math.floor(I/k.columns)),Y.methods.set("_getNavTotal",()=>Y.dataManager.getTotal()),Y.methods.set("_getNavDelta",()=>Z?{ud:1,lr:k.columns,cols:k.columns}:{ud:k.columns,lr:1,cols:k.columns});let z=_.item,M=B.horizontal?z.width:z.height,C={containerWidth:R(),columns:Q.columns,gap:Q.gap},y={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof M==="function")Y.setSizeConfig((I)=>{let F=C.containerWidth-2,X=(C.columns-1)*C.gap;return y.containerWidth=C.containerWidth,y.columns=C.columns,y.gap=C.gap,y.columnWidth=(F-X)/C.columns,y.row=Q.getRow(I),y.column=Q.getCol(I),y.totalRows=Q.getTotalRows(Y.dataManager.getTotal()),y.totalColumns=C.columns,M(I,y)+C.gap});else if(v>0)Y.setSizeConfig(M+v);if(Y.rebuildSizeCache(),v>0){let I=Y.sizeCache.getTotalSize;Y.sizeCache.getTotalSize=()=>{let F=I();return F>0?F-C.gap:0}}K.root.classList.add(`${U}--grid`);let g=R(),a=_.item.template,m=()=>{j=hJ(K.items,a,Y.sizeCache,Q,U,g,()=>Y.dataManager.getTotal(),B.ariaIdPrefix,B.horizontal),Y.replaceRenderer(j)};m(),Y.setUpdateItemClassesFn((I,F,X)=>{j?.updateItemClasses(I,F,X)}),Y.methods.set("_updateRenderedItem",(I,F,X,V)=>{j?.updateItem(I,F,X,V)}),Y.methods.set("_getGridLayout",()=>Q),Y.methods.set("_getGridConfig",()=>k),Y.methods.set("_replaceGridRenderer",(I)=>{j=I}),Y.methods.set("_createGridRenderer",hJ),Y.methods.set("_updateGridLayoutForGroups",(I)=>{Q.update({isHeaderFn:I});let F=Y.dataManager.getTotal(),X=0;for(let V=0;V<F;V++)if(Q.getCol(V)===0){let H=Y.sizeCache.getSize(V);X+=H}Y.sizeCache.getTotalSize=()=>X,Y.updateContentSize(X),m()}),Y.methods.set("updateGrid",(I)=>{if(I.columns!==void 0){if(!Number.isInteger(I.columns)||I.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");k.columns=I.columns}if(I.gap!==void 0){if(I.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");k.gap=I.gap}if(Q)Q.update(k);let F=R();if(C.containerWidth=F,C.columns=k.columns,C.gap=k.gap??0,j)j.updateContainerWidth(F);Y.rebuildSizeCache(),Y.updateContentSize(Y.sizeCache.getTotalSize()),Y.updateCompressionMode();for(let X=0;X<Y.contentSizeHandlers.length;X++)Y.contentSizeHandlers[X]();if(j)j.clear();Y.forceRender()});let s=null,$=null,o=!1,J0=()=>{if(o)return;o=!0,s=Y.methods.get("_getSelectedIds")??null,$=Y.methods.get("_getFocusedIndex")??null},i=-1,w=-1,S=!0,b=B.overscan,x={start:0,end:0},T={start:0,end:0},L=()=>{if(Y.state.isDestroyed)return;let I=Y.scrollController.getScrollTop(),F=Y.state.viewportState.containerSize;if(!S&&I===i&&F===w)return;i=I,w=F,S=!1;let X=Y.getVirtualTotal();if(X===0||F===0)x.start=0,x.end=0;else x.start=Math.max(0,Y.sizeCache.indexAtOffset(I)),x.end=Math.min(X-1,Math.max(0,Y.sizeCache.indexAtOffset(I+F-1)));T.start=Math.max(0,x.start-b),T.end=Math.min(X-1,x.end+b);let V=Y.state.viewportState;V.scrollPosition=I,V.visibleRange.start=x.start,V.visibleRange.end=x.end,V.renderRange.start=T.start,V.renderRange.end=T.end;let H=Y.state.lastRenderRange,E=V.isCompressed,W=Y.dataManager.getTotal(),D=Q.getItemRange(T.start,T.end,W),h=Y.dataManager.getItemsInRange(D.start,D.end),O=E?Y.getCompressionContext():void 0;J0();let A=s?s():E4,l=$?$():-1;if(j.render(h,D,A,l,O),H.start!==T.start||H.end!==T.end)H.start=T.start,H.end=T.end,q.emit("range:change",{range:{start:T.start,end:T.end}})},P=()=>{if(Y.state.isDestroyed)return;Y.state.lastRenderRange.start=-1,Y.state.lastRenderRange.end=-1,S=!0,L()};Y.setRenderFns(L,P);let p=typeof M==="function";Y.resizeHandlers.push((I,F)=>{let X=(Z?F:I)-N;if(Math.abs(X-C.containerWidth)<1)return;if(C.containerWidth=X,j)j.updateContainerWidth(X);if(p){Y.rebuildSizeCache(),Y.updateContentSize(Y.sizeCache.getTotalSize()),Y.updateCompressionMode();for(let V=0;V<Y.contentSizeHandlers.length;V++)Y.contentSizeHandlers[V]();if(j)j.clear();Y.forceRender()}});let{animateScroll:r,cancelScroll:d}=c0(Y.scrollController,Y.renderIfNeeded);if(Y.methods.set("cancelScroll",d),Y.methods.set("scrollToIndex",(I,F)=>{let X=Math.floor(I/J.columns),{align:V,behavior:H,duration:E}=P0(F),W=Y.dataManager.getState(),D=Q.getTotalRows(W.total),h=Math.max(0,Math.min(X,D-1)),O=Y.adjustScrollPosition(i0(h,Y.sizeCache,Y.state.viewportState.containerSize,D,V,Y.getCachedCompression()));if(H==="smooth")r(Y.scrollController.getScrollTop(),O,E);else d(),Y.scrollController.scrollTo(O)}),!Y.methods.has("_getTotal"))Y.methods.set("_getTotal",()=>Y.dataManager.getTotal());Y.idleHandlers.push(()=>{if(j)j.sortDOM()}),Y.destroyHandlers.push(()=>{if(d(),j)j.destroy(),j=null;K.root.classList.remove(`${U}--grid`)})},destroy(){if(j)j.destroy(),j=null}}};var h1=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),j=J.gap??0,Y=J.containerSize,K=0,q=[],B=()=>{let M=(Q-1)*j;K=Math.max(0,(Y-M)/Q),q=Array(Q);let C=K+j;for(let y=0;y<Q;y++)q[y]=y*C};B();let _=[],U=0,Z=[],N=(M)=>{let C=0,y=M[0];for(let g=1;g<M.length;g++){let a=M[g];if(a<y)y=a,C=g}return C},R=(M,C)=>{if(M<=0)return U=0,_=[],[];let y=Array(Q).fill(0),g=Array(Q);for(let s=0;s<Q;s++)g[s]=[];let a=Array(M);for(let s=0;s<M;s++){let $=N(y),o=C(s),J0=y[$];a[s]={index:s,x:q[$],y:J0,lane:$,size:o,crossSize:K},g[$].push(s),y[$]=J0+o+j}_=g;let m=0;for(let s=0;s<Q;s++){let $=y[s],o=$>0?$-j:0;if(o>m)m=o}return U=m,a},G=(M)=>{if(M.length===0)return U>0?U:0;if(U>0)return U;let C=Array(Q).fill(0);for(let g of M){let a=g.y+g.size,m=C[g.lane];if(a>m)C[g.lane]=a}let y=0;for(let g=0;g<Q;g++)if(C[g]>y)y=C[g];return y},k=(M,C,y)=>{if(M.length===0||y<=C)return Z.length=0,Z;if(_.length===0||_.length!==Q)return v(M,C,y);Z.length=0;for(let g=0;g<Q;g++){let a=_[g],m=a.length;if(m===0)continue;let s=0,$=m;while(s<$){let o=s+$>>>1,J0=M[a[o]];if(J0.y+J0.size<=C)s=o+1;else $=o}for(let o=s;o<m;o++){let J0=M[a[o]];if(J0.y>=y)break;Z.push(J0)}}return Z},v=(M,C,y)=>{let g=[];for(let a of M)if(a.y+a.size>C&&a.y<y)g.push(a);return g};return{get columns(){return Q},get gap(){return j},get containerSize(){return Y},update:(M)=>{let C=!1;if(M.columns!==void 0){let y=Math.max(1,Math.floor(M.columns));if(y!==Q)Q=y,C=!0}if(M.gap!==void 0&&M.gap!==j)j=M.gap,C=!0;if(M.containerSize!==void 0&&M.containerSize!==Y)Y=M.containerSize,C=!0;if(C)B()},calculateLayout:R,getTotalSize:G,getVisibleItems:k}};var A4=(J=200)=>{let Q=[];return{acquire:()=>{let q=Q.pop();if(q)return q;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(q)=>{if(q.remove(),Q.length<J)q.className="",q.textContent="",q.removeAttribute("style"),q.removeAttribute("data-index"),q.removeAttribute("data-id"),q.removeAttribute("data-lane"),Q.push(q)},clear:()=>{Q.length=0}}},L4=1,p1=(J,Q,j,Y=!1,K,q)=>{let B=A4(),_=new Map,U=new Set,Z=0,N="",R=-1,G={selected:!1,focused:!1},k=(w,S)=>{return G.selected=w,G.focused=S,G},v=`${j}-item ${j}-masonry-item`,z=`${j}-item--selected`,M=`${j}-item--focused`,C=(w,S)=>{if(typeof S==="string")w.innerHTML=S;else w.replaceChildren(S)},y=(w,S,b)=>{w.classList.toggle(z,S),w.classList.toggle(M,b)},g=(w,S)=>{if(Y)w.style.transform=`translate(${Math.round(S.y)}px, ${Math.round(S.x)}px)`;else w.style.transform=`translate(${Math.round(S.x)}px, ${Math.round(S.y)}px)`},a=(w,S)=>{if(Y)w.style.width=`${S.size}px`,w.style.height=`${S.crossSize}px`;else w.style.width=`${S.crossSize}px`,w.style.height=`${S.size}px`},m=(w,S,b,x,T)=>{let L=B.acquire(),P=k(x,T);if(L.className=v,L.dataset.index=String(w),L.dataset.id=String(S.id),L.dataset.lane=String(b.lane),L.ariaSelected=String(x),q)L.id=`${q}-item-${w}`;if(K){let r=K();if(r!==R)R=r,N=String(r);L.setAttribute("aria-setsize",N),L.setAttribute("aria-posinset",String(w+1))}a(L,b);let p=Q(S,w,P);return C(L,p),y(L,x,T),g(L,b),{element:L,lastItemId:S.id,lastSelected:x,lastFocused:T,lastY:b.y,lastX:b.x,lastSize:b.size,lastCrossSize:b.crossSize,lastSeenFrame:Z}},s=(w,S,b,x)=>{Z++,U.clear();for(let L=0;L<S.length;L++)U.add(S[L].index);for(let[L,P]of _)if(U.has(L))P.lastSeenFrame=Z;else if(Z-P.lastSeenFrame>L4)B.release(P.element),_.delete(L);let T=null;for(let L=0;L<S.length;L++){let P=S[L],p=P.index,r=w(p);if(!r)continue;let d=b.has(r.id),I=p===x,F=_.get(p);if(F){let X=F.lastItemId!==r.id,V=F.lastSelected!==d,H=F.lastFocused!==I,E=F.lastY!==P.y||F.lastX!==P.x,W=F.lastSize!==P.size||F.lastCrossSize!==P.crossSize;if(X){let D=k(d,I),h=Q(r,p,D);C(F.element,h),F.element.dataset.id=String(r.id),F.lastItemId=r.id}if(X||V||H)y(F.element,d,I),F.element.ariaSelected=String(d),F.lastSelected=d,F.lastFocused=I;if(W)a(F.element,P),F.lastSize=P.size,F.lastCrossSize=P.crossSize;if(E)g(F.element,P),F.lastY=P.y,F.lastX=P.x}else{let X=m(p,r,P,d,I);if(!T)T=document.createDocumentFragment();T.appendChild(X.element),_.set(p,X)}}if(T)J.appendChild(T)},$=()=>{for(let{element:w}of _.values())B.release(w);_.clear(),J.innerHTML=""};return{render:s,getElement:(w)=>_.get(w)?.element,updateItemClasses:(w,S,b)=>{let x=_.get(w);if(!x)return;let T=x.lastSelected!==S,L=x.lastFocused!==b;if(T||L)y(x.element,S,b),x.lastSelected=S,x.lastFocused=b},sortDOM:()=>{p0(J,_.keys(),(w)=>_.get(w)?.element)},clear:$,destroy:()=>{$(),B.clear()}}};var F4=new Set,T4=100,uJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let Q=null,j=null,Y=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(K){let{dom:q,emitter:B,config:_,rawConfig:U}=K,Z=_.classPrefix,N=_.horizontal;if(_.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");q.root.classList.add(`${Z}--masonry`);let R=k0(U.padding),G=YJ(R,N),k=h0(R,N),v=()=>{return(N?q.viewport.clientHeight:q.viewport.clientWidth)-G},z={columns:J.columns,gap:J.gap??0,containerSize:v()};Q=h1(z);let M=U.item,C=N&&U.item.width?U.item.width:M.height,y={containerWidth:0,columns:0,gap:0,columnWidth:0},g=typeof C==="function"?(D)=>C(D,y):()=>C,a=()=>{let D=K.dataManager.getTotal(),h=Q;y.containerWidth=h.containerSize,y.columns=h.columns,y.gap=h.gap;let O=(h.columns-1)*h.gap;y.columnWidth=Math.max(0,(y.containerWidth-O)/h.columns),Y=h.calculateLayout(D,g),J0();let A=Q.getTotalSize(Y);K.sizeCache.getTotalSize=()=>A,K.updateContentSize(A)},m=U.item.template;j=p1(q.items,m,Z,N,()=>K.dataManager.getTotal(),_.ariaIdPrefix),K.setUpdateItemClassesFn((D,h,O)=>{j?.updateItemClasses(D,h,O)});let s=[],$=new Int32Array(0),o=[],J0=()=>{let D=z.columns,h=Y.length;if(s=Array.from({length:D},()=>[]),$.length<h)$=new Int32Array(h);for(let O=0;O<h;O++){let A=Y[O],l=s[A.lane].length;s[A.lane].push(O),$[O]=l}o=Array(D);for(let O=0;O<D;O++){let A=s[O],l=new Float64Array(A.length);for(let n=0;n<A.length;n++){let f=Y[A[n]];l[n]=f.y+f.size*0.5}o[O]=l}};K.methods.set("_getNavTotal",()=>K.dataManager.getTotal());let i=(D,h)=>{let O=D.length;if(O===0)return-1;if(O===1)return 0;let A=0,l=O-1;while(A<l){let n=A+l>>1;if(D[n]<h)A=n+1;else l=n}if(A>0&&Math.abs(D[A-1]-h)<=Math.abs(D[A]-h))return A-1;return A};K.methods.set("_navigate",(D,h,O)=>{let A=Y[D];if(!A)return D;let l=A.lane,n=z.columns,f=$[D],u=s[l];switch(N?h==="ArrowDown"?"ArrowRight":h==="ArrowUp"?"ArrowLeft":h==="ArrowRight"?"ArrowDown":h==="ArrowLeft"?"ArrowUp":h:h){case"ArrowDown":{if(f+1<u.length)return u[f+1];return D}case"ArrowUp":{if(f>0)return u[f-1];return D}case"ArrowRight":{if(l>=n-1)return D;let Y0=l+1,X0=A.y+A.size*0.5,q0=s[Y0];if(q0.length===0)return D;let B0=i(o[Y0],X0);return B0>=0?q0[B0]:D}case"ArrowLeft":{if(l<=0)return D;let Y0=l-1,X0=A.y+A.size*0.5,q0=s[Y0];if(q0.length===0)return D;let B0=i(o[Y0],X0);return B0>=0?q0[B0]:D}case"Home":return 0;case"End":return O-1;case"PageDown":{let Y0=K.state.viewportState.containerSize,X0=A.size>0?A.size:150,q0=Math.max(1,Math.floor(Y0/X0)),B0=Math.min(f+q0,u.length-1);return u[B0]}case"PageUp":{let Y0=K.state.viewportState.containerSize,X0=A.size>0?A.size:150,q0=Math.max(1,Math.floor(Y0/X0)),B0=Math.max(0,f-q0);return u[B0]}}return D}),K.methods.set("_scrollItemIntoView",(D)=>{let h=Y[D];if(!h)return;let O=K.scrollController.getScrollTop(),A=K.state.viewportState.containerSize,l=h.y,n=l+h.size,f=O+A;if(l<O)K.scrollController.scrollTo(K.adjustScrollPosition(Math.max(0,l)));else if(n>f)K.scrollController.scrollTo(K.adjustScrollPosition(n-A))});let w=null,S=null,b=!1,x=()=>{if(b)return;b=!0,w=K.methods.get("_getSelectedIds")??null,S=K.methods.get("_getFocusedIndex")??null},T=(D)=>K.dataManager.getItem(D),L=-1,P=-1,p=!0,r=_.overscan*T4,d=()=>{if(K.state.isDestroyed)return;x();let D=K.scrollController.getScrollTop(),h=K.state.viewportState.containerSize;if(!p&&D===L&&h===P)return;L=D,P=h,p=!1;let O=Math.max(0,D-r),A=D+h+r,l=Q.getVisibleItems(Y,O,A),n=w?w():F4,f=S?S():-1;if(j&&l.length>0)j.render(T,l,n,f);let u=K.state.viewportState;u.scrollPosition=D;let e=l.length,Y0=e>0?l[0].index:0,X0=e>0?l[e-1].index:0;u.visibleRange.start=Y0,u.visibleRange.end=X0,u.renderRange.start=Y0,u.renderRange.end=X0;let q0=K.state.lastRenderRange;if(q0.start!==Y0||q0.end!==X0)q0.start=Y0,q0.end=X0,B.emit("range:change",{range:{start:Y0,end:X0}})},I=()=>{K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,p=!0,d()};K.setRenderFns(d,I);let F=(D,h)=>{let O=(N?h:D)-G;if(Q&&Q.containerSize!==O){if(Q.update({containerSize:O}),a(),j)j.clear();I()}};K.resizeHandlers.push(F);let X=()=>{a(),I()},V=K.dataManager,H=(D)=>{if(typeof V[D]!=="function")return;let h=V[D].bind(V);V[D]=(...O)=>{h(...O),X()}};H("setItems"),H("appendItems"),H("prependItems"),H("updateItem"),H("removeItem");let{animateScroll:E,cancelScroll:W}=c0(K.scrollController,K.renderIfNeeded);K.methods.set("cancelScroll",W),K.methods.set("scrollToIndex",(D,h)=>{let O=Y[D];if(!O)return;let{align:A,behavior:l,duration:n}=P0(h),f=O.y,u=K.state.viewportState.containerSize,e=f;if(A==="center")e=f-u/2+O.size/2;else if(A==="end"){e=f-u+O.size;let Y0=Q.getTotalSize(Y);if(D===Y.length-1)e=Math.max(0,Y0+k-u)}if(e=Math.max(0,e),e=K.adjustScrollPosition(e),l==="smooth")E(K.scrollController.getScrollTop(),e,n);else W(),K.scrollController.scrollTo(e)}),a(),K.idleHandlers.push(()=>{if(j)j.sortDOM()}),K.destroyHandlers.push(()=>{if(W(),j)j.destroy();q.root.classList.remove(`${Z}--masonry`)})}}};var gJ=(J)=>{let Q=J?.mode??"single",j=J?.followFocus??!1,Y=J?.initial,K=J?.shiftArrowToggle??"origin",q=A1(Y),B=null,_=-1;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems","selectNext","selectPrevious"],setup(U){let{dom:Z,emitter:N,config:R}=U,{classPrefix:G,ariaIdPrefix:k}=R;if(Q==="none"){U.methods.set("select",()=>{}),U.methods.set("deselect",()=>{}),U.methods.set("toggleSelect",()=>{}),U.methods.set("selectAll",()=>{}),U.methods.set("clearSelection",()=>{}),U.methods.set("getSelected",()=>[]),U.methods.set("getSelectedItems",()=>[]),U.methods.set("setSelectionMode",()=>{}),U.methods.set("selectNext",()=>{}),U.methods.set("selectPrevious",()=>{});return}Z.root.classList.add(`${G}--selectable`);let v=U.methods.get("_isGroupHeader"),z=(F)=>v?v(F):!1,M=(F,X,V)=>{if(!v)return F;let H=F;while(H>=0&&H<V){if(!z(H))return H;H+=X}H=F-X;while(H>=0&&H<V){if(!z(H))return H;H-=X}return F},C=new Map,y=()=>{C.clear();let F=U.dataManager.getTotal(),X=U.dataManager.getCached();if(X===0)return;if(X>=F){for(let H=0;H<F;H++){let E=U.dataManager.getItem(H);if(E)C.set(E.id,H)}return}let V=U.dataManager.getStorage();if(V&&typeof V.getLoadedRanges==="function"){let H=V.getLoadedRanges();for(let E of H)for(let W=E.start;W<=E.end;W++){let D=U.dataManager.getItem(W);if(D&&!D._isPlaceholder)C.set(D.id,W)}}};N.on("data:change",({type:F,id:X})=>{if(F==="remove")q.selected.delete(X),y()}),N.on("load:end",({items:F,offset:X})=>{if(!F||F.length===0)return;if(X!==void 0)for(let V=0;V<F.length;V++){let H=F[V];if(H&&H.id!==void 0)C.set(H.id,X+V)}else y()}),y(),U.methods.set("_getSelectedIds",()=>{return q.selected}),U.methods.set("_getFocusedIndex",()=>{return q.focusVisible?q.focusedIndex:-1});let{forceRender:g}=U.getRenderFns(),a=()=>{g();let F=(X)=>{let V=C.get(X);if(V===void 0)return;return U.dataManager.getItem(V)};N.emit("selection:change",{selected:bJ(q),items:$J(q,F)})},m=k0(U.rawConfig.padding),s=R.horizontal?m.left:m.top,$=R.horizontal?m.right:m.bottom,o=U.getItemToScrollIndexFn(),J0=null,i=null,w=null,S=!1,b=()=>{if(S)return;S=!0,J0=U.methods.get("_getNavDelta")??null,i=U.methods.get("_navigate")??null,w=U.methods.get("_scrollItemIntoView")??null},x=()=>{return b(),J0?J0():{ud:1,lr:0,cols:0}},T=(F)=>{if(F<0)return;if(b(),w)w(F);else{let X=U.state.viewportState.containerSize,V=U.state.viewportState.scrollPosition,H=U.dataManager.getTotal(),E=U.getCachedCompression(),{visibleRange:W}=U.state.viewportState,D=o(F),h=jJ(D,U.sizeCache,V,X,s,$,E,H,W);if(h!==V)U.scrollController.scrollTo(U.adjustScrollPosition(h))}},L=()=>{let F=o(Math.max(0,q.focusedIndex)),X=U.sizeCache.getSize(F),{ud:V}=x();return Math.max(V,Math.floor(U.state.viewportState.containerSize/X)*V)};B=document.createElement("div"),B.setAttribute("aria-live","polite"),B.setAttribute("aria-atomic","true"),B.className=`${G}-live-region`,B.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(Z.root.getAttribute("role")==="grid"?Z.root.parentElement??Z.root:Z.root).appendChild(B);let p=B;N.on("selection:change",({selected:F})=>{let X=F.length;if(X===0)p.textContent="";else if(X===1)p.textContent="1 item selected";else p.textContent=`${X} items selected`});let r=()=>{if(U.state.isDestroyed)return;if(!Z.root.matches(":focus-visible"))return;let F=U.dataManager.getTotal();if(F===0)return;let X=q.focusedIndex>=0?Math.min(q.focusedIndex,F-1):0;X=M(X,1,F),q=d0(q,X),q.focusVisible=!0,Z.root.setAttribute("aria-activedescendant",`${k}-item-${X}`),T(X);let V=U.dataManager.getItem(X);if(V)U.renderer.updateItemClasses(X,q.selected.has(V.id),!0)};if(R.interactive)Z.root.addEventListener("focusin",r);let d=(F)=>{if(U.state.isDestroyed)return;let X=F.relatedTarget;if(X&&Z.root.contains(X))return;let V=q.focusedIndex;if(q.focusVisible=!1,Z.root.removeAttribute("aria-activedescendant"),V>=0){let H=U.dataManager.getItem(V);if(H)U.renderer.updateItemClasses(V,q.selected.has(H.id),!1)}};if(R.interactive)Z.root.addEventListener("focusout",d);if(U.clickHandlers.push((F)=>{if(U.state.isDestroyed)return;let V=F.target.closest("[data-index]");if(!V)return;let H=parseInt(V.dataset.index??"-1",10);if(H<0)return;let E=U.dataManager.getItem(H);if(!E)return;if(z(H))return;if(N.emit("item:click",{item:E,index:H,event:F}),Q==="multiple"&&F.shiftKey&&q.focusedIndex>=0){let W=_>=0?_:q.focusedIndex,D=U.getAllLoadedItems();q=UJ(q,D,W,H,Q),q=d0(q,H),q.focusVisible=!1,_=H,Z.root.setAttribute("aria-activedescendant",`${k}-item-${H}`),a();return}_=H,q=d0(q,H),q.focusVisible=!1,Z.root.setAttribute("aria-activedescendant",`${k}-item-${H}`),q=m0(q,E.id,Q),a()}),R.interactive)U.keydownHandlers.push((F)=>{if(U.state.isDestroyed)return;let X=U.dataManager.getTotal(),V=q.focusedIndex,H=!1,E=!1,W=q;if(b(),i)switch(F.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":{let D=i(q.focusedIndex,F.key,X);if(D!==q.focusedIndex)W=d0(q,D),W.focusVisible=!0,H=!0,E=!0;else{F.preventDefault();return}break}}if(!H)switch(F.key){case"ArrowUp":W=XJ(q,X,R.wrap,x().ud),W.focusVisible=!0,H=!0,E=!0;break;case"ArrowDown":W=KJ(q,X,R.wrap,x().ud),W.focusVisible=!0,H=!0,E=!0;break;case"ArrowLeft":{let{lr:D}=x();if(D)W=XJ(q,X,R.wrap,D),W.focusVisible=!0,H=!0,E=!0;break}case"ArrowRight":{let{lr:D}=x();if(D)W=KJ(q,X,R.wrap,D),W.focusVisible=!0,H=!0,E=!0;break}case"PageUp":W=HJ(q,X,L(),"up"),W.focusVisible=!0,H=!0,E=!0;break;case"PageDown":W=HJ(q,X,L(),"down"),W.focusVisible=!0,H=!0,E=!0;break;case"Home":{W=L1(q,X),W.focusVisible=!0,H=!0,E=!0;break}case"End":{W=F1(q,X),W.focusVisible=!0,H=!0,E=!0;break}}switch(F.key){case" ":case"Enter":if(F.key===" "&&F.shiftKey&&Q==="multiple"&&q.focusedIndex>=0){if(_>=0){let D=U.getAllLoadedItems();W=UJ(W,D,_,q.focusedIndex,Q)}W.focusVisible=!0,H=!0;break}if(q.focusedIndex>=0&&!z(q.focusedIndex)){let D=U.dataManager.getItem(q.focusedIndex);if(D)W=m0(q,D.id,Q),W.focusVisible=!0;_=q.focusedIndex,H=!0}break;case"a":if((F.ctrlKey||F.metaKey)&&Q==="multiple"){let D=U.getAllLoadedItems();if(q.selected.size===D.length)W=kJ(W);else W=TJ(W,D,Q);W.focusVisible=!0,H=!0,E=!1}break}if(E&&v){let D=W.focusedIndex>V?1:-1;W.focusedIndex=M(W.focusedIndex,D,X)}if(F.shiftKey&&Q==="multiple"&&E&&W.focusedIndex>=0){let D=F.key==="ArrowUp"||F.key==="ArrowDown"||F.key==="ArrowLeft"||F.key==="ArrowRight",h=(F.ctrlKey||F.metaKey)&&(F.key==="Home"||F.key==="End");if(D){if(K==="origin"){if(V>=0){let O=U.dataManager.getItem(V);if(O)W=m0(W,O.id,Q)}}else{let O=U.dataManager.getItem(W.focusedIndex);if(O)W=m0(W,O.id,Q)}_=W.focusedIndex,E=!1}else if(h){let O=U.getAllLoadedItems(),A=V>=0?V:W.focusedIndex;W=UJ(W,O,A,W.focusedIndex,Q),_=W.focusedIndex,E=!1}}if(j&&Q==="single"&&E&&W.focusedIndex>=0){let D=U.dataManager.getItem(W.focusedIndex);if(D)W=x0(W,[D.id],Q);E=!1}if(H){F.preventDefault(),q=W;let D=q.focusedIndex;if(D>=0)T(D),Z.root.setAttribute("aria-activedescendant",`${k}-item-${D}`);else Z.root.removeAttribute("aria-activedescendant");if(E){let{selected:h}=q;if(V>=0&&V!==D){let O=U.dataManager.getItem(V);if(O)U.renderer.updateItemClasses(V,h.has(O.id),!1)}if(D>=0){let O=U.dataManager.getItem(D);if(O)U.renderer.updateItemClasses(D,h.has(O.id),!0)}}else a()}});U.methods.set("select",(...F)=>{q=x0(q,F,Q),a()}),U.methods.set("deselect",(...F)=>{q=FJ(q,F),a()}),U.methods.set("toggleSelect",(F)=>{q=m0(q,F,Q),a()}),U.methods.set("selectAll",()=>{if(Q!=="multiple")return;let F=U.getAllLoadedItems();q=TJ(q,F,Q),y(),a()}),U.methods.set("clearSelection",()=>{q=kJ(q),a()}),U.methods.set("getSelected",()=>{return bJ(q)}),U.methods.set("getSelectedItems",()=>{return $J(q,(X)=>{let V=C.get(X);return V===void 0?void 0:U.dataManager.getItem(V)})});let I=(F)=>{let X=U.dataManager.getTotal();if(X===0)return;if(b(),i){let W=F==="next"?"ArrowDown":"ArrowUp",D=i(q.focusedIndex,W,X);q=d0(q,D)}else{let{ud:W}=x();q=F==="next"?KJ(q,X,R.wrap,W):XJ(q,X,R.wrap,W)}let V=F==="next"?1:-1;q.focusedIndex=M(q.focusedIndex,V,X);let H=q.focusedIndex,E=U.dataManager.getItem(H);if(!E)return;q=x0(q,[E.id],Q),T(H),a()};U.methods.set("selectNext",()=>{I("next")}),U.methods.set("selectPrevious",()=>{I("previous")}),U.destroyHandlers.push(()=>{if(p&&p.parentNode)p.remove();Z.root.removeEventListener("focusin",r),Z.root.removeEventListener("focusout",d)})},destroy(){if(B&&B.parentNode)B.remove();B=null}}};var k4=(J)=>{try{let Q=sessionStorage.getItem(J);if(!Q)return;return JSON.parse(Q)}catch{return}},xJ=(J)=>{let Q=J?.autoSave,j=Q?k4(Q):J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(Y){Y.methods.set("getScrollSnapshot",()=>{let q=Y.scrollController.getScrollTop(),B=Y.getCachedCompression(),_=Y.getVirtualTotal(),U=Y.methods.get("getSelected"),Z=U&&U().length>0?U():void 0;if(_===0){let k={index:0,offsetInItem:0,total:0};if(Z)k.selectedIds=Z;return k}let N,R;if(B.isCompressed){let v=q/B.virtualSize*_;N=Math.max(0,Math.min(Math.floor(v),_-1)),R=(v-N)*Y.sizeCache.getSize(N)}else N=Y.sizeCache.indexAtOffset(q),R=q-Y.sizeCache.getOffset(N);R=Math.max(0,R);let G={index:N,offsetInItem:R,total:_};if(Z)G.selectedIds=Z;return G});let K=(q)=>{let{index:B,offsetInItem:_,selectedIds:U}=q,Z=Y.getVirtualTotal();if(Z===0&&q.total&&q.total>0){Y.dataManager.setTotal(q.total),Y.sizeCache.rebuild(q.total),Y.updateCompressionMode();let y=Y.getCachedCompression();Y.updateContentSize(y.virtualSize)}else if(Z===0)return;if(!Number.isFinite(B)||!Number.isFinite(_))return;let N=Y.getVirtualTotal();if(Y.sizeCache.getTotal()!==N){Y.sizeCache.rebuild(N),Y.updateCompressionMode();let y=Y.getCachedCompression();Y.updateContentSize(y.virtualSize)}let G=Y.getCachedCompression(),k=Math.max(0,Math.min(B,N-1)),v;if(G.isCompressed){let y=Y.sizeCache.getSize(k),g=y>0?_/y:0;v=(k+g)/N*G.virtualSize}else v=Y.sizeCache.getOffset(k)+_;let z=Y.state.viewportState.containerSize,M=Math.max(0,G.virtualSize-z);if(v=Math.max(0,Math.min(v,M)),Y.scrollController.scrollTo(v),U&&U.length>0){let y=Y.methods.get("select");if(y)y(...U)}let C=Y.methods.get("loadVisibleRange");if(C){let g=0,a=v,m=()=>{g++;let s=Y.state.viewportState.containerSize,$=Y.scrollController.getScrollTop();if(s>0){if(Math.abs($-a)>1)Y.scrollController.scrollTo(a);C()}else if(g<10)requestAnimationFrame(m)};requestAnimationFrame(m)}else{let y=Y.methods.get("reload");if(y)requestAnimationFrame(()=>{y()})}};if(Y.methods.set("restoreScroll",K),Q){let q=!!j,B=()=>{if(q)return;let _=Y.methods.get("getScrollSnapshot");if(!_)return;let U=_();try{sessionStorage.setItem(Q,JSON.stringify(U))}catch{}};if(Y.idleHandlers.push(()=>{if(q)q=!1;B()}),Y.emitter.on("selection:change",B),j&&j.total&&j.total>0){let _=Y.methods.get("_cancelAutoLoad");if(_)_();Y.dataManager.setTotal(j.total)}}if(j)queueMicrotask(()=>{K(j)})}}};var u1=(J,Q=50,j=1/0,Y=!0)=>{let K=J,q=[],B=0,_=()=>{q=K.map((M,C)=>({def:M,index:C,width:0,minWidth:H4(M.minWidth??Q,1),maxWidth:M.maxWidth??j,resizable:M.resizable??Y,offset:0}))},U=(M)=>{if(q.length===0){B=0;return}let C=0,y=0;for(let g=0;g<q.length;g++){let a=q[g],m=a.def;if(m.width!==void 0)a.width=mJ(m.width,a.minWidth,a.maxWidth),C+=a.width;else y++}if(y>0){let a=Math.max(0,M-C)/y;for(let m=0;m<q.length;m++){let s=q[m];if(s.def.width===void 0)s.width=mJ(a,s.minWidth,s.maxWidth)}}Z()},Z=()=>{let M=0;for(let C=0;C<q.length;C++){let y=q[C];y.offset=M,M+=y.width}B=M},N=(M,C)=>{if(M<0||M>=q.length)return 0;let y=q[M];if(!y.resizable)return y.width;let g=mJ(C,y.minWidth,y.maxWidth);return y.width=g,Z(),g},R=(M)=>{return q[M]},G=(M)=>{if(q.length===0)return;if(M<0)return q[0];if(M>=B)return q[q.length-1];let C=0,y=q.length-1;while(C<y){let g=C+y>>>1,a=q[g];if(M<a.offset)y=g-1;else if(M>=a.offset+a.width)C=g+1;else return a}return q[C]},k=(M)=>{if(M<0||M>=q.length)return 0;return q[M].offset},v=(M)=>{if(M<0||M>=q.length)return 0;return q[M].width},z=(M)=>{K=M,_()};return _(),{get columns(){return q},get totalWidth(){return B},resolve:U,updateColumns:z,resizeColumn:N,getColumn:R,getColumnAtX:G,getColumnOffset:k,getColumnWidth:v}},mJ=(J,Q,j)=>Math.min(j,Math.max(Q,J)),H4=(J,Q)=>Math.max(Q,J);var g1=(J,Q,j,Y,K,q,B)=>{let _=document.createElement("div");_.setAttribute("role","rowgroup");let U=document.createElement("div");U.className=`${Y}-table-header`,U.setAttribute("role","row"),U.setAttribute("aria-rowindex","1"),U.style.height=`${j}px`;let Z=document.createElement("div");Z.className=`${Y}-table-header-scroll`,Z.setAttribute("role","presentation"),U.appendChild(Z),_.appendChild(U),J.insertBefore(_,J.firstChild),Q.style.cssText=`position:absolute;top:${j}px;left:0px;right:0px;bottom:0px;height:auto`;let N=[],R=[],G=[],k=!0,v=null,z="asc",M=null,C=!1,y=-1,g=0,a=0,m=(P,p)=>{let r=document.createElement("div");r.className=`${Y}-table-header-cell`,r.setAttribute("role","columnheader"),r.setAttribute("aria-colindex",String(p+1)),r.dataset.columnKey=P.def.key;let d=P.def.align;if(d==="center")r.classList.add(`${Y}-table-header-cell--center`);else if(d==="right")r.classList.add(`${Y}-table-header-cell--right`);let I=document.createElement("div");I.className=`${Y}-table-header-content`;let F=P.def.header?P.def.header(P.def):P.def.label;if(typeof F==="string")I.textContent=F;else I.appendChild(F);if(r.appendChild(I),P.def.sortable){let X=document.createElement("span");X.className=`${Y}-table-header-sort`,X.setAttribute("aria-hidden","true"),r.appendChild(X),G.push(X),r.classList.add(`${Y}-table-header-cell--sortable`)}else G.push(null);if(P.resizable){let X=document.createElement("div");X.className=`${Y}-table-header-resize`,X.dataset.resizeIndex=String(p),r.appendChild(X),R.push(X)}return r},s=(P)=>{M=P,Z.textContent="",N=[],R=[],G=[];let p=P.columns;for(let r=0;r<p.length;r++){let d=p[r],I=m(d,r);N.push(I),Z.appendChild(I)}if($(P),v)o(v,z)},$=(P)=>{M=P;let p=P.columns;Z.style.width=`${P.totalWidth}px`;for(let r=0;r<N.length&&r<p.length;r++){let d=N[r],I=p[r];d.style.width=`${I.width}px`}},o=(P,p)=>{if(v=P,z=p,!M)return;let r=M.columns;for(let d=0;d<G.length&&d<r.length;d++){let I=G[d];if(!I)continue;if(r[d].def.key===P&&P!==null)I.textContent=p==="asc"?"▲":"▼",I.style.opacity="0.7",N[d].setAttribute("aria-sort",p==="asc"?"ascending":"descending");else I.textContent="",I.style.opacity="0",N[d].removeAttribute("aria-sort")}},J0=(P)=>{Z.style.transform=`translateX(${-P}px)`},i=(P)=>{let p=P.target;if(!p.dataset.resizeIndex)return;if(P.preventDefault(),P.stopPropagation(),y=parseInt(p.dataset.resizeIndex,10),!M)return;let r=M.getColumn(y);if(!r||!r.resizable)return;C=!0,g=P.clientX,a=r.width,J.classList.add(`${Y}--col-resizing`),J.style.cursor="col-resize",p.classList.add(`${Y}-table-header-resize--active`),p.setPointerCapture(P.pointerId),p.addEventListener("pointermove",w),p.addEventListener("pointerup",S),p.addEventListener("pointercancel",S)},w=(P)=>{if(!C||!M)return;let p=P.clientX-g;if(Math.abs(p)<1)return;let r=Math.max(0,a+p);K(y,r)},S=(P)=>{if(!C)return;let p=P.target;p.removeEventListener("pointermove",w),p.removeEventListener("pointerup",S),p.removeEventListener("pointercancel",S);try{p.releasePointerCapture(P.pointerId)}catch{}p.classList.remove(`${Y}-table-header-resize--active`),J.classList.remove(`${Y}--col-resizing`),J.style.cursor="",C=!1,y=-1},b=(P)=>{let p=P.target;if(p.dataset.resizeIndex!==void 0)return;if(C)return;let r=p;while(r&&!r.dataset.columnKey)if(r=r.parentElement,r===U||r===null)return;if(!r||!r.dataset.columnKey)return;let d=r.dataset.columnKey;if(!M)return;let I=M.columns,F=-1;for(let V=0;V<I.length;V++)if(I[V].def.key===d){F=V;break}if(F===-1)return;let X=I[F];if(B)B({key:d,index:F,event:P});if(X.def.sortable&&q){let V;if(v===d)if(z==="asc")V="desc";else V=null;else V="asc";q({key:d,index:F,direction:V})}};return U.addEventListener("pointerdown",i),U.addEventListener("click",b),{element:U,update:$,updateSort:o,rebuild:s,show:()=>{if(k)return;k=!0,U.style.display=""},hide:()=>{if(!k)return;k=!1,U.style.display="none"},destroy:()=>{U.removeEventListener("pointerdown",i),U.removeEventListener("click",b),Q.style.cssText="",_.remove(),N=[],R=[],G=[],M=null,k=!1},syncScroll:J0}};var b4=()=>{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}}},x1=(J,Q,j,Y,K,q,B,_,U)=>{let Z=b4(),N=new Map,R=-1,G=j,k=null,v=null,z=null,M=(O,A)=>{v=O,z=A},C=(O,A)=>{if(A)O.setAttribute("aria-selected","true");else O.removeAttribute("aria-selected")},y=(O,A,l,n)=>{O.setAttribute("role",A),O.setAttribute("data-id",String(l)),O.setAttribute("data-index",String(n))},g=(O)=>String(O).startsWith("__placeholder_"),a=`${K}-item ${K}-table-row`,m=`${K}-item--selected`,s=`${K}-item--focused`,$=`${K}-table-cell`,o=`${K}-table-cell--center`,J0=`${K}-table-cell--right`,i=`${K}-item--odd`,w=`${K}-item--placeholder`,S=`${K}-item--replaced`,b=`${K}-item ${K}-table-row ${K}-table-group-header`,x=`${K}-table-group-header-content`,T=(O,A,l,n,f=!1)=>{if(l.def.cell){let u=l.def.cell(A,l.def,n);if(typeof u==="string")O.innerHTML=u;else O.replaceChildren(u)}else{let u=A[l.def.key],e=u!=null?String(u):"";if(f&&e)O.innerHTML=`<span>${e}</span>`;else O.textContent=e}},L=(O,A,l,n,f=!1)=>{let u=a;if(_){if(k){let e=k(A);if(e>=0&&(e&1)===1)u+=` ${i}`}else if((A&1)===1)u+=` ${i}`}if(f)u+=` ${w}`;if(l)u+=` ${m}`;if(n)u+=` ${s}`;O.className=u},P=(O,A,l)=>{if(l?.compression?.isCompressed)return Math.round(l0(O,l.scrollPosition,A,l.totalItems,l.containerSize,l.compression,l.rangeStart));return A.getOffset(O)},p=(O,A)=>{let l=A.def.align;if(l==="center")O.classList.add(o),O.classList.remove(J0);else if(l==="right")O.classList.add(J0),O.classList.remove(o);else O.classList.remove(o,J0)},r=(O,A)=>{let n=G.columns.length;if(A.length===n)return A;let f=[];for(let u=0;u<n;u++){let e;if(u<A.length)e=A[u];else e=document.createElement("div"),e.className=$,O.appendChild(e);f.push(e)}for(let u=n;u<A.length;u++)A[u].remove();return f},d=(O,A,l,n)=>{let f=Z.acquire(),u=O,e=l.getSize(A),Y0=P(A,l,n);f.style.cssText=`width:${G.totalWidth}px;height:${e}px;transform:translateY(${Y0}px)`,f.className=b,y(f,"presentation",O.id,A),f.removeAttribute("aria-selected"),f.removeAttribute("aria-rowindex"),f.replaceChildren();let X0=document.createElement("div");if(X0.className=x,z){let q0=z(u.groupKey,u.groupIndex);if(typeof q0==="string")X0.innerHTML=q0;else X0.appendChild(q0)}return f.appendChild(X0),{element:f,cells:[],index:A,isGroupHeader:!0,lastItemId:O.id,lastSelected:!1,lastFocused:!1,lastOffset:Y0,lastHeight:e}},I=(O,A,l,n,f,u)=>{let e=Z.acquire(),Y0=f.getSize(A),X0=P(A,f,u),q0=g(O.id);e.style.cssText=`width:${G.totalWidth}px;height:${Y0}px;transform:translateY(${X0}px)`,L(e,A,l,n,q0),y(e,"row",O.id,A),e.id=`${q}-${A}`,e.setAttribute("aria-rowindex",String(A+2)),C(e,l);let B0=r(e,[]),Z0=G.columns;for(let K0=0;K0<B0.length&&K0<Z0.length;K0++){let W0=B0[K0],D0=Z0[K0];W0.style.cssText=`left:${D0.offset}px;width:${D0.width}px`,W0.setAttribute("role","gridcell"),W0.setAttribute("aria-colindex",String(K0+1)),p(W0,D0),T(W0,O,D0,A,q0)}return{element:e,cells:B0,index:A,isGroupHeader:!1,lastItemId:O.id,lastSelected:l,lastFocused:n,lastOffset:X0,lastHeight:Y0}},F=(O,A,l,n,f)=>{for(let[q0,B0]of N)if(q0<A.start||q0>A.end)Z.release(B0.element),N.delete(q0);let u=!1,e=B();if(e!==R)R=e,u=!0;let Y0=null,X0=Q();k=typeof _==="string"&&U?U():null;for(let q0=A.start;q0<=A.end;q0++){let B0=q0-A.start,Z0=O[B0];if(!Z0)continue;let K0=l.has(Z0.id),W0=q0===n,D0=v?v(Z0):!1,j0=N.get(q0);if(j0){if(j0.isGroupHeader!==D0){Z.release(j0.element),N.delete(q0);let _0=D0?d(Z0,q0,X0,f):I(Z0,q0,K0,W0,X0,f);if(N.set(q0,_0),!Y0)Y0=document.createDocumentFragment();Y0.appendChild(_0.element);continue}if(D0){if(j0.lastItemId!==Z0.id){let E0=Z0,H0=j0.element.firstElementChild;if(H0&&z){let R0=z(E0.groupKey,E0.groupIndex);if(typeof R0==="string")H0.innerHTML=R0;else H0.replaceChildren(R0)}j0.element.setAttribute("data-id",String(Z0.id)),j0.lastItemId=Z0.id}let V0=P(q0,X0,f);if(j0.lastOffset!==V0)j0.lastOffset=V0,j0.element.style.transform=`translateY(${V0}px)`;let M0=X0.getSize(q0);if(j0.lastHeight!==M0)j0.lastHeight=M0,j0.element.style.height=`${M0}px`}else{let _0=j0.lastItemId!==Z0.id,V0=j0.lastSelected!==K0,M0=j0.lastFocused!==W0;if(_0){let R0=j0.lastItemId!=null&&g(j0.lastItemId),b0=g(Z0.id);if(!b0&&y0(l,q0,Z0.id))K0=!0;let z0=G.columns;for(let A0=0;A0<j0.cells.length&&A0<z0.length;A0++)T(j0.cells[A0],Z0,z0[A0],q0,b0);if(L(j0.element,q0,K0,W0,b0),j0.element.setAttribute("data-id",String(Z0.id)),C(j0.element,K0),R0&&!b0)j0.element.classList.add(S),setTimeout(()=>{j0.element.classList.remove(S)},300);j0.lastItemId=Z0.id,j0.lastSelected=K0,j0.lastFocused=W0}else if(V0||M0)L(j0.element,q0,K0,W0,g(Z0.id)),C(j0.element,K0),j0.lastSelected=K0,j0.lastFocused=W0;let E0=P(q0,X0,f);if(j0.lastOffset!==E0)j0.lastOffset=E0,j0.element.style.transform=`translateY(${E0}px)`;let H0=X0.getSize(q0);if(j0.lastHeight!==H0)j0.lastHeight=H0,j0.element.style.height=`${H0}px`;if(u)j0.element.setAttribute("aria-rowindex",String(q0+2))}}else{if(y0(l,q0,Z0.id))K0=!0;let _0=D0?d(Z0,q0,X0,f):I(Z0,q0,K0,W0,X0,f);if(N.set(q0,_0),!Y0)Y0=document.createDocumentFragment();Y0.appendChild(_0.element)}}if(Y0)J.appendChild(Y0)},X=(O)=>{let A=Q();for(let[l,n]of N){let f=P(l,A,O);if(n.lastOffset!==f)n.lastOffset=f,n.element.style.transform=`translateY(${f}px)`}},V=(O,A,l,n)=>{let f=N.get(O);if(!f)return;if(f.isGroupHeader)return;let u=G.columns;for(let e=0;e<f.cells.length&&e<u.length;e++)T(f.cells[e],A,u[e],O);f.element.setAttribute("data-id",String(A.id)),f.lastItemId=A.id,L(f.element,O,l,n),C(f.element,l),f.lastSelected=l,f.lastFocused=n},H=(O,A,l)=>{let n=N.get(O);if(!n)return;if(n.isGroupHeader)return;let f=n.lastSelected!==A,u=n.lastFocused!==l;if(f||u)L(n.element,O,A,l),C(n.element,A),n.lastSelected=A,n.lastFocused=l},E=(O)=>{G=O;let A=O.columns;for(let[,l]of N)if(l.element.style.width=`${O.totalWidth}px`,l.cells.length>0)for(let n=0;n<l.cells.length&&n<A.length;n++){let f=l.cells[n],u=A[n];f.style.left=`${u.offset}px`,f.style.width=`${u.width}px`}},W=(O)=>{return N.get(O)?.element},D=()=>{for(let[,O]of N)Z.release(O.element);N.clear(),R=-1};return{render:F,updatePositions:X,updateItem:V,updateItemClasses:H,getElement:W,updateColumnLayout:E,setGroupHeaderFn:M,clear:D,destroy:()=>{D(),Z.clear()}}};var $4=new Set,dJ=(J)=>{if(!J.columns||J.columns.length===0)throw Error("[vlist] withTable: columns must be a non-empty array");if(J.rowHeight===void 0&&J.estimatedRowHeight===void 0)throw Error("[vlist] withTable: either rowHeight or estimatedRowHeight is required");let Q=null,j=null,Y=null;return{name:"withTable",priority:10,conflicts:["withGrid","withMasonry"],setup(K){let{dom:q,emitter:B,config:_}=K,{classPrefix:U}=_;if(_.horizontal)throw Error("[vlist] withTable cannot be used with orientation: 'horizontal'");if(_.reverse)throw Error("[vlist] withTable cannot be used with reverse: true");let Z=J.resizable??!0,N=J.minColumnWidth??50,R=J.maxColumnWidth??1/0,G=J.columnBorders??!1,k=J.rowBorders??!0,v=J.rowHeight,z=K.rawConfig.padding,M=!z?0:typeof z==="number"?z*2:z.length===2?z[1]*2:z[1]+z[3],C=J.headerHeight??(typeof v==="number"?v:40),y=J.sort?.key??null,g=J.sort?.direction??"asc";if(Q=u1(J.columns,N,R,Z),typeof v==="function")K.setSizeConfig(v);else if(typeof v==="number")K.setSizeConfig(v);if(K.rebuildSizeCache(),q.root.classList.add(`${U}--table`),k)q.root.classList.add(`${U}--table-row-borders`);if(G)q.root.classList.add(`${U}--table-col-borders`);q.root.setAttribute("role","grid"),q.root.setAttribute("aria-colcount",String(J.columns.length));let a=-1,m=q.items.getAttribute("aria-label");if(m)q.root.setAttribute("aria-label",m),q.items.removeAttribute("aria-label");q.items.setAttribute("role","rowgroup"),q.viewport.setAttribute("role","none"),q.content.setAttribute("role","none"),q.viewport.removeAttribute("tabindex");let s=K.getContainerWidth()-M;Q.resolve(s);let $=(W,D)=>{if(!Q)return;let h=Q.getColumn(W);if(!h)return;let O=h.width,A=Q.resizeColumn(W,D);if(j)j.update(Q);if(Y)Y.updateColumnLayout(Q);i(),B.emit("column:resize",{key:h.def.key,index:W,previousWidth:O,width:A})},o=(W)=>{if(W.direction===null)y=null,g="asc";else y=W.key,g=W.direction;if(j)j.updateSort(y,g);B.emit("column:sort",W)},J0=(W)=>{B.emit("column:click",W)};if(j=g1(q.root,q.viewport,C,U,$,o,J0),j.rebuild(Q),y)j.updateSort(y,g);let i=()=>{if(!Q)return;let W=Q.totalWidth;q.content.style.minWidth=`${W}px`,q.items.style.minWidth=`${W}px`};i(),Y=x1(q.items,()=>K.sizeCache,Q,J.columns,U,_.ariaIdPrefix,()=>K.dataManager.getTotal(),K.rawConfig.item?.striped,()=>K.getStripeIndexFn());let w=null,S=null,b=!1,x=()=>{if(b)return;b=!0,w=K.methods.get("_getSelectedIds")??null,S=K.methods.get("_getFocusedIndex")??null},T=-1,L=-1,P=-1,p=!0,r=_.overscan,d={start:0,end:0},I={start:0,end:0},F=()=>{if(K.state.isDestroyed)return;let W=K.scrollController.getScrollTop(),D=K.state.viewportState.containerSize,h=K.getVirtualTotal(),O=K.state.viewportState.isCompressed;if(!p&&W===T&&D===L&&h===P)return;T=W,L=D,P=h,p=!1;let A=h+1;if(A!==a)a=A,q.root.setAttribute("aria-rowcount",String(A));if(h===0||D===0)d.start=0,d.end=0;else d.start=Math.max(0,K.sizeCache.indexAtOffset(W)),d.end=Math.min(h-1,Math.max(0,K.sizeCache.indexAtOffset(W+D-1)));I.start=Math.max(0,d.start-r),I.end=Math.min(h-1,d.end+r);let l=K.state.viewportState;l.scrollPosition=W,l.visibleRange.start=d.start,l.visibleRange.end=d.end,l.renderRange.start=I.start,l.renderRange.end=I.end;let n=K.state.lastRenderRange,f=O?K.getCompressionContext():void 0,u=K.dataManager.getItemsInRange(I.start,I.end);x();let e=w?w():$4,Y0=S?S():-1;if(Y.render(u,I,e,Y0,f),n.start!==I.start||n.end!==I.end)n.start=I.start,n.end=I.end,B.emit("range:change",{range:{start:I.start,end:I.end}})},X=()=>{if(K.state.isDestroyed)return;K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,p=!0,F()};K.setRenderFns(F,X),K.setUpdateItemClassesFn((W,D,h)=>{Y?.updateItemClasses(W,D,h)});let V=j,H=-1,E=()=>{let W=q.viewport.scrollLeft;if(W!==H){if(H=W,V.syncScroll)V.syncScroll(W)}};K.afterScroll.push(E),q.viewport.addEventListener("scroll",E,{passive:!0}),K.resizeHandlers.push((W,D)=>{if(!Q)return;if(Q.resolve(W-M),j)j.update(Q);if(Y)Y.updateColumnLayout(Q);i()}),K.methods.set("updateColumns",(W)=>{if(!Q||!j)return;if(Q.updateColumns(W),Q.resolve(K.getContainerWidth()-M),j.rebuild(Q),y)j.updateSort(y,g);if(i(),Y)Y.updateColumnLayout(Q),Y.clear();K.forceRender()}),K.methods.set("resizeColumn",(W,D)=>{if(!Q)return;let h;if(typeof W==="string"){let O=Q.columns;h=-1;for(let A=0;A<O.length;A++)if(O[A].def.key===W){h=A;break}if(h===-1)return}else h=W;$(h,D)}),K.methods.set("getColumnWidths",()=>{if(!Q)return{};let W={},D=Q.columns;for(let h=0;h<D.length;h++)W[D[h].def.key]=D[h].width;return W}),K.methods.set("setSort",(W,D)=>{if(y=W,g=D??"asc",j)j.updateSort(y,g)}),K.methods.set("getSort",()=>{return{key:y,direction:g}}),K.methods.set("_getTableLayout",()=>Q),K.methods.set("_updateRenderedItem",(W,D,h,O)=>{Y?.updateItem(W,D,h,O)}),K.methods.set("_replaceTableRenderer",(W)=>{Y=W}),K.methods.set("_updateTableForGroups",(W,D)=>{if(Y)Y.setGroupHeaderFn(W,D)}),K.methods.set("_getTableHeaderHeight",()=>C),K.keydownHandlers.push((W)=>{if(W.key!=="ArrowLeft"&&W.key!=="ArrowRight")return;if(!Q)return;let D=Q.columns;if(D.length===0)return;let h=q.viewport.clientWidth;if(Q.totalWidth<=h)return;let O=q.viewport.scrollLeft;if(W.key==="ArrowRight"){for(let A=0;A<D.length;A++)if(D[A].offset>O+1){q.viewport.scrollLeft=D[A].offset,W.preventDefault();return}}else{for(let A=D.length-1;A>=0;A--)if(D[A].offset<O-1){q.viewport.scrollLeft=D[A].offset,W.preventDefault();return}if(O>0)q.viewport.scrollLeft=0,W.preventDefault()}}),K.contentSizeHandlers.push(()=>{i()}),K.destroyHandlers.push(()=>{if(q.viewport.removeEventListener("scroll",E),j)j.destroy(),j=null;if(Y)Y.destroy(),Y=null;q.content.style.minWidth="",q.items.style.minWidth="",q.root.classList.remove(`${U}--table`),q.root.removeAttribute("role"),q.root.removeAttribute("aria-colcount"),q.viewport.removeAttribute("role"),q.viewport.setAttribute("tabindex","-1"),q.content.removeAttribute("role");let W=q.root.getAttribute("aria-label");if(W)q.items.setAttribute("aria-label",W),q.root.removeAttribute("aria-label");q.root.removeAttribute("aria-rowcount"),q.items.setAttribute("role","listbox")})},destroy(){if(j)j.destroy(),j=null;if(Y)Y.destroy(),Y=null}}};var m1=(J,Q)=>{let j=new Map,Y=(q)=>{let B=j.get(q);return B!==void 0?B:J},K=S0(Y,Q);return{getOffset(q){return K.getOffset(q)},getSize(q){return Y(q)},indexAtOffset(q){return K.indexAtOffset(q)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(q){if(q<K.getTotal()){for(let B of j.keys())if(B>=q)j.delete(B)}K=S0(Y,q)},isVariable(){return!0},setMeasuredSize(q,B){j.set(q,B)},isMeasured(q){return j.has(q)},getEstimatedSize(){return J},measuredCount(){return j.size}}};var cJ=()=>{let J=null;return{name:"withAutoSize",priority:5,setup(Q){let j=Q.config.horizontal,K=Q.rawConfig.item,q=j?K.estimatedWidth:K.estimatedHeight;if(q==null||q<=0)throw Error("[vlist/withAutoSize] Requires item.estimatedHeight (or item.estimatedWidth for horizontal)");let B=K.gap??0,_=Q.getVirtualTotal(),U=k0(Q.rawConfig.padding),Z=h0(U,j),N=m1(q+B,_),R=Q.methods.get("_setSizeCache"),G=Q.methods.get("_setConstrainSize");if(!R||!G)throw Error("[vlist/withAutoSize] Incompatible builder version");R(N),G((m)=>N.isMeasured(m));let k=new WeakMap,v=0,z=!1,M=2,C=(m)=>{let s=Q.scrollController.getScrollTop(),$=Q.state.viewportState.containerSize;if($<=0)return!1;let o=Math.max(0,m+Z-$);return s>=o-M},y=()=>{let m=N.getTotalSize(),s=Q.state.viewportState.containerSize;if(s<=0)return;let $=Math.max(0,m+Z-s),o=Q.scrollController.getScrollTop();if($>o)Q.scrollController.scrollTo($)},g=()=>{let m=N.getTotalSize();Q.updateContentSize(m)},a=()=>{if(z){let m=Q.dom.viewport,s=m.scrollHeight,$=s-m.clientHeight,o=Q.scrollController.getScrollTop(),J0=$>0&&o>=$-M,i=Q.getVirtualTotal(),w=Q.state.viewportState.renderRange.end,S=i>0&&w>=i-1,b=N.getTotalSize()+Z,x=Math.abs(b-s),T=S&&$>0&&o>=$-x-M,L=J0||T;if(g(),z=!1,L)m.scrollHeight,y(),Q.forceRender()}};J=new ResizeObserver((m)=>{if(Q.state.isDestroyed)return;let s=!1,$=Q.state.viewportState.visibleRange.start;for(let P of m){let p=k.get(P.target);if(p===void 0)continue;let r=j?P.borderBoxSize[0].inlineSize:P.borderBoxSize[0].blockSize;if(!N.isMeasured(p)){let d=r+B,I=N.getSize(p);if(N.setMeasuredSize(p,d),s=!0,p<$&&d!==I)v+=d-I;J.unobserve(P.target);let F=P.target;if(j)F.style.width=`${r}px`;else F.style.height=`${r}px`}}if(!s)return;let o=N.getTotalSize();if(N.rebuild(Q.getVirtualTotal()),v!==0){let P=Q.scrollController.getScrollTop();Q.scrollController.scrollTo(P+v),v=0}let J0=C(o),i=Q.getVirtualTotal(),w=Q.state.viewportState.renderRange.end,S=i>0&&w>=i-1,b=Q.dom.viewport,x=b.scrollHeight-b.clientHeight,T=Q.scrollController.getScrollTop(),L=x>0&&T>=x-M;if(J0||S||!Q.scrollController.isScrolling()){if(g(),z=!1,J0||S&&L)b.scrollHeight,y()}else z=!0;Q.forceRender()}),Q.afterRenderBatch.push((m)=>{for(let{index:s,element:$}of m)if(!N.isMeasured(s))k.set($,s),J.observe($)}),Q.idleHandlers.push(a),Q.destroyHandlers.push(()=>{if(J)J.disconnect(),J=null})},destroy(){if(J)J.disconnect(),J=null}}};var y4=50,P4=0.1;function d1(J){let Q=0,j=0,Y=0;function K(){return Y>0?j/Y:0}function q(U){if(Q=U,U>P4&&U<y4)j+=U,Y++}function B(){let U=J.getTotal();if(U===0)return 0;let Z=J.getItemSize();if(Z<=0)return 0;let N=J.getContainerSize();if(N<=0)return 0;let R=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,v=Math.ceil(U/G)*Z,M=Math.min(v,g0)-N,C=v-N,y=M>0?C/M:1,g=R*y,a=Math.ceil((g+N)/Z);return Math.min(a*G,U)}function _(){let U=J.getTotal(),Z=B();return{progress:U>0?Math.min(100,Math.max(0,Z/U*100)):0,velocity:Q,velocityAvg:K(),itemCount:Z,total:U}}return{getState:_,onVelocity:q}}export{dJ as withTable,xJ as withSnapshots,gJ as withSelection,wJ as withScrollbar,RJ as withScale,CJ as withPage,uJ as withMasonry,IJ as withGroups,pJ as withGrid,cJ as withAutoSize,zJ as withAsync,PJ as vlist,d1 as createStats};
|
package/dist/size.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"base":{"minified":"27.1","gzipped":"10.5"},"withGrid":{"minified":"39.
|
|
1
|
+
{"base":{"minified":"27.1","gzipped":"10.5"},"withGrid":{"minified":"39.1","gzipped":"14.3"},"withMasonry":{"minified":"36.7","gzipped":"13.8"},"withGroups":{"minified":"35.5","gzipped":"13.2"},"withAsync":{"minified":"39.7","gzipped":"14.8"},"withSelection":{"minified":"37.1","gzipped":"13.2"},"withScale":{"minified":"37.9","gzipped":"13.5"},"withScrollbar":{"minified":"30.9","gzipped":"11.6"},"withPage":{"minified":"28.5","gzipped":"10.9"},"withSnapshots":{"minified":"29.5","gzipped":"11.2"},"withTable":{"minified":"44.7","gzipped":"15.9"},"withAutoSize":{"minified":"29.9","gzipped":"11.4"}}
|