vlist-solidjs 1.5.4 → 2.0.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/dist/index.d.ts CHANGED
@@ -2,9 +2,10 @@
2
2
  * SolidJS primitives for vlist - lightweight virtual scrolling
3
3
  */
4
4
  import type { Accessor } from "solid-js";
5
- import type { VListConfig, VListItem, VListEvents, EventHandler } from "vlist";
6
- import { type VList } from "vlist";
7
- export type UseVListConfig<T extends VListItem = VListItem> = Omit<VListConfig<T>, "container">;
5
+ import type { VListItem, VListEvents, EventHandler, CreateVListConfig } from "vlist";
6
+ import type { VList } from "vlist";
7
+ export type { VListItem, VListEvents, VList, CreateVListConfig, ItemConfig, ItemTemplate, EventHandler, Unsubscribe, VListPlugin, } from "vlist";
8
+ export type UseVListConfig<T extends VListItem = VListItem> = Omit<CreateVListConfig<T>, "container">;
8
9
  export interface CreateVListReturn<T extends VListItem = VListItem> {
9
10
  setRef: (el: HTMLDivElement) => void;
10
11
  instance: Accessor<VList<T> | null>;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{onMount as t0,onCleanup as e0,createEffect as $6,on as P6}from"solid-js";var N1=2,V1=(J=0)=>({velocity:0,sampleCount:0}),_1=(J,q)=>{let Y=performance.now(),X=J._lt??Y,K=J._lp??q,Q=Y-X;if(J._lp=q,J._lt=Y,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},W1=(J,q)=>{let Y=q;return{getOffset:(X)=>X*J,getSize:(X)=>J,indexAtOffset:(X)=>{if(Y===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(X/J),Y-1))},getTotalSize:()=>Y*J,getTotal:()=>Y,rebuild:(X)=>{Y=X},isVariable:()=>!1}},D1=(J,q)=>{let Y=q,X=new Float64Array(0),K=(U)=>{Y=U,X=new Float64Array(U+1),X[0]=0;for(let _=0;_<U;_++)X[_+1]=X[_]+J(_)};K(q);let Q=(U)=>{if(Y===0)return 0;if(U<=0)return 0;if(U>=X[Y])return Y-1;let _=0,Z=Y-1;while(_<Z){let B=_+Z+1>>>1;if(X[B]<=U)_=B;else Z=B-1}return _};return{getOffset:(U)=>{if(U<=0)return 0;if(U>=Y)return X[Y];return X[U]},getSize:(U)=>J(U),indexAtOffset:(U)=>Q(U),getTotalSize:()=>X[Y]??0,getTotal:()=>Y,rebuild:(U)=>K(U),isVariable:()=>!0}},cJ=(J,q)=>{if(typeof J==="number")return W1(J,q);return D1(J,q)},G1=(J,q,Y,X)=>{if(X===0)return 0;if(!J.isVariable())return Math.ceil(Y/J.getSize(0));let K=0,Q=0,U=q;while(U<X&&Q<Y)Q+=J.getSize(U),K++,U++;return Math.max(1,K)},M1=()=>{let J={},q=(Q,U)=>{if(!J[Q])J[Q]=new Set;return J[Q].add(U),()=>Y(Q,U)},Y=(Q,U)=>{J[Q]?.delete(U)};return{on:q,off:Y,emit:(Q,U)=>{J[Q]?.forEach((_)=>{try{_(U)}catch(Z){console.error(`[vlist] Error in event handler for "${String(Q)}":`,Z)}})},clear:(Q)=>{if(Q)delete J[Q];else for(let U in J)delete J[U]}}},O1=(J)=>{if(typeof J==="string"){let q=document.querySelector(J);if(!q)throw Error(`[vlist] Container not found: ${J}`);return q}return J},wJ=(J,q)=>{let Y=document.createElement("div");if(Y.className=J,q)Y.style.cssText=q;return Y},E1=(J,q,Y,X,K)=>{let Q=X,U=wJ(q);if(Q)U.classList.add(`${q}--horizontal`);if(K!==!1)U.setAttribute("tabindex","0");let _=wJ(`${q}-viewport`,Q?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%");_.setAttribute("tabindex","-1");let Z=wJ(`${q}-content`,Q?"position:relative;height:100%":"position:relative;width:100%"),B=wJ(`${q}-items`,Q?"position:relative;height:100%":"position:relative;width:100%");if(B.setAttribute("role","listbox"),Y)B.setAttribute("aria-label",Y);if(Q)B.setAttribute("aria-orientation","horizontal");let N=wJ(`${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"),Z.appendChild(B),_.appendChild(Z),U.appendChild(N),U.appendChild(_),J.appendChild(U),{root:U,viewport:_,content:Z,items:B,liveRegion:N}},A1=(J=100)=>{let q=[];return{acquire:()=>{let Y=q.pop();if(Y)return Y;let X=document.createElement("div");return X.setAttribute("role","option"),X},release:(Y)=>{if(q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),q.push(Y)},clear:()=>{q.length=0}}},L1=(J,q,Y,X,K)=>{if(X===0||q===0){K.start=0,K.end=-1;return}let Q=Y.indexAtOffset(J),U=Y.indexAtOffset(J+q);if(U<X-1)U++;K.start=Math.max(0,Q),K.end=Math.min(X-1,Math.max(0,U))},F1=(J,q,Y,X)=>{X.start=Math.max(0,J.start-q),X.end=Math.min(Y-1,J.end+q)},T1=(J,q,Y,X,K,Q=0)=>{if(X===0)return 0;let U=Math.max(0,Math.min(J,X-1)),_=q.getOffset(U),Z=q.getSize(U),B=q.getTotalSize(),N=Math.max(0,B+Q-Y),$;switch(K){case"center":$=_-(Y-Z)/2;break;case"end":$=Q>0&&_+Z>=B?N:_-Y+Z;break;default:$=_}return Math.max(0,Math.min($,N))},xJ={top:0,right:0,bottom:0,left:0},RJ=(J)=>{if(J==null)return xJ;if(typeof J==="number")return J===0?xJ:{top:J,right:J,bottom:J,left:J};if(J.length===2){let[Q,U]=J;return Q===0&&U===0?xJ:{top:Q,right:U,bottom:Q,left:U}}let[q,Y,X,K]=J;return q===0&&Y===0&&X===0&&K===0?xJ:{top:q,right:Y,bottom:X,left:K}},K0=(J,q)=>q?J.left+J.right:J.top+J.bottom,C0=(J,q)=>q?J.top+J.bottom:J.left+J.right,U0=(J,q,Y)=>{let X=Array.from(q).sort((U,_)=>U-_);if(X.length<=1)return;let K=[];for(let U=0;U<X.length;U++){let _=Y(X[U]);if(_)K.push(_)}if(K.length<=1)return;let Q=J.firstChild;for(let U=0;U<K.length;U++){let _=K[U];if(_===Q)Q=Q.nextSibling;else J.insertBefore(_,Q)}},k1=(J,q)=>{let{dom:Y,emitter:X,resolvedConfig:K,rawConfig:Q,rendered:U,pool:_,sharedState:Z,isHorizontal:B,classPrefix:N,contentSizeHandlers:$,idleHandlers:D,afterScroll:E,clickHandlers:R,keydownHandlers:w,resizeHandlers:b,destroyHandlers:S,methods:C,onScrollFrame:u,resizeObserver:l,renderRange:f,afterRenderBatch:h}=q;return{get dom(){return Y},get sizeCache(){return J.hc},get emitter(){return X},get config(){return K},get rawConfig(){return Q},adjustScrollPosition(T){if(J.mp===0)return T;let r=B?J.cw:J.ch,i=J.hc.getTotalSize(),n=Math.max(0,i-r),k=Math.max(0,i+J.mp-r);if(T>=n)return k;return Math.min(T,k)},get renderer(){return{render:(T,r,i,n,k)=>{J.ss=i,J.fi=n,J.ffn()},updateItemClasses:(T,r,i)=>{J.uic(T,r,i)},updatePositions:()=>{},updateItem:()=>{},getElement:(T)=>U.get(T)??null,clear:()=>{},destroy:()=>{}}},set renderer(T){},get dataManager(){return J.dm},set dataManager(T){J.dm=T},get scrollController(){return J.sc},set scrollController(T){J.sc=T},state:Z,getContainerWidth(){return J.cw},afterScroll:E,idleHandlers:D,afterRenderBatch:h,clickHandlers:R,keydownHandlers:w,resizeHandlers:b,contentSizeHandlers:$,destroyHandlers:S,methods:C,replaceTemplate(T){J.at=T},replaceRenderer(T){},replaceDataManager(T){J.dm=T},replaceScrollController(T){J.sc=T},getItemsForRange(T){let{dm:r,it:i}=J,n=[];for(let k=T.start;k<=T.end;k++){let y=r?r.getItem(k):i[k];if(y)n.push(y)}return n},getAllLoadedItems(){let T=J.dm;if(T){let r=T.getTotal(),i=[];for(let n=0;n<r;n++){let k=T.getItem(n);if(k)i.push(k)}return i}return[...J.it]},getVirtualTotal(){return J.vtf()},getCachedCompression(){let T=J.hc;return{isCompressed:!1,actualSize:T.getTotalSize(),virtualSize:T.getTotalSize(),ratio:1}},getCompressionContext(){return{scrollPosition:J.ls,totalItems:J.vtf(),containerSize:J.ch,rangeStart:f.start,compression:Z.cachedCompression?.state}},renderIfNeeded(){J.rfn()},forceRender(){J.ffn()},invalidateRendered(){for(let[,T]of U)T.remove(),_.release(T);U.clear()},getRenderFns(){return{renderIfNeeded:J.rfn,forceRender:J.ffn}},setRenderFns(T,r){J.rfn=T,J.ffn=r},setVirtualTotalFn(T){J.vtf=T},rebuildSizeCache(T){J.hc.rebuild(T??J.vtf())},setSizeConfig(T){if(J.hc=cJ(T,J.vtf()),J.gp>0){let r=J.hc.getTotalSize,i=J.gp;J.hc.getTotalSize=()=>{let n=r();return n>0?n-i:0}}},updateContentSize(T){let r=`${T+J.mp}px`;if(B)Y.content.style.width=r;else Y.content.style.height=r},updateCompressionMode(){for(let T=0;T<$.length;T++)$[T]()},setVisibleRangeFn(T){J.gvr=T},setScrollToPosFn(T){J.gsp=T},getScrollToPos(T,r,i,n){return J.gsp(T,J.hc,r,i,n)},setPositionElementFn(T){J.pef=T},setScrollFns(T,r){J.sgt=T,J.sst=(i)=>{r(i),u()}},setScrollTarget(T){J.st.removeEventListener("scroll",u),J.st=T,J.st.addEventListener("scroll",u,{passive:!0})},getScrollTarget(){return J.st},setContainerDimensions(T){J.gcw=T.width,J.gch=T.height,J.cw=T.width(),J.ch=T.height(),Z.viewportState.containerSize=B?J.cw:J.ch},disableViewportResize(){if(J.vre)J.vre=!1,l.unobserve(Y.viewport)},disableWheelHandler(){if(J.wh)Y.viewport.removeEventListener("wheel",J.wh),J.wh=null},getStripeIndexFn(){return J.sif},setStripeIndexFn(T){J.sif=T},getItemToScrollIndexFn(){return J.i2s},setItemToScrollIndexFn(T){J.i2s=T},setUpdateItemClassesFn(T){J.uic=T}}},b1=(J,q,Y)=>{let{rendered:X,itemState:K,applyTemplate:Q,updateContentSize:U}=q,_=()=>{J.hc.rebuild(J.vtf()),U(),Y.updateCompressionMode(),J.ffn()},Z=()=>J.it.length;return{getState:()=>({total:Z(),cached:Z(),isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:Z,getCached:Z,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(B)=>J.it[B],isItemLoaded:(B)=>B>=0&&B<Z()&&J.it[B]!==void 0,getItemsInRange:(B,N)=>{let $=[];for(let D=Math.max(0,B),E=Math.min(N,Z()-1);D<=E;D++)$.push(J.it[D]);return $},setTotal:()=>{},setItems:(B,N=0,$)=>{if(N===0&&($!==void 0||Z()===0))J.it=B;else{let D=N+B.length;if(Z()<D)J.it.length=D;for(let E=0;E<B.length;E++)J.it[N+E]=B[E]}if(J.ii)_()},updateItem:(B,N)=>{let $=J.it;if(B<0||B>=$.length)return!1;let D=$[B];if(!D)return!1;$[B]={...D,...N};let E=X.get(B);if(E)Q(E,J.at($[B],B,K)),E.dataset.id=String($[B].id);return!0},removeItem:(B)=>{let N=typeof B==="number"?B:J.it.findIndex(($)=>$.id===B);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),U(),J.ffn()}}},H1=(J,q)=>{let{dom:Y,classPrefix:X}=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:()=>Y.root.classList.contains(`${X}--scrolling`),updateConfig:()=>{},enableCompression:()=>{J.sic=!0},disableCompression:()=>{J.sic=!1},isCompressed:()=>J.sic,isWindowMode:()=>!1,updateContainerHeight:(K)=>{J.ch=K},destroy:()=>{}}},I0=(J,q,Y,X,K=0,Q=0)=>{let U=q.getOffset(J),_=q.getSize(J),Z=U+K,B=Z+_,N=Y+X;if(Z<Y)return Math.max(0,U);if(B>N)return B+Q-X;return Y},S0=(J,q,Y,X,K=0,Q=0,U,_,Z)=>{if(!(U!=null&&U.isCompressed&&U.ratio!==1))return I0(J,q,Y,X,K,Q);let N=_,{virtualSize:$}=U,D=q.getSize(Math.max(0,J)),E=X-K-Q,R=Math.max(1,Math.floor(E/D)),w=$/N;if(Z){if(J>=Z.start+R){let C=E/D,u=J+1-C;return Math.max(0,u*w)}if(J<=Z.start)return Math.max(0,J*w);return Y}let b=Y/$*N,S=b+R;if(J>=S){let C=E/D,u=J+1-C;return Math.max(0,u*w)}if(J<b)return Math.max(0,J*w);return Y},$1=(J,q,Y,X,K,Q,U,_,Z,B,N,$,D)=>{let E=`${Y}-item--focused`,R=!1,w=null,b=null,S=null,C=null,u=!1,l=()=>{if(u)return;u=!0,w=Z.get("_getNavTotal")??null,b=Z.get("_getNavDelta")??null,S=Z.get("_navigate")??null,C=Z.get("_scrollItemIntoView")??null},f=()=>{return l(),w?w():J.vtf()},h=()=>{return l(),b?b():{ud:1,lr:0,cols:0}};Z.set("_getFocusedIndex",()=>R?J.fi:-1);let T=(P)=>{if(q.root.setAttribute("aria-activedescendant",`${X}-item-${P}`),l(),C)C(P);else{let H=K?J.cw:J.ch,G=J.i2s(P),F=I0(G,J.hc,J.ls,H,Q,U);if(F!==J.ls)J.sst(F),J.ls=J.sgt()}J.ffn()},r=(P)=>{J.fi=P,R=!0,T(P)},i=(P,H)=>{if(J.fi=P,H)R=!0;let G=J.dm?J.dm.getItem(P):J.it[P];if(G&&J.ss.has(G.id))J.ss.clear();else if(J.ss.clear(),G)J.ss.add(G.id);T(P)},n=(P,H,G)=>{let F=P;while(F>=0&&F<G){let z=J.dm?J.dm.getItem(F):J.it[F];if(!z||!z.__groupHeader)return F;F+=H}F=P-H;while(F>=0&&F<G){let z=J.dm?J.dm.getItem(F):J.it[F];if(!z||!z.__groupHeader)return F;F-=H}return P},k=()=>{if(J.id)return;if(!q.root.matches(":focus-visible"))return;let P=f();if(P===0)return;let H=J.fi>=0?Math.min(J.fi,P-1):0;H=n(H,1,P),r(H)};q.root.addEventListener("focusin",k);let y=(P)=>{if(J.id)return;let H=P.relatedTarget;if(H&&q.root.contains(H))return;if(R=!1,J.fi>=0)B.get(J.fi)?.classList.remove(E);q.root.removeAttribute("aria-activedescendant")};q.root.addEventListener("focusout",y),N.push((P)=>{if(J.id)return;let H=f();if(H===0)return;let G=J.fi,F=G;if(P.key===" "||P.key==="Enter"){if(G>=0){let z=J.dm?J.dm.getItem(G):J.it[G];if(z&&!z.__groupHeader)i(G,!0)}P.preventDefault();return}if(l(),S)switch(P.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":F=S(G,P.key,H);break;default:return}else{let{ud:z,lr:x}=h();switch(P.key){case"ArrowUp":F=G-z;break;case"ArrowDown":F=G+z;break;case"ArrowLeft":if(!x)return;F=G-x;break;case"ArrowRight":if(!x)return;F=G+x;break;case"PageUp":case"PageDown":{let e=J.hc.getSize(J.i2s(Math.max(0,G))),a=Math.max(z,Math.floor((K?J.cw:J.ch)/e)*z);F=P.key==="PageUp"?G-a:G+a;break}case"Home":F=0;break;case"End":F=H-1;break;default:return}if(F<0)F=_?H-1:0;else if(F>=H)F=_?0:H-1}if(P.preventDefault(),F=n(F,F>=G?1:-1,H),F!==G)r(F)}),$.push((P)=>{if(J.id)return;let H=P.target.closest("[data-index]");if(!H)return;let G=parseInt(H.dataset.index??"-1",10);if(G<0)return;let F=J.dm?.getItem(G)??J.it[G];if(!F||F.__groupHeader)return;R=!1,q.root.focus(),i(G,!1)}),D.push(()=>{q.root.removeEventListener("focusin",k),q.root.removeEventListener("focusout",y)})},L0=200,zJ=50,P1=50,y1=12,R1=2,Q0=16000000,w1="x",z1=20,f0="_isPlaceholder",yJ="__placeholder_",lJ=(J,q,Y)=>{if(String(Y).startsWith(yJ))return!1;let X=yJ+q;if(J.has(X))return J.delete(X),J.add(Y),!0;return!1},v1=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),IJ=(J,q,Y)=>{if(Y==="none")return J;let X=new Set(J.selected);if(Y==="single"){if(X.clear(),q.length>0)X.add(q[0])}else for(let K of q)X.add(K);return{...J,selected:X}},h0=(J,q)=>{let Y=new Set(J.selected);for(let X of q)Y.delete(X);return{...J,selected:Y}},vJ=(J,q,Y)=>{if(Y==="none")return J;if(J.selected.has(q))return h0(J,[q]);else return IJ(J,[q],Y)},F0=(J,q,Y)=>{if(Y!=="multiple")return J;return{...J,selected:new Set(q.map((X)=>X.id))}},T0=(J)=>({...J,selected:new Set}),CJ=(J,q)=>{return J.focusedIndex=q,J},q0=(J,q,Y=!1,X=1)=>{if(q===0)return J;let K=J.focusedIndex-X;if(K<0)K=Y?q-1:0;return J.focusedIndex=K,J},X0=(J,q,Y=!1,X=1)=>{if(q===0)return J;let K=J.focusedIndex+X;if(K>=q)K=Y?0:q-1;return J.focusedIndex=K,J},C1=(J,q)=>{if(q===0)return J;return J.focusedIndex=0,J},I1=(J,q)=>{if(q===0)return J;return J.focusedIndex=q-1,J},k0=(J,q,Y,X)=>{if(q===0)return J;let K=X==="up"?J.focusedIndex-Y:J.focusedIndex+Y;return K=Math.max(0,Math.min(q-1,K)),J.focusedIndex=K,J},b0=(J)=>{return Array.from(J.selected)},H0=(J,q)=>{let Y=[];for(let X of J.selected){let K=q(X);if(K)Y.push(K)}return Y},Y0=(J,q,Y,X,K)=>{if(K!=="multiple")return J;let Q=Math.min(Y,X),U=Math.max(Y,X),_=[];for(let Z=Q;Z<=U;Z++){let B=q[Z];if(B)_.push(B.id)}return IJ(J,_,K)},p0=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,rJ=(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}},B0=(J,q)=>{let Y=null,X=()=>{if(Y!==null)cancelAnimationFrame(Y),Y=null};return{animateScroll:(Q,U,_)=>{if(X(),Math.abs(U-Q)<1){J.scrollTo(U);return}let Z=performance.now(),B=(N)=>{let $=N-Z,D=Math.min($/_,1),E=Q+(U-Q)*p0(D);if(J.scrollTo(E),q(),D<1)Y=requestAnimationFrame(B);else Y=null};Y=requestAnimationFrame(B)},cancelScroll:X}},S1=(J,q,Y,X,K,Q,U,_,Z,B,N,$,D,E,R,w,b,S)=>{let C=(M)=>{{if(!Array.isArray(M)){console.warn("[vlist] setItems() expects an array, got:",typeof M);return}if(M.length>0&&M[0]&&!("id"in M[0]))console.warn('[vlist] Items must have an "id" property. First item:',M[0]);let A=new Set;for(let W=0;W<M.length;W++){let g=M[W];if(g&&"id"in g){if(A.has(g.id)){console.warn(`[vlist] Duplicate item ID "${g.id}" at index ${W}. updateItem() and removeItem() will only match the first occurrence.`);break}A.add(g.id)}}}z(),Z.dataManager.setItems(M,0,M.length)},u=(M)=>{let A=B&&J.sab(2);if(Z.dataManager.setItems(M,J.it.length),A&&J.it.length>0){let W=J.gsp(J.it.length-1,J.hc,J.ch,J.it.length,"end");J.sst(W),J.ls=W,J.rfn()}},l=(M)=>{let A=B?J.sgt():0,W=B?J.hc.getTotalSize():0,g=[...J.it];if(Z.dataManager.clear(),Z.dataManager.setItems([...M,...g],0),B){let v=J.hc.getTotalSize()-W;if(v>0)J.sst(A+v),J.ls=A+v}},f=null,h=null,T=null,r=!1,i=()=>{if(r)return;r=!0,f=Q.get("_updateRenderedItem")??null,h=Q.get("_getSelectedIds")??null,T=Q.get("_getFocusedIndex")??null},n=(M,A)=>{{let g=J.vtf();if(M<0||M>=g)console.warn(`[vlist] updateItem() index ${M} is out of range (0–${g-1}).`)}if(Z.dataManager.updateItem(M,A),i(),!f)return;let W=Z.dataManager.getItem(M);if(W){let v=(h?h():J.ss).has(W.id),m=(T?T():J.fi)===M;f(M,W,v,m)}},k=!1,y=(M)=>{let A=typeof document<"u"?document.activeElement:null,W=A&&q.items.contains(A)?parseInt(A.dataset?.index??"-1",10):-1;if(!Z.dataManager.removeItem(M))return console.warn(`[vlist] removeItem() could not find item with id "${M}".`),!1;if(Y.emit("data:change",{type:"remove",id:M}),Z.forceRender(),!k){let v=Z.dataManager;if(typeof v.ensureRange==="function")k=!0,queueMicrotask(()=>{k=!1;let m=Z.dataManager.getTotal(),{start:o,end:QJ}=Z.state.viewportState.renderRange;if(m>0&&QJ>=o)v.ensureRange(o,QJ).catch(()=>{})})}if(W>=0){let v=J.vtf();if(v>0)X.get(Math.min(W,v-1))?.focus()}return!0},P=(M)=>{return Z.dataManager.getItem(M)},H=(M)=>{return Z.dataManager.getIndexById?.(M)??-1},G=async(M)=>{if(Z.dataManager.reload)await Z.dataManager.reload()},F=null,z=()=>{if(F!==null)cancelAnimationFrame(F),F=null},x=(M,A,W,g)=>{if(z(),Math.abs(A-M)<1){J.sst(A),J.ls=A,J.rfn();return}let v=performance.now(),m=(o)=>{let QJ=o-v,d=Math.min(QJ/W,1),c=g?g():A,JJ=M+(c-M)*p0(d);if(J.sst(JJ),J.ls=JJ,J.rfn(),d<1)F=requestAnimationFrame(m);else F=null};F=requestAnimationFrame(m)},e=(M,A)=>{{let d=J.vtf();if(d>0&&(M<0||M>=d))console.warn(`[vlist] scrollToIndex(${M}) is out of range (0–${d-1}).`)}let{align:W,behavior:g,duration:v}=rJ(A),m=J.vtf(),o=M;if(N&&m>0)o=(o%m+m)%m;let QJ=J.gsp(o,J.hc,J.ch,m,W);if(g==="smooth"){let d=o,c=W;x(J.sgt(),QJ,v,()=>J.gsp(d,J.hc,J.ch,J.vtf(),c))}else z(),J.sst(QJ)},a=()=>J.sgt(),p=(M,A)=>{return Y.on(M,A)},L=(M,A)=>{Y.off(M,A)},V=()=>{if(J.id)return;if(J.id=!0,Z.state.isDestroyed=!0,q.items.removeEventListener("click",$),q.items.removeEventListener("dblclick",D),q.root.removeEventListener("keydown",E),J.st.removeEventListener("scroll",R),w.disconnect(),b(),J.wh)q.viewport.removeEventListener("wheel",J.wh);S();let M=[];for(let A=0;A<_.length;A++)try{_[A]()}catch(W){M.push(W instanceof Error?W:Error(String(W)))}for(let A of U)if(A.destroy)try{A.destroy()}catch(W){M.push(W instanceof Error?W:Error(String(W)))}z();for(let[,A]of X)A.remove(),K.release(A);X.clear(),K.clear(),Y.emit("destroy",void 0);for(let A of M)Y.emit("error",{error:A,context:"destroy"});Y.clear(),q.root.remove()},j=(M,A)=>Q.has(M)?Q.get(M):A,O={get element(){return q.root},get items(){let M=Q.get("_getItems");return M?M():J.it},get total(){let M=Q.get("_getTotal");return M?M():J.vtf()},setItems:j("setItems",C),appendItems:j("appendItems",u),prependItems:j("prependItems",l),updateItem:j("updateItem",n),removeItem:j("removeItem",y),reload:j("reload",G),getItemAt:P,getIndexById:H,scrollToIndex:j("scrollToIndex",e),cancelScroll:j("cancelScroll",z),getScrollPosition:j("getScrollPosition",a),on:p,off:L,destroy:V};for(let[M,A]of Q){if(M.charCodeAt(0)===95||M==="setItems"||M==="appendItems"||M==="prependItems"||M==="updateItem"||M==="removeItem"||M==="reload"||M==="scrollToIndex"||M==="scrollToItem"||M==="cancelScroll"||M==="getScrollPosition")continue;O[M]=A}return O},f1=3,h1="vlist",p1=150,u1=0,u0=(J)=>{if(!J.container)throw Error("[vlist] Container is required");if(!J.item)throw Error("[vlist] item configuration is required");let q=J.orientation==="horizontal",Y=q?"width":"height",X=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.${Y} or item.${X} is required${q?" when orientation is 'horizontal'":""}`);if(K!=null){if(typeof K==="number"&&K<=0)throw Error(`[vlist] item.${Y} must be a positive number`);if(typeof K!=="number"&&typeof K!=="function")throw Error(`[vlist] item.${Y} must be a number or a function (index) => number`)}else if(Q!=null){if(typeof Q!=="number"||Q<=0)throw Error(`[vlist] item.${X} must be a positive number`)}if(!J.item.template)throw Error("[vlist] item.template is required");if(q&&J.reverse)throw Error("[vlist] horizontal direction cannot be combined with reverse mode");let U=new Map,_=!1,Z={use(B){if(_)throw Error("[vlist] Cannot call .use() after .build()");return U.set(B.name,B),Z},build(){if(_)throw Error("[vlist] .build() can only be called once");return _=!0,g1(J,U,q,K,Q??null)}};return Z};function g1(J,q,Y,X,K){let{item:Q,items:U,overscan:_=f1,classPrefix:Z=h1,ariaLabel:B,padding:N,reverse:$=!1,scroll:D,accessible:E,interactive:R}=J,w=R??E??!0,b=D,S=b?.wheel??!0,C=b?.wrap??!1,u=$,l=`${Z}-${u1++}`,f=q.has("withGrid")||q.has("withMasonry")?0:Q.gap??0,h=X??K,T=X==null&&K!=null,r=typeof matchMedia==="function"&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches,i=Y?typeof Q.height==="number"?Q.height:void 0:typeof Q.width==="number"?Q.width:void 0,n={overscan:_,classPrefix:Z,reverse:u,wrap:C,horizontal:Y,ariaIdPrefix:l,interactive:w},k=Array.from(q.values()).sort((I,s)=>(I.priority??50)-(s.priority??50)),y=new Set(k.map((I)=>I.name));for(let I of k)if(I.conflicts){for(let s of I.conflicts)if(y.has(s))throw Error(`[vlist] ${I.name} and ${s} cannot be combined`)}if(u){if(y.has("withGrid"))throw Error("[vlist] withGrid cannot be used with reverse: true")}let P=O1(J.container),H=E1(P,Z,B,Y,w);if(b?.wheel===!1)if(Y)H.viewport.style.overflowX="hidden";else H.viewport.style.overflow="hidden";if(b?.scrollbar==="none")H.viewport.classList.add(`${Z}-viewport--no-scrollbar`);if(b?.gutter==="stable")H.viewport.classList.add(`${Z}-viewport--gutter-stable`);let G=RJ(N),F=K0(G,Y);if(G.top||G.right||G.bottom||G.left)H.content.style.boxSizing="border-box",H.content.style.padding=`${G.top}px ${G.right}px ${G.bottom}px ${G.left}px`;let z=M1(),x=U||[],e=typeof h==="function"&&(q.has("withGrid")||q.has("withMasonry")),a=f>0?typeof h==="function"?(I)=>h(I)+f:h+f:h,p=T?K+f:a,L=cJ(p,e?0:x.length);if(f>0){let I=L.getTotalSize;L.getTotalSize=()=>{let s=I();return s>0?s-f:0}}let V=A1(),j={it:x,hc:L,ch:H.viewport.clientHeight,cw:H.viewport.clientWidth,id:!1,ii:!1,ls:0,vt:V1(0),ss:new Set,fi:-1,la:"",dm:null,sc:null,vtf:null,sgt:Y?()=>H.viewport.scrollLeft:()=>H.viewport.scrollTop,sst:Y?(I)=>{H.viewport.scrollLeft=I}:(I)=>{H.viewport.scrollTop=I},sab:(I=2)=>{let s=j.hc.getTotalSize();return j.ls+j.ch>=s-I},sic:!1,rfn:null,ffn:null,gvr:(I,s,t,jJ,VJ)=>{L1(I,s,t,jJ,VJ)},gsp:(I,s,t,jJ,VJ)=>{return T1(I,s,t,jJ,VJ,j.mp)},pef:null,at:Q.template,vre:!0,st:H.viewport,wh:null,gcw:()=>j.cw,gch:()=>j.ch,gp:f,mp:F,sif:(I)=>I,i2s:(I)=>I,uic:(I,s,t)=>{let jJ=o.get(I);if(!jJ)return;XJ(jJ,s,t)},csi:null};j.vtf=()=>j.dm?j.dm.getTotal():j.it.length;let O=null,M=!1,A={start:0,end:0},W={start:0,end:0},g={start:-1,end:-1},v={viewportState:{scrollPosition:0,containerSize:Y?j.cw:j.ch,totalSize:j.hc.getTotalSize(),actualSize:j.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},m=()=>({...v.viewportState,totalItems:j.vtf()}),o=new Map,QJ=()=>{U0(H.items,o.keys(),(I)=>o.get(I))},d=()=>{let s=`${j.hc.getTotalSize()+F}px`;if(Y)H.content.style.width=s;else H.content.style.height=s},c={selected:!1,focused:!1},JJ=`${Z}-item`,qJ=`${Z}-item--selected`,YJ=`${Z}-item--focused`,XJ=(I,s,t)=>{I.classList.toggle(qJ,s),I.classList.toggle(YJ,t),I.ariaSelected=s?"true":"false"},KJ=Q.striped,OJ=!!KJ,BJ=KJ==="data"||KJ==="even"||KJ==="odd",DJ=`${Z}-item--odd`,EJ=`${Z}-item--placeholder`,UJ=`${Z}-item--replaced`,MJ=`${Z}--scrolling`,NJ=[],AJ=[],FJ=[],SJ=[],aJ=[],J1=[],fJ=[],hJ=[],TJ=new Map,sJ="__placeholder_",oJ=null,nJ=null,V0=!1,Q1=()=>{if(V0)return;V0=!0,oJ=TJ.get("_getSelectedIds")??null,nJ=TJ.get("_getFocusedIndex")??null},pJ=(I,s,t)=>{if(!s)console.warn(`[vlist] Template returned falsy value${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);else if(typeof s==="string"&&s==="")console.warn(`[vlist] Template returned empty string${t!==void 0?` for item at index ${t}`:""}. The element will render as blank.`);if(typeof s==="string")I.innerHTML=s;else I.replaceChildren(s)},q1=(I,s)=>{let t=Math.round(j.hc.getOffset(s));if(Y)I.style.transform=`translateX(${t}px)`;else I.style.transform=`translateY(${t}px)`};j.pef=q1;let X1=(I,s)=>{let t=V.acquire();t.className=JJ;let jJ=!j.csi||j.csi(I);if(Y){if(jJ)t.style.width=`${j.hc.getSize(I)-f}px`;else t.style.width="";if(i!=null)t.style.height=`${i}px`}else if(jJ)t.style.height=`${j.hc.getSize(I)-f}px`;else t.style.height="";if(t.dataset.index=String(I),t.dataset.id=String(s.id),t.ariaSelected="false",t.id=`${l}-item-${I}`,j.la=String(j.vtf()),t.setAttribute("aria-setsize",j.la),t.setAttribute("aria-posinset",String(I+1)),String(s.id).startsWith(sJ))t.classList.add(EJ);if(OJ)if(BJ){let LJ=j.sif(I);if(LJ<0)t.classList.remove(DJ);else t.classList.toggle(DJ,(LJ&1)===1)}else t.classList.toggle(DJ,(I&1)===1);try{pJ(t,j.at(s,I,c),I)}catch(LJ){let _J=LJ instanceof Error?LJ:Error(String(LJ));z.emit("error",{error:_J,context:`tpl(${I},${s.id})`,viewport:m()}),t.textContent=""}return j.pef(t,I),t},Y1=()=>{if(j.id)return;let I=Y?j.cw:j.ch;if(I<=0)return;Q1();let s=oJ?oJ():j.ss,t=nJ?nJ():j.fi,jJ=j.vtf();if(j.gvr(j.ls,I,j.hc,jJ,A),F1(A,_,jJ,W),W.start===g.start&&W.end===g.end){if(j.sic)for(let[ZJ,WJ]of o)j.pef(WJ,ZJ);v.viewportState.scrollPosition=j.ls,v.viewportState.containerSize=I,v.viewportState.visibleRange.start=A.start,v.viewportState.visibleRange.end=A.end,v.viewportState.renderRange.start=W.start,v.viewportState.renderRange.end=W.end;return}let VJ=String(jJ),LJ=VJ!==j.la;j.la=VJ;for(let[ZJ,WJ]of o)if(ZJ<W.start||ZJ>W.end)WJ.remove(),V.release(WJ),o.delete(ZJ);let _J=document.createDocumentFragment(),kJ=[],E0=[];for(let ZJ=W.start;ZJ<=W.end;ZJ++){let WJ=j.dm?j.dm.getItem(ZJ):j.it[ZJ];if(WJ===void 0)continue;let GJ=o.get(ZJ);if(GJ){let bJ=GJ.dataset.id,$J=String(WJ.id);if(bJ!==$J){let U1=bJ?.startsWith(sJ),eJ=$J.startsWith(sJ);try{pJ(GJ,j.at(WJ,ZJ,c),ZJ)}catch(J0){let B1=J0 instanceof Error?J0:Error(String(J0));z.emit("error",{error:B1,context:`tpl(${ZJ},${WJ.id})`,viewport:m()}),GJ.textContent=""}GJ.dataset.id=$J;let A0=!j.csi||j.csi(ZJ);if(Y)GJ.style.width=A0?`${j.hc.getSize(ZJ)-f}px`:"";else GJ.style.height=A0?`${j.hc.getSize(ZJ)-f}px`:"";if(eJ)GJ.classList.add(EJ);else GJ.classList.remove(EJ);if(U1&&!eJ)GJ.classList.add(UJ),setTimeout(()=>{GJ.classList.remove(UJ)},300);if(!eJ)lJ(s,ZJ,WJ.id)}j.pef(GJ,ZJ);let mJ=s.has(WJ.id);if(XJ(GJ,mJ,ZJ===t),LJ)GJ.setAttribute("aria-setsize",j.la)}else{let bJ=X1(ZJ,WJ);E0.push({index:ZJ,element:bJ}),lJ(s,ZJ,WJ.id);let $J=s.has(WJ.id),mJ=ZJ===t;if($J||mJ)XJ(bJ,$J,mJ);_J.appendChild(bJ),kJ.push({index:ZJ,element:bJ})}}if(kJ.length>0){H.items.appendChild(_J);for(let{index:ZJ,element:WJ}of kJ)o.set(ZJ,WJ)}if(fJ.length>0)for(let ZJ=0;ZJ<fJ.length;ZJ++)fJ[ZJ](E0);g.start=W.start,g.end=W.end,v.lastRenderRange.start=W.start,v.lastRenderRange.end=W.end,v.viewportState.scrollPosition=j.ls,v.viewportState.visibleRange.start=A.start,v.viewportState.visibleRange.end=A.end,v.viewportState.renderRange.start=W.start,v.viewportState.renderRange.end=W.end,z.emit("range:change",{range:{start:W.start,end:W.end}})},j1=()=>{g.start=-1,g.end=-1,j.rfn()};j.rfn=Y1,j.ffn=j1;let Z1=()=>{H.root.classList.remove(MJ),M=!1,j.vt.velocity=0,j.vt.sampleCount=0,z.emit("velocity:change",{velocity:0,reliable:!1}),QJ();for(let I=0;I<AJ.length;I++)AJ[I]();z.emit("scroll:idle",{scrollPosition:j.ls})},K1=()=>{if(O)clearTimeout(O);O=setTimeout(Z1,b?.idleTimeout??p1)},uJ=()=>{if(j.id)return;let I=j.sgt();if(I===j.ls&&M)return;let s=I>=j.ls?"down":"up";if(j.vt=_1(j.vt,I),!H.root.classList.contains(MJ))H.root.classList.add(MJ);M=!0,j.ls=I,j.rfn(),z.emit("scroll",{scrollPosition:I,direction:s}),z.emit("velocity:change",{velocity:j.vt.velocity,reliable:j.vt.sampleCount>=N1});for(let t=0;t<NJ.length;t++)NJ[t](I,s);K1()},HJ=null;if(j.st.addEventListener("scroll",uJ,{passive:!0}),S&&!Y&&!r)HJ=(I)=>{if(v.viewportState.isCompressed)return;let s=H.viewport.scrollWidth>H.viewport.clientWidth;if(s&&Math.abs(I.deltaX)>Math.abs(I.deltaY))return;if(I.preventDefault(),s&&I.deltaX!==0)H.viewport.scrollLeft+=I.deltaX;let t=j.sgt(),jJ=H.viewport.scrollHeight-H.viewport.clientHeight,VJ=Math.max(0,Math.min(t+I.deltaY,jJ));if(Math.abs(VJ-t)<1)return;j.sst(VJ),uJ()},j.wh=HJ,H.viewport.addEventListener("wheel",HJ,{passive:!1});else if(Y&&S)HJ=(I)=>{if(I.deltaX)return;I.preventDefault(),H.viewport.scrollLeft+=I.deltaY},j.wh=HJ,H.viewport.addEventListener("wheel",HJ,{passive:!1});let _0=(I)=>{let s=I.target.closest("[data-index]");if(!s)return null;let t=parseInt(s.dataset.index??"-1",10);if(t<0)return null;let jJ=j.dm?.getItem(t)??j.it[t];if(!jJ||jJ.__groupHeader)return null;return{item:jJ,index:t}},W0=(I)=>{let s=_0(I);if(s)z.emit("item:click",{item:s.item,index:s.index,event:I});for(let t=0;t<FJ.length;t++)FJ[t](I)},D0=(I)=>{let s=_0(I);if(s)z.emit("item:dblclick",{item:s.item,index:s.index,event:I})},G0=(I)=>{for(let s=0;s<SJ.length;s++)SJ[s](I)};if(H.items.addEventListener("click",W0),H.items.addEventListener("dblclick",D0),H.root.addEventListener("keydown",G0),w){let I=null,s=(t)=>{if(I)clearTimeout(I);I=setTimeout(()=>{if(I=null,j.id)return;let jJ=j.vtf();H.liveRegion.textContent=`Showing items ${t.range.start+1} to ${Math.min(t.range.end+1,jJ)} of ${jJ}`},300)};z.on("range:change",s),hJ.push(()=>{if(I)clearTimeout(I);z.off("range:change",s)})}let iJ=new ResizeObserver((I)=>{if(j.id)return;for(let s of I){let t=s.contentRect.height,jJ=s.contentRect.width,VJ=Y?jJ:t,LJ=Y?j.cw:j.ch;if(j.cw=jJ,j.ch=t,Math.abs(VJ-LJ)>1){if(v.viewportState.containerSize=VJ,j.ii){let _J=v.cachedCompression;if(_J&&_J.state.isCompressed){let kJ=`${_J.state.virtualSize+F}px`;if(Y)H.content.style.width=kJ;else H.content.style.height=kJ}else d();j.rfn(),z.emit("resize",{height:t,width:jJ})}}if(j.ii)for(let _J=0;_J<aJ.length;_J++)aJ[_J](jJ,t)}});if(j.vre)iJ.observe(H.viewport);let tJ={dom:H,emitter:z,resolvedConfig:n,rawConfig:J,rendered:o,pool:V,itemState:c,sharedState:v,renderRange:W,isHorizontal:Y,classPrefix:Z,contentSizeHandlers:J1,idleHandlers:AJ,afterScroll:NJ,clickHandlers:FJ,keydownHandlers:SJ,resizeHandlers:aJ,destroyHandlers:hJ,methods:TJ,onScrollFrame:uJ,resizeObserver:iJ,afterRenderBatch:fJ,applyTemplate:pJ,updateContentSize:d},gJ=k1(j,tJ);j.dm=b1(j,tJ,gJ),j.sc=H1(j,tJ),TJ.set("_updateRenderedItem",(I,s,t,jJ)=>{let VJ=o.get(I);if(!VJ)return;let LJ={selected:t,focused:jJ};try{let _J=j.at(s,I,LJ);pJ(VJ,_J,I)}catch(_J){let kJ=_J instanceof Error?_J:Error(String(_J));z.emit("error",{error:kJ,context:`tpl(${I},${s.id})`,viewport:m()})}VJ.dataset.id=String(s.id),XJ(VJ,t,jJ)});let M0=new WeakSet;TJ.set("_setSizeCache",(I)=>{if(j.hc=I,j.gp>0&&!M0.has(I)){M0.add(I);let s=j.hc.getTotalSize,t=j.gp;j.hc.getTotalSize=()=>{let jJ=s();return jJ>0?jJ-t:0}}}),TJ.set("_setConstrainSize",(I)=>{j.csi=I});let O0=new Map;for(let I of k)if(I.methods)for(let s of I.methods){let t=O0.get(s);if(t)throw Error(`[vlist] Method "${s}" is registered by both "${t}" and "${I.name}"`);O0.set(s,I.name)}for(let I of k)try{I.setup(gJ)}catch(s){let t=s instanceof Error?s:Error(String(s));console.error(`[vlist] Feature "${I.name}" setup failed:`,t),z.emit("error",{error:t,context:I.name,viewport:m()})}if(T&&!q.has("withAutoSize"))console.warn("[vlist] estimatedHeight/estimatedWidth requires .use(withAutoSize()). Items will use the estimated size as a fixed size.");if(w&&!TJ.has("_getFocusedIndex")){let I=Y?G.left:G.top,s=Y?G.right:G.bottom;$1(j,H,Z,l,Y,I,s,C,TJ,o,SJ,FJ,hJ)}if(j.ii=!0,gJ.state.isInitialized=!0,d(),j.rfn(),u&&j.it.length>0){let I=j.gsp(j.it.length-1,j.hc,j.ch,j.it.length,"end");j.sst(I),j.ls=I,j.rfn()}return S1(j,H,z,o,V,TJ,k,hJ,gJ,u,C,W0,D0,G0,uJ,iJ,()=>{},()=>{if(O)clearTimeout(O)})}var dJ=(J,q,Y)=>{let X=q.getTotalSize(),K=Y===!0||X>Q0,Q=X>Q0?Q0:X,U=X>0?Q/X:1;return{isCompressed:K,actualSize:X,virtualSize:Q,ratio:U}},m1=(J,q,Y,X,K,Q)=>{if(X===0||q===0)return Q.start=0,Q.end=-1,Q;if(!K.isCompressed||K.ratio===1){let D=Y.indexAtOffset(J),E=Y.indexAtOffset(J+q);if(E<X-1)E++;return Q.start=Math.max(0,D),Q.end=Math.min(X-1,Math.max(0,E)),Q}let{virtualSize:U}=K,Z=J/U*X,B=Math.floor(Z),N=G1(Y,Math.max(0,B),q,X),$=Math.ceil(Z)+N;return Q.start=Math.max(0,B),Q.end=Math.min(X-1,Math.max(0,$)),Q},g0=(J,q,Y,X,K,Q,U)=>{if(!Q.isCompressed||X===0)return Y.getOffset(J);if(Q.ratio===1)return Y.getOffset(J)-q;let{virtualSize:_}=Q,Z=q/_,B=Y.getTotalSize(),N=Z*B;return Y.getOffset(J)-N},x1=(J,q,Y,X,K,Q="start")=>{if(X===0)return 0;let U;if(K.isCompressed&&K.ratio!==1){U=J/X*K.virtualSize;let N=q.getSize(J);switch(Q){case"center":U-=(Y-N)/2*K.ratio;break;case"end":U-=(Y-N)*K.ratio;break}return Math.max(0,U)}U=q.getOffset(J);let _=q.getSize(J);switch(Q){case"center":U-=(Y-_)/2;break;case"end":U-=Y-_;break}let Z=K.virtualSize-Y;return Math.max(0,Math.min(U,Z))},d1=!0,c1=1000,l1=30,r1=!0,a1=16,s1=!0,m0=(J,q,Y={},X="vlist",K=!1)=>{let{autoHide:Q=d1,autoHideDelay:U=c1,minThumbSize:_=l1,showOnHover:Z=r1,hoverZoneWidth:B=a1,showOnViewportEnter:N=s1}=Y,$=0,D=0,E=0,R=0,w=!1,b=!1,S=0,C=0,u=0,l=null,f=!1,h=null,T=null,r=K?"width":"height",i=K?"translateX":"translateY",n=K?(m)=>m.clientX:(m)=>m.clientY,k=K?"left":"top",y=document.createElement("div"),P=document.createElement("div"),H=Z?document.createElement("div"):null,G=()=>{if(y.className=`${X}-scrollbar`,P.className=`${X}-scrollbar-thumb`,K)y.classList.add(`${X}-scrollbar--horizontal`);if(y.appendChild(P),J.appendChild(y),H){if(H.className=`${X}-scrollbar-hover`,K)H.classList.add(`${X}-scrollbar-hover--horizontal`),H.style.height=`${B}px`;else H.style.width=`${B}px`;J.appendChild(H)}},F=()=>{if(l)clearTimeout(l),l=null},z=()=>{if(!Q)return;F(),l=setTimeout(e,U)},x=()=>{if($<=D)return;if(F(),!f)y.classList.add(`${X}-scrollbar--visible`),f=!0;if(Q&&!w&&!b)z()},e=()=>{if(w||b)return;y.classList.remove(`${X}-scrollbar--visible`),f=!1},a=(m,o)=>{$=m,D=o;let QJ=$>D;if(y.style.display=QJ?"":"none",!QJ){e();return}let d=D/$;E=Math.max(_,d*D),P.style[r]=`${E}px`,R=D-E,p(u)},p=(m)=>{if(u=m,$<=D||R<=0)return;let o=$-D,d=Math.min(1,Math.max(0,m/o))*R;P.style.transform=`${i}(${d}px)`},L=(m)=>{if(m.target===P)return;let o=y.getBoundingClientRect(),c=n(m)-o[k]-E/2,qJ=Math.max(0,Math.min(c,R))/R,YJ=$-D,XJ=qJ*YJ;q(XJ),x()},V=(m)=>{m.preventDefault(),m.stopPropagation(),w=!0,S=n(m),C=u,F(),y.classList.add(`${X}-scrollbar--dragging`),document.addEventListener("mousemove",j),document.addEventListener("mouseup",O)},j=(m)=>{if(!w)return;let o=n(m)-S,QJ=R>0?o/R:0,d=$-D,c=QJ*d,JJ=Math.max(0,Math.min(C+c,d)),YJ=JJ/d*R;if(P.style.transform=`${i}(${YJ}px)`,T=JJ,h===null)h=requestAnimationFrame(()=>{if(T!==null)q(T);h=null})},O=()=>{if(w=!1,h!==null)cancelAnimationFrame(h),h=null;if(T!==null)q(T),T=null;if(y.classList.remove(`${X}-scrollbar--dragging`),Q&&!b)z();document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",O)},M=()=>{if(N)x()},A=()=>{if(!w){if(b=!1,Q)z()}},W=()=>{b=!0,F(),x()},g=()=>{if(b=!1,!w&&Q)z()},v=()=>{if(F(),h!==null)cancelAnimationFrame(h),h=null;if(y.removeEventListener("click",L),y.removeEventListener("mouseenter",W),y.removeEventListener("mouseleave",g),P.removeEventListener("mousedown",V),J.removeEventListener("mouseenter",M),J.removeEventListener("mouseleave",A),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",O),H){if(H.removeEventListener("mouseenter",W),H.removeEventListener("mouseleave",g),H.parentNode)H.parentNode.removeChild(H)}if(y.parentNode)y.parentNode.removeChild(y)};if(G(),y.addEventListener("click",L),y.addEventListener("mouseenter",W),y.addEventListener("mouseleave",g),P.addEventListener("mousedown",V),J.addEventListener("mouseenter",M),J.addEventListener("mouseleave",A),H)H.addEventListener("mouseenter",W),H.addEventListener("mouseleave",g);return{show:x,hide:e,updateBounds:a,updatePosition:p,isVisible:()=>f,destroy:v}},x0=(J)=>{let q=null;return{name:"withScrollbar",priority:30,setup(Y){let{dom:X,config:K}=Y,{classPrefix:Q,horizontal:U}=K;if(q=m0(X.viewport,(Z)=>Y.scrollController.scrollTo(Z),J??{},Q,U),!X.viewport.classList.contains(`${Q}-viewport--custom-scrollbar`))X.viewport.classList.add(`${Q}-viewport--custom-scrollbar`);q.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize);let _=q;Y.afterScroll.push((Z,B)=>{_.updatePosition(Z),_.show()}),Y.resizeHandlers.push((Z,B)=>{if(_)_.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.contentSizeHandlers.push(()=>{if(_)_.updateBounds(Y.state.viewportState.totalSize||Y.getCachedCompression().virtualSize,Y.state.viewportState.containerSize)}),Y.destroyHandlers.push(()=>{if(_)_.destroy()})},destroy(){if(q)q.destroy(),q=null}}},o1=0.65,n1=0.5,$0=1.7,i1=0.95,t1=0.1,e1=5,J6=100,P0=(J,q,Y,X=0)=>{if(J<=0)return 0;let K=q-X;return Math.max(0,K*(1-Y)+X)},d0=(J)=>{let q=J?.force??!1,Y=null,X=0,K=!1,Q=0,U=0,_=null,Z=0,B=0,N=null,$=[];return{name:"withScale",priority:20,setup(D){let{dom:E,config:R}=D,{classPrefix:w,horizontal:b}=R,S=RJ(D.rawConfig.padding),C=b?S.left+S.right:S.top+S.bottom,u=()=>{let n=D.getVirtualTotal(),k=dJ(n,D.sizeCache,q);if(k.isCompressed&&!K){K=!0,D.scrollController.enableCompression(k);let P=b?E.viewport.scrollLeft:E.viewport.scrollTop;if(b)E.viewport.style.overflowX="hidden";else E.viewport.style.overflow="hidden";if(b)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(P>0)X=P,U=P;Q=P0(k.virtualSize,D.state.viewportState.containerSize,k.ratio,C),D.updateContentSize(k.virtualSize+Q),D.setScrollFns(()=>X,(V)=>{if(X=V,U=V,_!==null)cancelAnimationFrame(_),_=null});let H=()=>{let V=U-X;if(D.getVirtualTotal()===0){X=0,U=0,_=null,D.scrollController.scrollTo(0);return}if(Math.abs(V)<n1){let j=D.getCachedCompression(),O=Math.max(0,j.virtualSize+Q-D.state.viewportState.containerSize);X=Math.max(0,Math.min(U,O)),U=X,_=null}else{X+=V*o1;let O=D.getCachedCompression().virtualSize+Q-D.state.viewportState.containerSize;X=Math.max(0,Math.min(X,O)),_=requestAnimationFrame(H)}D.scrollController.scrollTo(X)},G=E.viewport,F=(V)=>{V.preventDefault();let j=D.getCachedCompression(),O=j.virtualSize+Q-D.state.viewportState.containerSize;if(U=Math.max(0,Math.min(U+V.deltaY*j.ratio*$0,O)),_===null)_=requestAnimationFrame(H)};G.addEventListener("wheel",F,{passive:!1});let z=()=>{if(N!==null)cancelAnimationFrame(N),N=null},x=(V)=>{if(z(),_!==null)cancelAnimationFrame(_),_=null;let j=V.touches[0];if(!j)return;let O=b?j.clientX:j.clientY;Z=O,B=X,$=[{time:performance.now(),y:O}]},e=(V)=>{V.preventDefault();let j=V.touches[0];if(!j)return;let O=b?j.clientX:j.clientY,M=performance.now();if($.push({time:M,y:O}),$.length>e1)$.shift();let A=Z-O,W=D.getCachedCompression(),g=W.virtualSize+Q-D.state.viewportState.containerSize,v=Math.max(0,Math.min(B+A*W.ratio*$0,g));X=v,U=v,D.scrollController.scrollTo(v)},a=(V)=>{let j=performance.now(),O=$.filter((g)=>j-g.time<J6),M=0;if(O.length>=2){let g=O[0],v=O[O.length-1],m=v.time-g.time;if(m>0)M=(g.y-v.y)/m}if($=[],Math.abs(M)<t1)return;let A=M*16,W=()=>{if(A*=i1,Math.abs(A)<0.5){N=null;return}let v=D.getCachedCompression().virtualSize+Q-D.state.viewportState.containerSize,m=X+A;if(m=Math.max(0,Math.min(m,v)),m<=0&&A<0||m>=v&&A>0){X=m,U=m,D.scrollController.scrollTo(m),N=null;return}X=m,U=m,D.scrollController.scrollTo(m),N=requestAnimationFrame(W)};N=requestAnimationFrame(W)};G.addEventListener("touchstart",x,{passive:!0}),G.addEventListener("touchmove",e,{passive:!1}),G.addEventListener("touchend",a,{passive:!0}),G.addEventListener("touchcancel",a,{passive:!0}),D.destroyHandlers.push(()=>{G.removeEventListener("wheel",F),G.removeEventListener("touchstart",x),G.removeEventListener("touchmove",e),G.removeEventListener("touchend",a),G.removeEventListener("touchcancel",a)});let p=E.viewport.querySelector(`.${w}-scrollbar`),L=()=>{if((b?E.viewport.scrollLeft:E.viewport.scrollTop)!==0)if(b)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0};if(G.addEventListener("scroll",L,{passive:!0}),D.destroyHandlers.push(()=>{G.removeEventListener("scroll",L)}),!p){if(Y=m0(E.viewport,(j)=>D.scrollController.scrollTo(j),{},w,b),!E.viewport.classList.contains(`${w}-viewport--custom-scrollbar`))E.viewport.classList.add(`${w}-viewport--custom-scrollbar`);Y.updateBounds(k.virtualSize,D.state.viewportState.containerSize);let V=Y;D.afterScroll.push((j,O)=>{if(V)V.updatePosition(j),V.show()}),D.resizeHandlers.push((j,O)=>{if(V){let M=D.getCachedCompression();V.updateBounds(M.virtualSize,D.state.viewportState.containerSize)}})}}else if(!k.isCompressed&&K){if(K=!1,_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null;if(X=0,U=0,$=[],D.setScrollFns(b?()=>E.viewport.scrollLeft:()=>E.viewport.scrollTop,b?(P)=>{E.viewport.scrollLeft=P}:(P)=>{E.viewport.scrollTop=P}),b)E.viewport.scrollLeft=0;else E.viewport.scrollTop=0;if(D.scrollController.disableCompression(),b)E.viewport.style.overflowX="auto";else E.viewport.style.overflow="auto";if(Y)Y.destroy(),Y=null;Q=0,D.updateContentSize(k.actualSize)}else if(k.isCompressed)D.scrollController.updateConfig({compression:k}),Q=P0(k.virtualSize,D.state.viewportState.containerSize,k.ratio,C),D.updateContentSize(k.virtualSize+Q);if(Y)Y.updateBounds(k.virtualSize+Q,D.state.viewportState.containerSize);let y=D.state.viewportState;if(y.isCompressed=k.isCompressed,y.compressionRatio=k.ratio,y.totalSize=k.virtualSize+Q,y.actualSize=k.actualSize,D.state.cachedCompression={state:k,totalItems:n},K){let P=Math.max(0,k.virtualSize+Q-D.state.viewportState.containerSize),H=X;if(H>P)H=P;else if(H<0)H=0;if(H!==X){if(_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null;D.scrollController.scrollTo(H)}}for(let P=0;P<D.contentSizeHandlers.length;P++)D.contentSizeHandlers[P]()};D.updateCompressionMode=u;let l=D.getCachedCompression.bind(D);D.getCachedCompression=()=>{if(D.state.cachedCompression)return D.state.cachedCompression.state;return l()},D.setVisibleRangeFn((n,k,y,P,H)=>{f=null,h=null;let G=dJ(P,y,q);m1(n,k,y,P,G,H)}),D.setScrollToPosFn((n,k,y,P,H)=>{let G=dJ(P,k,q);return x1(n,k,y,P,G,H)});let f=null,h=null;D.setPositionElementFn((n,k)=>{let y=D.getVirtualTotal(),P=dJ(y,D.sizeCache,q);if(P.isCompressed){let H=D.scrollController.getScrollTop();if(f===null||k<h)h=k,f=Math.round(g0(k,H,D.sizeCache,y,D.state.viewportState.containerSize,P));let G=f+D.sizeCache.getOffset(k)-D.sizeCache.getOffset(h),F=D.config.horizontal;n.style.transform=F?`translateX(${G}px)`:`translateY(${G}px)`}else{let H=Math.round(D.sizeCache.getOffset(k)),G=D.config.horizontal;n.style.transform=G?`translateX(${H}px)`:`translateY(${H}px)`}});let T=b?S.left:S.top,r=b?S.right:S.bottom,i=D.getItemToScrollIndexFn();D.methods.set("_scrollItemIntoView",(n)=>{let k=D.getCachedCompression(),y=D.state.viewportState.containerSize,P=D.state.viewportState.scrollPosition,H=D.getVirtualTotal(),{visibleRange:G}=D.state.viewportState,F=i(n),z=S0(F,D.sizeCache,P,y,T,r,k,H,G);if(z!==P)D.scrollController.scrollTo(z)}),u(),D.destroyHandlers.push(()=>{if(Y)Y.destroy(),Y=null;if(_!==null)cancelAnimationFrame(_),_=null;if(N!==null)cancelAnimationFrame(N),N=null})}}},Q6=100,q6=5000,X6=200,Y6=(J={})=>{let{chunkSize:q=Q6,maxCachedItems:Y=q6,evictionBuffer:X=X6,onEvict:K}=J,Q=new Map,U=0,_=0,Z=(G)=>{let F=Q.get(G);if(!F)F={items:Array(q),count:0,lastAccess:Date.now()},Q.set(G,F);else F.lastAccess=Date.now();return F},B=(G)=>{return Math.floor(G/q)},N=(G)=>{return G%q},$=()=>U,D=(G)=>{U=G},E=(G)=>{if(G<0||G>=U)return;let F=B(G),z=Q.get(F);if(!z)return;return z.items[N(G)]},R=(G)=>{if(G<0||G>=U)return!1;let F=B(G),z=Q.get(F);if(!z)return!1;return z.items[N(G)]!==void 0},w=(G,F)=>{let z=B(G),x=Z(z),e=N(G),a=x.items[e]===void 0;if(x.items[e]=F,a)x.count++,_++;if(G>=U)U=G+1},b=(G,F)=>{for(let z=0;z<F.length;z++){let x=F[z];if(x!==void 0)w(G+z,x)}},S=(G)=>{if(G<0||G>=U)return!1;let F=B(G),z=Q.get(F),x=N(G);if(!(z!==void 0&&z.items[x]!==void 0))return!1;let a=F,p=Array.from(Q.keys()).filter((V)=>V>=a).sort((V,j)=>V-j),L=[];for(let V of p){let j=Q.get(V),O=V*q;for(let M=0;M<q;M++){if(j.items[M]===void 0)continue;let A=O+M;if(A<=G)continue;L.push({oldIndex:A,item:j.items[M]})}}if(z.items[x]=void 0,z.count--,_--,z.count===0)Q.delete(F);for(let{oldIndex:V}of L){let j=B(V),O=Q.get(j);if(!O)continue;let M=N(V);if(O.items[M]!==void 0){if(O.items[M]=void 0,O.count--,_--,O.count===0)Q.delete(j)}}for(let{oldIndex:V,item:j}of L){let O=V-1,M=B(O),A=Z(M),W=N(O);A.items[W]=j,A.count++,_++}return U--,!0},C=(G,F)=>{let z=[];for(let x=G;x<=F&&x<U;x++)z.push(E(x));return z},u=(G,F)=>{for(let z=G;z<=F&&z<U;z++)if(!R(z))return!1;return!0},l=()=>{let G=[],F=null,z=Array.from(Q.keys()).sort((x,e)=>x-e);for(let x of z){let e=Q.get(x);if(!e)continue;let a=x*q;for(let p=0;p<q;p++){let L=a+p;if(L>=U)break;if(e.items[p]!==void 0)if(F===null)F={start:L,end:L};else if(L===F.end+1)F.end=L;else G.push(F),F={start:L,end:L};else if(F!==null)G.push(F),F=null}}if(F!==null)G.push(F);return G},f=(G,F)=>{let z=[],x=null;for(let e=G;e<=F&&e<U;e++)if(!R(e))if(x===null)x={start:e,end:e};else x.end=e;else if(x!==null)z.push(x),x=null;if(x!==null)z.push(x);return z},h=(G)=>{return Q.has(G)},T=(G)=>{let F=Q.get(G);if(F)F.lastAccess=Date.now()},r=(G,F)=>{if(G>F||Q.size===0)return;let z=Date.now(),x=B(Math.max(0,G)),e=B(Math.min(U-1,F));for(let a=x;a<=e;a++){let p=Q.get(a);if(p)p.lastAccess=z}},i=(G,F)=>{if(_<=Y)return 0;let z=Math.max(0,G-X),x=Math.min(U-1,F+X),e=B(z),a=B(x),p=0,L=[];for(let[V,j]of Q)if(V<e||V>a)p+=j.count,L.push(V),_-=j.count,Q.delete(V);if(p>0&&K)K(p,L);return p},n=()=>{if(_<=Y)return 0;let G=Array.from(Q.entries()).sort(([,x],[,e])=>x.lastAccess-e.lastAccess),F=0,z=[];for(let[x,e]of G){if(_<=Y)break;F+=e.count,_-=e.count,z.push(x),Q.delete(x)}if(F>0&&K)K(F,z);return F},k=()=>{return{totalItems:U,cachedItems:_,cachedChunks:Q.size,chunkSize:q,maxCachedItems:Y,memoryEfficiency:U>0?1-_/U:1}},y=()=>_,P=()=>{Q.clear(),_=0};return{chunkSize:q,maxCachedItems:Y,getTotal:$,setTotal:D,get:E,has:R,set:w,setRange:b,delete:S,getRange:C,isRangeLoaded:u,getLoadedRanges:l,findUnloadedRanges:f,getChunkIndex:B,isChunkLoaded:h,touchChunk:T,touchChunksForRange:r,evictDistant:i,evictToLimit:n,getStats:k,getCachedCount:y,clear:P,reset:()=>{P(),U=0}}},j6=(J)=>{if(J.length===0)return[];let q=[...J].sort((X,K)=>X.start-K.start),Y=[{...q[0]}];for(let X=1;X<q.length;X++){let K=q[X],Q=Y[Y.length-1];if(K.start<=Q.end+1)Q.end=Math.max(Q.end,K.end);else Y.push({...K})}return Y},Z6=(J,q,Y)=>{let X=Math.floor(J.start/Y)*Y,K=Math.ceil((J.end+1)/Y)*Y-1,Q={start:X,end:K};if(q.length===0)return[Q];let U=[],_=j6(q),Z=Q.start;for(let B of _){if(B.end<Z)continue;if(B.start>Q.end)break;if(B.start>Z)U.push({start:Z,end:Math.min(B.start-1,Q.end)});if(Z=B.end+1,Z>Q.end)break}if(Z<=Q.end)U.push({start:Z,end:Q.end});return U},K6=(J={})=>{let{maskCharacter:q=w1,maxSampleSize:Y=z1}=J,X=[],K=!1,Q=(N)=>{if(K||N.length===0)return;let $=Math.min(N.length,Y);for(let D=0;D<$;D++){let E=N[D];if(!E||typeof E!=="object")continue;let R={};for(let[w,b]of Object.entries(E)){if(w.startsWith("_")||w==="id")continue;R[w]=String(b??"").length}if(Object.keys(R).length>0)X.push(R)}K=!0},U=()=>K,_=(N)=>{let $={id:`${yJ}${N}`,[f0]:!0,_index:N};if(X.length===0)return $.label=q.repeat(12),$;let D=X[N%X.length];for(let[E,R]of Object.entries(D))$[E]=q.repeat(Math.max(1,R));return $};return{analyzeStructure:Q,hasAnalyzedStructure:U,generate:_,generateRange:(N,$)=>{let D=[];for(let E=N;E<=$;E++)D.push(_(E));return D},clear:()=>{X=[],K=!1}}},j0=(J)=>{if(!J||typeof J!=="object")return!1;return J[f0]===!0},U6=50,B6=(J={})=>{let{adapter:q,initialItems:Y,initialTotal:X,storage:K,placeholder:Q,pageSize:U=U6,onStateChange:_,onItemsLoaded:Z,onItemsEvicted:B}=J,N=Y6({...K,onEvict:(d,c)=>{B?.(d),f()}}),$=null,D=()=>{if(!$)$=K6(Q);return $},E=new Map,R=!1,w,b=!0,S,C=[],u=0,l=new Map,f=()=>{_?.(H())},h=()=>{E.clear();let d=N.getLoadedRanges();for(let c of d)for(let JJ=c.start;JJ<=c.end;JJ++){let qJ=N.get(JJ);if(qJ&&!j0(qJ))E.set(qJ.id,JJ)}},T=(d,c)=>{if(!j0(c))E.set(c.id,d)},r=(d)=>{E.delete(d)},i=(d,c)=>{return`${d}-${c}`},n=()=>N.getTotal(),k=()=>N.getCachedCount(),y=()=>R,P=()=>b,H=()=>({total:N.getTotal(),cached:N.getCachedCount(),isLoading:R,pendingRanges:C,error:w,hasMore:b,cursor:S}),G=()=>N,F=()=>D(),z=(d)=>{let c=N.get(d);if(c!==void 0)return c;if(d>=0&&d<N.getTotal())return D().generate(d);return},x=(d)=>{let c=E.get(d);if(c===void 0)return;return N.get(c)},e=(d)=>{return E.get(d)??-1},a=(d)=>{let c=N.get(d);return c!==void 0&&!j0(c)},p=(d,c)=>{let JJ=[],qJ=N.getTotal(),YJ=0,XJ=0;N.touchChunksForRange(d,Math.min(c,qJ-1));for(let KJ=d;KJ<=c&&KJ<qJ;KJ++){let OJ=N.get(KJ);if(OJ!==void 0)JJ.push(OJ),YJ++;else JJ.push(D().generate(KJ)),XJ++}return JJ},L=(d)=>{N.setTotal(d),b=N.getCachedCount()<d,f()},V=(d,c=0,JJ)=>{if(q&&d.length>0){let qJ=D();if(!qJ.hasAnalyzedStructure())qJ.analyzeStructure(d)}for(let qJ=0;qJ<d.length;qJ++){let YJ=d[qJ];if(YJ!==void 0){let XJ=c+qJ;N.set(XJ,YJ),T(XJ,YJ)}}if(JJ!==void 0)N.setTotal(JJ);else if(c+d.length>N.getTotal())N.setTotal(c+d.length);if(N.getCachedCount()>=N.getTotal()&&N.getTotal()>0)b=!1;f(),Z?.(d,c,N.getTotal())},j=(d,c)=>{let JJ=N.get(d);if(!JJ)return!1;let qJ=JJ.id,YJ={...JJ,...c};if(N.set(d,YJ),c.id!==void 0&&c.id!==qJ)r(qJ);return T(d,YJ),f(),!0},O=(d)=>{let c=E.get(d);if(c===void 0)return!1;if(!N.delete(c))return!1;return h(),l.clear(),f(),!0},M=async(d,c)=>{if(!q)return;let JJ=i(d,c);if(l.has(JJ))return;let qJ=N.getLoadedRanges(),YJ=Z6({start:d,end:c},qJ,N.chunkSize);if(YJ.length===0)return;let XJ=N.chunkSize,KJ=[];for(let BJ of YJ){let DJ=Math.floor(BJ.start/XJ),EJ=Math.floor(BJ.end/XJ);for(let UJ=DJ;UJ<=EJ;UJ++){let MJ=UJ*XJ,NJ=MJ+XJ-1,AJ=i(MJ,NJ);if(!KJ.some((FJ)=>FJ.start===MJ)&&!l.has(AJ))KJ.push({start:MJ,end:NJ})}}let OJ=[];for(let BJ of YJ){let DJ=Math.floor(BJ.start/XJ),EJ=Math.floor(BJ.end/XJ);for(let UJ=DJ;UJ<=EJ;UJ++){let MJ=UJ*XJ,NJ=MJ+XJ-1,AJ=i(MJ,NJ);if(l.has(AJ)){let FJ=l.get(AJ);if(!OJ.includes(FJ))OJ.push(FJ)}}}for(let BJ of KJ){let DJ=i(BJ.start,BJ.end),EJ=(async()=>{C.push(BJ),R=!0,w=void 0,f();try{let UJ=BJ.end-BJ.start+1,MJ={offset:BJ.start,limit:UJ,cursor:void 0},NJ=await q.read(MJ);if(V(NJ.items,BJ.start,NJ.total),NJ.cursor)S=NJ.cursor;let AJ=BJ.start+NJ.items.length;if(AJ>=u){if(u=AJ,NJ.hasMore!==void 0)b=NJ.hasMore;else if(NJ.total!==void 0)b=AJ<NJ.total}}catch(UJ){w=UJ instanceof Error?UJ:Error(String(UJ))}finally{l.delete(DJ),C=C.filter((UJ)=>UJ.start!==BJ.start||UJ.end!==BJ.end),R=l.size>0,f()}})();l.set(DJ,EJ),OJ.push(EJ)}await Promise.all(OJ)},A=async(d,c)=>{if(N.isRangeLoaded(d,c))return;await M(d,c)},W=async()=>{if(!q)return;await M(0,U-1)},g=async()=>{if(!q||R||!b)return!1;let d=N.getCachedCount(),c=N.getTotal(),JJ=d,qJ=Math.min(JJ+U-1,c>0?c-1:JJ+U-1);if(JJ>=c&&c>0)return b=!1,!1;return await M(JJ,qJ),N.getCachedCount()>d},v=async()=>{if(N.clear(),N.setTotal(0),E.clear(),$)$.clear();l.clear(),C=[],R=!1,S=void 0,b=!0,u=0,w=void 0,f()},m=(d,c)=>{if(N.evictDistant(d,c)>0)h()},o=()=>{N.clear(),E.clear(),S=void 0,w=void 0,C=[],R=!1,f()},QJ=()=>{if(N.reset(),E.clear(),$)$.clear();S=void 0,b=!0,u=0,w=void 0,C=[],R=!1,f()};if(Y&&Y.length>0)V(Y,0,X??Y.length);else if(X!==void 0)N.setTotal(X),f();return{getState:H,getTotal:n,getCached:k,getIsLoading:y,getHasMore:P,getStorage:G,getPlaceholders:F,getItem:z,getItemById:x,getIndexById:e,isItemLoaded:a,getItemsInRange:p,setTotal:L,setItems:V,updateItem:j,removeItem:O,loadRange:M,ensureRange:A,loadInitial:W,loadMore:g,reload:v,evictDistant:m,clear:o,reset:QJ}},c0=(J)=>{let{adapter:q,loading:Y,storage:X,total:K,autoLoad:Q=!0}=J,U=Y?.cancelThreshold??y1,_=Y?.preloadThreshold??R1,Z=Y?.preloadAhead??P1;return{name:"withAsync",priority:20,methods:["reload","loadVisibleRange"],setup(B){let{emitter:N}=B,$=B.config.reverse,D=B.methods.get("_getGridLayout"),E=(k)=>{if(D){let y=D();if(y){let P=B.dataManager.getTotal();return y.getItemRange(k.start,k.end,P)}}return k},R=B6({adapter:q,...K!==void 0&&{initialTotal:K},pageSize:X?.chunkSize??zJ,...X&&{storage:{...X.chunkSize!==void 0&&{chunkSize:X.chunkSize},...X.maxCachedItems!==void 0&&{maxCachedItems:X.maxCachedItems}}},onStateChange:()=>{if(B.state.isInitialized){let k=B.getVirtualTotal();B.sizeCache.rebuild(k),B.updateCompressionMode();let y=B.getCachedCompression();B.state.viewportState.totalSize=y.virtualSize,B.state.viewportState.actualSize=y.actualSize,B.state.viewportState.isCompressed=y.isCompressed,B.state.viewportState.compressionRatio=y.ratio,B.updateContentSize(y.virtualSize),B.renderIfNeeded()}},onItemsLoaded:(k,y,P)=>{if(B.state.isInitialized)B.forceRender(),N.emit("load:end",{items:k,total:P,offset:y})}});B.replaceDataManager(R);let w=null,b=null,S=0,C=!1,u=null,l=120,f=(k=!1)=>{if(C=!1,b=null,k)w=null;if(u!==null)clearTimeout(u),u=null},h=()=>{if(!b)return;b=null;let{renderRange:k}=B.state.viewportState;if(k.end<k.start)return;w=null;let y=E(k);B.dataManager.ensureRange(y.start,y.end).catch((P)=>{N.emit("error",{error:P,context:"ensureRange"})})};B.afterScroll.push((k,y)=>{if(B.state.isDestroyed)return;let P=B.scrollController.getVelocity(),G=B.scrollController.isTracking()&&P<=U;if(S>U&&P<=U)C=!0;else if(C&&P>U)f();if(C&&P<0.5)f(!0);if(S=P,(B.scrollController.isAtTop()||B.scrollController.isAtBottom())&&(C||b))f(!0),G=!0;let z=C&&P>0.5;if(G&&!B.dataManager.getIsLoading()&&B.dataManager.getHasMore()){if($){if(k<L0)N.emit("load:start",{offset:B.dataManager.getCached(),limit:zJ}),B.dataManager.loadMore().catch((a)=>{N.emit("error",{error:a,context:"loadMore"})})}else if(B.state.viewportState.totalSize-k-B.state.viewportState.containerSize<L0)N.emit("load:start",{offset:B.dataManager.getCached(),limit:zJ}),B.dataManager.loadMore().catch((p)=>{N.emit("error",{error:p,context:"loadMore"})})}let{renderRange:x}=B.state.viewportState;if(!w||x.start!==w.start||x.end!==w.end){if(w={start:x.start,end:x.end},G&&!z){if(b=null,u!==null)clearTimeout(u),u=null;let a=E(x),p=a.start,L=a.end,V=D?B.dataManager.getTotal():B.getVirtualTotal();if(P>_)if(y==="down")L=Math.min(a.end+Z,V-1);else p=Math.max(a.start-Z,0);B.dataManager.ensureRange(p,L).catch((j)=>{N.emit("error",{error:j,context:"ensureRange"})})}else if(b={start:x.start,end:x.end},z){if(u!==null)clearTimeout(u);u=setTimeout(()=>{u=null,h(),f()},l)}}});let T=200,r=null;B.afterScroll.push((k,y)=>{if(r!==null)clearTimeout(r);r=setTimeout(()=>{r=null,h(),f()},T)}),B.destroyHandlers.push(()=>{if(r!==null)clearTimeout(r),r=null;f()});let i=()=>{if(B.state.isDestroyed)return;w=null;let{renderRange:k}=B.state.viewportState;if(k.end>0){let y=E(k);B.dataManager.ensureRange(y.start,y.end).catch((P)=>{N.emit("error",{error:P,context:"ensureRange"})})}h()};window.addEventListener("online",i),B.destroyHandlers.push(()=>{window.removeEventListener("online",i)}),N.on("load:start",()=>{B.dom.root.setAttribute("aria-busy","true")}),N.on("load:end",()=>{B.dom.root.removeAttribute("aria-busy")}),B.methods.set("loadVisibleRange",async()=>{w=null,b=null,B.forceRender();let{renderRange:k}=B.state.viewportState;if(k.end>0){let y=E(k);N.emit("load:start",{offset:y.start,limit:y.end-y.start+1}),await B.dataManager.ensureRange(y.start,y.end)}}),B.methods.set("reload",async(k)=>{w=null,b=null;let y=k?.snapshot,P=y!=null&&(y.total??0)>0&&y.index>0,H=P||k?.skipInitialLoad===!0;if(B.invalidateRendered(),await B.dataManager.reload(),!P)B.scrollController.scrollTo(0);if(!H){N.emit("load:start",{offset:0,limit:zJ}),await B.dataManager.loadInitial(),B.forceRender();let{renderRange:G}=B.state.viewportState;if(G.end>0){let F=E(G);await B.dataManager.ensureRange(F.start,F.end)}}if(P){let G=B.methods.get("restoreScroll");if(G)G(y)}});let n=!1;if(B.methods.set("_cancelAutoLoad",()=>{n=!0}),Q)queueMicrotask(()=>{if(n)return;N.emit("load:start",{offset:0,limit:zJ}),B.dataManager.loadInitial().catch((k)=>{N.emit("error",{error:k,context:"loadInitial"})})});else if(K!==void 0)B.dataManager.setTotal(K)}}},l0=()=>{let J=null;return{name:"withPage",priority:5,setup(q){let{dom:Y,state:X,config:K,emitter:Q}=q;if(Y.root.style.overflow="visible",Y.root.style.height="auto",K.horizontal)Y.viewport.style.overflowX="visible",Y.viewport.style.overflowY="visible";else Y.viewport.style.overflow="visible";Y.viewport.classList.remove(`${K.classPrefix}-viewport--custom-scrollbar`),q.disableViewportResize(),q.disableWheelHandler(),q.setScrollTarget(window),q.setScrollFns(()=>{let B=Y.viewport.getBoundingClientRect();if(K.horizontal)return Math.max(0,-B.left);else return Math.max(0,-B.top)},(B)=>{let N=Y.viewport.getBoundingClientRect();if(K.horizontal){let $=N.left+window.scrollX;window.scrollTo($+B,window.scrollY)}else{let $=N.top+window.scrollY;window.scrollTo(window.scrollX,$+B)}}),q.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),X.viewportState.containerSize=window.innerHeight;let{innerHeight:U,innerWidth:_}=window,Z=()=>{let{innerWidth:B,innerHeight:N}=window,$=K.horizontal?B:N,D=K.horizontal?_:U;if(Math.abs($-D)<=1)return;U=N,_=B,X.viewportState.containerSize=N,Q.emit("resize",{width:B,height:N});for(let E=0;E<q.resizeHandlers.length;E++)q.resizeHandlers[E](B,N);q.renderIfNeeded()};window.addEventListener("resize",Z,{passive:!0}),J=()=>{window.removeEventListener("resize",Z)},q.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}},Z0=(J,q)=>{let Y=0,X=J.length-1;while(Y<X){let K=Y+X+1>>>1;if(J[K].headerLayoutIndex<=q)Y=K;else X=K-1}return Y},y0=(J,q)=>{let Y=0,X=J.length-1;while(Y<X){let K=Y+X+1>>>1;if(J[K].firstDataIndex<=q)Y=K;else X=K-1}return Y},R0=(J,q)=>{if(J===0)return[];let Y=[],X=q(0),K=0,Q=0;for(let U=1;U<J;U++){let _=q(U);if(_!==X){let Z=U-K;Y.push({key:X,groupIndex:Y.length,headerLayoutIndex:Q,firstDataIndex:K,count:Z}),Q=Q+1+Z,X=_,K=U}}return Y.push({key:X,groupIndex:Y.length,headerLayoutIndex:Q,firstDataIndex:K,count:J-K}),Y},w0=(J,q)=>{if(J.length===0||q.length===0)return[];let Y=J.length+q.length,X=Array(Y),K=0;for(let Q of q){X[K]={id:`__group_header_${Q.groupIndex}`,__groupHeader:!0,groupKey:Q.key,groupIndex:Q.groupIndex},K++;for(let U=0;U<Q.count;U++)X[K]=J[Q.firstDataIndex+U],K++}return X},z0=(J,q,Y=!1)=>{let X=typeof q==="number"?(K)=>q:q;return(K)=>{let Q=J.getEntry(K);if(Q.type==="header"){if(Y&&Q.group.groupIndex===0)return 0;return J.getHeaderHeight(Q.group.groupIndex)}return X(Q.dataIndex)}},N6=(J,q)=>{let Y=R0(J,q.getGroupForIndex),X=J+Y.length,K=q.header?.height??q.header?.width??q.headerHeight;return{get totalEntries(){return X},get groupCount(){return Y.length},get groups(){return Y},getEntry:(D)=>{if(Y.length===0)return{type:"item",dataIndex:D,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let E=Z0(Y,D),R=Y[E];if(D===R.headerLayoutIndex)return{type:"header",group:R};let w=D-R.headerLayoutIndex-1;return{type:"item",dataIndex:R.firstDataIndex+w,group:R}},layoutToDataIndex:(D)=>{if(Y.length===0)return D;let E=Z0(Y,D),R=Y[E];if(D===R.headerLayoutIndex)return-1;let w=D-R.headerLayoutIndex-1;return R.firstDataIndex+w},dataToLayoutIndex:(D)=>{if(Y.length===0)return D;let E=y0(Y,D),R=Y[E],w=D-R.firstDataIndex;return R.headerLayoutIndex+1+w},getGroupAtLayoutIndex:(D)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let E=Z0(Y,D);return Y[E]},getGroupAtDataIndex:(D)=>{if(Y.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let E=y0(Y,D);return Y[E]},getHeaderHeight:typeof K==="number"?(D)=>K:(D)=>{let E=Y[D];if(!E)return 0;return K(E.key,D)},rebuild:(D)=>{Y=R0(D,q.getGroupForIndex),X=D+Y.length}}},V6=(J,q,Y,X,K,Q=!1,U=0)=>{let _=Q?"width":"height",Z=Q?"height":"width",B=Q?"X":"Y",N=(j,O)=>{j.style[_]=`${O}px`},$=document.createElement("div");$.className=`${K}-sticky-header`,$.setAttribute("role","presentation"),$.setAttribute("aria-hidden","true"),$.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(Q?`top:0;bottom:0;left:${U||0}px`:`top:${U||0}px`);let D=()=>{let j=document.createElement("div");return j.className="sticky-group",j.style.position="absolute",j.style.willChange="transform",j.style[Z]="100%",j},E=D(),R=D();$.append(E,R),J.insertBefore($,J.firstChild);let w=E,b=R,S=q.groups,C=[],u=[],l=0,f=()=>{S=q.groups,l=S.length,C=Array(l),u=Array(l);for(let j=0;j<l;j++)C[j]=Y.getOffset(S[j].headerLayoutIndex),u[j]=q.getHeaderHeight(j)};f();let h=-1,T=0,r=-1,i=!1,n=0,k=!1,y=(j,O)=>{X(j,O);let M=u[O];return N(j,M),M},P=(j)=>{j.replaceChildren(),j.style.transform=""},H=(j)=>{if(j===h)return;if(h=j,T=0,j<0||j>=l){P(w);return}T=y(w,j),N($,T),w.style.transform=""},G=(j)=>{if(j===n)return;n=j;let O=Math.round(j);w.style.transform=`translate${B}(${O}px)`,b.style.transform=`translate${B}(${O+T}px)`},F=()=>{n=0,w.style.transform="",b.style.transform=""},z=()=>{if(!k)return;let j=w;w=b,b=j,h=r,T=h>=0?u[h]:0,N($,T),P(b),r=-1,k=!1,F()},x=()=>{if(!k)return;P(b),r=-1,k=!1,F()},e=()=>{if(i)return;i=!0,$.style.display=""},a=()=>{if(!i)return;i=!1,$.style.display="none",P(w),h=-1,T=0,x()},p=(j)=>{if(l===0){a();return}if(j<C[0]){a();return}let O=0,M=l-1;while(O<M){let W=O+M+1>>>1;if(C[W]+u[W]<=j)O=W;else M=W-1}if(!i)e();H(O);let A=O+1;if(A<l){let W=C[A]-j;if(W<=0&&W>-T){if(r!==A||!k)r=A,y(b,A),k=!0;G(W)}else if(W<=-T){if(k)z()}else if(k)x()}else if(k)x()},L=()=>{f();let j=h;if(h=-1,T=0,j>=0)H(j)},V=()=>{$.remove(),h=-1,T=0,r=-1,i=!1,k=!1};return $.style.display="none",{update:p,refresh:L,show:e,hide:a,destroy:V}},PJ=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0},_6=(J,q,Y,X,K,Q)=>{if(X===0)return 0;let U=Math.max(0,Math.min(J,X-1)),_=q.getOffset(U),Z=q.getSize(U),B=q.getTotalSize(),N=Math.max(0,B-Y),$;switch(Q){case"center":$=_-Y/2+Z/2;break;case"end":$=_-Y+Z;break;case"start":default:$=_;break}return Math.max(0,Math.min($,N))},r0=(J,q,Y,X,K="start",Q,U=_6)=>{return U(J,q,Y,X,Q,K)},W6=(J,q)=>{if(J.header){let Y=q?J.header.width??J.header.height:J.header.height??J.header.width;return{...J,header:{...J.header,height:Y}}}if(J.headerHeight!=null&&J.headerTemplate)return{...J,header:{height:J.headerHeight,template:J.headerTemplate}};return J},a0=(J)=>{let q=J.header,Y=q?q.height??q.width:J.headerHeight,X=q?.template??J.headerTemplate;if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(Y==null||Y<=0)throw Error("[vlist/builder] withGroups: header.height must be a positive number");if(!X)throw Error("[vlist/builder] withGroups: header.template is required");let K=null,Q=null,U=[],_=[];return{name:"withGroups",priority:10,setup(Z){let{dom:B,config:N,rawConfig:$}=Z,{classPrefix:D}=N,E=W6(J,N.horizontal),w=$.item.height;U=$.items?[...$.items]:[];let b=U.length,S={getGroupForIndex:E.getGroupForIndex,header:{height:E.header.height,template:E.header.template},sticky:E.sticky??!1};K=N6(b,S),_=w0(U,K.groups);let C=E.sticky!==!1,u=z0(K,w,C);Z.setSizeConfig(u),Z.rebuildSizeCache(_.length),Z.dataManager.setItems(_,0,_.length);let l=$.item.template,{template:f}=E.header,h=(a,p,L)=>{if(PJ(a))return f(a.groupKey,a.groupIndex);return l(a,p,L)},T=Z.methods.get("_getGridLayout"),r=Z.methods.get("_replaceGridRenderer"),i=Z.methods.get("_updateGridLayoutForGroups"),n=Z.methods.get("_createGridRenderer"),k=Z.methods.get("_getTableLayout"),y=Z.methods.get("_updateTableForGroups"),P=Z.methods.get("_getTableHeaderHeight");if(T&&r&&n){if(i)i((L)=>{let V=_[L];return!!(V&&PJ(V))});let a=T(),p=n(B.items,h,Z.sizeCache,a,D,Z.getContainerWidth(),()=>Z.dataManager.getTotal(),N.ariaIdPrefix);r(p)}else if(k&&y)y((a)=>PJ(a),E.header.template);else Z.replaceTemplate(h);let H=P?P():0;if(B.root.classList.add(`${D}--grouped`),E.sticky!==!1)if(Z.methods.set("_getStickyHeaderHeight",()=>E.header.height),!N.horizontal)B.viewport.style.height=`calc(100% - ${E.header.height}px)`;else B.viewport.style.width=`calc(100% - ${E.header.height}px)`;if(E.sticky!==!1){let a=E.header.template,p=(V,j)=>{let O=K.groups[j];if(!O)return;let M=a(O.key,O.groupIndex);if(typeof M==="string")V.innerHTML=M;else V.replaceChildren(M)};Q=V6(B.root,K,Z.sizeCache,p,D,N.horizontal,H);let L=Q;Z.afterScroll.push((V,j)=>{L.update(V)}),Q.update(Z.scrollController.getScrollTop())}let G=$.item?.striped,F=()=>{if(G!=="data"&&G!=="even"&&G!=="odd")return;let a=new Int32Array(_.length),p=G==="odd"?1:0,L=0;for(let V=0;V<_.length;V++)if(PJ(_[V])){if(a[V]=-1,G==="even"||G==="odd")L=0}else a[V]=L+++p;Z.setStripeIndexFn((V)=>{if(V<0||V>=a.length)return V;return a[V]})};F();let z=()=>{if(!K)return;K.rebuild(U.length),_=w0(U,K.groups);let a=z0(K,w,C);if(Z.setSizeConfig(a),Z.rebuildSizeCache(_.length),Z.dataManager.setItems(_,0,_.length),F(),Q)Q.refresh()};Z.methods.set("setItems",(a)=>{U=a.slice(),z()}),Z.methods.set("appendItems",(a)=>{U.push(...a),z()}),Z.methods.set("prependItems",(a)=>{U.unshift(...a),z()}),Z.methods.set("removeItem",(a)=>{U=U.filter((p)=>p.id!==a),z()});let{animateScroll:x,cancelScroll:e}=B0(Z.scrollController,Z.renderIfNeeded);Z.methods.set("scrollToIndex",(a,p)=>{let L=K.dataToLayoutIndex(a),{align:V,behavior:j,duration:O}=rJ(p),M=Z.dataManager.getTotal(),A=Z.adjustScrollPosition(r0(L,Z.sizeCache,Z.state.viewportState.containerSize,M,V,Z.getCachedCompression()));if(j==="smooth")x(Z.scrollController.getScrollTop(),A,O);else e(),Z.scrollController.scrollTo(A)}),Z.methods.set("_getItems",()=>U),Z.methods.set("_getTotal",()=>U.length),Z.methods.set("_isGroupHeader",(a)=>{let p=_[a];return!!(p&&PJ(p))}),Z.destroyHandlers.push(()=>{if(e(),Q)Q.destroy(),Q=null;B.root.classList.remove(`${D}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}},D6=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,X=J.isHeaderFn,K={row:0,col:0},Q=(R)=>{if(R<=0)return 0;if(!X)return Math.ceil(R/q);let w=0,b=0,S=0;for(let C=0;C<R;C++)if(X(C)){if(S++,b>0)w++,b=0;w++,b=0}else if(b++,b>=q)w++,b=0;if(b>0)w++;return w},U=(R)=>{return K.row=_(R),K.col=Z(R),K},_=(R)=>{if(!X)return Math.floor(R/q);let w=0,b=0;for(let S=0;S<=R;S++)if(X(S)){if(b>0)w++,b=0;if(S===R)return w;w++,b=0}else{if(S===R)return w;if(b++,b>=q)w++,b=0}return console.warn(`⚠️ getRow(${R}) fell through - returning ${w}`),w},Z=(R)=>{if(!X)return R%q;if(X(R))return 0;let w=0;for(let b=0;b<=R;b++)if(X(b))w=0;else{if(b===R)return w;if(w++,w>=q)w=0}return w},B=(R,w,b)=>{if(b<=0)return{start:0,end:-1};if(!X){let f=Math.max(0,R*q),h=Math.min(b-1,(w+1)*q-1);return{start:f,end:h}}let S=-1,C=-1,u=0,l=0;for(let f=0;f<b;f++){if(X(f)){if(l>0)u++,l=0;if(u>=R&&u<=w){if(S===-1)S=f;C=f}u++,l=0}else{if(u>=R&&u<=w){if(S===-1)S=f;C=f}if(l++,l>=q)u++,l=0}if(u>w&&l===0)break}if(S===-1)return{start:0,end:-1};return{start:S,end:C}},N=(R,w,b)=>{if(w<0||w>=q)return-1;let S=R*q+w;if(S<0||S>=b)return-1;return S},$=(R)=>{let w=(q-1)*Y;return Math.max(0,(R-w)/q)};return{get columns(){return q},get gap(){return Y},update:(R)=>{if(R.columns!==void 0)q=Math.max(1,Math.floor(R.columns));if(R.gap!==void 0)Y=R.gap;if(R.isHeaderFn!==void 0)X=R.isHeaderFn},getTotalRows:Q,getPosition:U,getRow:_,getCol:Z,getItemRange:B,getItemIndex:N,getColumnWidth:$,getColumnOffset:(R,w)=>{let b=$(w);return R*(b+Y)}}},G6=(J=200)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let U=document.createElement("div");return U.setAttribute("role","option"),U},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}}},M6=1,v0=(J,q,Y,X,K,Q,U,_,Z=!1)=>{let B=G6(),N=new Map,$=Q,D=!1,E=0,R="",w=-1,b={selected:!1,focused:!1},S=(V,j)=>{return b.selected=V,b.focused=j,b},C=`${K}-item ${K}-grid-item`,u=`${K}-item--selected`,l=`${K}-item--focused`,f=`${K}-item--placeholder`,h=`${K}-item--replaced`,T=(V,j)=>{if(typeof j==="string")V.innerHTML=j;else V.replaceChildren(j)},r=(V,j,O)=>{V.classList.toggle(u,j),V.classList.toggle(l,O)},i=(V,j)=>{let O=X.getRow(V);if(j?.compression?.isCompressed)return g0(O,j.scrollPosition,Y,j.totalItems,j.containerSize,j.compression,j.rangeStart);return Y.getOffset(O)},n=(V,j)=>{let O=D&&X.getCol(V)===0,M=O?0:X.getCol(V),A=O?0:X.getColumnOffset(M,$),W;if(D){let g=X.getRow(V),v=0,m=new Set;for(let o=0;o<V;o++){let QJ=X.getRow(o);if(QJ<g&&!m.has(QJ)){let d=Y.getSize(o);v+=d,m.add(QJ)}}W=v}else W=i(V,j);if(Z)return`translate(${Math.round(W)}px, ${Math.round(A)}px)`;return`translate(${Math.round(A)}px, ${Math.round(W)}px)`},k=(V,j)=>{V.style.transform=j},y=(V,j)=>{let O=V.dataset.id?.startsWith("__group_header"),M=O?$:X.getColumnWidth($),A;if(D||O)A=Y.getSize(j)-X.gap;else{let W=X.getRow(j);A=Y.getSize(W)-X.gap}if(Z)V.style.width=`${A}px`,V.style.height=`${M}px`;else V.style.width=`${M}px`,V.style.height=`${A}px`},P=(V,j,O,M,A)=>{let W=B.acquire(),g=S(O,M);if(W.className=C,W.dataset.index=String(V),W.dataset.id=String(j.id),W.dataset.row=String(X.getRow(V)),W.dataset.col=String(X.getCol(V)),W.ariaSelected=String(O),_)W.id=`${_}-item-${V}`;if(U){let o=U();if(o!==w)w=o,R=String(o);W.setAttribute("aria-setsize",R),W.setAttribute("aria-posinset",String(V+1))}y(W,V);let v=q(j,V,g);if(T(W,v),String(j.id).startsWith(yJ))W.classList.add(f);return r(W,O,M),k(W,A),{element:W,lastItemId:j.id,lastSelected:O,lastFocused:M,lastTransform:A,lastSeenFrame:E}},H=(V,j,O,M,A)=>{if(E++,j.start===0&&V.length>0)D=PJ(V[0]);for(let[v,m]of N)if(v>=j.start&&v<=j.end)m.lastSeenFrame=E;else if(E-m.lastSeenFrame>M6)B.release(m.element),N.delete(v);let W=!1;if(U){let v=U();if(v!==w)w=v,R=String(v),W=!0}let g=null;for(let v=j.start;v<=j.end;v++){let m=v-j.start,o=V[m];if(!o){console.warn(`⚠️ RENDER: Missing item at index ${v} (range: ${j.start}-${j.end}, items.length: ${V.length})`);continue}let QJ=O.has(o.id),d=v===M,c=N.get(v);if(c){let JJ=c.lastItemId!==o.id,qJ=c.lastSelected!==QJ,YJ=c.lastFocused!==d;if(JJ){let KJ=String(c.lastItemId),OJ=String(o.id),BJ=KJ.startsWith(yJ),DJ=OJ.startsWith(yJ);if(!DJ&&lJ(O,v,o.id))QJ=!0;let EJ=S(QJ,d),UJ=q(o,v,EJ);if(T(c.element,UJ),c.element.dataset.id=OJ,c.element.dataset.row=String(X.getRow(v)),c.element.dataset.col=String(X.getCol(v)),y(c.element,v),c.element.classList.toggle(f,DJ),BJ&&!DJ)c.element.classList.add(h),setTimeout(()=>c.element.classList.remove(h),300);c.lastItemId=o.id}if(JJ||qJ||YJ)r(c.element,QJ,d),c.element.ariaSelected=String(QJ),c.lastSelected=QJ,c.lastFocused=d;let XJ=n(v,A);if(c.lastTransform!==XJ)k(c.element,XJ),c.lastTransform=XJ;if(W)c.element.setAttribute("aria-setsize",R)}else{if(lJ(O,v,o.id))QJ=!0;let JJ=n(v,A),qJ=P(v,o,QJ,d,JJ);if(!g)g=document.createDocumentFragment();g.appendChild(qJ.element),N.set(v,qJ)}}if(g)J.appendChild(g)},G=(V)=>{for(let[j,O]of N){let M=n(j,V);if(O.lastTransform!==M)k(O.element,M),O.lastTransform=M}},F=(V,j,O,M)=>{let A=N.get(V);if(!A)return;let W=S(O,M),g=q(j,V,W);T(A.element,g),r(A.element,O,M),A.element.dataset.id=String(j.id),A.element.ariaSelected=String(O),y(A.element,V),A.lastItemId=j.id,A.lastSelected=O,A.lastFocused=M},z=(V,j,O)=>{let M=N.get(V);if(!M)return;let A=M.lastSelected!==j,W=M.lastFocused!==O;if(A||W)r(M.element,j,O),M.lastSelected=j,M.lastFocused=O},x=(V)=>{return N.get(V)?.element},e=(V)=>{if(Math.abs(V-$)<1)return;$=V;for(let[j,O]of N){y(O.element,j);let M=n(j);k(O.element,M),O.lastTransform=M}},a=()=>{U0(J,N.keys(),(V)=>N.get(V)?.element)},p=()=>{for(let[,V]of N)B.release(V.element);N.clear()};return{render:H,updatePositions:G,updateItem:F,updateItemClasses:z,getElement:x,sortDOM:a,updateContainerWidth:e,clear:p,destroy:()=>{p(),B.clear()}}},O6=new Set,s0=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let q=null,Y=null;return{name:"withGrid",priority:10,conflicts:["withTable","withMasonry"],setup(X){let{dom:K,emitter:Q,config:U,rawConfig:_}=X,{classPrefix:Z}=U;if(U.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let B=U.horizontal,N=C0(RJ(_.padding),B),$=()=>{return(B?K.viewport.clientHeight:X.getContainerWidth())-N},D=_.items?.some((p)=>p.__groupHeader===!0),E={columns:J.columns,gap:J.gap??0};if(D)E.isHeaderFn=(p)=>{let L=X.dataManager.getItem(p);return!!(L&&L.__groupHeader===!0)};q=D6(E);let R=q.gap;X.setVirtualTotalFn(()=>{let p=X.dataManager.getTotal();return q.getTotalRows(p)}),X.setItemToScrollIndexFn((p)=>Math.floor(p/E.columns)),X.methods.set("_getNavTotal",()=>X.dataManager.getTotal()),X.methods.set("_getNavDelta",()=>B?{ud:1,lr:E.columns,cols:E.columns}:{ud:E.columns,lr:1,cols:E.columns});let w=_.item,b=U.horizontal?w.width:w.height,S={containerWidth:$(),columns:q.columns,gap:q.gap},C={containerWidth:0,columns:0,gap:0,columnWidth:0,row:0,column:0,totalRows:0,totalColumns:0};if(typeof b==="function")X.setSizeConfig((p)=>{let L=S.containerWidth-2,V=(S.columns-1)*S.gap;return C.containerWidth=S.containerWidth,C.columns=S.columns,C.gap=S.gap,C.columnWidth=(L-V)/S.columns,C.row=q.getRow(p),C.column=q.getCol(p),C.totalRows=q.getTotalRows(X.dataManager.getTotal()),C.totalColumns=S.columns,b(p,C)+S.gap});else if(R>0)X.setSizeConfig(b+R);if(X.rebuildSizeCache(),R>0){let p=X.sizeCache.getTotalSize;X.sizeCache.getTotalSize=()=>{let L=p();return L>0?L-S.gap:0}}K.root.classList.add(`${Z}--grid`);let u=$(),l=_.item.template,f=()=>{Y=v0(K.items,l,X.sizeCache,q,Z,u,()=>X.dataManager.getTotal(),U.ariaIdPrefix,U.horizontal),X.replaceRenderer(Y)};f(),X.setUpdateItemClassesFn((p,L,V)=>{Y?.updateItemClasses(p,L,V)}),X.methods.set("_updateRenderedItem",(p,L,V,j)=>{Y?.updateItem(p,L,V,j)}),X.methods.set("_getGridLayout",()=>q),X.methods.set("_getGridConfig",()=>E),X.methods.set("_replaceGridRenderer",(p)=>{Y=p}),X.methods.set("_createGridRenderer",v0),X.methods.set("_updateGridLayoutForGroups",(p)=>{q.update({isHeaderFn:p});let L=X.dataManager.getTotal(),V=0;for(let j=0;j<L;j++)if(q.getCol(j)===0){let O=X.sizeCache.getSize(j);V+=O}X.sizeCache.getTotalSize=()=>V,X.updateContentSize(V),f()}),X.methods.set("updateGrid",(p)=>{if(p.columns!==void 0){if(!Number.isInteger(p.columns)||p.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");E.columns=p.columns}if(p.gap!==void 0){if(p.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");E.gap=p.gap}if(q)q.update(E);let L=$();if(S.containerWidth=L,S.columns=E.columns,S.gap=E.gap??0,Y)Y.updateContainerWidth(L);X.rebuildSizeCache(),X.updateContentSize(X.sizeCache.getTotalSize()),X.updateCompressionMode();for(let V=0;V<X.contentSizeHandlers.length;V++)X.contentSizeHandlers[V]();if(Y)Y.clear();X.forceRender()});let h=null,T=null,r=!1,i=()=>{if(r)return;r=!0,h=X.methods.get("_getSelectedIds")??null,T=X.methods.get("_getFocusedIndex")??null},n=-1,k=-1,y=!0,P=U.overscan,H={start:0,end:0},G={start:0,end:0},F=()=>{if(X.state.isDestroyed)return;let p=X.scrollController.getScrollTop(),L=X.state.viewportState.containerSize;if(!y&&p===n&&L===k)return;n=p,k=L,y=!1;let V=X.getVirtualTotal();if(V===0||L===0)H.start=0,H.end=0;else H.start=Math.max(0,X.sizeCache.indexAtOffset(p)),H.end=Math.min(V-1,Math.max(0,X.sizeCache.indexAtOffset(p+L-1)));G.start=Math.max(0,H.start-P),G.end=Math.min(V-1,H.end+P);let j=X.state.viewportState;j.scrollPosition=p,j.visibleRange.start=H.start,j.visibleRange.end=H.end,j.renderRange.start=G.start,j.renderRange.end=G.end;let O=X.state.lastRenderRange,M=j.isCompressed,A=X.dataManager.getTotal(),W=q.getItemRange(G.start,G.end,A),g=X.dataManager.getItemsInRange(W.start,W.end),v=M?X.getCompressionContext():void 0;i();let m=h?h():O6,o=T?T():-1;if(Y.render(g,W,m,o,v),O.start!==G.start||O.end!==G.end)O.start=G.start,O.end=G.end,Q.emit("range:change",{range:{start:G.start,end:G.end}})},z=()=>{if(X.state.isDestroyed)return;X.state.lastRenderRange.start=-1,X.state.lastRenderRange.end=-1,y=!0,F()};X.setRenderFns(F,z);let x=typeof b==="function";X.resizeHandlers.push((p,L)=>{let V=(B?L:p)-N;if(Math.abs(V-S.containerWidth)<1)return;if(S.containerWidth=V,Y)Y.updateContainerWidth(V);if(x){X.rebuildSizeCache(),X.updateContentSize(X.sizeCache.getTotalSize()),X.updateCompressionMode();for(let j=0;j<X.contentSizeHandlers.length;j++)X.contentSizeHandlers[j]();if(Y)Y.clear();X.forceRender()}});let{animateScroll:e,cancelScroll:a}=B0(X.scrollController,X.renderIfNeeded);if(X.methods.set("cancelScroll",a),X.methods.set("scrollToIndex",(p,L)=>{let V=Math.floor(p/J.columns),{align:j,behavior:O,duration:M}=rJ(L),A=X.dataManager.getState(),W=q.getTotalRows(A.total),g=Math.max(0,Math.min(V,W-1)),v=X.adjustScrollPosition(r0(g,X.sizeCache,X.state.viewportState.containerSize,W,j,X.getCachedCompression()));if(O==="smooth")e(X.scrollController.getScrollTop(),v,M);else a(),X.scrollController.scrollTo(v)}),!X.methods.has("_getTotal"))X.methods.set("_getTotal",()=>X.dataManager.getTotal());X.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),X.destroyHandlers.push(()=>{if(a(),Y)Y.destroy(),Y=null;K.root.classList.remove(`${Z}--grid`)})},destroy(){if(Y)Y.destroy(),Y=null}}},E6=(J)=>{let q=Math.max(1,Math.floor(J.columns)),Y=J.gap??0,X=J.containerSize,K=0,Q=[],U=()=>{let b=(q-1)*Y;K=Math.max(0,(X-b)/q),Q=Array(q);let S=K+Y;for(let C=0;C<q;C++)Q[C]=C*S};U();let _=[],Z=0,B=[],N=(b)=>{let S=0,C=b[0];for(let u=1;u<b.length;u++){let l=b[u];if(l<C)C=l,S=u}return S},$=(b,S)=>{if(b<=0)return Z=0,_=[],[];let C=Array(q).fill(0),u=Array(q);for(let h=0;h<q;h++)u[h]=[];let l=Array(b);for(let h=0;h<b;h++){let T=N(C),r=S(h),i=C[T];l[h]={index:h,x:Q[T],y:i,lane:T,size:r,crossSize:K},u[T].push(h),C[T]=i+r+Y}_=u;let f=0;for(let h=0;h<q;h++){let T=C[h],r=T>0?T-Y:0;if(r>f)f=r}return Z=f,l},D=(b)=>{if(b.length===0)return Z>0?Z:0;if(Z>0)return Z;let S=Array(q).fill(0);for(let u of b){let l=u.y+u.size,f=S[u.lane];if(l>f)S[u.lane]=l}let C=0;for(let u=0;u<q;u++)if(S[u]>C)C=S[u];return C},E=(b,S,C)=>{if(b.length===0||C<=S)return B.length=0,B;if(_.length===0||_.length!==q)return R(b,S,C);B.length=0;for(let u=0;u<q;u++){let l=_[u],f=l.length;if(f===0)continue;let h=0,T=f;while(h<T){let r=h+T>>>1,i=b[l[r]];if(i.y+i.size<=S)h=r+1;else T=r}for(let r=h;r<f;r++){let i=b[l[r]];if(i.y>=C)break;B.push(i)}}return B},R=(b,S,C)=>{let u=[];for(let l of b)if(l.y+l.size>S&&l.y<C)u.push(l);return u};return{get columns(){return q},get gap(){return Y},get containerSize(){return X},update:(b)=>{let S=!1;if(b.columns!==void 0){let C=Math.max(1,Math.floor(b.columns));if(C!==q)q=C,S=!0}if(b.gap!==void 0&&b.gap!==Y)Y=b.gap,S=!0;if(b.containerSize!==void 0&&b.containerSize!==X)X=b.containerSize,S=!0;if(S)U()},calculateLayout:$,getTotalSize:D,getVisibleItems:E}},A6=(J=200)=>{let q=[];return{acquire:()=>{let Q=q.pop();if(Q)return Q;let U=document.createElement("div");return U.setAttribute("role","option"),U},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}}},L6=1,F6=(J,q,Y,X=!1,K,Q)=>{let U=A6(),_=new Map,Z=new Set,B=0,N="",$=-1,D={selected:!1,focused:!1},E=(k,y)=>{return D.selected=k,D.focused=y,D},R=`${Y}-item ${Y}-masonry-item`,w=`${Y}-item--selected`,b=`${Y}-item--focused`,S=(k,y)=>{if(typeof y==="string")k.innerHTML=y;else k.replaceChildren(y)},C=(k,y,P)=>{k.classList.toggle(w,y),k.classList.toggle(b,P)},u=(k,y)=>{if(X)k.style.transform=`translate(${Math.round(y.y)}px, ${Math.round(y.x)}px)`;else k.style.transform=`translate(${Math.round(y.x)}px, ${Math.round(y.y)}px)`},l=(k,y)=>{if(X)k.style.width=`${y.size}px`,k.style.height=`${y.crossSize}px`;else k.style.width=`${y.crossSize}px`,k.style.height=`${y.size}px`},f=(k,y,P,H,G)=>{let F=U.acquire(),z=E(H,G);if(F.className=R,F.dataset.index=String(k),F.dataset.id=String(y.id),F.dataset.lane=String(P.lane),F.ariaSelected=String(H),Q)F.id=`${Q}-item-${k}`;if(K){let e=K();if(e!==$)$=e,N=String(e);F.setAttribute("aria-setsize",N),F.setAttribute("aria-posinset",String(k+1))}l(F,P);let x=q(y,k,z);return S(F,x),C(F,H,G),u(F,P),{element:F,lastItemId:y.id,lastSelected:H,lastFocused:G,lastY:P.y,lastX:P.x,lastSize:P.size,lastCrossSize:P.crossSize,lastSeenFrame:B}},h=(k,y,P,H)=>{B++,Z.clear();for(let F=0;F<y.length;F++)Z.add(y[F].index);for(let[F,z]of _)if(Z.has(F))z.lastSeenFrame=B;else if(B-z.lastSeenFrame>L6)U.release(z.element),_.delete(F);let G=null;for(let F=0;F<y.length;F++){let z=y[F],x=z.index,e=k(x);if(!e)continue;let a=P.has(e.id),p=x===H,L=_.get(x);if(L){let V=L.lastItemId!==e.id,j=L.lastSelected!==a,O=L.lastFocused!==p,M=L.lastY!==z.y||L.lastX!==z.x,A=L.lastSize!==z.size||L.lastCrossSize!==z.crossSize;if(V){let W=E(a,p),g=q(e,x,W);S(L.element,g),L.element.dataset.id=String(e.id),L.lastItemId=e.id}if(V||j||O)C(L.element,a,p),L.element.ariaSelected=String(a),L.lastSelected=a,L.lastFocused=p;if(A)l(L.element,z),L.lastSize=z.size,L.lastCrossSize=z.crossSize;if(M)u(L.element,z),L.lastY=z.y,L.lastX=z.x}else{let V=f(x,e,z,a,p);if(!G)G=document.createDocumentFragment();G.appendChild(V.element),_.set(x,V)}}if(G)J.appendChild(G)},T=()=>{for(let{element:k}of _.values())U.release(k);_.clear(),J.innerHTML=""};return{render:h,getElement:(k)=>_.get(k)?.element,updateItemClasses:(k,y,P)=>{let H=_.get(k);if(!H)return;let G=H.lastSelected!==y,F=H.lastFocused!==P;if(G||F)C(H.element,y,P),H.lastSelected=y,H.lastFocused=P},sortDOM:()=>{U0(J,_.keys(),(k)=>_.get(k)?.element)},clear:T,destroy:()=>{T(),U.clear()}}},T6=new Set,k6=100,o0=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withMasonry: columns must be a positive integer >= 1");let q=null,Y=null,X=[];return{name:"withMasonry",priority:10,conflicts:["withGrid","withTable"],setup(K){let{dom:Q,emitter:U,config:_,rawConfig:Z}=K,B=_.classPrefix,N=_.horizontal;if(_.reverse)throw Error("[vlist/builder] withMasonry: cannot be combined with reverse mode");Q.root.classList.add(`${B}--masonry`);let $=RJ(Z.padding),D=C0($,N),E=K0($,N),R=()=>{return(N?Q.viewport.clientHeight:Q.viewport.clientWidth)-D},w={columns:J.columns,gap:J.gap??0,containerSize:R()};q=E6(w);let b=Z.item,S=N&&Z.item.width?Z.item.width:b.height,C={containerWidth:0,columns:0,gap:0,columnWidth:0},u=typeof S==="function"?(W)=>S(W,C):()=>S,l=()=>{let W=K.dataManager.getTotal(),g=q;C.containerWidth=g.containerSize,C.columns=g.columns,C.gap=g.gap;let v=(g.columns-1)*g.gap;C.columnWidth=Math.max(0,(C.containerWidth-v)/g.columns),X=g.calculateLayout(W,u),i();let m=q.getTotalSize(X);K.sizeCache.getTotalSize=()=>m,K.updateContentSize(m)},f=Z.item.template;Y=F6(Q.items,f,B,N,()=>K.dataManager.getTotal(),_.ariaIdPrefix),K.setUpdateItemClassesFn((W,g,v)=>{Y?.updateItemClasses(W,g,v)});let h=[],T=new Int32Array(0),r=[],i=()=>{let W=w.columns,g=X.length;if(h=Array.from({length:W},()=>[]),T.length<g)T=new Int32Array(g);for(let v=0;v<g;v++){let m=X[v],o=h[m.lane].length;h[m.lane].push(v),T[v]=o}r=Array(W);for(let v=0;v<W;v++){let m=h[v],o=new Float64Array(m.length);for(let QJ=0;QJ<m.length;QJ++){let d=X[m[QJ]];o[QJ]=d.y+d.size*0.5}r[v]=o}};K.methods.set("_getNavTotal",()=>K.dataManager.getTotal());let n=(W,g)=>{let v=W.length;if(v===0)return-1;if(v===1)return 0;let m=0,o=v-1;while(m<o){let QJ=m+o>>1;if(W[QJ]<g)m=QJ+1;else o=QJ}if(m>0&&Math.abs(W[m-1]-g)<=Math.abs(W[m]-g))return m-1;return m};K.methods.set("_navigate",(W,g,v)=>{let m=X[W];if(!m)return W;let o=m.lane,QJ=w.columns,d=T[W],c=h[o];switch(N?g==="ArrowDown"?"ArrowRight":g==="ArrowUp"?"ArrowLeft":g==="ArrowRight"?"ArrowDown":g==="ArrowLeft"?"ArrowUp":g:g){case"ArrowDown":{if(d+1<c.length)return c[d+1];return W}case"ArrowUp":{if(d>0)return c[d-1];return W}case"ArrowRight":{if(o>=QJ-1)return W;let qJ=o+1,YJ=m.y+m.size*0.5,XJ=h[qJ];if(XJ.length===0)return W;let KJ=n(r[qJ],YJ);return KJ>=0?XJ[KJ]:W}case"ArrowLeft":{if(o<=0)return W;let qJ=o-1,YJ=m.y+m.size*0.5,XJ=h[qJ];if(XJ.length===0)return W;let KJ=n(r[qJ],YJ);return KJ>=0?XJ[KJ]:W}case"Home":return 0;case"End":return v-1;case"PageDown":{let qJ=K.state.viewportState.containerSize,YJ=m.size>0?m.size:150,XJ=Math.max(1,Math.floor(qJ/YJ)),KJ=Math.min(d+XJ,c.length-1);return c[KJ]}case"PageUp":{let qJ=K.state.viewportState.containerSize,YJ=m.size>0?m.size:150,XJ=Math.max(1,Math.floor(qJ/YJ)),KJ=Math.max(0,d-XJ);return c[KJ]}}return W}),K.methods.set("_scrollItemIntoView",(W)=>{let g=X[W];if(!g)return;let v=K.scrollController.getScrollTop(),m=K.state.viewportState.containerSize,o=g.y,QJ=o+g.size,d=v+m;if(o<v)K.scrollController.scrollTo(K.adjustScrollPosition(Math.max(0,o)));else if(QJ>d)K.scrollController.scrollTo(K.adjustScrollPosition(QJ-m))});let k=null,y=null,P=!1,H=()=>{if(P)return;P=!0,k=K.methods.get("_getSelectedIds")??null,y=K.methods.get("_getFocusedIndex")??null},G=(W)=>K.dataManager.getItem(W),F=-1,z=-1,x=!0,e=_.overscan*k6,a=()=>{if(K.state.isDestroyed)return;H();let W=K.scrollController.getScrollTop(),g=K.state.viewportState.containerSize;if(!x&&W===F&&g===z)return;F=W,z=g,x=!1;let v=Math.max(0,W-e),m=W+g+e,o=q.getVisibleItems(X,v,m),QJ=k?k():T6,d=y?y():-1;if(Y&&o.length>0)Y.render(G,o,QJ,d);let c=K.state.viewportState;c.scrollPosition=W;let JJ=o.length,qJ=JJ>0?o[0].index:0,YJ=JJ>0?o[JJ-1].index:0;c.visibleRange.start=qJ,c.visibleRange.end=YJ,c.renderRange.start=qJ,c.renderRange.end=YJ;let XJ=K.state.lastRenderRange;if(XJ.start!==qJ||XJ.end!==YJ)XJ.start=qJ,XJ.end=YJ,U.emit("range:change",{range:{start:qJ,end:YJ}})},p=()=>{K.state.lastRenderRange.start=-1,K.state.lastRenderRange.end=-1,x=!0,a()};K.setRenderFns(a,p);let L=(W,g)=>{let v=(N?g:W)-D;if(q&&q.containerSize!==v){if(q.update({containerSize:v}),l(),Y)Y.clear();p()}};K.resizeHandlers.push(L);let V=()=>{l(),p()},j=K.dataManager,O=(W)=>{if(typeof j[W]!=="function")return;let g=j[W].bind(j);j[W]=(...v)=>{g(...v),V()}};O("setItems"),O("appendItems"),O("prependItems"),O("updateItem"),O("removeItem");let{animateScroll:M,cancelScroll:A}=B0(K.scrollController,K.renderIfNeeded);K.methods.set("cancelScroll",A),K.methods.set("scrollToIndex",(W,g)=>{let v=X[W];if(!v)return;let{align:m,behavior:o,duration:QJ}=rJ(g),d=v.y,c=K.state.viewportState.containerSize,JJ=d;if(m==="center")JJ=d-c/2+v.size/2;else if(m==="end"){JJ=d-c+v.size;let qJ=q.getTotalSize(X);if(W===X.length-1)JJ=Math.max(0,qJ+E-c)}if(JJ=Math.max(0,JJ),JJ=K.adjustScrollPosition(JJ),o==="smooth")M(K.scrollController.getScrollTop(),JJ,QJ);else A(),K.scrollController.scrollTo(JJ)}),l(),K.idleHandlers.push(()=>{if(Y)Y.sortDOM()}),K.destroyHandlers.push(()=>{if(A(),Y)Y.destroy();Q.root.classList.remove(`${B}--masonry`)})}}},N0=(J)=>{let q=J?.mode??"single",Y=J?.followFocus??!1,X=J?.initial,K=J?.shiftArrowToggle??"origin",Q=v1(X),U=null,_=-1;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems","selectNext","selectPrevious"],setup(Z){let{dom:B,emitter:N,config:$}=Z,{classPrefix:D,ariaIdPrefix:E}=$;if(q==="none"){Z.methods.set("select",()=>{}),Z.methods.set("deselect",()=>{}),Z.methods.set("toggleSelect",()=>{}),Z.methods.set("selectAll",()=>{}),Z.methods.set("clearSelection",()=>{}),Z.methods.set("getSelected",()=>[]),Z.methods.set("getSelectedItems",()=>[]),Z.methods.set("setSelectionMode",()=>{}),Z.methods.set("selectNext",()=>{}),Z.methods.set("selectPrevious",()=>{});return}B.root.classList.add(`${D}--selectable`);let R=Z.methods.get("_isGroupHeader"),w=(L)=>R?R(L):!1,b=(L,V,j)=>{if(!R)return L;let O=L;while(O>=0&&O<j){if(!w(O))return O;O+=V}O=L-V;while(O>=0&&O<j){if(!w(O))return O;O-=V}return L},S=new Map,C=()=>{S.clear();let L=Z.dataManager.getTotal(),V=Z.dataManager.getCached();if(V===0)return;if(V>=L){for(let O=0;O<L;O++){let M=Z.dataManager.getItem(O);if(M)S.set(M.id,O)}return}let j=Z.dataManager.getStorage();if(j&&typeof j.getLoadedRanges==="function"){let O=j.getLoadedRanges();for(let M of O)for(let A=M.start;A<=M.end;A++){let W=Z.dataManager.getItem(A);if(W&&!W._isPlaceholder)S.set(W.id,A)}}};N.on("data:change",({type:L,id:V})=>{if(L==="remove")Q.selected.delete(V),C()}),N.on("load:end",({items:L,offset:V})=>{if(!L||L.length===0)return;if(V!==void 0)for(let j=0;j<L.length;j++){let O=L[j];if(O&&O.id!==void 0)S.set(O.id,V+j)}else C()}),C(),Z.methods.set("_getSelectedIds",()=>{return Q.selected}),Z.methods.set("_getFocusedIndex",()=>{return Q.focusVisible?Q.focusedIndex:-1});let{forceRender:u}=Z.getRenderFns(),l=()=>{u();let L=(V)=>{let j=S.get(V);if(j===void 0)return;return Z.dataManager.getItem(j)};N.emit("selection:change",{selected:b0(Q),items:H0(Q,L)})},f=RJ(Z.rawConfig.padding),h=$.horizontal?f.left:f.top,T=$.horizontal?f.right:f.bottom,r=Z.getItemToScrollIndexFn(),i=null,n=null,k=null,y=!1,P=()=>{if(y)return;y=!0,i=Z.methods.get("_getNavDelta")??null,n=Z.methods.get("_navigate")??null,k=Z.methods.get("_scrollItemIntoView")??null},H=()=>{return P(),i?i():{ud:1,lr:0,cols:0}},G=(L)=>{if(L<0)return;if(P(),k)k(L);else{let V=Z.state.viewportState.containerSize,j=Z.state.viewportState.scrollPosition,O=Z.dataManager.getTotal(),M=Z.getCachedCompression(),{visibleRange:A}=Z.state.viewportState,W=r(L),g=S0(W,Z.sizeCache,j,V,h,T,M,O,A);if(g!==j)Z.scrollController.scrollTo(Z.adjustScrollPosition(g))}},F=()=>{let L=r(Math.max(0,Q.focusedIndex)),V=Z.sizeCache.getSize(L),{ud:j}=H();return Math.max(j,Math.floor(Z.state.viewportState.containerSize/V)*j)};U=document.createElement("div"),U.setAttribute("aria-live","polite"),U.setAttribute("aria-atomic","true"),U.className=`${D}-live-region`,U.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",(B.root.getAttribute("role")==="grid"?B.root.parentElement??B.root:B.root).appendChild(U);let x=U;N.on("selection:change",({selected:L})=>{let V=L.length;if(V===0)x.textContent="";else if(V===1)x.textContent="1 item selected";else x.textContent=`${V} items selected`});let e=()=>{if(Z.state.isDestroyed)return;if(!B.root.matches(":focus-visible"))return;let L=Z.dataManager.getTotal();if(L===0)return;let V=Q.focusedIndex>=0?Math.min(Q.focusedIndex,L-1):0;V=b(V,1,L),Q=CJ(Q,V),Q.focusVisible=!0,B.root.setAttribute("aria-activedescendant",`${E}-item-${V}`),G(V);let j=Z.dataManager.getItem(V);if(j)Z.renderer.updateItemClasses(V,Q.selected.has(j.id),!0)};if($.interactive)B.root.addEventListener("focusin",e);let a=(L)=>{if(Z.state.isDestroyed)return;let V=L.relatedTarget;if(V&&B.root.contains(V))return;let j=Q.focusedIndex;if(Q.focusVisible=!1,B.root.removeAttribute("aria-activedescendant"),j>=0){let O=Z.dataManager.getItem(j);if(O)Z.renderer.updateItemClasses(j,Q.selected.has(O.id),!1)}};if($.interactive)B.root.addEventListener("focusout",a);if(Z.clickHandlers.push((L)=>{if(Z.state.isDestroyed)return;let j=L.target.closest("[data-index]");if(!j)return;let O=parseInt(j.dataset.index??"-1",10);if(O<0)return;let M=Z.dataManager.getItem(O);if(!M)return;if(w(O))return;if(N.emit("item:click",{item:M,index:O,event:L}),q==="multiple"&&L.shiftKey&&Q.focusedIndex>=0){let A=_>=0?_:Q.focusedIndex,W=Z.getAllLoadedItems();Q=Y0(Q,W,A,O,q),Q=CJ(Q,O),Q.focusVisible=!1,_=O,B.root.setAttribute("aria-activedescendant",`${E}-item-${O}`),l();return}_=O,Q=CJ(Q,O),Q.focusVisible=!1,B.root.setAttribute("aria-activedescendant",`${E}-item-${O}`),Q=vJ(Q,M.id,q),l()}),$.interactive)Z.keydownHandlers.push((L)=>{if(Z.state.isDestroyed)return;let V=Z.dataManager.getTotal(),j=Q.focusedIndex,O=!1,M=!1,A=Q;if(P(),n)switch(L.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":{let W=n(Q.focusedIndex,L.key,V);if(W!==Q.focusedIndex)A=CJ(Q,W),A.focusVisible=!0,O=!0,M=!0;else{L.preventDefault();return}break}}if(!O)switch(L.key){case"ArrowUp":A=q0(Q,V,$.wrap,H().ud),A.focusVisible=!0,O=!0,M=!0;break;case"ArrowDown":A=X0(Q,V,$.wrap,H().ud),A.focusVisible=!0,O=!0,M=!0;break;case"ArrowLeft":{let{lr:W}=H();if(W)A=q0(Q,V,$.wrap,W),A.focusVisible=!0,O=!0,M=!0;break}case"ArrowRight":{let{lr:W}=H();if(W)A=X0(Q,V,$.wrap,W),A.focusVisible=!0,O=!0,M=!0;break}case"PageUp":A=k0(Q,V,F(),"up"),A.focusVisible=!0,O=!0,M=!0;break;case"PageDown":A=k0(Q,V,F(),"down"),A.focusVisible=!0,O=!0,M=!0;break;case"Home":{A=C1(Q,V),A.focusVisible=!0,O=!0,M=!0;break}case"End":{A=I1(Q,V),A.focusVisible=!0,O=!0,M=!0;break}}switch(L.key){case" ":case"Enter":if(L.key===" "&&L.shiftKey&&q==="multiple"&&Q.focusedIndex>=0){if(_>=0){let W=Z.getAllLoadedItems();A=Y0(A,W,_,Q.focusedIndex,q)}A.focusVisible=!0,O=!0;break}if(Q.focusedIndex>=0&&!w(Q.focusedIndex)){let W=Z.dataManager.getItem(Q.focusedIndex);if(W)A=vJ(Q,W.id,q),A.focusVisible=!0;_=Q.focusedIndex,O=!0}break;case"a":if((L.ctrlKey||L.metaKey)&&q==="multiple"){let W=Z.getAllLoadedItems();if(Q.selected.size===W.length)A=T0(A);else A=F0(A,W,q);A.focusVisible=!0,O=!0,M=!1}break}if(M&&R){let W=A.focusedIndex>j?1:-1;A.focusedIndex=b(A.focusedIndex,W,V)}if(L.shiftKey&&q==="multiple"&&M&&A.focusedIndex>=0){let W=L.key==="ArrowUp"||L.key==="ArrowDown"||L.key==="ArrowLeft"||L.key==="ArrowRight",g=(L.ctrlKey||L.metaKey)&&(L.key==="Home"||L.key==="End");if(W){if(K==="origin"){if(j>=0){let v=Z.dataManager.getItem(j);if(v)A=vJ(A,v.id,q)}}else{let v=Z.dataManager.getItem(A.focusedIndex);if(v)A=vJ(A,v.id,q)}_=A.focusedIndex,M=!1}else if(g){let v=Z.getAllLoadedItems(),m=j>=0?j:A.focusedIndex;A=Y0(A,v,m,A.focusedIndex,q),_=A.focusedIndex,M=!1}}if(Y&&q==="single"&&M&&A.focusedIndex>=0){let W=Z.dataManager.getItem(A.focusedIndex);if(W)A=IJ(A,[W.id],q);M=!1}if(O){L.preventDefault(),Q=A;let W=Q.focusedIndex;if(W>=0)G(W),B.root.setAttribute("aria-activedescendant",`${E}-item-${W}`);else B.root.removeAttribute("aria-activedescendant");if(M){let{selected:g}=Q;if(j>=0&&j!==W){let v=Z.dataManager.getItem(j);if(v)Z.renderer.updateItemClasses(j,g.has(v.id),!1)}if(W>=0){let v=Z.dataManager.getItem(W);if(v)Z.renderer.updateItemClasses(W,g.has(v.id),!0)}}else l()}});Z.methods.set("select",(...L)=>{Q=IJ(Q,L,q),l()}),Z.methods.set("deselect",(...L)=>{Q=h0(Q,L),l()}),Z.methods.set("toggleSelect",(L)=>{Q=vJ(Q,L,q),l()}),Z.methods.set("selectAll",()=>{if(q!=="multiple")return;let L=Z.getAllLoadedItems();Q=F0(Q,L,q),C(),l()}),Z.methods.set("clearSelection",()=>{Q=T0(Q),l()}),Z.methods.set("getSelected",()=>{return b0(Q)}),Z.methods.set("getSelectedItems",()=>{return H0(Q,(V)=>{let j=S.get(V);return j===void 0?void 0:Z.dataManager.getItem(j)})});let p=(L)=>{let V=Z.dataManager.getTotal();if(V===0)return;if(P(),n){let A=L==="next"?"ArrowDown":"ArrowUp",W=n(Q.focusedIndex,A,V);Q=CJ(Q,W)}else{let{ud:A}=H();Q=L==="next"?X0(Q,V,$.wrap,A):q0(Q,V,$.wrap,A)}let j=L==="next"?1:-1;Q.focusedIndex=b(Q.focusedIndex,j,V);let O=Q.focusedIndex,M=Z.dataManager.getItem(O);if(!M)return;Q=IJ(Q,[M.id],q),G(O),l()};Z.methods.set("selectNext",()=>{p("next")}),Z.methods.set("selectPrevious",()=>{p("previous")}),Z.destroyHandlers.push(()=>{if(x&&x.parentNode)x.remove();B.root.removeEventListener("focusin",e),B.root.removeEventListener("focusout",a)})},destroy(){if(U&&U.parentNode)U.remove();U=null}}},b6=(J)=>{try{let q=sessionStorage.getItem(J);if(!q)return;return JSON.parse(q)}catch{return}},n0=(J)=>{let q=J?.autoSave,Y=q?b6(q):J?.restore;return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(X){X.methods.set("getScrollSnapshot",()=>{let Q=X.scrollController.getScrollTop(),U=X.getCachedCompression(),_=X.getVirtualTotal(),Z=X.methods.get("getSelected"),B=Z&&Z().length>0?Z():void 0;if(_===0){let E={index:0,offsetInItem:0,total:0};if(B)E.selectedIds=B;return E}let N,$;if(U.isCompressed){let R=Q/U.virtualSize*_;N=Math.max(0,Math.min(Math.floor(R),_-1)),$=(R-N)*X.sizeCache.getSize(N)}else N=X.sizeCache.indexAtOffset(Q),$=Q-X.sizeCache.getOffset(N);$=Math.max(0,$);let D={index:N,offsetInItem:$,total:_};if(B)D.selectedIds=B;return D});let K=(Q)=>{let{index:U,offsetInItem:_,selectedIds:Z}=Q,B=X.getVirtualTotal();if(B===0&&Q.total&&Q.total>0){X.dataManager.setTotal(Q.total),X.sizeCache.rebuild(Q.total),X.updateCompressionMode();let C=X.getCachedCompression();X.updateContentSize(C.virtualSize)}else if(B===0)return;if(!Number.isFinite(U)||!Number.isFinite(_))return;let N=X.getVirtualTotal();if(X.sizeCache.getTotal()!==N){X.sizeCache.rebuild(N),X.updateCompressionMode();let C=X.getCachedCompression();X.updateContentSize(C.virtualSize)}let D=X.getCachedCompression(),E=Math.max(0,Math.min(U,N-1)),R;if(D.isCompressed){let C=X.sizeCache.getSize(E),u=C>0?_/C:0;R=(E+u)/N*D.virtualSize}else R=X.sizeCache.getOffset(E)+_;let w=X.state.viewportState.containerSize,b=Math.max(0,D.virtualSize-w);if(R=Math.max(0,Math.min(R,b)),X.scrollController.scrollTo(R),Z&&Z.length>0){let C=X.methods.get("select");if(C)C(...Z)}let S=X.methods.get("loadVisibleRange");if(S){let u=0,l=R,f=()=>{u++;let h=X.state.viewportState.containerSize,T=X.scrollController.getScrollTop();if(h>0){if(Math.abs(T-l)>1)X.scrollController.scrollTo(l);S()}else if(u<10)requestAnimationFrame(f)};requestAnimationFrame(f)}else{let C=X.methods.get("reload");if(C)requestAnimationFrame(()=>{C()})}};if(X.methods.set("restoreScroll",K),q){let Q=!!Y,U=()=>{if(Q)return;let _=X.methods.get("getScrollSnapshot");if(!_)return;let Z=_();try{sessionStorage.setItem(q,JSON.stringify(Z))}catch{}};if(X.idleHandlers.push(()=>{if(Q)Q=!1;U()}),X.emitter.on("selection:change",U),Y&&Y.total&&Y.total>0){let _=X.methods.get("_cancelAutoLoad");if(_)_();X.dataManager.setTotal(Y.total)}}if(Y)queueMicrotask(()=>{K(Y)})}}};var H6=(J,q)=>{let Y=new Map,X=(Q)=>{let U=Y.get(Q);return U!==void 0?U:J},K=cJ(X,q);return{getOffset(Q){return K.getOffset(Q)},getSize(Q){return X(Q)},indexAtOffset(Q){return K.indexAtOffset(Q)},getTotalSize(){return K.getTotalSize()},getTotal(){return K.getTotal()},rebuild(Q){if(Q<K.getTotal()){for(let U of Y.keys())if(U>=Q)Y.delete(U)}K=cJ(X,Q)},isVariable(){return!0},setMeasuredSize(Q,U){Y.set(Q,U)},isMeasured(Q){return Y.has(Q)},getEstimatedSize(){return J},measuredCount(){return Y.size}}},i0=()=>{let J=null;return{name:"withAutoSize",priority:5,setup(q){let Y=q.config.horizontal,K=q.rawConfig.item,Q=Y?K.estimatedWidth:K.estimatedHeight;if(Q==null||Q<=0)throw Error("[vlist/withAutoSize] Requires item.estimatedHeight (or item.estimatedWidth for horizontal)");let U=K.gap??0,_=q.getVirtualTotal(),Z=RJ(q.rawConfig.padding),B=K0(Z,Y),N=H6(Q+U,_),$=q.methods.get("_setSizeCache"),D=q.methods.get("_setConstrainSize");if(!$||!D)throw Error("[vlist/withAutoSize] Incompatible builder version");$(N),D((f)=>N.isMeasured(f));let E=new WeakMap,R=0,w=!1,b=2,S=(f)=>{let h=q.scrollController.getScrollTop(),T=q.state.viewportState.containerSize;if(T<=0)return!1;let r=Math.max(0,f+B-T);return h>=r-b},C=()=>{let f=N.getTotalSize(),h=q.state.viewportState.containerSize;if(h<=0)return;let T=Math.max(0,f+B-h),r=q.scrollController.getScrollTop();if(T>r)q.scrollController.scrollTo(T)},u=()=>{let f=N.getTotalSize();q.updateContentSize(f)},l=()=>{if(w){let f=q.dom.viewport,h=f.scrollHeight,T=h-f.clientHeight,r=q.scrollController.getScrollTop(),i=T>0&&r>=T-b,n=q.getVirtualTotal(),k=q.state.viewportState.renderRange.end,y=n>0&&k>=n-1,P=N.getTotalSize()+B,H=Math.abs(P-h),G=y&&T>0&&r>=T-H-b,F=i||G;if(u(),w=!1,F)f.scrollHeight,C(),q.forceRender()}};J=new ResizeObserver((f)=>{if(q.state.isDestroyed)return;let h=!1,T=q.state.viewportState.visibleRange.start;for(let z of f){let x=E.get(z.target);if(x===void 0)continue;let e=Y?z.borderBoxSize[0].inlineSize:z.borderBoxSize[0].blockSize;if(!N.isMeasured(x)){let a=e+U,p=N.getSize(x);if(N.setMeasuredSize(x,a),h=!0,x<T&&a!==p)R+=a-p;J.unobserve(z.target);let L=z.target;if(Y)L.style.width=`${e}px`;else L.style.height=`${e}px`}}if(!h)return;let r=N.getTotalSize();if(N.rebuild(q.getVirtualTotal()),R!==0){let z=q.scrollController.getScrollTop();q.scrollController.scrollTo(z+R),R=0}let i=S(r),n=q.getVirtualTotal(),k=q.state.viewportState.renderRange.end,y=n>0&&k>=n-1,P=q.dom.viewport,H=P.scrollHeight-P.clientHeight,G=q.scrollController.getScrollTop(),F=H>0&&G>=H-b;if(i||y||!q.scrollController.isScrolling()){if(u(),w=!1,i||y&&F)P.scrollHeight,C()}else w=!0;q.forceRender()}),q.afterRenderBatch.push((f)=>{for(let{index:h,element:T}of f)if(!N.isMeasured(h))E.set(T,h),J.observe(T)}),q.idleHandlers.push(l),q.destroyHandlers.push(()=>{if(J)J.disconnect(),J=null})},destroy(){if(J)J.disconnect(),J=null}}};function C6(J){let q=null,Y=null,X=(Q)=>{q=Q},K=()=>Y;return t0(()=>{if(!q)return;let Q=J(),U=u0({...Q,container:q});if(Q.scroll?.element===window)U=U.use(l0());let _=Q.item,Z=Q.orientation==="horizontal",B=Z?_.width!=null:_.height!=null,N=Z?_.estimatedWidth!=null:_.estimatedHeight!=null;if(!B&&N)U=U.use(i0());if(Q.adapter)U=U.use(c0({adapter:Q.adapter,...Q.loading&&{loading:Q.loading}}));if(Q.layout==="grid"&&Q.grid)U=U.use(s0(Q.grid));if(Q.layout==="masonry"&&Q.masonry)U=U.use(o0(Q.masonry));if(Q.groups){let E=Q.groups,R=typeof E.headerHeight==="function"?E.headerHeight("",0):E.headerHeight;U=U.use(a0({getGroupForIndex:E.getGroupForIndex,headerHeight:R,headerTemplate:E.headerTemplate,...E.sticky!==void 0&&{sticky:E.sticky}}))}if((Q.selection?.mode||"none")!=="none")U=U.use(N0(Q.selection));else U=U.use(N0({mode:"none"}));U=U.use(d0());let D=Q.scroll?.scrollbar||Q.scrollbar;if(D!=="none"){let E=typeof D==="object"?D:{};U=U.use(x0(E))}U=U.use(n0()),Y=U.build()}),$6(P6(()=>J().items,(Q)=>{if(Y&&Q)Y.setItems(Q)})),e0(()=>{if(Y)Y.destroy(),Y=null}),{setRef:X,instance:K}}function I6(J,q,Y){t0(()=>{let X=J();if(!X)return;let K=X.on(q,Y);e0(()=>{K()})})}export{I6 as createVListEvent,C6 as createVList};
1
+ import{onMount as wt,onCleanup as zt,createEffect as qr,on as Yr}from"solid-js";var lt=3,$t="vlist",Oe=50,Tt=50,Et=2,Pt=15,kt=6,Fe=16000000,Be=150,je=1,nt=(i)=>i<0.5?2*i*i:1-(-2*i+2)**2/2,ot=300,Ft="x",Ht=20,st="_isPlaceholder",Ee="__placeholder_",_e={top:0,right:0,bottom:0,left:0},_t=(i)=>{if(i==null)return _e;if(typeof i==="number")return i===0?_e:{top:i,right:i,bottom:i,left:i};if(i.length===2){let[s,n]=i;return s===0&&n===0?_e:{top:s,right:n,bottom:s,left:n}}let[e,t,l,r]=i;return e===0&&t===0&&l===0&&r===0?_e:{top:e,right:t,bottom:l,left:r}},Rt=(i,e)=>e?i.left+i.right:i.top+i.bottom,Dt=(i,e)=>e?i.top+i.bottom:i.left+i.right;function Ot(i){let e={visibleIndices:new Int32Array(i),visibleOffsets:new Float64Array(i),visibleSizes:new Float64Array(i),visibleCount:0,startIndex:0,totalSize:0,capacity:i,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,isCompressed:!1,compressionRatio:1,prevAriaTotal:-1,resizeCapacity(t,l,r=lt){if(l<=0||t<=0)return;let s=Math.ceil(t/l)+r*2;if(s<=e.capacity)return;let n=s+8,f=new Int32Array(n),x=new Float64Array(n),c=new Float64Array(n);f.set(e.visibleIndices),x.set(e.visibleOffsets),c.set(e.visibleSizes),e.visibleIndices=f,e.visibleOffsets=x,e.visibleSizes=c,e.capacity=n},clear(){e.visibleCount=0,e.startIndex=0}};return e}var qt=(i,e)=>{let t=e;return{getOffset:(l)=>l*i,getSize:(l)=>i,indexAtOffset:(l)=>{if(t===0||i===0)return 0;return Math.max(0,Math.min(Math.floor(l/i),t-1))},getTotalSize:()=>t*i,getTotal:()=>t,rebuild:(l)=>{t=l},isVariable:()=>!1}},Yt=(i,e)=>{let t=e,l=new Float64Array(0),r=(n)=>{t=n,l=new Float64Array(n+1),l[0]=0;for(let f=0;f<n;f++)l[f+1]=l[f]+i(f)};r(e);let s=(n)=>{if(t===0)return 0;if(n<=0)return 0;if(n>=l[t])return t-1;let f=0,x=t-1;while(f<x){let c=f+x+1>>>1;if(l[c]<=n)f=c;else x=c-1}return f};return{getOffset:(n)=>{if(n<=0)return 0;if(n>=t)return l[t];return l[n]},getSize:(n)=>i(n),indexAtOffset:(n)=>s(n),getTotalSize:()=>l[t]??0,getTotal:()=>t,rebuild:(n)=>r(n),isVariable:()=>!0}},Qe=(i,e)=>{if(typeof i==="number")return qt(i,e);return Yt(i,e)},Wt=(i,e,t,l)=>{if(l===0)return 0;if(!i.isVariable())return Math.ceil(t/i.getSize(0));let r=0,s=0,n=e;while(n<l&&s<t)s+=i.getSize(n),r++,n++;return Math.max(1,r)};function Bt(i){let e=[],t=`${i}-item`,l=document.createElement("div");return l.className=t,{acquire(){if(e.length>0)return e.pop();return l.cloneNode(!1)},release(r){if(r.className=t,r.removeAttribute("style"),r.removeAttribute("id"),r.removeAttribute("role"),r.removeAttribute("aria-selected"),r.removeAttribute("aria-posinset"),r.removeAttribute("aria-setsize"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),r.innerHTML="",e.length<100)e.push(r)},get size(){return e.length},clear(){e.length=0}}}function Ut(i){if(typeof i==="string"){let e=document.querySelector(i);if(!e)throw Error(`[vlist] Container not found: ${i}`);return e}return i}function Kt(i,e,t,l,r){let s=t?`${e} ${e}--horizontal`:e,n=t?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",f=t?"position:relative;height:100%":"position:relative;width:100%",x=` role="${l?"listbox":"list"}"`;if(l)x+=' tabindex="0"';if(r)x+=` aria-label="${r.replace(/"/g,"&quot;")}"`;if(t)x+=' aria-orientation="horizontal"';i.insertAdjacentHTML("beforeend",`<div class="${s}"><div class="${e}-viewport" style="${n}" tabindex="-1"><div class="${e}-content" style="${f}"${x}></div></div></div>`);let c=i.lastElementChild,y=c.firstElementChild,W=y.firstElementChild,u=document.createElement("div");return u.className=`${e}-live`,u.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",u.setAttribute("aria-live","polite"),u.setAttribute("aria-atomic","true"),u.setAttribute("role","status"),c.appendChild(u),{root:c,viewport:y,content:W,liveRegion:u}}function Xt(i){let{state:e,viewport:t,horizontal:l,wheelEnabled:r,onFrame:s,onIdle:n}=i,f=i.idleTimeout||Be,x=i.scrollTarget??t,c=null,y=null;function W(){let A=l?t.scrollLeft:t.scrollTop;if(Math.abs(A-e.scrollPosition)<0.5)return;e.prevScrollPosition=e.scrollPosition,e.scrollPosition=A,e.scrollDirection=A>e.prevScrollPosition?1:A<e.prevScrollPosition?-1:0,s(),h()}function u(A){if(e.isCompressed)return;let d;if(l){if(Math.abs(A.deltaX)>Math.abs(A.deltaY))return;let v=t.scrollLeft,_=t.scrollWidth-t.clientWidth;if(d=Math.max(0,Math.min(v+A.deltaY*je,_)),Math.abs(d-v)<1)return;A.preventDefault(),t.scrollLeft=d}else{let v=t.scrollWidth>t.clientWidth;if(v&&Math.abs(A.deltaX)>Math.abs(A.deltaY))return;if(v&&A.deltaX!==0)A.preventDefault(),t.scrollLeft+=A.deltaX;let _=t.scrollTop,$=t.scrollHeight-t.clientHeight;if(d=Math.max(0,Math.min(_+A.deltaY*je,$)),Math.abs(d-_)<1)return;A.preventDefault(),t.scrollTop=d}e.prevScrollPosition=e.scrollPosition,e.scrollPosition=d,e.scrollDirection=d>e.prevScrollPosition?1:-1,s(),h()}function h(){if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,e.scrollDirection=0,n()},f)}function p(){if(y!==null)cancelAnimationFrame(y),y=null}function z(A,d,v,_=nt){p();let $=e.scrollPosition;if(Math.abs(A-$)<1){if(v)v(A);else if(l)t.scrollLeft=A;else t.scrollTop=A;return}let P=performance.now();function L(g){let X=g-P,k=Math.min(X/d,1),F=$+(A-$)*_(k);if(v)v(F);else if(l)t.scrollLeft=F;else t.scrollTop=F;if(!v)e.scrollPosition=F;if(s(),k<1)y=requestAnimationFrame(L);else y=null}y=requestAnimationFrame(L)}return{attach(){if(x.addEventListener("scroll",W,{passive:!0}),r)x.addEventListener("wheel",u,{passive:!1})},detach(){if(x.removeEventListener("scroll",W),r)x.removeEventListener("wheel",u);if(p(),c!==null)clearTimeout(c),c=null},cancelScroll:p,smoothScrollTo:z}}var ke=[],Vt={calculate:ke,commit:ke,afterScroll:ke,idle:ke,resize:ke};function Nt(i){if(i.length===0)return Vt;let e=[],t=[],l=[],r=[],s=[];for(let n=0;n<i.length;n++){let f=i[n].hooks;if(f===void 0)continue;if(f.onCalculate!==void 0)e.push(f.onCalculate);if(f.onCommit!==void 0)t.push(f.onCommit);if(f.onAfterScroll!==void 0)l.push(f.onAfterScroll);if(f.onIdle!==void 0)r.push(f.onIdle);if(f.onResize!==void 0)s.push(f.onResize)}return{calculate:e,commit:t,afterScroll:l,idle:r,resize:s}}function jt(i,e){for(let t=0;t<i.length;t++)i[t](e)}function Qt(i,e){for(let t=0;t<i.length;t++)i[t](e)}function Ze(i,e,t){for(let l=0;l<i.length;l++)i[l](e,t)}function Zt(i){for(let e=0;e<i.length;e++)i[e]()}function Gt(i,e,t){for(let l=0;l<i.length;l++)i[l](e,t)}function Jt(i,e,t,l,r,s,n,f,x){let c=r!==0||s!==0;return{prefix:i,selectedClass:`${i}-item--selected`,focusedClass:`${i}-item--focused`,placeholderClass:`${i}-item--placeholder`,replacedClass:`${i}-item--replaced`,translateProp:e?"translateX(":"translateY(",itemRole:t?"option":"listitem",interactive:t,horizontal:e,startPadding:l,gap:f,hasCrossPad:c,crossStartProp:c?e?"top":"left":"",crossEndProp:c?e?"bottom":"right":"",crossStartVal:c?r+"px":"",crossEndVal:c?s+"px":"",oddClass:n,emitter:x??null}}function er(i,e,t,l,r){if(i.containerSize<=0||i.totalItems===0)return i.clear(),!0;let{scrollPosition:s,containerSize:n,totalItems:f}=i,x=r??0;i.totalSize=e.getTotalSize();let c=e.indexAtOffset(x>0?Math.max(0,s-x):s),y=e.indexAtOffset(s+n);if(y<f-1)y++;c=Math.max(0,c),y=Math.min(f-1,Math.max(0,y));let W=Math.max(0,c-t),u=Math.min(f-1,y+t),h=Math.ceil(n/1)+t*2+10,p=u-W+1,z=Math.min(p,i.capacity,h);if(W===i.prevRangeStart&&u===i.prevRangeEnd&&!i.renderPending)return!1;i.visibleCount=z,i.startIndex=W;for(let A=0;A<z;A++){let d=W+A;i.visibleIndices[A]=d,i.visibleOffsets[A]=e.getOffset(d),i.visibleSizes[A]=e.getSize(d)}return jt(l.calculate,i),i.prevRangeStart=W,i.prevRangeEnd=u,i.renderPending=!1,!0}var Se={selected:!1,focused:!1};function tr(i,e,t){for(let l=0;l<e;l++)if(i[l]===t)return!0;return!1}var at,dt,ut,ft;function rr(i,e){if(!tr(at,dt,e))i.remove(),ut.release(i),ft.delete(e)}function ir(i,e,t,l,r,s,n,f,x,c){let y=x?null:r(),W=i.visibleCount,u=i.visibleIndices,h=n.interactive?String(i.totalItems):"",p=n.interactive&&i.totalItems!==i.prevAriaTotal,z=null;for(let A=0;A<W;A++){let d=u[A],v=i.visibleOffsets[A],_=i.visibleSizes[A],$=x?x(d):y[d];if(c)c(d,Se);else Se.selected=!1,Se.focused=!1;let P=s.get(d),L=P;if(P===void 0){let g=e.acquire();if($!==void 0){let F;try{F=l($,d,Se)}catch(C){if(n.emitter)n.emitter.emit("error",{error:C instanceof Error?C:Error(String(C)),context:`template:render:${d}`});e.release(g);continue}if(typeof F==="string")g.innerHTML=F;else g.innerHTML="",g.appendChild(F)}if(g.setAttribute("role",n.itemRole),g.setAttribute("data-index",String(d)),n.interactive)g.id=n.prefix+"-item-"+d,g.setAttribute("aria-posinset",String(d+1)),g.setAttribute("aria-setsize",h);if($!==void 0){let F=String($.id);if(g.setAttribute("data-id",F),F.startsWith(Ee))g.classList.add(n.placeholderClass)}if(n.hasCrossPad)g.style.setProperty(n.crossStartProp,n.crossStartVal),g.style.setProperty(n.crossEndProp,n.crossEndVal);if(c){if(g.classList.toggle(n.selectedClass,Se.selected),g.classList.toggle(n.focusedClass,Se.focused),Se.selected)g.setAttribute("aria-selected","true");else g.removeAttribute("aria-selected");g._lastSelected=Se.selected,g._lastFocused=Se.focused}if(n.oddClass)g.classList.toggle(n.oddClass,(d&1)===1);let X=v+n.startPadding;g.style.transform=n.translateProp+X+"px)",g._lastOffset=X;let k=_-n.gap;if(n.horizontal)g.style.width=k+"px";else g.style.height=k+"px";if(g._lastSize=k,g._lastItem=$,s.set(d,g),z===null)z=document.createDocumentFragment();z.appendChild(g)}else{if(p)P.setAttribute("aria-setsize",h);if($!==void 0&&L._lastItem!==$){let k=P.getAttribute("data-id"),F=String($.id),C;try{C=l($,d,Se)}catch(S){if(n.emitter)n.emitter.emit("error",{error:S instanceof Error?S:Error(String(S)),context:`template:render:${d}`});continue}if(typeof C==="string")P.innerHTML=C;else P.innerHTML="",P.appendChild(C);if(P.setAttribute("data-id",F),L._lastItem=$,k!==F){let S=k!==null&&k.startsWith(Ee),U=F.startsWith(Ee);if(S!==U)P.classList.toggle(n.placeholderClass,U);if(S&&!U)P.classList.add(n.replacedClass),setTimeout(()=>{P.classList.remove(n.replacedClass)},300)}}if(c){if(L._lastSelected!==Se.selected){if(P.classList.toggle(n.selectedClass,Se.selected),Se.selected)P.setAttribute("aria-selected","true");else P.removeAttribute("aria-selected");L._lastSelected=Se.selected}if(L._lastFocused!==Se.focused)P.classList.toggle(n.focusedClass,Se.focused),L._lastFocused=Se.focused}let g=v+n.startPadding;if(L._lastOffset!==g)P.style.transform=n.translateProp+g+"px)",L._lastOffset=g;let X=_-n.gap;if(L._lastSize!==X){if(n.horizontal)P.style.width=X+"px";else P.style.height=X+"px";L._lastSize=X}}}if(z!==null)t.appendChild(z);if(at=u,dt=W,ut=e,ft=s,s.forEach(rr),n.interactive)i.prevAriaTotal=i.totalItems;Qt(f.commit,i)}function Ge(i,e,t,l,r,s,n,f,x,c,y,W){if(er(i,e,t,c,x.startPadding))ir(i,l,r,s,n,f,x,c,y,W)}var lr=()=>{let i={},e=(l,r)=>{if(!i[l])i[l]=new Set;return i[l].add(r),()=>t(l,r)},t=(l,r)=>{i[l]?.delete(r)};return{on:e,off:t,emit:(l,r)=>{i[l]?.forEach((s)=>{try{s(r)}catch(n){console.error(`[vlist] Error in event handler for "${String(l)}":`,n)}})},clear:(l)=>{if(l)delete i[l];else for(let r in i)delete i[r]}}},nr=2,or=(i=0)=>({velocity:0,sampleCount:0}),sr=(i,e)=>{let t=performance.now(),l=i._lt??t,r=i._lp??e,s=t-l;if(i._lp=e,i._lt=t,s===0)return i.sampleCount=Math.min(i.sampleCount+1,5),i;if(s>100)return i.velocity=0,i.sampleCount=1,i;return i.velocity=Math.abs(e-r)/s,i.sampleCount=Math.min(i.sampleCount+1,5),i};function ar(i){let{item:e}=i;if(e.height!==void 0&&typeof e.height==="number"){if(!Number.isFinite(e.height)||e.height<=0)throw Error(`vlist: item.height must be a positive number, got ${e.height}`)}if(e.width!==void 0&&typeof e.width==="number"){if(!Number.isFinite(e.width)||e.width<=0)throw Error(`vlist: item.width must be a positive number, got ${e.width}`)}if(e.estimatedHeight!==void 0){if(!Number.isFinite(e.estimatedHeight)||e.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${e.estimatedHeight}`)}if(e.estimatedWidth!==void 0){if(!Number.isFinite(e.estimatedWidth)||e.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${e.estimatedWidth}`)}if(e.gap!==void 0){if(typeof e.gap!=="number"||!Number.isFinite(e.gap)||e.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${e.gap}`)}if(i.overscan!==void 0){if(typeof i.overscan!=="number"||!Number.isFinite(i.overscan)||i.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${i.overscan}`)}}function dr(i){let e=i.orientation==="horizontal",t=_t(i.padding);return{overscan:i.overscan??lt,horizontal:e,reverse:i.reverse??!1,classPrefix:i.classPrefix??$t,interactive:i.interactive??!0,mainAxisPadding:Rt(t,e),crossAxisPadding:Dt(t,e),startPadding:e?t.left:t.top,endPadding:e?t.right:t.bottom,crossPadStart:e?t.top:t.left,crossPadEnd:e?t.bottom:t.right,striped:i.item.striped||!1,gap:i.item.gap??0}}function ur(i,e){if(e)return i.item.width??i.item.estimatedWidth??100;return i.item.height??i.item.estimatedHeight??40}function fr(i){let e=[...i];return e.sort((t,l)=>(t.priority??50)-(l.priority??50)),e}function cr(i){let e=new Set;for(let t of i){if(e.has(t.name))throw Error(`[vlist] Duplicate plugin: ${t.name}`);e.add(t.name)}for(let t of i)if(t.conflicts){for(let l of t.conflicts)if(e.has(l))throw Error(`[vlist] Plugin "${t.name}" conflicts with "${l}"`)}}function ct(i,e=[]){ar(i);let t=dr(i),l=ur(i,t.horizontal),r=t.gap,s=r>0?typeof l==="function"?(Q)=>l(Q)+r:l+r:l,n=typeof l==="number"?l:20,f=i.items?.length??0,x=t.striped?`${t.classPrefix}-item--odd`:"",c=lr(),y=Jt(t.classPrefix,t.horizontal,t.interactive,t.startPadding,t.crossPadStart,t.crossPadEnd,x,r,c),W=e.length>0?fr(e):e;if(e.length>0)cr(W);let u=Ut(i.container),h=Kt(u,t.classPrefix,t.horizontal,t.interactive,i.ariaLabel);if(i.scroll?.scrollbar==="none")h.viewport.classList.add(`${t.classPrefix}-viewport--no-scrollbar`);if(i.scroll?.gutter==="stable")h.viewport.classList.add(`${t.classPrefix}-viewport--gutter-stable`);let p=Qe(s,f);if(r>0){let Q=p.getTotalSize;p.getTotalSize=()=>{let M=Q();return M>0?M-r:0}}let z=Bt(t.classPrefix),A=Math.ceil(4096/n)+t.overscan*2+8,d=Ot(A);d.totalItems=f;let v=i.items??[],_=()=>v,$=new Map,P=or(),L={velocity:0,reliable:!1},g={range:{start:0,end:-1}},X={scrollPosition:0,direction:"down"},k={scrollPosition:0},F=-1,C=-1,S=-1,U=null,V=Nt(W),D=new Map,a=[],w=[],m=[],I=null,E=null,R=null,H=null,B=null,O=null,o=null,b=null,T=null,N=null,Y=!1,q=!1,Z=null,j=0,te=0,re=null,oe=null,ae=null,ue=null,me=null;if(d.containerSize=t.horizontal?h.viewport.clientWidth:h.viewport.clientHeight,d.crossSize=t.horizontal?h.viewport.clientHeight:h.viewport.clientWidth,e.length>0){let Q={dom:h,sizeCache:p,pool:z,config:t,emitter:c,template:i.item.template,registerMethod(M,J){D.set(M,J)},getMethod(M){return D.get(M)},registerClickHandler(M){a.push(M)},registerKeydownHandler(M){w.push(M)},registerDestroyHandler(M){m.push(M)},setSizeConfig(M){let J=Qe(M,d.totalItems);Object.assign(p,J)},setVisibleRangeFn(M){},setScrollFns(M,J){E=M,R=J},setVirtualTotalFn(M){I=M},getItems:_,getItem(M){return O?O(M):v[M]},getState(){return d},rebuildSizeCache(){p.rebuild(d.totalItems)},updateContentSize(M){h.content.style[t.horizontal?"width":"height"]=M+t.mainAxisPadding+"px"},setRenderFn(M,J){H=M,B=J},renderIfNeeded(){ce()},forceRender(){se()},setGetItemFn(M){O=M},setItemStateFn(M){o=M},getItemStateFn(){return o},get rawSizeSpec(){return l},scrollTo(M){if(R)R(M);else if(t.horizontal)h.viewport.scrollLeft=M;else h.viewport.scrollTop=M},smoothScrollTo(M,J,de){if(ae)ae(M,J,void 0,de);else Q.scrollTo(M)},disableDefaultScroll(){Y=!0},disableDefaultResize(){q=!0},setScrollTarget(M){Z=M},setScrollToPosFn(M){ue=M},setScrollToIndexFn(M){me=M},onScrollFrame:ge,onScrollIdle:ze,removeItemById(M){if(b)return b(M);let J=v.findIndex((de)=>de.id===M);if(J===-1)return-1;return v.splice(J,1),d.totalItems=v.length,p.rebuild(d.totalItems),le(),J},insertItemAt(M,J){if(T){T(M,J);return}v.splice(J,0,M),d.totalItems=v.length,p.rebuild(d.totalItems),le()},setRemoveItemFn(M){b=M},setInsertItemFn(M){T=M},setUpdateItemFn(M){N=M},getRenderedElement(M){let J=D.get("_getRenderedElement");if(J)return J(M);return $.get(M)??null},setNavConfig(M){if(M.ud!==void 0)j=M.ud;if(M.lr!==void 0)te=M.lr;if(M.scrollIndex)re=M.scrollIndex;if(M.navigate)oe=M.navigate},getNavConfig:(()=>{let M={ud:0,lr:0,scrollIndex:null,navigate:null};return()=>{return M.ud=j,M.lr=te,M.scrollIndex=re,M.navigate=oe,M}})()};for(let M of W)if(M.setup)try{M.setup(Q)}catch(J){c.emit("error",{error:J instanceof Error?J:Error(String(J)),context:`plugin:setup:${M.name}`})}}let ve=t.classPrefix+"--scrolling",G=!1,K=i.scroll?.idleTimeout??Be;function ee(){if(X.scrollPosition=d.scrollPosition,X.direction=d.scrollDirection>0?"down":"up",c.emit("scroll",X),sr(P,d.scrollPosition),L.velocity=P.velocity,L.reliable=P.sampleCount>=nr,c.emit("velocity:change",L),d.startIndex!==F||d.prevRangeEnd!==C)F=d.startIndex,C=d.prevRangeEnd,g.range.start=d.startIndex,g.range.end=d.prevRangeEnd,c.emit("range:change",g)}let ne=!1;function le(){if(H)return;let Q=p.getTotalSize();if(h.content.style[t.horizontal?"width":"height"]=Q+t.mainAxisPadding+"px",!ne&&Q>Fe)ne=!0,c.emit("error",{error:Error(`Content size (${Q}px) exceeds browser limit (${Fe}px). Use the scale() plugin for large datasets.`),context:"content:size:overflow"})}function ce(){if(H)H();else Ge(d,p,t.overscan,z,h.content,i.item.template,_,$,y,V,O,o)}function ge(){if(!G)G=!0,h.root.classList.add(ve);if(ce(),Ze(V.afterScroll,d.scrollPosition,d.scrollDirection),d.scrollPosition!==S)S=d.scrollPosition,ee()}function ze(){if(G)G=!1,h.root.classList.remove(ve);d.scrollDirection=0,Zt(V.idle),L.velocity=0,L.reliable=!1,c.emit("velocity:change",L),k.scrollPosition=d.scrollPosition,c.emit("scroll:idle",k)}function se(){if(d.renderPending=!0,B)B();else Ge(d,p,t.overscan,z,h.content,i.item.template,_,$,y,V,O,o);if(Ze(V.afterScroll,d.scrollPosition,d.scrollDirection),d.scrollPosition!==S){if(S=d.scrollPosition,ee(),U!==null)clearTimeout(U);U=setTimeout(ze,K)}}let ye=Xt({state:d,viewport:h.viewport,horizontal:t.horizontal,wheelEnabled:Y?!1:i.scroll?.wheel!==!1,idleTimeout:i.scroll?.idleTimeout??Be,...Z?{scrollTarget:Z}:{},onFrame:ge,onIdle:ze});ae=ye.smoothScrollTo;function Ie(Q){let M=Q.target.closest("[data-index]");if(!M)return null;let J=parseInt(M.getAttribute("data-index"),10);if(Number.isNaN(J))return null;let de=v[J];if(de===void 0)return null;return{item:de,index:J}}function we(Q){for(let J=0;J<a.length;J++)a[J](Q);let M=Ie(Q);if(M)c.emit("item:click",{item:M.item,index:M.index,event:Q})}function he(Q){let M=Ie(Q);if(M)c.emit("item:dblclick",{item:M.item,index:M.index,event:Q})}function be(Q){let M=Ie(Q);if(M)c.emit("item:contextmenu",{item:M.item,index:M.index,event:Q})}function pe(Q){for(let M=0;M<w.length;M++)w[M](Q)}if(h.content.addEventListener("click",we),h.content.addEventListener("dblclick",he),h.content.addEventListener("contextmenu",be),w.length>0)h.content.addEventListener("keydown",pe);let Me=null;if(!q)setTimeout(()=>{if(d.destroyed)return;Me=new ResizeObserver((Q)=>{for(let M of Q){let{width:J,height:de}=M.contentRect,xe=t.horizontal?J:de,$e=t.horizontal?de:J;if(Math.abs(xe-d.containerSize)<1&&Math.abs($e-d.crossSize)<1)continue;d.containerSize=xe,d.crossSize=$e,d.resizeCapacity(xe,n,t.overscan),se(),Gt(V.resize,J,de),c.emit("resize",{width:J,height:de})}}),Me.observe(h.viewport)},0);d.resizeCapacity(d.containerSize,n,t.overscan),le(),d.initialized=!0;let ie=null;if(i.defer)ie=requestAnimationFrame(()=>{if(ie=null,!d.destroyed)ce()});else ce();if(!Y)ye.attach();let fe={get element(){return h.root},get items(){return v},get total(){return I?I():v.length},setItems(Q){v=[...Q],d.totalItems=v.length,p.rebuild(d.totalItems),le(),se()},appendItems(Q){v.push(...Q),d.totalItems=v.length,p.rebuild(d.totalItems),le(),se()},prependItems(Q){v.unshift(...Q),d.totalItems=v.length,p.rebuild(d.totalItems),le(),se()},updateItem(Q,M){if(N){if(!N(Q,M))return}else{let J=v.findIndex((de)=>de.id===Q);if(J===-1)return;v[J]={...v[J],...M}}se()},insertItem(Q,M){if(T)T(Q,M??d.totalItems);else{if(M===void 0)v.push(Q);else v.splice(M,0,Q);d.totalItems=v.length,p.rebuild(d.totalItems),le()}se()},removeItem(Q){if(b){if(b(Q)<0)return}else{let M=v.findIndex((J)=>J.id===Q);if(M===-1)return;v.splice(M,1),d.totalItems=v.length,p.rebuild(d.totalItems),le()}se()},removeItems(Q){if(b){let xe=0;for(let $e of Q)if(b($e)>=0)xe++;if(xe>0)se();return xe}let M=new Set(Q),J=v.length;v=v.filter((xe)=>!M.has(xe.id));let de=J-v.length;if(de>0)d.totalItems=v.length,p.rebuild(d.totalItems),le(),d.renderPending=!0,ce();return de},getItemAt(Q){return v[Q]},getIndexById(Q){return v.findIndex((M)=>M.id===Q)},scrollToIndex(Q,M="start"){let J=I?I():v.length;if(J===0)return;let de=Math.max(0,Math.min(Q,J-1)),xe=typeof M==="string"?M:M.align??"start",$e=typeof M==="object"?M.behavior:void 0,Ke=typeof M==="object"?M.duration:void 0,Xe=typeof M==="object"?M.easing:void 0;if(me&&me(de,xe,$e,Ke,Xe)!==!1)return;let De=p.getOffset(de),Ve=p.getSize(de),He=d.containerSize,Lt=p.getTotalSize(),Ne=t.mainAxisPadding,At=Math.max(0,Lt+Ne-He),Le;if(ue)Le=ue(de,p,He,J,xe);else{let Ct=t.startPadding;switch(xe){case"center":Le=Ct+De-(He-Ve)/2;break;case"end":Le=De+Ve+Ne-He;break;default:Le=De}Le=Math.max(0,Math.min(Le,At))}if($e==="smooth")ye.smoothScrollTo(Le,Ke??ot,R??void 0,Xe);else if(R)R(Le);else if(t.horizontal)h.viewport.scrollLeft=Le;else h.viewport.scrollTop=Le},getScrollPosition(){return E?E():d.scrollPosition},on:c.on.bind(c),off:c.off.bind(c),destroy(){if(d.destroyed)return;if(d.destroyed=!0,G)G=!1,h.root.classList.remove(ve);if(ie!==null)cancelAnimationFrame(ie),ie=null;if(U!==null)clearTimeout(U),U=null;ye.detach(),Me?.disconnect(),h.content.removeEventListener("click",we),h.content.removeEventListener("dblclick",he),h.content.removeEventListener("contextmenu",be),h.content.removeEventListener("keydown",pe);let Q=[];for(let M of m)try{M()}catch(J){Q.push(J instanceof Error?J:Error(String(J)))}for(let M of W)if(M.destroy)try{M.destroy()}catch(J){Q.push(J instanceof Error?J:Error(String(J)))}for(let[,M]of $)M.remove();if($.clear(),z.clear(),h.root.remove(),c.emit("destroy",void 0),c.clear(),Q.length>0)for(let M of Q)console.error("vlist: error during destroy:",M)}};for(let[Q,M]of D)fe[Q]=M;return fe}var mr=(i,e,t)=>{let l=e.getTotalSize(),r=t===!0||l>Fe,s=l>Fe?Fe:l,n=l>0?s/l:1;return{isCompressed:r,actualSize:l,virtualSize:s,ratio:n}},hr=(i,e,t,l,r,s)=>{if(l===0||e===0)return s.start=0,s.end=-1,s;if(!r.isCompressed||r.ratio===1){let h=t.indexAtOffset(i),p=t.indexAtOffset(i+e);if(p<l-1)p++;return s.start=Math.max(0,h),s.end=Math.min(l-1,Math.max(0,p)),s}let{virtualSize:n}=r,f=i/n,x=t.getTotalSize(),c=f*x,y=t.indexAtOffset(c),W=Wt(t,Math.max(0,y),e,l),u=y+W;return s.start=Math.max(0,y),s.end=Math.min(l-1,Math.max(0,u)),s},gr=(i,e,t,l,r,s,n)=>{if(!s.isCompressed||l===0)return t.getOffset(i);if(s.ratio===1)return t.getOffset(i)-e;let{virtualSize:f}=s,x=e/f,c=t.getTotalSize(),y=x*c;return t.getOffset(i)-y},pr=(i,e,t,l,r,s="start")=>{if(l===0)return 0;let n;if(r.isCompressed&&r.ratio!==1){n=i/l*r.virtualSize;let c=e.getSize(i);switch(s){case"center":n-=(t-c)/2*r.ratio;break;case"end":n-=(t-c)*r.ratio;break}return Math.max(0,n)}n=e.getOffset(i);let f=e.getSize(i);switch(s){case"center":n-=(t-f)/2;break;case"end":n-=t-f;break}let x=r.virtualSize-t;return Math.max(0,Math.min(n,x))},vr=(i)=>{if(typeof i!=="object"){let e=i??2;return{top:e,right:e,bottom:e,left:e}}return{top:i.top??2,right:i.right??2,bottom:i.bottom??2,left:i.left??2}},mt=(i,e,t={},l="vlist",r=!1,s)=>{let{autoHide:n=!0,autoHideDelay:f=1000,minThumbSize:x=15,showOnHover:c=!0,showOnViewportEnter:y=!0,clickBehavior:W="scroll"}=t,u=W==="page"?"scroll":W,h=s??i,p=vr(t.padding),z=r?p.left:p.top,A=r?p.right:p.bottom,d=r?p.bottom:p.right,v=t.hoverZoneWidth??d+16,_=0,$=0,P=0,L=0,g=!1,X=!1,k=0,F=0,C=0,S=null,U=!1,V=null,D=0,a=0,w=null,m=null,I=null,E=r?"width":"height",R=r?"translateX":"translateY",H=r?(ie)=>ie.clientX:(ie)=>ie.clientY,B=r?"left":"top",O=document.createElement("div"),o=document.createElement("div"),b=document.createElement("div"),T=r?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",N=()=>{if(h===i)return;let ie=i.offsetTop;O.style[r?"left":"top"]=ie?`calc(var(${T}) + ${ie}px)`:`var(${T})`,b.style[r?"left":"top"]=`${ie}px`},Y=()=>{if(O.className=`${l}-scrollbar`,o.className=`${l}-scrollbar__thumb`,r)O.classList.add(`${l}-scrollbar--horizontal`);if(t.padding!==void 0)h.style.setProperty("--vlist-custom-scrollbar-padding-top",`${p.top}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-right",`${p.right}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${p.bottom}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-left",`${p.left}px`);if(t.minThumbSize!==void 0)O.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${x}px`);if(O.appendChild(o),h.appendChild(O),b.className=`${l}-scrollbar__hover`,r)b.classList.add(`${l}-scrollbar__hover--horizontal`),b.style.height=`${v}px`;else b.style.width=`${v}px`;if(h.appendChild(b),h!==i)N()},q=()=>{if(S)clearTimeout(S),S=null},Z=()=>{if(!n)return;q(),S=setTimeout(te,f)},j=()=>{if(_<=$)return;if(q(),!U)O.classList.add(`${l}-scrollbar--visible`),U=!0;if(n&&!g&&!X)Z()},te=()=>{if(g||X)return;O.classList.remove(`${l}-scrollbar--visible`),U=!1},re=(ie,fe)=>{if(_=ie,$=fe,N(),_<=$){O.style.display="none",te();return}O.style.display="";let Q=Math.max(0,$-z-A),M=$/_;if(P=Math.max(x,M*Q),o.style[E]=`${P}px`,L=Q-P,oe(C),!n)j()},oe=(ie)=>{if(C=ie,_<=$||L<=0)return;let fe=_-$,Q=Math.min(1,Math.max(0,ie/fe));o.style.transform=`${R}(${Q*L}px)`},ae=(ie)=>{if(ie.target===o||u!=="jump"||L<=0)return;let fe=_-$,Q=O.getBoundingClientRect(),M=H(ie)-Q[B],J=Math.max(0,Math.min(M-P/2,L));e(J/L*fe),j()},ue=()=>{if(w!==null)clearTimeout(w),w=null;if(m!==null)cancelAnimationFrame(m),m=null;I=null},me=(ie)=>{let fe=L>0?a/ie*L:0;if(D<fe)return-1;if(D>=fe+P)return 1;return 0},ve=()=>{let ie=_-$,fe=me(ie);if(fe===0){ue();return}if(fe===-1){if(a<=0){ue();return}let Q=Math.max(0,a-$);a=Q,e(Q)}else{if(a>=ie){ue();return}let Q=Math.min(ie,a+$);a=Q,e(Q)}j()},G=(ie)=>{if(I===null){I=ie,m=requestAnimationFrame(G);return}let fe=_-$,Q=ie-I;I=ie;let M=me(fe);if(M===0){ue();return}let J=12*$/1000,de=Math.min(J*Q,$);if(M===-1){if(a<=0){ue();return}let xe=Math.max(0,a-de);a=xe,e(xe)}else{if(a>=fe){ue();return}let xe=Math.min(fe,a+de);a=xe,e(xe)}q(),m=requestAnimationFrame(G)},K=()=>{ue(),Z(),document.removeEventListener("mouseup",K)},ee=(ie)=>{if(ie.target===o||u!=="scroll")return;ie.preventDefault();let fe=O.getBoundingClientRect();D=H(ie)-fe[B],a=C,ve(),w=setTimeout(()=>{m=requestAnimationFrame(G)},350),document.addEventListener("mouseup",K)},ne=(ie)=>{ie.preventDefault(),ie.stopPropagation(),g=!0,k=H(ie),F=C,q(),O.classList.add(`${l}-scrollbar--dragging`),document.addEventListener("mousemove",le),document.addEventListener("mouseup",ce)},le=(ie)=>{if(!g)return;let fe=H(ie)-k,Q=L>0?fe/L:0,M=_-$,J=Q*M,de=Math.max(0,Math.min(F+J,M));o.style.transform=`${R}(${de/M*L}px)`,e(de)},ce=()=>{if(g=!1,O.classList.remove(`${l}-scrollbar--dragging`),n&&!X)Z();document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ce)},ge=r?(ie)=>ie.touches[0].clientX:(ie)=>ie.touches[0].clientY,ze=(ie)=>{ie.stopPropagation(),g=!0,k=ge(ie),F=C,q(),O.classList.add(`${l}-scrollbar--dragging`)},se=(ie)=>{if(!g)return;ie.preventDefault();let fe=ge(ie)-k,Q=L>0?fe/L:0,M=_-$,J=Q*M,de=Math.max(0,Math.min(F+J,M));o.style.transform=`${R}(${de/M*L}px)`,e(de)},ye=()=>{if(g=!1,O.classList.remove(`${l}-scrollbar--dragging`),n)Z()},Ie=(ie)=>{if(ie.target===o)return;if(L<=0)return;let fe=ie.touches[0],Q=O.getBoundingClientRect(),M=(r?fe.clientX:fe.clientY)-Q[B];if(u==="jump"){let J=_-$,de=Math.max(0,Math.min(M-P/2,L));e(de/L*J)}else D=M,a=C,ve();j()},we=()=>{if(y)j()},he=()=>{if(!g){if(X=!1,n)Z()}},be=()=>{X=!0,q(),j()},pe=()=>{if(X=!1,!g&&n)Z()},Me=()=>{if(q(),ue(),V!==null)cancelAnimationFrame(V),V=null;O.removeEventListener("click",ae),O.removeEventListener("mousedown",ee),O.removeEventListener("mouseenter",be),document.removeEventListener("mouseup",K),O.removeEventListener("mouseleave",pe),O.removeEventListener("touchstart",Ie),o.removeEventListener("mousedown",ne),o.removeEventListener("touchstart",ze),o.removeEventListener("touchmove",se),o.removeEventListener("touchend",ye),i.removeEventListener("mouseenter",we),i.removeEventListener("mouseleave",he),document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ce),b.removeEventListener("click",ae),b.removeEventListener("mousedown",ee),b.removeEventListener("mouseenter",be),b.removeEventListener("mouseleave",pe),b.remove(),h.style.removeProperty("--vlist-custom-scrollbar-padding-top"),h.style.removeProperty("--vlist-custom-scrollbar-padding-right"),h.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),h.style.removeProperty("--vlist-custom-scrollbar-padding-left"),O.remove()};if(Y(),O.addEventListener("click",ae),O.addEventListener("mousedown",ee),O.addEventListener("mouseenter",be),O.addEventListener("mouseleave",pe),O.addEventListener("touchstart",Ie,{passive:!0}),o.addEventListener("mousedown",ne),o.addEventListener("touchstart",ze,{passive:!0}),o.addEventListener("touchmove",se,{passive:!1}),o.addEventListener("touchend",ye,{passive:!0}),i.addEventListener("mouseenter",we),i.addEventListener("mouseleave",he),b.addEventListener("click",ae),b.addEventListener("mousedown",ee),c)b.addEventListener("mouseenter",be),b.addEventListener("mouseleave",pe);return{show:j,hide:te,updateBounds:re,updatePosition:oe,isVisible:()=>U,destroy:Me}},yr=0.65,Je=0.5,et=1.7,xr=0.95,br=0.1,Pe=5,Ir=100;function ht(i){let e=i?.force??!1,t,l,r,s,n,f={isCompressed:!1,actualSize:0,virtualSize:0,ratio:1},x=!1,c=0,y=null,W=!1,u=0,h=0,p=null,z=null,A=0,d=0,v=null,_=new Float64Array(Pe),$=new Float64Array(Pe),P=0,L=0,g={start:0,end:-1},X=-1,k=null;function F(){return Math.max(0,f.virtualSize+c-t.containerSize)}function C(){if(f.virtualSize<=0)return 0;return Math.max(0,t.containerSize*(1-f.ratio))}function S(o){let b=t.totalItems;if(f=mr(b,l,e),f.isCompressed&&!x)H(o);else if(!f.isCompressed&&x)B(o);if(f.isCompressed){if(c=C(),t.isCompressed=!0,t.compressionRatio=f.ratio,o.updateContentSize(f.virtualSize+c),y)y.updateBounds(f.virtualSize+c,t.containerSize)}}let U=null,V=null,D=null,a=null,w=null;function m(o){u=o,h=o,t.prevScrollPosition=t.scrollPosition,t.scrollPosition=o,t.scrollDirection=o>t.prevScrollPosition?1:-1,k.forceRender()}function I(){if(p!==null)cancelAnimationFrame(p),p=null;if(z!==null)cancelAnimationFrame(z),z=null}function E(o){I(),m(Math.max(0,Math.min(o,F())))}function R(o,b,T=nt){I();let N=Math.max(0,Math.min(o,F())),Y=u;if(Math.abs(N-Y)<Je){m(N);return}let q=performance.now(),Z=(j)=>{let te=Math.min((j-q)/b,1);if(m(Y+(N-Y)*T(te)),te<1)z=requestAnimationFrame(Z);else z=null};z=requestAnimationFrame(Z)}function H(o){x=!0,t.isCompressed=!0;let b=s?"scrollLeft":"scrollTop",T=s?"overflowX":"overflow",N=r[b];if(r.style[T]="hidden",r[b]=0,N>0)u=N,h=N,t.scrollPosition=N;c=C();let Y=()=>{let re=h-u,oe=F();if(Math.abs(re)<Je)u=Math.max(0,Math.min(h,oe)),h=u,p=null;else u+=re*yr,u=Math.max(0,Math.min(u,oe)),p=requestAnimationFrame(Y);t.prevScrollPosition=t.scrollPosition,t.scrollPosition=u,t.scrollDirection=u>t.prevScrollPosition?1:-1,o.forceRender()};U=(re)=>{re.preventDefault();let oe=F();if(h=Math.max(0,Math.min(h+re.deltaY*f.ratio*et,oe)),p===null)p=requestAnimationFrame(Y)},r.addEventListener("wheel",U,{passive:!1});let q=()=>{if(v!==null)cancelAnimationFrame(v),v=null};V=(re)=>{if(q(),p!==null)cancelAnimationFrame(p),p=null;let oe=re.touches[0];if(!oe)return;let ae=s?oe.clientX:oe.clientY;A=ae,d=u,P=1,L=0,_[0]=performance.now(),$[0]=ae},D=(re)=>{re.preventDefault();let oe=re.touches[0];if(!oe)return;let ae=s?oe.clientX:oe.clientY,ue=performance.now(),me=P<Pe?P:L;if(_[me]=ue,$[me]=ae,P<Pe)P++;else L=(L+1)%Pe;let ve=A-ae,G=F(),K=Math.max(0,Math.min(d+ve*f.ratio*et,G));u=K,h=K,t.prevScrollPosition=t.scrollPosition,t.scrollPosition=K,t.scrollDirection=K>t.prevScrollPosition?1:-1,o.forceRender()},a=()=>{let re=performance.now(),oe=1/0,ae=0,ue=-1,me=0,ve=0;for(let ne=0;ne<P;ne++){let le=(L+ne)%Pe,ce=_[le];if(re-ce>=Ir)continue;ve++;let ge=$[le];if(ce<oe)oe=ce,ae=ge;if(ce>ue)ue=ce,me=ge}let G=0;if(ve>=2){let ne=ue-oe;if(ne>0)G=(ae-me)/ne}if(P=0,L=0,Math.abs(G)<br)return;let K=G*16,ee=()=>{if(K*=xr,Math.abs(K)<0.5){v=null;return}let ne=F(),le=u+K;if(le=Math.max(0,Math.min(le,ne)),le<=0&&K<0||le>=ne&&K>0){u=le,h=le,t.scrollPosition=le,o.forceRender(),v=null;return}u=le,h=le,t.prevScrollPosition=t.scrollPosition,t.scrollPosition=le,t.scrollDirection=le>t.prevScrollPosition?1:-1,o.forceRender(),v=requestAnimationFrame(ee)};v=requestAnimationFrame(ee)},r.addEventListener("touchstart",V,{passive:!0}),r.addEventListener("touchmove",D,{passive:!1}),r.addEventListener("touchend",a,{passive:!0}),r.addEventListener("touchcancel",a,{passive:!0}),w=()=>{if(r[b]!==0)r[b]=0},r.addEventListener("scroll",w,{passive:!0});let Z=(re)=>{if(u=re,h=re,p!==null)cancelAnimationFrame(p),p=null;t.prevScrollPosition=t.scrollPosition,t.scrollPosition=re,t.scrollDirection=re>t.prevScrollPosition?1:-1,o.forceRender()},j=o.getMethod("_scrollbar:setCallback"),te=o.getMethod("_scrollbar:getInstance");if(j&&te){j(Z);let re=te();if(re)y=re,W=!1,y.updateBounds(f.virtualSize+c,t.containerSize)}else if(!y){let re=o.config.classPrefix;if(y=mt(r,Z,{},re,s,o.dom.root),W=!0,!r.classList.contains(`${re}-viewport--custom-scrollbar`))r.classList.add(`${re}-viewport--custom-scrollbar`);y.updateBounds(f.virtualSize+c,t.containerSize)}}function B(o){x=!1,t.isCompressed=!1,t.compressionRatio=1,u=0,h=0,P=0,L=0,O();let b=s?"overflowX":"overflow";r.style[b]="auto",c=0,o.updateContentSize(l.getTotalSize())}function O(){if(p!==null)cancelAnimationFrame(p),p=null;if(z!==null)cancelAnimationFrame(z),z=null;if(v!==null)cancelAnimationFrame(v),v=null;if(U)r.removeEventListener("wheel",U),U=null;if(V)r.removeEventListener("touchstart",V),V=null;if(D)r.removeEventListener("touchmove",D),D=null;if(a)r.removeEventListener("touchend",a),r.removeEventListener("touchcancel",a),a=null;if(w)r.removeEventListener("scroll",w),w=null;if(y&&W)y.destroy();y=null,W=!1;let o=s?"scrollLeft":"scrollTop";if(r&&r[o]!==0)r[o]=0}return{name:"scale",priority:20,setup(o){t=o.getState(),l=o.sizeCache,r=o.dom.viewport,s=o.config.horizontal,n=o.config.overscan,k=o,o.registerMethod("_updateCompressionMode",()=>S(o)),o.setScrollFns(()=>u,(b)=>{if(!f.isCompressed||!x){let N=s?"scrollLeft":"scrollTop";r[N]=b;return}if(I(),v!==null)cancelAnimationFrame(v),v=null;let T=b*f.ratio;m(Math.max(0,Math.min(T,F())))}),o.setScrollToIndexFn((b,T,N,Y,q)=>{if(!f.isCompressed||!x)return!1;let Z=pr(b,l,t.containerSize,t.totalItems,f,T);if(N==="smooth")R(Z,Y??ot,q);else E(Z)}),S(o),X=t.totalItems,o.registerDestroyHandler(O)},hooks:{onCalculate(o){if(o.totalItems!==X&&k)X=o.totalItems,S(k);if(!f.isCompressed||!x)return;let b=o.totalItems;if(b===0||o.containerSize<=0){o.visibleCount=0;return}hr(o.scrollPosition,o.containerSize,l,b,f,g);let T=Math.max(0,g.start-n),N=Math.min(b-1,g.end+n),Y=Math.min(N-T+1,o.capacity);o.visibleCount=Y,o.startIndex=T;for(let q=0;q<Y;q++){let Z=T+q;o.visibleIndices[q]=Z,o.visibleOffsets[q]=gr(Z,o.scrollPosition,l,b,o.containerSize,f),o.visibleSizes[q]=l.getSize(Z)}o.prevRangeStart=T,o.prevRangeEnd=N},onAfterScroll(o){if(y&&x)y.updatePosition(o),y.show()},onResize(){if(x){if(c=C(),y)y.updateBounds(f.virtualSize+c,t.containerSize);let o=F();if(u>o)u=o,h=o,t.scrollPosition=o}}},destroy(){O()}}}function gt(i){let e=null,t,l,r=0,s=0;return{name:"scrollbar",priority:15,setup(n){let{dom:f,config:x}=n,{classPrefix:c,horizontal:y}=x;t=n.getState(),l=n.sizeCache;let W=(u)=>{if(y)f.viewport.scrollLeft=u;else f.viewport.scrollTop=u};if(n.registerMethod("_scrollbar:setCallback",(u)=>{W=u}),e=mt(f.viewport,(u)=>{W(u)},i,c,y,f.root),f.viewport.classList.add(`${c}-viewport--custom-scrollbar`),i?.gutter)f.viewport.classList.add(`${c}-viewport--gutter`);queueMicrotask(()=>{if(!t.isCompressed)e?.updateBounds(l.getTotalSize(),t.containerSize)}),n.registerMethod("_scrollbar:getInstance",()=>e),n.registerDestroyHandler(()=>{if(e?.destroy(),e=null,f.viewport.classList.remove(`${c}-viewport--custom-scrollbar`),i?.gutter)f.viewport.classList.remove(`${c}-viewport--gutter`)})},hooks:{onAfterScroll(n){if(!t.isCompressed){let f=l.getTotalSize(),x=t.containerSize;if(f!==r||x!==s)r=f,s=x,e?.updateBounds(f,x)}e?.updatePosition(n),e?.show()},onResize(){if(!t.isCompressed){let n=l.getTotalSize(),f=t.containerSize;r=n,s=f,e?.updateBounds(n,f)}}},destroy(){e?.destroy(),e=null}}}var Sr=(i)=>{let e=Math.max(1,Math.floor(i.columns)),t=i.gap??0,l=i.isHeaderFn,r={row:0,col:0},s=(u)=>{if(u<=0)return 0;if(!l)return Math.ceil(u/e);let h=0,p=0,z=0;for(let A=0;A<u;A++)if(l(A)){if(z++,p)h++,p=0;h++,p=0}else if(p++,p>=e)h++,p=0;if(p)h++;return h},n=(u)=>{return r.row=f(u),r.col=x(u),r},f=(u)=>{if(!l)return Math.floor(u/e);let h=0,p=0;for(let z=0;z<=u;z++)if(l(z)){if(p)h++,p=0;if(z===u)return h;h++,p=0}else{if(z===u)return h;if(p++,p>=e)h++,p=0}return console.warn(`⚠️ getRow(${u}) fell through - returning ${h}`),h},x=(u)=>{if(!l)return u%e;if(l(u))return 0;let h=0;for(let p=0;p<=u;p++)if(l(p))h=0;else{if(p===u)return h;if(h++,h>=e)h=0}return h},c=(u,h,p)=>{if(p<=0)return{start:0,end:-1};if(!l){let _=Math.max(0,u*e),$=Math.min(p-1,(h+1)*e-1);return{start:_,end:$}}let z=-1,A=-1,d=0,v=0;for(let _=0;_<p;_++){if(l(_)){if(v)d++,v=0;if(d>=u&&d<=h){if(z<0)z=_;A=_}d++,v=0}else{if(d>=u&&d<=h){if(z<0)z=_;A=_}if(v++,v>=e)d++,v=0}if(d>h&&!v)break}if(z<0)return{start:0,end:-1};return{start:z,end:A}},y=(u,h,p)=>{if(h<0||h>=e)return-1;let z=u*e+h;if(z<0||z>=p)return-1;return z},W=(u)=>{let h=(e-1)*t;return Math.max(0,(u-h)/e)};return{get columns(){return e},get gap(){return t},update:(u)=>{if(u.columns!==void 0)e=Math.max(1,Math.floor(u.columns));if(u.gap!==void 0)t=u.gap;if(u.isHeaderFn!==void 0)l=u.isHeaderFn},getTotalRows:s,getPosition:n,getRow:f,getCol:x,getItemRange:c,getItemIndex:y,getColumnWidth:W,getColumnOffset:(u,h)=>{let p=W(h);return u*(p+t)}}},Ae={selected:!1,focused:!1};function pt(i){if(!i.columns||i.columns<1)throw Error("[vlist] grid: columns must be >= 1");let e,t,l,r,s,n,f,x,c,y,W=null,u=new Map,h=0,p=-1,z=-1,A=!0;function d(){return e.getTotalRows(l.totalItems)}function v(g){let X=e.getRow(g),k=e.getCol(g),F=e.getColumnOffset(k,h),C=t.getOffset(X);if(x)return`translate(${Math.round(C)}px, ${Math.round(F)}px)`;return`translate(${Math.round(F)}px, ${Math.round(C)}px)`}function _(g,X){let k=e.getRow(X),F=e.getColumnWidth(h),C=t.getSize(k)-e.gap;if(x)g.style.width=`${C}px`,g.style.height=`${F}px`;else g.style.width=`${F}px`,g.style.height=`${C}px`}function $(g,X,k,F){if(F)F(k,Ae);else Ae.selected=!1,Ae.focused=!1;let C=n(X,k,Ae);if(typeof C==="string")g.innerHTML=C;else g.innerHTML="",g.appendChild(C)}function P(){if(l.destroyed)return;let{scrollPosition:g,containerSize:X}=l;if(!A&&g===p&&X===z)return;p=g,z=X,A=!1;let k=d();if(X<=0||k===0)return;let F=t.indexAtOffset(g),C=t.indexAtOffset(g+X);if(C<k-1)C++;F=Math.max(0,F),C=Math.min(k-1,Math.max(0,C));let S=Math.max(0,F-y),U=Math.min(k-1,C+y);if(S===l.prevRangeStart&&U===l.prevRangeEnd&&!l.renderPending)return;let V=e.getItemRange(S,U,l.totalItems);u.forEach((R,H)=>{if(H<V.start||H>V.end)R.el.remove(),r.release(R.el),u.delete(H)});let D=`${c}-item ${c}-grid-item`,a=W?.()??null,w=a?`${c}-item--selected`:"",m=a?`${c}-item--focused`:"";for(let R=V.start;R<=V.end;R++){let H=f(R);if(!H)continue;let B=u.get(R);if(B===void 0){let O=r.acquire();O.className=D,O.setAttribute("data-index",String(R)),O.setAttribute("data-id",String(H.id)),$(O,H,R,a),B={el:O,lastId:H.id},u.set(R,B),s.appendChild(O)}else if(B.lastId!==H.id)B.el.setAttribute("data-id",String(H.id)),B.lastId=H.id,$(B.el,H,R,a);if(a)if(a(R,Ae),B.el.classList.toggle(w,Ae.selected),B.el.classList.toggle(m,Ae.focused),Ae.selected)B.el.setAttribute("aria-selected","true");else B.el.removeAttribute("aria-selected");_(B.el,R),B.el.style.transform=v(R)}let I=t.getTotalSize();s.style[x?"width":"height"]=I+"px",l.prevRangeStart=S,l.prevRangeEnd=U,l.renderPending=!1;let E=V.end-V.start+1;l.visibleCount=Math.min(E,l.capacity),l.startIndex=V.start;for(let R=0;R<l.visibleCount;R++){let H=V.start+R,B=e.getRow(H);l.visibleIndices[R]=H,l.visibleOffsets[R]=t.getOffset(B),l.visibleSizes[R]=t.getSize(B)}}function L(){if(l.destroyed)return;t.rebuild(d()),l.prevRangeStart=-1,l.prevRangeEnd=-1,l.renderPending=!0,A=!0,P()}return{name:"grid",priority:10,conflicts:["masonry","table"],setup(g){let X=i.gap??0;e=Sr({columns:i.columns,gap:X}),t=g.sizeCache,l=g.getState(),r=g.pool,s=g.dom.content,n=g.template,x=g.config.horizontal,c=g.config.classPrefix,y=g.config.overscan,f=g.getItem.bind(g),W=()=>g.getItemStateFn(),h=l.crossSize;let k=g.rawSizeSpec,F;if(typeof k==="function"){let C={columnWidth:e.getColumnWidth(h),columns:i.columns,gap:X};F=k(0,C),g.setSizeConfig((S)=>{C.columnWidth=e.getColumnWidth(h);let U=S*i.columns;return k(U,C)+X})}else if(F=k,X>0)g.setSizeConfig(F+X);if(t.rebuild(d()),X>0){let C=t.getTotalSize;t.getTotalSize=()=>{let S=C();return S>0?S-X:0}}g.setVirtualTotalFn(()=>d()),g.dom.root.classList.add(`${c}--grid`),g.setRenderFn(P,L),g.registerMethod("getGridLayout",()=>e),g.registerMethod("updateGrid",(C)=>{if(C.columns!==void 0){if(!Number.isInteger(C.columns)||C.columns<1)throw Error("[vlist] updateGrid: columns must be >= 1")}if(C.gap!==void 0&&C.gap<0)throw Error("[vlist] updateGrid: gap must be >= 0");if(e.update(C),C.gap!==void 0||C.columns!==void 0){let S=e.gap;if(typeof k==="function"){let U={columnWidth:e.getColumnWidth(h),columns:e.columns,gap:S};g.setSizeConfig((V)=>{U.columnWidth=e.getColumnWidth(h);let D=V*e.columns;return k(D,U)+S})}else g.setSizeConfig(F+S);t.rebuild(d())}if(C.columns!==void 0)g.setNavConfig({ud:e.columns});h=l.crossSize,L()}),g.registerMethod("scrollToIndex",(C,S="start")=>{let U=e.getRow(C),V=d();if(V===0)return;let D=Math.max(0,Math.min(U,V-1)),a=t.getOffset(D),w=t.getSize(D),m=l.containerSize,I=t.getTotalSize(),E=Math.max(0,I-m),R=typeof S==="string"?S:S.align??"start",H=typeof S==="object"?S.behavior:void 0,B=typeof S==="object"?S.duration:void 0,O;switch(R){case"center":O=a-(m-w)/2;break;case"end":O=a-m+w;break;default:O=a}if(O=Math.max(0,Math.min(O,E)),H==="smooth"&&B&&B>0)g.smoothScrollTo(O,B);else g.scrollTo(O)}),g.setNavConfig({total:()=>l.totalItems,ud:i.columns,lr:1,scrollIndex:(C)=>e.getRow(C)}),g.registerDestroyHandler(()=>{for(let[,C]of u)C.el.remove();u.clear(),g.dom.root.classList.remove(`${c}--grid`)})},hooks:{onResize(g,X){let k=l.crossSize;if(Math.abs(k-h)<1)return;h=k,u.forEach((F,C)=>{_(F.el,C),F.el.style.transform=v(C)})}},destroy(){u.clear()}}}var Mr=(i,e,t)=>{if(String(t).startsWith(Ee))return!1;let l=Ee+e;if(i.has(l))return i.delete(l),i.add(t),!0;return!1},wr=(i)=>({selected:new Set(i??[]),focusedIndex:-1,focusVisible:!1});function Te(i,e,t,l){if(t===0)return;let r=l?-e:e,s=i.focusedIndex+r;if(s<0)s=0;if(s>=t)s=t-1;i.focusedIndex=s}function qe(i){return Array.from(i)}var zr={preventScroll:!0};function Ue(i){let e=i?.mode??"single",t=i?.followFocus??!1,l=i?.focusOnClick??!1,r,s,n,f,x,c,y,W,u=-1,h=new Map,p=null,z=null,A=null,d=null,v,_=!1;function $(m){if(_)return;_=!0,p=m.getMethod("_layoutToDataIndex")??null,z=m.getMethod("_dataToLayoutIndex")??null,A=m.getMethod("_isGroupHeader")??null,d=m.getMethod("_scrollItemIntoView")??null;let I=m.getMethod("getGroupLayout");if(I){let E=I();v=()=>E.totalEntries}}let P=(m)=>p?p(m):m,L=(m)=>{let I=P(m);return I>=0?s(I):void 0},g=(m,I,E)=>{if(!A)return m;let R=m;while(R>=0&&R<E){if(!A(R))return R;R+=I}R=m-I;while(R>=0&&R<E){if(!A(R))return R;R-=I}return m};function X(m,I){if(e==="single")r.selected.clear(),h.clear();if(r.selected.add(m),I)h.set(m,I)}function k(m,I){if(r.selected.has(m))r.selected.delete(m),h.delete(m);else X(m,I)}function F(){r.selected.clear(),h.clear()}function C(m){r.selected.delete(m),h.delete(m)}function S(m,I){let E=Math.min(m,I),R=Math.max(m,I);for(let H=E;H<=R;H++){let B=s(H);if(B)r.selected.add(B.id),h.set(B.id,B)}}function U(){let m=y.totalItems;for(let I=0;I<m;I++){let E=s(I);if(E)r.selected.add(E.id),h.set(E.id,E)}}function V(){if(r.selected.size===0)return[];if(h.size>=r.selected.size){let R=[];for(let H of r.selected){let B=h.get(H);if(B)R.push(B)}if(R.length===r.selected.size)return R}let m=[],I=new Set(r.selected),E=y.totalItems;for(let R=0;R<E&&I.size>0;R++){let H=s(R);if(H&&I.has(H.id))m.push(H),h.set(H.id,H),I.delete(H.id)}return m}function D(){n(),f.emit("selection:change",{selected:qe(r.selected),items:V()})}let a=null,w=-1;return{name:"selection",priority:50,setup(m){r=wr(i?.initial),s=m.getItem.bind(m),n=m.forceRender.bind(m),f=m.emitter,x=m.dom;let I=m.config;if(c=m.sizeCache,y=m.getState(),W=m.scrollTo.bind(m),v=()=>y.totalItems,e==="none"){m.registerMethod("select",()=>{}),m.registerMethod("deselect",()=>{}),m.registerMethod("toggleSelect",()=>{}),m.registerMethod("selectAll",()=>{}),m.registerMethod("clearSelection",()=>{}),m.registerMethod("getSelected",()=>[]),m.registerMethod("getSelectedItems",()=>[]),m.registerMethod("selectNext",()=>{}),m.registerMethod("selectPrevious",()=>{}),m.registerMethod("_seedSelection",()=>{}),m.registerMethod("_getFocusedId",()=>{return}),m.registerMethod("_focusById",()=>{});return}let E=I.classPrefix;m.setItemStateFn((o,b)=>{if($(m),r.selected.size>0){let T=P(o),N=T>=0?s(T):void 0,Y=N?.id;if(Y!==void 0)if(r.selected.has(Y))b.selected=!0;else if(Mr(r.selected,T,Y))b.selected=!0,h.delete(Ee+T),h.set(Y,N);else b.selected=!1;else b.selected=!1}else b.selected=!1;b.focused=r.focusVisible&&r.focusedIndex===o}),m.registerMethod("_getSelectedIds",()=>r.selected),m.registerMethod("_getFocusedIndex",()=>r.focusVisible?r.focusedIndex:-1),x.root.classList.add(`${E}--selectable`);let R=(o)=>{a=null,w=-1;let b=o.target.closest("[data-index]");if(!b)return!1;let T=parseInt(b.dataset.index??"-1",10);if(T<0)return!1;let N=P(T);if(N<0)return!1;let Y=s(N);if(!Y)return!1;return a=Y,w=T,!0},H=(o)=>{if(o<0)return;if(d){d(o);return}let b=m.getNavConfig(),T=b.scrollIndex?b.scrollIndex(o):o,N=c.getOffset(T),Y=c.getSize(T),q=y.containerSize,Z=y.scrollPosition;if(N<Z)W(N);else if(N+Y>Z+q)W(N-q+Y)},B=()=>{if(y.destroyed)return;if($(m),!x.content.matches(":focus-visible")&&!x.root.matches(":focus-visible"))return;let o=v();if(o===0)return;let b=r.focusedIndex>=0?Math.min(r.focusedIndex,o-1):0;b=g(b,1,o),r.focusedIndex=b,r.focusVisible=!0,x.content.setAttribute("aria-activedescendant",`${E}-item-${b}`),H(b),n()};x.root.addEventListener("focusin",B);let O=(o)=>{if(y.destroyed)return;let b=o.relatedTarget;if(b&&x.root.contains(b))return;r.focusVisible=!1,n(),x.content.removeAttribute("aria-activedescendant")};if(x.root.addEventListener("focusout",O),m.registerDestroyHandler(()=>{x.root.removeEventListener("focusin",B),x.root.removeEventListener("focusout",O)}),m.registerClickHandler((o)=>{if($(m),!R(o))return;if(e==="multiple"&&o.shiftKey&&r.focusedIndex>=0){let b=u>=0?u:r.focusedIndex,T=P(b),N=P(w);if(T>=0&&N>=0)S(T,N);r.focusedIndex=w,r.focusVisible=l,u=w,D();return}r.focusedIndex=w,r.focusVisible=l,u=w,x.content.focus(zr),k(a.id,a),D()}),I.interactive)m.registerKeydownHandler((o)=>{$(m);let b=v();if(b===0)return;let T=m.getNavConfig(),N=r.focusedIndex,Y=!1,q=!1;if(T.navigate&&(o.key==="ArrowUp"||o.key==="ArrowDown"||o.key==="ArrowLeft"||o.key==="ArrowRight"||o.key==="PageUp"||o.key==="PageDown"||o.key==="Home"||o.key==="End")){let j=T.navigate(r.focusedIndex,o.key,b);if(j!==r.focusedIndex)r.focusedIndex=Math.max(0,Math.min(j,b-1));r.focusVisible=!0,Y=!0}else switch(o.key){case"ArrowUp":{let j=T.ud||1,te=T.lr,re=I.horizontal;if(re&&!te)break;Te(r,-(re?te:j),b,I.reverse),r.focusVisible=!0,Y=!0;break}case"ArrowDown":{let j=T.ud||1,te=T.lr,re=I.horizontal;if(re&&!te)break;Te(r,re?te:j,b,I.reverse),r.focusVisible=!0,Y=!0;break}case"ArrowLeft":{let j=T.ud||1,te=T.lr,re=I.horizontal;if(!re&&!te)break;Te(r,-(re?j:te),b,I.reverse),r.focusVisible=!0,Y=!0;break}case"ArrowRight":{let j=T.ud||1,te=T.lr,re=I.horizontal;if(!re&&!te)break;Te(r,re?j:te,b,I.reverse),r.focusVisible=!0,Y=!0;break}case"Home":if(b>0)r.focusedIndex=0;r.focusVisible=!0,Y=!0;break;case"End":if(b>0)r.focusedIndex=b-1;r.focusVisible=!0,Y=!0;break;case"PageUp":case"PageDown":{let j=T.ud||1,te=Math.max(0,r.focusedIndex),re=T.scrollIndex?T.scrollIndex(te):te,oe=c.getSize(re),ae=y.containerSize,ue=(oe>0?Math.max(1,Math.floor(ae/oe)):10)*j;if(p&&z){let me=p(r.focusedIndex),ve=o.key==="PageUp"?-ue:ue,G=y.totalItems-1;r.focusedIndex=z(Math.max(0,Math.min(G,me+ve)))}else Te(r,o.key==="PageUp"?-ue:ue,b);r.focusVisible=!0,Y=!0;break}case" ":case"Enter":if(o.key===" "&&o.shiftKey&&e==="multiple"&&r.focusedIndex>=0){if(u>=0){let j=P(u),te=P(r.focusedIndex);if(j>=0&&te>=0)S(j,te)}r.focusVisible=!0,q=!0,Y=!0;break}if(r.focusedIndex>=0){let j=L(r.focusedIndex);if(j)k(j.id,j),u=r.focusedIndex;r.focusVisible=!0,q=!0,Y=!0}break;case"a":if((o.ctrlKey||o.metaKey)&&e==="multiple"){if(r.selected.size===y.totalItems)F();else U();r.focusVisible=!0,q=!0,Y=!0}break;case"Delete":case"Backspace":if(r.selected.size>0)f.emit("delete",{selected:qe(r.selected),items:V()}),Y=!0;break}if(r.focusedIndex!==N&&A){let j=r.focusedIndex>N?1:-1;r.focusedIndex=g(r.focusedIndex,j,b)}let Z=r.focusedIndex!==N;if(o.shiftKey&&e==="multiple"&&!q&&Z){if(o.key==="ArrowUp"||o.key==="ArrowDown"||o.key==="ArrowLeft"||o.key==="ArrowRight"){let j=L(r.focusedIndex);if(j)k(j.id,j);u=r.focusedIndex,q=!0}if((o.ctrlKey||o.metaKey)&&(o.key==="Home"||o.key==="End")){let j=P(N>=0?N:r.focusedIndex),te=P(r.focusedIndex);if(j>=0&&te>=0)S(j,te);u=r.focusedIndex,q=!0}}if(t&&e==="single"&&!q&&Z&&r.focusedIndex>=0){let j=L(r.focusedIndex);if(j)X(j.id,j);q=!0}if(Y){if(o.preventDefault(),Z&&r.focusedIndex>=0)H(r.focusedIndex),x.content.setAttribute("aria-activedescendant",`${E}-item-${r.focusedIndex}`);if(q)D();else if(Z){if(n(),r.focusedIndex>=0){let j=L(r.focusedIndex);if(j)f.emit("focus:change",{id:j.id,index:r.focusedIndex})}}}});m.registerMethod("select",(...o)=>{for(let b of o)X(b);D()}),m.registerMethod("deselect",(...o)=>{for(let b of o)C(b);D()}),m.registerMethod("toggleSelect",(o)=>{k(o),D()}),m.registerMethod("selectAll",()=>{if(e!=="multiple")return;U(),D()}),m.registerMethod("clearSelection",()=>{F(),D()}),m.registerMethod("getSelected",()=>{return qe(r.selected)}),m.registerMethod("getSelectedItems",()=>{return V()}),m.registerMethod("selectNext",()=>{$(m);let o=v();if(o===0)return;if(Te(r,1,o,I.reverse),A)r.focusedIndex=g(r.focusedIndex,1,o);let b=L(r.focusedIndex);if(b)X(b.id,b);D()}),m.registerMethod("selectPrevious",()=>{$(m);let o=v();if(o===0)return;if(Te(r,-1,o,I.reverse),A)r.focusedIndex=g(r.focusedIndex,-1,o);let b=L(r.focusedIndex);if(b)X(b.id,b);D()}),m.registerMethod("_seedSelection",(o)=>{for(let b of o)r.selected.add(b)}),m.registerMethod("_getFocusedId",()=>{if(r.focusedIndex<0)return;return L(r.focusedIndex)?.id}),m.registerMethod("_focusById",(o)=>{let b=y.totalItems;for(let T=0;T<b;T++){let N=s(T);if(N&&N.id===o){let Y=z?z(T):T;r.focusedIndex=Y,f.emit("focus:change",{id:o,index:Y});return}}})},destroy(){h.clear()}}}var Re=(i)=>i==null?0:typeof i==="function"?i():i;function vt(i){let e=i?.scrollPadding,t,l;return{name:"page",priority:5,setup(r){let{dom:s,sizeCache:n,config:f,emitter:x}=r,c=f.horizontal,y=window,W=r.getState();if(r.disableDefaultScroll(),r.disableDefaultResize(),s.root.style.overflow="visible",s.root.style.height="auto",c)s.viewport.style.overflowX="visible",s.viewport.style.overflowY="visible";else s.viewport.style.overflow="visible";s.viewport.classList.remove(`${f.classPrefix}-viewport--custom-scrollbar`),r.setScrollFns(()=>{let d=s.viewport.getBoundingClientRect();return Math.max(0,c?-d.left:-d.top)},(d)=>{let v=s.viewport.getBoundingClientRect(),_=(c?v.left+y.scrollX:v.top+y.scrollY)+d;if(c)y.scrollTo({left:_,top:y.scrollY,behavior:"instant"});else y.scrollTo({left:y.scrollX,top:_,behavior:"instant"})}),W.containerSize=c?y.innerWidth:y.innerHeight,W.crossSize=c?y.innerHeight:y.innerWidth;let u=null,h=()=>{let d=s.viewport.getBoundingClientRect(),v=Math.max(0,c?-d.left:-d.top);if(W.prevScrollPosition=W.scrollPosition,W.scrollPosition=v,W.scrollDirection=v>W.prevScrollPosition?1:v<W.prevScrollPosition?-1:0,r.onScrollFrame(),u!==null)clearTimeout(u);u=setTimeout(()=>{u=null,r.onScrollIdle()},150)};y.addEventListener("scroll",h,{passive:!0}),l=()=>y.removeEventListener("scroll",h);let{innerWidth:p,innerHeight:z}=y,A=()=>{let{innerWidth:d,innerHeight:v}=y;if((c?Math.abs(d-p):Math.abs(v-z))<1)return;p=d,z=v,W.containerSize=c?d:v,W.crossSize=c?v:d,r.forceRender(),x.emit("resize",{width:d,height:v})};if(y.addEventListener("resize",A),t=()=>y.removeEventListener("resize",A),e)r.setScrollToPosFn((d,v,_,$,P)=>{let L=Re(c?e.left:e.top),g=Re(c?e.right:e.bottom);if($===0)return 0;let X=Math.max(0,Math.min(d,$-1)),k=v.getOffset(X),F=v.getSize(X),C=v.getTotalSize(),S=Math.max(0,C-_+g),U;switch(P){case"center":U=k-L-(_-L-g-F)/2;break;case"end":U=k-_+F+g;break;default:U=k-L}return Math.max(-L,Math.min(U,S))}),r.registerMethod("_scrollItemIntoView",(d)=>{let v=c?y.innerWidth:y.innerHeight,_=Re(c?e.left:e.top),$=Re(c?e.right:e.bottom),P=s.viewport.getBoundingClientRect(),L=c?y.scrollX:y.scrollY,g=c?P.left:P.top,X=g+L,k=n.getOffset(d),F=n.getSize(d),C=g+k,S=v-$,U=L;if(C<_)U=X+k-_;else if(C+F>S)U=X+k+F-S;if(U!==L)if(c)y.scrollTo({left:U,top:y.scrollY,behavior:"instant"});else y.scrollTo({left:y.scrollX,top:U,behavior:"instant"})});r.registerDestroyHandler(()=>{if(l?.(),t?.(),u!==null)clearTimeout(u)})},destroy(){l?.(),t?.(),l=void 0,t=void 0}}}var Lr=(i)=>{try{let e=sessionStorage.getItem(i);if(!e)return;return JSON.parse(e)}catch{return}};function yt(i){let e=i?.autoSave,t=e?Lr(e):i?.restore,l=!1,r=null;return{name:"snapshots",priority:50,setup(s){let{sizeCache:n,emitter:f}=s,x=s.getState(),c=()=>{let{scrollPosition:u,totalItems:h}=x,p=s.getMethod("getSelected")?.();if(h===0){let L={index:0,offsetInItem:0,total:0};if(p?.length)L.selectedIds=p;return L}let z,A;if(x.isCompressed&&x.compressionRatio!==1){let L=x.totalSize,g=u/L*h;z=Math.max(0,Math.min(Math.floor(g),h-1)),A=(g-z)*n.getSize(z)}else z=n.indexAtOffset(u),A=u-n.getOffset(z);A=Math.max(0,A);let d={index:z,offsetInItem:A,total:h,scrollTop:u},v=n.getSize(z);if(v)d.offsetRatio=A/v;let _=s.getMethod("_layoutToDataIndex");if(_){let L=_(z);if(L<0){for(let g=z+1;g<h;g++)if(L=_(g),L>=0)break}if(L>=0)d.dataIndex=L}let $=s.getMethod("_getTotal");if($)d.dataTotal=$();if(p?.length)d.selectedIds=p;let P=s.getMethod("_getFocusedId");if(P){let L=P();if(L!==void 0)d.focusedId=L}return d};s.registerMethod("getScrollSnapshot",c);let y=(u,h=!0)=>{let{index:p,offsetInItem:z,selectedIds:A,focusedId:d}=u,v=x.totalItems,_=u.dataTotal??u.total;if(v===0&&_&&_>0){let V=s.getMethod("_setTotal");if(V)V(_),v=x.totalItems;n.rebuild(v);let D=s.getMethod("_updateCompressionMode");if(D)D();if(!x.isCompressed)s.updateContentSize(n.getTotalSize())}if(v===0)return;if(!Number.isFinite(p)||!Number.isFinite(z))return;if(n.getTotal()!==v){n.rebuild(v);let V=s.getMethod("_updateCompressionMode");if(V)V();if(!x.isCompressed)s.updateContentSize(n.getTotalSize())}let $=s.getMethod("_dataToLayoutIndex"),P=p;if(u.dataIndex!==void 0&&u.dataIndex>=0)P=$?$(u.dataIndex):u.dataIndex;else if($)P=$(p);let L=Math.max(0,Math.min(P,v-1)),g=n.getSize(L),X=u.offsetRatio!==void 0?u.offsetRatio*g:Math.min(z,g),k;if(x.isCompressed&&x.compressionRatio!==1){let V=s.getMethod("_getTotal")?.(),D=V!==void 0&&u.dataTotal===V;if(u.scrollTop!==void 0&&(u.total===v||D))k=u.scrollTop;else{let a=g?X/g:0;k=(L+a)/v*x.totalSize}}else k=n.getOffset(L)+X;let F=Math.max(0,x.totalSize-x.containerSize);k=Math.max(0,Math.min(k,F));let C=k===u.scrollTop;if(u.dataIndex!==void 0&&u.dataIndex>=0){let V=g?X/g:0;s.registerMethod("_restoreAnchor",{dataIndex:u.dataIndex,fraction:V,skipAdjust:C}),s.registerMethod("_suppressSave",1)}if(s.scrollTo(k),h&&A?.length){let V=s.getMethod("select");if(V)V(...A)}let S=s.getMethod("loadVisibleRange"),U=()=>{if(d===void 0)return;let V=s.getMethod("_focusById");if(V)V(d)};if(S){let V=0,D=()=>{if(x.containerSize>0){if(Math.abs(x.scrollPosition-k)>1)s.scrollTo(k);S().then(U)}else if(++V<10)requestAnimationFrame(D)};requestAnimationFrame(D)}else{let V=s.getMethod("reload");if(V)requestAnimationFrame(()=>{V().then(U)});else requestAnimationFrame(U)}};s.registerMethod("restoreScroll",y);let W=!!(t&&e);if(s.registerDestroyHandler(()=>{l=!0}),e){r=()=>{if(l||W||s.getMethod("_suppressSave"))return;let v=c();try{sessionStorage.setItem(e,JSON.stringify(v))}catch{}},s.registerMethod("_saveSnapshot",r);let u=0,h=()=>{if(u)return;u=requestAnimationFrame(()=>{u=0,r()})};f.on("selection:change",h),f.on("focus:change",h);let p=0,z=()=>{p=0,r()},A=()=>{if(p)clearTimeout(p);p=setTimeout(z,300)};f.on("scroll",A);let d=()=>{r?.()};if(window.addEventListener("beforeunload",d),s.registerDestroyHandler(()=>{if(p)clearTimeout(p);window.removeEventListener("beforeunload",d)}),t&&t.total&&t.total>0){let v=s.getMethod("_cancelAutoLoad");if(v)v();let _=s.getMethod("_setTotal");if(_)_(t.total)}}if(t){let u=!0;if(t.selectedIds?.length){let h=s.getMethod("_seedSelection");if(h)h(t.selectedIds),u=!1}queueMicrotask(()=>{if(y(t,u),W=!1,r)r()})}},hooks:{onIdle(){if(r&&!l)r()}},destroy(){l=!0,r=null}}}function xt(i){let e=i?.gap??0,t=null,l=null,r,s,n,f,x=new Map,c=new WeakMap,y=0,W=!1,u=2;function h(d){return x.get(d)??f}function p(){let d=l.dom.viewport,v=d.scrollHeight-d.clientHeight;return v>0&&r.scrollPosition>=v-u}function z(){let d=l.dom.viewport;d.scrollHeight;let v=d.scrollHeight-d.clientHeight;if(v>r.scrollPosition)l.scrollTo(v)}function A(){l.updateContentSize(l.sizeCache.getTotalSize())}return{name:"autosize",priority:5,setup(d){if(l=d,r=d.getState(),s=d.config.horizontal,n=s?"width":"height",e===0)e=d.config.gap;if(f=typeof d.rawSizeSpec==="function"?d.rawSizeSpec(0)+e:d.rawSizeSpec+e,d.setSizeConfig(h),e>0){let v=d.sizeCache.getTotalSize;d.sizeCache.getTotalSize=()=>{let _=v();return _>0?_-e:0}}t=new ResizeObserver((v)=>{if(r.destroyed||!l)return;let _=!1,$=r.startIndex;for(let X of v){let k=X.target,F=c.get(k);if(F===void 0)continue;if(k.getAttribute("data-index")!==String(F)){t.unobserve(k);continue}if(x.has(F))continue;let C=X.borderBoxSize[0];if(!C)continue;let S=s?C.inlineSize:C.blockSize;if(S<=0)continue;let U=S+e,V=f;if(x.set(F,U),_=!0,F<$&&U!==V)y+=U-V;t.unobserve(k),k.style[n]=`${S}px`}if(!_)return;let P=p();if(d.rebuildSizeCache(),y)d.scrollTo(r.scrollPosition+y),y=0;let L=r.scrollDirection!==0,g=r.totalItems>0&&r.prevRangeEnd>=r.totalItems-1;if(P||g||!L){if(A(),W=!1,P)z()}else W=!0;d.forceRender()}),d.registerMethod("isMeasured",(v)=>x.has(v)),d.registerMethod("setMeasuredSize",(v,_)=>{x.set(v,_)}),d.registerMethod("getMeasuredCount",()=>x.size),d.registerDestroyHandler(()=>{if(t)t.disconnect(),t=null})},hooks:{onCommit(d){if(!t||!l)return;for(let v=0;v<d.visibleCount;v++){let _=d.visibleIndices[v];if(x.has(_))continue;let $=l.getRenderedElement(_);if(!$)continue;$.style[n]="",c.set($,_),t.observe($)}},onIdle(){if(!W||!l)return;let d=p();if(A(),W=!1,d)z(),l.forceRender()}},destroy(){if(t)t.disconnect(),t=null;x.clear(),l=null}}}var Ar=(i)=>{let e=Math.max(1,Math.floor(i.columns)),t=i.gap??0,l=i.containerSize,r=0,s=[],n=()=>{let p=(e-1)*t;r=Math.max(0,(l-p)/e),s=Array(e);let z=r+t;for(let A=0;A<e;A++)s[A]=A*z};n();let f=[],x=0,c=[],y=(p,z)=>{if(p<=0)return x=0,f=[],[];let A=Array(e).fill(0),d=Array(e);for(let $=0;$<e;$++)d[$]=[];let v=Array(p);for(let $=0;$<p;$++){let P=0,L=A[0];for(let k=1;k<e;k++){let F=A[k];if(F<L)L=F,P=k}let g=z($),X=A[P];v[$]={index:$,x:s[P],y:X,lane:P,size:g,crossSize:r},d[P].push($),A[P]=X+g+t}f=d;let _=0;for(let $=0;$<e;$++){let P=A[$],L=P>0?P-t:0;if(L>_)_=L}return x=_,v},W=(p)=>{if(p.length===0)return x;if(x)return x;let z=Array(e).fill(0);for(let d of p){let v=d.y+d.size,_=z[d.lane];if(v>_)z[d.lane]=v}let A=0;for(let d=0;d<e;d++)if(z[d]>A)A=z[d];return A},u=(p,z,A)=>{if(p.length===0||A<=z)return c.length=0,c;if(f.length===0||f.length!==e)return h(p,z,A);c.length=0;for(let d=0;d<e;d++){let v=f[d],_=v.length;if(!_)continue;let $=0,P=_;while($<P){let L=$+P>>>1,g=p[v[L]];if(g.y+g.size<=z)$=L+1;else P=L}for(let L=$;L<_;L++){let g=p[v[L]];if(g.y>=A)break;c.push(g)}}return c},h=(p,z,A)=>{c.length=0;for(let d of p)if(d.y+d.size>z&&d.y<A)c.push(d);return c};return{get columns(){return e},get gap(){return t},get containerSize(){return l},update:(p)=>{let z=!1;if(p.columns!==void 0){let A=Math.max(1,Math.floor(p.columns));if(A!==e)e=A,z=!0}if(p.gap!==void 0&&p.gap!==t)t=p.gap,z=!0;if(p.containerSize!==void 0&&p.containerSize!==l)l=p.containerSize,z=!0;if(z)n()},calculateLayout:y,getTotalSize:W,getVisibleItems:u}},Cr=(i,e,t)=>{let l=Array.from(e).sort((n,f)=>n-f);if(l.length<=1)return;let r=[];for(let n=0;n<l.length;n++){let f=t(l[n]);if(f)r.push(f)}if(r.length<=1)return;let s=i.firstChild;for(let n=0;n<r.length;n++){let f=r[n];if(f===s)s=s.nextSibling;else i.insertBefore(f,s)}},$r=(i=200)=>{let e=[];return{acquire:()=>{let t=e.pop();if(t)return t;let l=document.createElement("div");return l.setAttribute("role","option"),l},release:(t)=>{if(t.remove(),e.length<i)t.className="",t.textContent="",t.removeAttribute("style"),t.removeAttribute("data-index"),t.removeAttribute("data-id"),t.removeAttribute("data-lane"),e.push(t)},clear:()=>{e.length=0}}},Tr=1,Er=(i,e,t,l=!1,r,s,n,f)=>{let x=$r(),c=new Map,y=new Set,W=0,u="",h=-1,p={selected:!1,focused:!1},z=(C,S)=>{return p.selected=C,p.focused=S,p},A=`${t}-item ${t}-masonry-item`,d=`${t}-group-header`,v=`${t}-item--selected`,_=`${t}-item--focused`,$=(C,S)=>{if(typeof S==="string")C.innerHTML=S;else C.replaceChildren(S)},P=(C,S,U)=>{C.classList.toggle(v,S),C.classList.toggle(_,U)},L=(C,S)=>{if(l)C.style.transform=`translate(${Math.round(S.y)}px, ${Math.round(S.x)}px)`;else C.style.transform=`translate(${Math.round(S.x)}px, ${Math.round(S.y)}px)`},g=(C,S)=>{if(l)C.style.width=`${S.size}px`,C.style.height=`${S.crossSize}px`;else C.style.width=`${S.crossSize}px`,C.style.height=`${S.size}px`},X=(C,S,U,V,D)=>{let a=x.acquire(),w=S.__groupHeader,m=z(V,D);if(a.className=w?d:A,a.dataset.index=String(C),a.dataset.id=String(S.id),a.dataset.lane=String(U.lane),w)a.setAttribute("role","presentation"),a.removeAttribute("aria-selected"),a.removeAttribute("aria-setsize"),a.removeAttribute("aria-posinset"),a.removeAttribute("id");else if(f!==!1){if(a.setAttribute("role","option"),a.ariaSelected=String(V),s)a.id=`${s}-item-${C}`;if(r){let E=r();if(E!==h)h=E,u=String(E);a.setAttribute("aria-setsize",u);let R=n?n(C):C+1;a.setAttribute("aria-posinset",String(R))}}else if(a.setAttribute("role","listitem"),a.removeAttribute("aria-selected"),r){let E=r();if(E!==h)h=E,u=String(E);a.setAttribute("aria-setsize",u);let R=n?n(C):C+1;a.setAttribute("aria-posinset",String(R))}g(a,U);let I=e(S,C,m);return $(a,I),P(a,V,D),L(a,U),{element:a,lastItemId:S.id,lastSelected:V,lastFocused:D,lastY:U.y,lastX:U.x,lastSize:U.size,lastCrossSize:U.crossSize,lastSeenFrame:W}},k=(C,S,U,V)=>{W++,y.clear();for(let a=0;a<S.length;a++)y.add(S[a].index);for(let[a,w]of c)if(y.has(a))w.lastSeenFrame=W;else if(W-w.lastSeenFrame>Tr)x.release(w.element),c.delete(a);let D=null;for(let a=0;a<S.length;a++){let w=S[a],m=w.index,I=C(m);if(!I)continue;let E=U.has(I.id),R=m===V,H=c.get(m);if(H){let B=H.lastItemId!==I.id,O=H.lastSelected!==E,o=H.lastFocused!==R,b=H.lastY!==w.y||H.lastX!==w.x,T=H.lastSize!==w.size||H.lastCrossSize!==w.crossSize;if(B){let N=z(E,R),Y=e(I,m,N);if($(H.element,Y),H.element.dataset.id=String(I.id),H.lastItemId=I.id,!I.__groupHeader){let q=n?n(m):m+1;H.element.setAttribute("aria-posinset",String(q))}}if(B||O||o)P(H.element,E,R),H.element.ariaSelected=String(E),H.lastSelected=E,H.lastFocused=R;if(T)g(H.element,w),H.lastSize=w.size,H.lastCrossSize=w.crossSize;if(b)L(H.element,w),H.lastY=w.y,H.lastX=w.x}else{let B=X(m,I,w,E,R);if(!D)D=document.createDocumentFragment();D.appendChild(B.element),c.set(m,B)}}if(D)i.appendChild(D)},F=()=>{for(let C of c.values())x.release(C.element);c.clear(),i.innerHTML=""};return{render:k,getElement:(C)=>c.get(C)?.element,updateItemClasses:(C,S,U)=>{let V=c.get(C);if(!V)return;let D=V.lastSelected!==S,a=V.lastFocused!==U;if(D||a)P(V.element,S,U),V.lastSelected=S,V.lastFocused=U},sortDOM:()=>{Cr(i,c.keys(),(C)=>c.get(C)?.element)},clear:F,destroy:()=>{F(),x.clear()}}},Pr=100,kr=new Set;function bt(i){if(!i.columns||i.columns<1)throw Error("[vlist] masonry: columns must be >= 1");let e,t=null,l,r=null,s,n,f,x=[],c=-1,y=-1,W=!0,u=-1,h={columnWidth:0,columns:0,gap:0,containerWidth:0},p=[],z=(a)=>p[a],A=null,d=null,v=!1;function _(){if(v||!r)return;v=!0,A=r.getMethod("_getSelectedIds")??null,d=r.getMethod("_getFocusedIndex")??null}let $=[],P=new Int32Array(0),L=[];function g(){let a=e.columns,w=x.length;$=Array(a);for(let m=0;m<a;m++)$[m]=[];if(P.length<w)P=new Int32Array(w);for(let m=0;m<w;m++){let I=x[m],E=$[I.lane].length;$[I.lane].push(m),P[m]=E}L=Array(a);for(let m=0;m<a;m++){let I=$[m],E=new Float64Array(I.length);for(let R=0;R<I.length;R++){let H=x[I[R]];E[R]=H.y+H.size*0.5}L[m]=E}}function X(a,w){let m=a.length;if(!m)return-1;let I=0,E=m-1;while(I<E){let R=I+E>>1;if(a[R]<w)I=R+1;else E=R}if(I>0&&Math.abs(a[I-1]-w)<=Math.abs(a[I]-w))return I-1;return I}function k(a,w,m){let I=x[a];if(!I)return a;let E=I.lane,R=e.columns,H=P[a],B=$[E];switch(s?w==="ArrowDown"?"ArrowRight":w==="ArrowUp"?"ArrowLeft":w==="ArrowRight"?"ArrowDown":w==="ArrowLeft"?"ArrowUp":w:w){case"ArrowDown":if(H+1<B.length)return B[H+1];return a;case"ArrowUp":if(H>0)return B[H-1];return a;case"ArrowRight":{if(E>=R-1)return a;let O=E+1,o=I.y+I.size*0.5,b=$[O];if(!b.length)return a;let T=X(L[O],o);return T>=0?b[T]:a}case"ArrowLeft":{if(E<=0)return a;let O=E-1,o=I.y+I.size*0.5,b=$[O];if(!b.length)return a;let T=X(L[O],o);return T>=0?b[T]:a}case"Home":return 0;case"End":return m-1;case"PageDown":{let O=l.containerSize,o=I.size>0?I.size:150,b=Math.max(1,Math.floor(O/o)),T=Math.min(H+b,B.length-1);return B[T]}case"PageUp":{let O=l.containerSize,o=I.size>0?I.size:150,b=Math.max(1,Math.floor(O/o)),T=Math.max(0,H-b);return B[T]}}return a}let F=null;function C(){if(i.size)return(a)=>i.size(a,h);if(F!==null&&typeof F==="function")return(a)=>F(a,h);return(a)=>r.sizeCache.getSize(a)}function S(){let{columns:a,gap:w}=e;h.containerWidth=e.containerSize,h.columns=a,h.gap=w,h.columnWidth=Math.max(0,(e.containerSize-(a-1)*w)/a)}function U(){if(!r)return;S();let a=l.totalItems;x=e.calculateLayout(a,C()),u=a,g();let w=e.getTotalSize(x);r.updateContentSize(w)}function V(){if(l.destroyed||!r||!t)return;if(l.totalItems!==u)U();_();let{scrollPosition:a,containerSize:w}=l;if(!W&&a===c&&w===y)return;if(c=a,y=w,W=!1,w<=0||x.length===0)return;let m=Math.max(0,a-f),I=a+w+f,E=e.getVisibleItems(x,m,I),R=A?.()??kr,H=d?.()??-1;p=r.getItems(),t.render(z,E,R,H);let B=E.length,O=B>0?E[0].index:0,o=B>0?E[B-1].index:0;l.prevRangeStart=O,l.prevRangeEnd=o,l.renderPending=!1;let b=Math.min(B,l.capacity);l.visibleCount=b,l.startIndex=O;for(let T=0;T<b;T++){let N=E[T];l.visibleIndices[T]=N.index,l.visibleOffsets[T]=N.y,l.visibleSizes[T]=N.size}}function D(){if(l.destroyed)return;U(),l.prevRangeStart=-1,l.prevRangeEnd=-1,l.renderPending=!0,W=!0,V()}return{name:"masonry",priority:10,conflicts:["grid","table"],setup(a){if(r=a,l=a.getState(),F=a.rawSizeSpec,s=a.config.horizontal,n=a.config.classPrefix,f=a.config.overscan*Pr,a.config.reverse)throw Error("[vlist] masonry: cannot be combined with reverse mode");let w=l.crossSize;e=Ar({columns:i.columns,gap:i.gap??0,containerSize:w}),t=Er(a.dom.content,a.template,n,s,()=>l.totalItems,void 0,void 0,a.config.interactive),a.dom.root.classList.add(`${n}--masonry`),a.setRenderFn(V,D),U(),a.registerMethod("getMasonryLayout",()=>e),a.registerMethod("updateMasonry",(m)=>{if(m.columns!==void 0&&m.columns<1)throw Error("[vlist] updateMasonry: columns must be >= 1");if(m.gap!==void 0&&m.gap<0)throw Error("[vlist] updateMasonry: gap must be >= 0");let I={};if(m.columns!==void 0)I.columns=m.columns;if(m.gap!==void 0)I.gap=m.gap;e.update(I),t?.clear(),D()}),a.registerMethod("scrollToIndex",(m,I="start")=>{let E=x[m];if(!E)return;let R=typeof I==="string"?I:I.align??"start",H=typeof I==="object"?I.behavior:void 0,B=typeof I==="object"?I.duration:void 0,O=l.containerSize,o=e.getTotalSize(x),b=Math.max(0,o-O),T=E.y;if(R==="center")T=E.y-O/2+E.size/2;else if(R==="end"){if(T=E.y-O+E.size,m>=l.totalItems-1&&E.y+E.size>b)T=b}if(T=Math.max(0,Math.min(T,b)),H==="smooth"&&B&&B>0)a.smoothScrollTo(T,B);else a.scrollTo(T)}),a.registerMethod("_scrollItemIntoView",(m)=>{let I=x[m];if(!I)return;let{scrollPosition:E,containerSize:R}=l,H=I.y,B=H+I.size;if(H<E)a.scrollTo(Math.max(0,H));else if(B>E+R)a.scrollTo(B-R)}),a.setNavConfig({total:()=>l.totalItems,navigate:k}),a.registerDestroyHandler(()=>{t?.destroy(),t=null,a.dom.root.classList.remove(`${n}--masonry`)})},hooks:{onResize(a,w){if(!e||!r)return;let m=l.crossSize;if(Math.abs(m-e.containerSize)<1)return;e.update({containerSize:m}),t?.clear(),D()},onIdle(){t?.sortDOM()}},destroy(){t?.destroy(),t=null,x=[],r=null}}}var Fr=(i={})=>{let{chunkSize:e=100,maxCachedItems:t=5000,evictionBuffer:l=200,onEvict:r}=i,s=new Map,n=0,f=0,x=(a)=>{let w=s.get(a);if(!w)w={items:Array(e),count:0,lastAccess:Date.now()},s.set(a,w);else w.lastAccess=Date.now();return w},c=(a)=>{return Math.floor(a/e)},y=(a)=>{return a%e},W=()=>n,u=(a)=>{n=a},h=(a)=>{if(a<0||a>=n)return;let w=c(a),m=s.get(w);if(!m)return;return m.items[y(a)]},p=(a)=>{if(a<0||a>=n)return!1;let w=c(a),m=s.get(w);if(!m)return!1;return m.items[y(a)]!==void 0},z=(a,w)=>{let m=c(a),I=x(m),E=y(a),R=I.items[E]===void 0;if(I.items[E]=w,R)I.count++,f++;if(a>=n)n=a+1},A=(a,w)=>{for(let m=0;m<w.length;m++){let I=w[m];if(I!==void 0)z(a+m,I)}},d=(a,w)=>{if(a<0||a>n)return;let m=c(a),I=Array.from(s.keys()).filter((O)=>O>=m).sort((O,o)=>O-o),E=[];for(let O of I){let o=s.get(O),b=O*e;for(let T=0;T<e;T++){if(o.items[T]===void 0)continue;let N=b+T;if(N<a)continue;E.push({oldIndex:N,item:o.items[T]})}}for(let{oldIndex:O}of E){let o=c(O),b=s.get(o);if(!b)continue;let T=y(O);if(b.items[T]!==void 0){if(b.items[T]=void 0,b.count--,f--,b.count===0)s.delete(o)}}n++;for(let{oldIndex:O,item:o}of E){let b=O+1,T=c(b),N=x(T),Y=y(b);N.items[Y]=o,N.count++,f++}let R=c(a),H=x(R),B=y(a);H.items[B]=w,H.count++,f++},v=(a)=>{if(a<0||a>=n)return!1;let w=c(a),m=s.get(w),I=y(a);if(!(m!==void 0&&m.items[I]!==void 0))return!1;let E=w,R=Array.from(s.keys()).filter((B)=>B>=E).sort((B,O)=>B-O),H=[];for(let B of R){let O=s.get(B),o=B*e;for(let b=0;b<e;b++){if(O.items[b]===void 0)continue;let T=o+b;if(T<=a)continue;H.push({oldIndex:T,item:O.items[b]})}}if(m.items[I]=void 0,m.count--,f--,m.count===0)s.delete(w);for(let{oldIndex:B}of H){let O=c(B),o=s.get(O);if(!o)continue;let b=y(B);if(o.items[b]!==void 0){if(o.items[b]=void 0,o.count--,f--,o.count===0)s.delete(O)}}for(let{oldIndex:B,item:O}of H){let o=B-1,b=c(o),T=x(b),N=y(o);T.items[N]=O,T.count++,f++}return n--,!0},_=(a,w)=>{let m=[];for(let I=a;I<=w&&I<n;I++)m.push(h(I));return m},$=(a,w)=>{for(let m=a;m<=w&&m<n;m++)if(!p(m))return!1;return!0},P=()=>{let a=[],w=null,m=Array.from(s.keys()).sort((I,E)=>I-E);for(let I of m){let E=s.get(I);if(!E)continue;let R=I*e;for(let H=0;H<e;H++){let B=R+H;if(B>=n)break;if(E.items[H]!==void 0)if(w===null)w={start:B,end:B};else if(B===w.end+1)w.end=B;else a.push(w),w={start:B,end:B};else if(w!==null)a.push(w),w=null}}if(w!==null)a.push(w);return a},L=(a,w)=>{let m=[],I=null;for(let E=a;E<=w&&E<n;E++)if(!p(E))if(I===null)I={start:E,end:E};else I.end=E;else if(I!==null)m.push(I),I=null;if(I!==null)m.push(I);return m},g=(a)=>{return s.has(a)},X=(a)=>{let w=s.get(a);if(!w)return!1;let m=a*e,I=Math.min(e,n-m);return w.count>=I},k=(a)=>{let w=s.get(a);if(w)w.lastAccess=Date.now()},F=(a,w)=>{if(a>w||s.size===0)return;let m=Date.now(),I=c(Math.max(0,a)),E=c(Math.min(n-1,w));for(let R=I;R<=E;R++){let H=s.get(R);if(H)H.lastAccess=m}},C=(a,w)=>{if(f<=t)return 0;let m=Math.max(0,a-l),I=Math.min(n-1,w+l),E=c(m),R=c(I),H=0,B=[];for(let[O,o]of s)if(O<E||O>R)H+=o.count,B.push(O),f-=o.count,s.delete(O);if(H>0&&r)r(H,B);return H},S=()=>{if(f<=t)return 0;let a=Array.from(s.entries()).sort(([,I],[,E])=>I.lastAccess-E.lastAccess),w=0,m=[];for(let[I,E]of a){if(f<=t)break;w+=E.count,f-=E.count,m.push(I),s.delete(I)}if(w>0&&r)r(w,m);return w},U=()=>{return{totalItems:n,cachedItems:f,cachedChunks:s.size,chunkSize:e,maxCachedItems:t,memoryEfficiency:n>0?1-f/n:1}},V=()=>f,D=()=>{s.clear(),f=0};return{chunkSize:e,maxCachedItems:t,getTotal:W,setTotal:u,get:h,has:p,set:z,setRange:A,insert:d,delete:v,getRange:_,isRangeLoaded:$,getLoadedRanges:P,findUnloadedRanges:L,getChunkIndex:c,isChunkLoaded:g,isChunkFullyLoaded:X,touchChunk:k,touchChunksForRange:F,evictDistant:C,evictToLimit:S,getStats:U,getCachedCount:V,clear:D,reset:()=>{D(),n=0}}},Hr=(i={})=>{let{maskCharacter:e=Ft,maxSampleSize:t=Ht}=i,l=[],r=!1,s=(x)=>{if(r||x.length===0)return;let c=Math.min(x.length,t);for(let y=0;y<c;y++){let W=x[y];if(!W||typeof W!=="object")continue;let u={},h=!1;for(let[p,z]of Object.entries(W)){if(p.startsWith("_")||p==="id")continue;u[p]=String(z??"").length,h=!0}if(h)l.push(u)}r=!0},n=()=>r,f=(x)=>{let c={id:`${Ee}${x}`,[st]:!0,_index:x};if(l.length===0)return c.label=e.repeat(12),c;let y=l[x%l.length];for(let[W,u]of Object.entries(y))c[W]=e.repeat(Math.max(1,u));return c};return{analyzeStructure:s,hasAnalyzedStructure:n,generate:f,generateRange:(x,c)=>{let y=[];for(let W=x;W<=c;W++)y.push(f(W));return y},clear:()=>{l=[],r=!1}}},Ye=(i)=>{if(!i||typeof i!=="object")return!1;return i[st]===!0},_r=50,Rr=(i={})=>{let{adapter:e,initialItems:t,initialTotal:l,storage:r,placeholder:s,pageSize:n=_r,maxConcurrent:f=0,onStateChange:x,onDataChange:c,onItemsLoaded:y,onItemsEvicted:W}=i,u=Fr({...r,onEvict:(G,K)=>{W?.(G),F(),k()}}),h=null,p=()=>{if(!h)h=Hr(s);return h},z=new Map,A=!1,d,v=!0,_,$,P=[],L=0,g=new Map,X=()=>{for(let G of g.values())G[1].abort();g.clear()},k=()=>{x?.(I())},F=()=>{c?.()},C=()=>{z.clear();let G=u.getLoadedRanges();for(let K of G)for(let ee=K.start;ee<=K.end;ee++){let ne=u.get(ee);if(ne&&!Ye(ne))z.set(ne.id,ee)}},S=(G,K)=>{if(!Ye(K))z.set(K.id,G)},U=(G)=>{z.delete(G)},V=(G,K)=>{return`${G}-${K}`},D=()=>u.getTotal(),a=()=>u.getCachedCount(),w=()=>A,m=()=>v,I=()=>({total:u.getTotal(),cached:u.getCachedCount(),isLoading:A,pendingRanges:P,error:d,hasMore:v,cursor:_}),E=()=>u,R=()=>p(),H=(G)=>{let K=u.get(G);if(K!==void 0)return K;if(G>=0&&G<u.getTotal())return p().generate(G);return},B=(G)=>{let K=z.get(G);if(K===void 0)return;return u.get(K)},O=(G)=>{return z.get(G)??-1},o=(G)=>{let K=u.get(G);return K!==void 0&&!Ye(K)},b=(G,K)=>{let ee=[],ne=u.getTotal();u.touchChunksForRange(G,Math.min(K,ne-1));for(let le=G;le<=K&&le<ne;le++){let ce=u.get(le);if(ce!==void 0)ee.push(ce);else ee.push(p().generate(le))}return ee},T=(G)=>{u.setTotal(G),v=u.getCachedCount()<G,F(),k()},N=(G,K=0,ee)=>{if(e&&G.length>0){let ne=p();if(!ne.hasAnalyzedStructure())ne.analyzeStructure(G)}for(let ne=0;ne<G.length;ne++){let le=G[ne];if(le!==void 0){let ce=K+ne;u.set(ce,le),S(ce,le)}}if(ee!==void 0)u.setTotal(ee);else if(K+G.length>u.getTotal())u.setTotal(K+G.length);if(u.getCachedCount()>=u.getTotal()&&u.getTotal()>0)v=!1;F(),k(),y?.(G,K,u.getTotal())},Y=(G,K)=>{let ee=u.get(G);if(!ee)return!1;let ne=ee.id,le={...ee,...K};if(u.set(G,le),K.id!==void 0&&K.id!==ne)U(ne);return S(G,le),F(),k(),!0},q=(G,K)=>{u.insert(K,G),C(),X(),F(),k()},Z=(G)=>{let K=z.get(G);if(K===void 0)return!1;if(!u.delete(K))return!1;return C(),X(),F(),k(),!0},j=async(G,K)=>{if(!e)return;let ee=u.chunkSize,ne=Math.floor(G/ee),le=Math.floor(K/ee),ce=ee*2;for(let[se,ye]of g){let Ie=se.indexOf("-"),we=parseInt(se.slice(0,Ie),10);if(Math.abs(we-G)>ce)ye[1].abort(),g.delete(se)}let ge=[],ze=[];for(let se=ne;se<=le;se++){let ye=se*ee,Ie=ye+ee-1,we=V(ye,Ie);if(u.isChunkFullyLoaded(se))continue;let he=g.get(we);if(he)ze.push(he[0]);else ge.push({start:ye,end:Ie})}if(ge.length===0){if(ze.length>0)await Promise.all(ze);return}if(f>0){let se=g.size+ge.length;if(se>f){let ye=(G+K)/2,Ie=Math.min(se-f,g.size);while(Ie>0){let he=null,be=-1,pe=null;for(let[Me,ie]of g){let fe=Me.indexOf("-"),Q=parseInt(Me.slice(0,fe),10),M=parseInt(Me.slice(fe+1),10),J=Math.abs((Q+M)/2-ye);if(J>be)be=J,he=Me,pe=ie[1]}if(he)pe.abort(),g.delete(he);Ie--}let we=f-g.size;if(ge.length>we)ge.sort((he,be)=>{let pe=Math.abs((he.start+he.end)/2-ye),Me=Math.abs((be.start+be.end)/2-ye);return pe-Me}),ge.length=Math.max(0,we)}}if(ge.length===0){if(ze.length>0)await Promise.all(ze);return}for(let se of ge){let ye=V(se.start,se.end),Ie=new AbortController,we=(async()=>{P.push(se),A=!0,d=void 0,k();try{let he=se.end-se.start+1,be={offset:se.start,limit:he,cursor:se.start===$?_:void 0,signal:Ie.signal},pe=await e.read(be);if(N(pe.items,se.start,pe.total),pe.cursor)_=pe.cursor,$=se.start+pe.items.length;let Me=se.start+pe.items.length;if(Me>=L){if(L=Me,pe.hasMore!==void 0)v=pe.hasMore;else if(pe.total!==void 0)v=Me<pe.total}}catch(he){if(he?.name==="AbortError")return;d=he instanceof Error?he:Error(String(he))}finally{g.delete(ye);let he=P.findIndex((be)=>be.start===se.start&&be.end===se.end);if(he>=0)P.splice(he,1);A=g.size>0,k()}})();g.set(ye,[we,Ie]),ze.push(we)}await Promise.all(ze)},te=async(G,K)=>{if(u.isRangeLoaded(G,K))return;await j(G,K)},re=async()=>{if(!e)return;await j(0,n-1)},oe=async()=>{if(!e||A||!v)return!1;let G=u.getCachedCount(),K=u.getTotal(),ee=G,ne=Math.min(ee+n-1,K>0?K-1:ee+n-1);if(ee>=K&&K>0)return v=!1,!1;return await j(ee,ne),u.getCachedCount()>G},ae=async()=>{if(u.clear(),u.setTotal(0),z.clear(),h)h.clear();X(),P=[],A=!1,_=void 0,$=void 0,v=!0,L=0,d=void 0,F(),k()},ue=(G,K)=>{if(u.evictDistant(G,K)>0)C()},me=()=>{u.clear(),z.clear(),_=void 0,$=void 0,d=void 0,P=[],A=!1,F(),k()},ve=()=>{if(u.reset(),z.clear(),h)h.clear();_=void 0,$=void 0,v=!0,L=0,d=void 0,P=[],A=!1,F(),k()};if(t&&t.length>0)N(t,0,l??t.length);else if(l!==void 0)u.setTotal(l),F(),k();return{getState:I,getTotal:D,getCached:a,getIsLoading:w,getHasMore:m,getStorage:E,getPlaceholders:R,getItem:H,getItemById:B,getIndexById:O,isItemLoaded:o,getItemsInRange:b,setTotal:T,setItems:N,updateItem:Y,insertItem:q,removeItem:Z,loadRange:j,ensureRange:te,loadInitial:re,loadMore:oe,reload:ae,evictDistant:ue,clear:me,reset:ve}};function It(i){let{adapter:e,total:t,autoLoad:l=!0,storage:r}=i,s=i.loading?.cancelThreshold??Pt,n=i.loading?.preloadThreshold??Et,f=i.loading?.preloadAhead??Tt,x=i.loading?.maxConcurrent??kt,c,y,W,u,h,p,z=null,A=null,d=null,v=0,_=!1,$=-1,P=-1,L=r?.chunkSize??Oe,g=()=>{if(z=null,A!==null)clearTimeout(A),A=null},X=(S,U)=>{return c.ensureRange(S,U)},k=(S,U=Oe)=>{u.emit("load:start",{offset:S,limit:U})},F=(S)=>{u.emit("error",{error:S,context:"ensureRange"})},C=()=>{if(!z)return;z=null;let S={start:y.startIndex,end:y.startIndex+Math.max(0,y.visibleCount-1)};if(S.end<S.start)return;X(S.start,S.end).catch(F)};return{name:"data",priority:20,setup(S){y=S.getState(),W=S.sizeCache,u=S.emitter,h=S.dom,p=S.forceRender.bind(S);let U=null;S.setVirtualTotalFn(()=>U?.getTotal()??0),c=U=Rr({adapter:e,...t!==void 0&&{initialTotal:t},pageSize:r?.chunkSize??Oe,maxConcurrent:x,...r&&{storage:{...r.chunkSize!==void 0&&{chunkSize:r.chunkSize},...r.maxCachedItems!==void 0&&{maxCachedItems:r.maxCachedItems},...r.evictionBuffer!==void 0&&{evictionBuffer:r.evictionBuffer}}},onDataChange:()=>{if(y.initialized){let D=c.getTotal();y.totalItems=D;let a=W.getTotal();if(D!==a)W.rebuild(D);S.updateContentSize(W.getTotalSize()),S.renderIfNeeded()}},onItemsLoaded:(D)=>{if(y.initialized)p(),u.emit("load:end",{items:D,total:c.getTotal()})}}),S.setGetItemFn((D)=>c.getItem(D)),S.setRemoveItemFn((D)=>{let a=c.getIndexById(D);if(a<0)return-1;if(!c.removeItem(D))return-1;return a}),S.setInsertItemFn((D,a)=>{c.insertItem(D,a)}),S.setUpdateItemFn((D,a)=>{let w=c.getIndexById(D);if(w<0)return!1;return c.updateItem(w,a)}),S.registerMethod("reload",async()=>{if(z=null,$=-1,P=-1,S.forceRender(),await c.reload(),S.scrollTo(0),l)k(0),await c.loadInitial(),S.forceRender()}),S.registerMethod("loadVisibleRange",async()=>{z=null,S.forceRender();let D=c.getTotal();if(y.visibleCount>0&&y.startIndex<D){let a=Math.min(y.startIndex+y.visibleCount-1,D-1);k(y.startIndex,a-y.startIndex+1),await X(y.startIndex,a)}}),S.registerMethod("getTotal",()=>{return c.getTotal()}),S.registerMethod("setTotal",(D)=>{c.setTotal(D)}),S.registerMethod("_getTotal",()=>c.getTotal()),S.registerMethod("_setTotal",(D)=>{c.setTotal(D)}),S.registerMethod("_cancelAutoLoad",()=>{_=!0}),S.registerMethod("_getLoadedItem",(D)=>{return c.getStorage().get(D)}),S.registerMethod("_getLoadedCount",()=>c.getCached()),u.on("load:start",()=>{h.root.setAttribute("aria-busy","true")}),u.on("load:end",()=>{h.root.removeAttribute("aria-busy")}),S.registerDestroyHandler(()=>{if(d!==null)clearTimeout(d),d=null;g()}),u.on("velocity:change",({velocity:D})=>{v=Math.abs(D)});let V=()=>{if(y.destroyed)return;if(y.visibleCount>0&&y.startIndex<c.getTotal()){let D=Math.min(y.startIndex+y.visibleCount-1,c.getTotal()-1);X(y.startIndex,D).catch(F)}C()};if(window.addEventListener("online",V),S.registerDestroyHandler(()=>{window.removeEventListener("online",V)}),l)queueMicrotask(()=>{if(_)return;k(0),c.loadInitial().catch((D)=>{u.emit("error",{error:D,context:"loadInitial"})})});else if(t!==void 0)c.setTotal(t)},hooks:{onAfterScroll(){if(y.destroyed)return;let S=y.startIndex+Math.max(0,y.visibleCount-1);if(v>s){if(A!==null)clearTimeout(A),A=null;z={start:y.startIndex,end:S};return}if(v>n){let D=Math.floor(y.startIndex/L),a=Math.floor(S/L);if(D!==$||a!==P){if($=D,P=a,S>=y.startIndex)X(y.startIndex,S).catch(F)}let w=y.startIndex,m=S,I=y.scrollDirection;if(I>0)m=Math.min(m+f,c.getTotal()-1);else if(I<0)w=Math.max(0,w-f);if(z={start:w,end:m},A!==null)clearTimeout(A);A=setTimeout(()=>{if(A=null,y.destroyed||!z)return;let{start:E,end:R}=z;if(z=null,R>=E)X(E,R).catch(F)},100);return}g();let U=Math.floor(y.startIndex/L),V=Math.floor(S/L);if(U!==$||V!==P){if($=U,P=V,S>=y.startIndex)X(y.startIndex,S).catch(F)}},onIdle(){if(y.destroyed)return;v=0,$=-1,P=-1,C(),g()}},destroy(){if(d!==null)clearTimeout(d);g()}}}var We=(i,e)=>{let t=0,l=i.length-1;while(t<l){let r=t+l+1>>>1;if(i[r].headerLayoutIndex<=e)t=r;else l=r-1}return t},tt=(i,e)=>{let t=0,l=i.length-1;while(t<l){let r=t+l+1>>>1;if(i[r].firstDataIndex<=e)t=r;else l=r-1}return t},rt=(i,e,t)=>{if(i===0)return[];let l=[],r=null,s=0,n=0;for(let f=0;f<i;f++){let x=t?.(f);if(!x)continue;let c=e(f,x);if(r===null)r=c,s=0;else if(c!==r){let y=f-s;l.push({key:r,groupIndex:l.length,headerLayoutIndex:n,firstDataIndex:s,count:y}),n=n+1+y,r=c,s=f}}if(r!==null)l.push({key:r,groupIndex:l.length,headerLayoutIndex:n,firstDataIndex:s,count:i-s});return l},Dr=(i,e,t)=>{let l=rt(i,e.getGroupForIndex,t),r=i+l.length,s=e.header?.height??e.header?.width??e.headerHeight;return{get totalEntries(){return r},get groupCount(){return l.length},get groups(){return l},getEntry:(n)=>{if(l.length===0)return{type:"item",dataIndex:n,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let f=We(l,n),x=l[f];if(n===x.headerLayoutIndex)return{type:"header",group:x};let c=n-x.headerLayoutIndex-1;return{type:"item",dataIndex:x.firstDataIndex+c,group:x}},layoutToDataIndex:(n)=>{if(l.length===0)return n;let f=We(l,n),x=l[f];if(n===x.headerLayoutIndex)return-1;let c=n-x.headerLayoutIndex-1;return x.firstDataIndex+c},dataToLayoutIndex:(n)=>{if(l.length===0)return n;let f=tt(l,n),x=l[f],c=n-x.firstDataIndex;return x.headerLayoutIndex+1+c},getGroupAtLayoutIndex:(n)=>{if(l.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let f=We(l,n);return l[f]},getGroupAtDataIndex:(n)=>{if(l.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let f=tt(l,n);return l[f]},getHeaderHeight:typeof s==="number"?(n)=>s:(n)=>{let f=l[n];if(!f)return 0;return s(f.key,n)},rebuild:(n,f)=>{l=rt(n,e.getGroupForIndex,f??t),r=n+l.length}}},St=(i,e,t,l,r=0)=>{let s=t?"width":"height",n=document.createElement("div");return n.className=`${e}-sticky-header`,n.setAttribute("role","presentation"),n.setAttribute("aria-hidden","true"),n.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(t?`top:0;bottom:0;left:${r||0}px`:`top:${r||0}px`),n.style[s]=`${l}px`,i.insertBefore(n,i.firstChild),n},Or=(i,e,t,l,r,s=!1,n=0,f,x)=>{let c=s?"width":"height",y=s?"height":"width",W=s?"X":"Y",u=(Y,q)=>{Y.style[c]=`${q}px`},h=x??St(i,r,s,0,n),p=()=>{let Y=document.createElement("div");return Y.className="sticky-group",Y.style.position="absolute",Y.style.willChange="transform",Y.style[y]="100%",Y},z=p(),A=p();h.append(z,A);let d=z,v=A,_=e.groups,$=[],P=[],L=[],g=0,X=()=>{_=e.groups,g=_.length,$=Array(g),P=Array(g),L=Array(g);let Y=f?f():1;for(let q=0;q<g;q++)$[q]=t.getOffset(_[q].headerLayoutIndex)*Y,P[q]=e.getHeaderHeight(q),L[q]=P[q]*Y};X();let k=-1,F=0,C=0,S=-1,U=!1,V=0,D=!1,a=(Y,q)=>{l(Y,q);let Z=P[q];return u(Y,Z),Z},w=(Y)=>{Y.replaceChildren(),Y.style.transform=""},m=(Y)=>{if(Y===k)return;if(k=Y,F=0,C=0,Y<0||Y>=g){w(d);return}F=a(d,Y),C=L[Y],u(h,F),d.style.transform=""},I=(Y)=>{if(Y===V)return;V=Y;let q=Math.round(Y);d.style.transform=`translate${W}(${q}px)`,v.style.transform=`translate${W}(${q+F}px)`},E=()=>{V=0,d.style.transform="",v.style.transform=""},R=()=>{if(!D)return;let Y=d;d=v,v=Y,k=S,F=k>=0?P[k]:0,C=k>=0?L[k]:0,u(h,F),w(v),S=-1,D=!1,E()},H=()=>{if(!D)return;w(v),S=-1,D=!1,E()},B=!!x,O=()=>{if(U)return;if(U=!0,B)h.style.visibility="";else h.style.display=""},o=()=>{if(!U)return;if(U=!1,B)h.style.visibility="hidden";else h.style.display="none";w(d),k=-1,F=0,C=0,H()},b=(Y)=>{if(g===0){o();return}if(Y<$[0]){o();return}let q=0,Z=g-1;while(q<Z){let te=q+Z+1>>>1;if($[te]+L[te]<=Y)q=te;else Z=te-1}if(!U)O();m(q);let j=q+1;if(j<g){let te=$[j]-Y;if(te<=0&&te>-C){if(S!==j||!D)S=j,a(v,j),D=!0;let re=C>0?te/C*F:te;I(re)}else if(te<=-C){if(D)R()}else if(D)H()}else if(D)H()},T=()=>{X();let Y=k;if(k=-1,F=0,C=0,Y>=0)m(Y)},N=()=>{h.remove(),k=-1,F=0,C=0,S=-1,U=!1,D=!1};if(!x)h.style.display="none";return{update:b,refresh:T,show:O,hide:o,destroy:N}},Ce={selected:!1,focused:!1},it=typeof process<"u"&&process.env?.NODE_ENV!=="production";function Mt(i){if(!i.getGroupForIndex)throw Error("[vlist] groups: getGroupForIndex is required");let e=i.header?.height??i.header?.width??i.headerHeight;if(e==null||typeof e==="number"&&e<=0)throw Error("[vlist] groups: header height/width must be a positive number or function");let t=i.header?.template??i.headerTemplate;if(!t)throw Error("[vlist] groups: header.template is required");let l=t,r,s=null,n,f,x,c,y,W,u,h=null,p,z,A,d=null,v,_,$=null,P,L=new Map,g=new Set,X=new Map,k=-1,F=-1,C=!0,S=-1,U=0,V=null,D;function a(){return r.totalEntries}function w(){let o=f.totalItems;if(o===S)return;if(it)console.log(`[groups] syncLayout: ${S} → ${o}`);let b=S>0;S=o,r.rebuild(o,h??u),D(r.totalEntries);let T=n.getTotalSize();if(c.style[p?"width":"height"]=T+"px",s)s.refresh(),s.update(f.scrollPosition);if(b)E();let N=$?.("_scrollbar:getInstance");if(N)N()?.updateBounds(T,f.containerSize)}function m(o){let b=n.getOffset(o);if(p)return`translate(${Math.round(b)}px, 0)`;return`translate(0, ${Math.round(b)}px)`}function I(o,b){let T=n.getSize(b);if(p)o.style.width=`${T}px`;else o.style.height=`${T}px`}function E(){L.forEach((o)=>{o.remove();let b=o.getAttribute("data-id");if(b)X.set(b,o);else x.release(o)}),L.clear(),g.clear()}function R(){if(X.size>0)X.forEach((o)=>x.release(o)),X.clear()}function H(o,b,T,N){if(b.type==="header"){let re=`__group_header_${b.group.groupIndex}`;if(o.getAttribute("data-id")===re)return!0;o.className=_,o.setAttribute("role","presentation"),o.removeAttribute("aria-selected"),o.setAttribute("data-id",re);let oe=l(b.group.key,b.group.groupIndex);if(typeof oe==="string")o.innerHTML=oe;else o.innerHTML="",o.appendChild(oe);return!0}let Y=b.dataIndex,q=u(Y);if(!q)return o.innerHTML="",!1;let Z=q._isPlaceholder===!0,j=String(q.id);if(!Z&&o.getAttribute("data-id")===j){if(P)o.id=`${z}-item-${N}`,o.setAttribute("aria-posinset",String(Y+1)),o.setAttribute("aria-setsize",String(f.totalItems));return!0}if(o.className=v,o.setAttribute("role","option"),o.setAttribute("data-id",j),P)o.id=`${z}-item-${N}`,o.setAttribute("aria-posinset",String(Y+1)),o.setAttribute("aria-setsize",String(f.totalItems));if(Z)o.classList.add(`${z}-item--placeholder`);if(T)T(N,Ce);else Ce.selected=!1,Ce.focused=!1;let te=W(q,Y,Ce);if(typeof te==="string")o.innerHTML=te;else o.innerHTML="",o.appendChild(te);return!Z}function B(){if(f.destroyed)return;w();let{scrollPosition:o,containerSize:b}=f;if(!C&&o===k&&b===F)return;k=o,F=b;let T=C;C=!1;let N=a();if(b<=0||N===0){if(L.size>0)L.forEach((K)=>{K.remove(),x.release(K)}),L.clear(),g.clear();return}let Y=n.indexAtOffset(o),q=n.indexAtOffset(o+b);if(q<N-1)q++;Y=Math.max(0,Y),q=Math.min(N-1,Math.max(0,q));let Z=Math.max(0,Y-A),j=Math.min(N-1,q+A);if(Z===f.prevRangeStart&&j===f.prevRangeEnd&&!f.renderPending)return;L.forEach((K,ee)=>{if(ee<Z||ee>j)K.remove(),x.release(K),L.delete(ee),g.delete(ee)});let te=d?.()??null,re=te?`${z}-item--selected`:"",oe=te?`${z}-item--focused`:"",ae=null;for(let K=Z;K<=j;K++){let ee=L.get(K),ne=!1;if(ee===void 0){let le=r.getEntry(K);ne=le.type==="header";let ce;if(le.type==="header")ce=`__group_header_${le.group.groupIndex}`;else{let ge=u(le.dataIndex);if(ge&&ge._isPlaceholder!==!0)ce=String(ge.id)}if(ce!==void 0){let ge=X.get(ce);if(ge)X.delete(ce),ee=ge}if(!ee)ee=x.acquire();if(ee.setAttribute("data-index",String(K)),H(ee,le,te,K))g.delete(K);else g.add(K);if(I(ee,K),ee.style.transform=m(K),L.set(K,ee),!ae)ae=document.createDocumentFragment();ae.appendChild(ee)}else if(T&&g.has(K)){let le=r.getEntry(K);if(le.type==="item")if(H(ee,le,te,K))g.delete(K);else g.add(K)}else ne=ee.classList.contains(_);if(!ne&&te)if(te(K,Ce),ee.classList.toggle(re,Ce.selected),ee.classList.toggle(oe,Ce.focused),Ce.selected)ee.setAttribute("aria-selected","true");else ee.removeAttribute("aria-selected")}if(ae)c.appendChild(ae);R();let ue=n.getTotalSize();c.style[p?"width":"height"]=ue+"px",f.prevRangeStart=Z,f.prevRangeEnd=j,f.renderPending=!1;let me=0,ve=0,G=!1;for(let K=Z;K<=j&&me<f.capacity;K++){let ee=r.getEntry(K);if(ee.type==="item"){if(!G)ve=ee.dataIndex,G=!0;f.visibleIndices[me]=ee.dataIndex,f.visibleOffsets[me]=n.getOffset(K),f.visibleSizes[me]=n.getSize(K),me++}}f.visibleCount=me,f.startIndex=ve}function O(){if(f.destroyed)return;if(it)console.log(`[groups] forceRender, placeholders: ${g.size}, rendered: ${L.size}`);let o=V?.()??0;if(o!==U){U=o;let b=r.groups,T=b.length;r.rebuild(S,h??u);let N=r.groups,Y=N.length!==T;if(!Y){for(let q=0;q<T;q++)if(N[q].headerLayoutIndex!==b[q].headerLayoutIndex){Y=!0;break}}if(Y){D(r.totalEntries);let q=n.getTotalSize();if(c.style[p?"width":"height"]=q+"px",s)s.refresh(),s.update(f.scrollPosition);let Z=1/0,j=Math.min(T,N.length);for(let re=0;re<j;re++)if(N[re].headerLayoutIndex!==b[re].headerLayoutIndex){Z=Math.min(N[re].headerLayoutIndex,b[re].headerLayoutIndex);break}if(N.length>T&&j<N.length)Z=Math.min(Z,N[j].headerLayoutIndex);else if(T>N.length&&j<T)Z=Math.min(Z,b[j].headerLayoutIndex);if(Z<=f.prevRangeEnd)E();let te=$?.("_scrollbar:getInstance");if(te)te()?.updateBounds(q,f.containerSize)}}f.prevRangeStart=-1,f.prevRangeEnd=-1,f.renderPending=!0,C=!0,B()}return{name:"groups",priority:10,setup(o){n=o.sizeCache,f=o.getState(),x=o.pool,c=o.dom.content,y=o.dom.root,W=o.template,p=o.config.horizontal,z=o.config.classPrefix,A=o.config.overscan,u=o.getItem.bind(o),d=()=>o.getItemStateFn(),$=o.getMethod.bind(o),P=o.config.interactive,v=`${z}-item`,_=`${z}-group-header`,queueMicrotask(()=>{let q=$?.("_getLoadedItem");if(q)h=q;let Z=$?.("_getLoadedCount");if(Z)V=Z});let b=f.totalItems;r=Dr(b,i,h??u),S=b;let T=typeof e==="number"?(q)=>e:(q)=>{let Z=r.groups[q];if(!Z)return 0;return e(Z.key,q)},N=n.getSize,Y=(q)=>{let Z=r.getEntry(q);if(Z.type==="header"){if(i.sticky!==!1&&Z.group.groupIndex===0)return 0;return T(Z.group.groupIndex)}return N(Z.dataIndex)};if(o.setSizeConfig(Y),D=n.rebuild,n.rebuild=(q)=>{D(r.totalEntries)},n.rebuild(r.totalEntries),o.setVirtualTotalFn(()=>r.totalEntries),y.classList.add(`${z}--grouped`),i.sticky!==!1){let q=(te,re)=>{let oe=r.groups[re];if(!oe)return;let ae=l(oe.key,re);if(typeof ae==="string")te.innerHTML=ae;else te.replaceChildren(ae)},Z=r.getHeaderHeight(0),j=St(y,z,p,Z);if(s=Or(y,r,n,q,z,p,0,void 0,j),s.update(f.scrollPosition),!p)o.dom.viewport.style.height=`calc(100% - ${Z}px)`;else o.dom.viewport.style.width=`calc(100% - ${Z}px)`}o.setRenderFn(B,O),o.registerMethod("getGroupLayout",()=>r),o.registerMethod("_dataToLayoutIndex",(q)=>r.dataToLayoutIndex(q)),o.registerMethod("_layoutToDataIndex",(q)=>r.layoutToDataIndex(q)),o.registerMethod("_getRenderedElement",(q)=>L.get(q)??null),o.registerMethod("_isGroupHeader",(q)=>{return r.getEntry(q).type==="header"}),o.registerMethod("scrollToIndex",(q,Z="start")=>{let j=r.dataToLayoutIndex(q),te=r.totalEntries;if(te===0)return;let re=Math.max(0,Math.min(j,te-1)),oe=n.getOffset(re),ae=n.getSize(re),ue=f.containerSize,me=n.getTotalSize(),ve=Math.max(0,me-ue),G=typeof Z==="string"?Z:Z.align??"start",K=typeof Z==="object"?Z.behavior:void 0,ee=typeof Z==="object"?Z.duration:void 0,ne;switch(G){case"center":ne=oe-(ue-ae)/2;break;case"end":ne=oe-ue+ae;break;default:ne=oe}if(ne=Math.max(0,Math.min(ne,ve)),K==="smooth"&&ee&&ee>0)o.smoothScrollTo(ne,ee);else o.scrollTo(ne)}),o.registerDestroyHandler(()=>{for(let[,q]of L)q.remove();if(L.clear(),g.clear(),s)s.destroy(),s=null;y.classList.remove(`${z}--grouped`)})},hooks:{onAfterScroll(o,b){if(s)s.update(o)}},destroy(){if(s)s.destroy(),s=null;L.clear(),g.clear(),X.clear()}}}function Kr(i){let e=null,t=null,l=(s)=>{e=s},r=()=>t;return wt(()=>{if(!e)return;let s=i(),n=[];if(s.scroll?.element===window)n.push(vt());let f=s.item,x=s.orientation==="horizontal",c=x?f.width!=null:f.height!=null,y=x?f.estimatedWidth!=null:f.estimatedHeight!=null;if(!c&&y)n.push(xt());if(s.adapter)n.push(It({adapter:s.adapter,...s.loading&&{loading:s.loading}}));if(s.layout==="grid"&&s.grid)n.push(pt(s.grid));if(s.layout==="masonry"&&s.masonry)n.push(bt(s.masonry));if(s.groups){let h=s.groups,p=typeof h.headerHeight==="function"?h.headerHeight("",0):h.headerHeight;n.push(Mt({getGroupForIndex:h.getGroupForIndex,headerHeight:p,headerTemplate:h.headerTemplate,...h.sticky!==void 0&&{sticky:h.sticky}}))}if((s.selection?.mode||"none")!=="none")n.push(Ue(s.selection));else n.push(Ue({mode:"none"}));n.push(ht());let u=s.scroll?.scrollbar||s.scrollbar;if(u!=="none"){let h=typeof u==="object"?u:{};n.push(gt(h))}n.push(yt()),t=ct({...s,container:e},n)}),qr(Yr(()=>i().items,(s)=>{if(t&&s)t.setItems(s)})),zt(()=>{if(t)t.destroy(),t=null}),{setRef:l,instance:r}}function Xr(i,e,t){wt(()=>{let l=i();if(!l)return;let r=l.on(e,t);zt(()=>{r()})})}export{Xr as createVListEvent,Kr as createVList};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vlist-solidjs",
3
- "version": "1.5.4",
3
+ "version": "2.0.0",
4
4
  "description": "SolidJS primitives for vlist - lightweight virtual scrolling",
5
5
  "author": {
6
6
  "name": "Floor IO",
@@ -33,7 +33,7 @@
33
33
  "./package.json": "./package.json"
34
34
  },
35
35
  "peerDependencies": {
36
- "vlist": "^1.5.0",
36
+ "vlist": "^2.0.0",
37
37
  "solid-js": ">=1.0.0"
38
38
  },
39
39
  "files": [