vlist-vue 1.5.4 → 1.6.0

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