vlist-vue 1.6.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Vue composable for vlist - lightweight virtual scrolling
|
|
3
3
|
*/
|
|
4
4
|
import { type Ref, type ShallowRef } from "vue";
|
|
5
|
-
import type {
|
|
6
|
-
import {
|
|
7
|
-
export type { VListItem, VListEvents, VList,
|
|
8
|
-
export type UseVListConfig<T extends VListItem = VListItem> = Omit<
|
|
5
|
+
import type { VListItem, VListEvents, EventHandler } from "vlist";
|
|
6
|
+
import type { VList, CreateVListConfig } from "vlist";
|
|
7
|
+
export type { VListItem, VListEvents, VList, CreateVListConfig, ItemConfig, ItemTemplate, EventHandler, Unsubscribe, } from "vlist";
|
|
8
|
+
export type UseVListConfig<T extends VListItem = VListItem> = Omit<CreateVListConfig<T>, "container">;
|
|
9
9
|
export interface UseVListReturn<T extends VListItem = VListItem> {
|
|
10
10
|
containerRef: Ref<HTMLDivElement | null>;
|
|
11
11
|
instance: ShallowRef<VList<T> | null>;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import{ref as wt,shallowRef as Yr,onMounted as Wr,onBeforeUnmount as zt,watch as Lt,isRef as Br,unref as Kr}from"vue";var lt=3,Tt="vlist",Oe=50,Et=50,Pt=2,kt=15,Ft=6,Fe=16000000,Be=150,je=1,nt=(i)=>i<0.5?2*i*i:1-(-2*i+2)**2/2,ot=300,Ht="x",Rt=20,st="_isPlaceholder",Ee="__placeholder_",Re={top:0,right:0,bottom:0,left:0},_t=(i)=>{if(i==null)return Re;if(typeof i==="number")return i===0?Re:{top:i,right:i,bottom:i,left:i};if(i.length===2){let[s,o]=i;return s===0&&o===0?Re:{top:s,right:o,bottom:s,left:o}}let[t,r,l,e]=i;return t===0&&r===0&&l===0&&e===0?Re:{top:t,right:r,bottom:l,left:e}},Dt=(i,t)=>t?i.left+i.right:i.top+i.bottom,Ot=(i,t)=>t?i.top+i.bottom:i.left+i.right;function qt(i){let t={visibleIndices:new Int32Array(i),visibleOffsets:new Float64Array(i),visibleSizes:new Float64Array(i),visibleCount:0,startIndex:0,totalSize:0,capacity:i,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,isCompressed:!1,compressionRatio:1,prevAriaTotal:-1,resizeCapacity(r,l,e=lt){if(l<=0||r<=0)return;let s=Math.ceil(r/l)+e*2;if(s<=t.capacity)return;let o=s+8,f=new Int32Array(o),x=new Float64Array(o),c=new Float64Array(o);f.set(t.visibleIndices),x.set(t.visibleOffsets),c.set(t.visibleSizes),t.visibleIndices=f,t.visibleOffsets=x,t.visibleSizes=c,t.capacity=o},clear(){t.visibleCount=0,t.startIndex=0}};return t}var Yt=(i,t)=>{let r=t;return{getOffset:(l)=>l*i,getSize:(l)=>i,indexAtOffset:(l)=>{if(r===0||i===0)return 0;return Math.max(0,Math.min(Math.floor(l/i),r-1))},getTotalSize:()=>r*i,getTotal:()=>r,rebuild:(l)=>{r=l},isVariable:()=>!1}},Wt=(i,t)=>{let r=t,l=new Float64Array(0),e=(o)=>{r=o,l=new Float64Array(o+1),l[0]=0;for(let f=0;f<o;f++)l[f+1]=l[f]+i(f)};e(t);let s=(o)=>{if(r===0)return 0;if(o<=0)return 0;if(o>=l[r])return r-1;let f=0,x=r-1;while(f<x){let c=f+x+1>>>1;if(l[c]<=o)f=c;else x=c-1}return f};return{getOffset:(o)=>{if(o<=0)return 0;if(o>=r)return l[r];return l[o]},getSize:(o)=>i(o),indexAtOffset:(o)=>s(o),getTotalSize:()=>l[r]??0,getTotal:()=>r,rebuild:(o)=>e(o),isVariable:()=>!0}},Qe=(i,t)=>{if(typeof i==="number")return Yt(i,t);return Wt(i,t)},Bt=(i,t,r,l)=>{if(l===0)return 0;if(!i.isVariable())return Math.ceil(r/i.getSize(0));let e=0,s=0,o=t;while(o<l&&s<r)s+=i.getSize(o),e++,o++;return Math.max(1,e)};function Kt(i){let t=[],r=`${i}-item`,l=document.createElement("div");return l.className=r,{acquire(){if(t.length>0)return t.pop();return l.cloneNode(!1)},release(e){if(e.className=r,e.removeAttribute("style"),e.removeAttribute("id"),e.removeAttribute("role"),e.removeAttribute("aria-selected"),e.removeAttribute("aria-posinset"),e.removeAttribute("aria-setsize"),e.removeAttribute("data-index"),e.removeAttribute("data-id"),e.innerHTML="",t.length<100)t.push(e)},get size(){return t.length},clear(){t.length=0}}}function Ut(i){if(typeof i==="string"){let t=document.querySelector(i);if(!t)throw Error(`[vlist] Container not found: ${i}`);return t}return i}function Xt(i,t,r,l,e){let s=r?`${t} ${t}--horizontal`:t,o=r?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",f=r?"position:relative;height:100%":"position:relative;width:100%",x=` role="${l?"listbox":"list"}"`;if(l)x+=' tabindex="0"';if(e)x+=` aria-label="${e.replace(/"/g,""")}"`;if(r)x+=' aria-orientation="horizontal"';i.insertAdjacentHTML("beforeend",`<div class="${s}"><div class="${t}-viewport" style="${o}" tabindex="-1"><div class="${t}-content" style="${f}"${x}></div></div></div>`);let c=i.lastElementChild,y=c.firstElementChild,W=y.firstElementChild,d=document.createElement("div");return d.className=`${t}-live`,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",d.setAttribute("aria-live","polite"),d.setAttribute("aria-atomic","true"),d.setAttribute("role","status"),c.appendChild(d),{root:c,viewport:y,content:W,liveRegion:d}}function Vt(i){let{state:t,viewport:r,horizontal:l,wheelEnabled:e,onFrame:s,onIdle:o}=i,f=i.idleTimeout||Be,x=i.scrollTarget??r,c=null,y=null;function W(){let C=l?r.scrollLeft:r.scrollTop;if(Math.abs(C-t.scrollPosition)<0.5)return;t.prevScrollPosition=t.scrollPosition,t.scrollPosition=C,t.scrollDirection=C>t.prevScrollPosition?1:C<t.prevScrollPosition?-1:0,s(),h()}function d(C){if(t.isCompressed)return;let u;if(l){if(Math.abs(C.deltaX)>Math.abs(C.deltaY))return;let p=r.scrollLeft,R=r.scrollWidth-r.clientWidth;if(u=Math.max(0,Math.min(p+C.deltaY*je,R)),Math.abs(u-p)<1)return;C.preventDefault(),r.scrollLeft=u}else{let p=r.scrollWidth>r.clientWidth;if(p&&Math.abs(C.deltaX)>Math.abs(C.deltaY))return;if(p&&C.deltaX!==0)C.preventDefault(),r.scrollLeft+=C.deltaX;let R=r.scrollTop,$=r.scrollHeight-r.clientHeight;if(u=Math.max(0,Math.min(R+C.deltaY*je,$)),Math.abs(u-R)<1)return;C.preventDefault(),r.scrollTop=u}t.prevScrollPosition=t.scrollPosition,t.scrollPosition=u,t.scrollDirection=u>t.prevScrollPosition?1:-1,s(),h()}function h(){if(c!==null)clearTimeout(c);c=setTimeout(()=>{c=null,t.scrollDirection=0,o()},f)}function v(){if(y!==null)cancelAnimationFrame(y),y=null}function z(C,u,p,R=nt){v();let $=t.scrollPosition;if(Math.abs(C-$)<1){if(p)p(C);else if(l)r.scrollLeft=C;else r.scrollTop=C;return}let P=performance.now();function L(g){let X=g-P,k=Math.min(X/u,1),F=$+(C-$)*R(k);if(p)p(F);else if(l)r.scrollLeft=F;else r.scrollTop=F;if(!p)t.scrollPosition=F;if(s(),k<1)y=requestAnimationFrame(L);else y=null}y=requestAnimationFrame(L)}return{attach(){if(x.addEventListener("scroll",W,{passive:!0}),e)x.addEventListener("wheel",d,{passive:!1})},detach(){if(x.removeEventListener("scroll",W),e)x.removeEventListener("wheel",d);if(v(),c!==null)clearTimeout(c),c=null},cancelScroll:v,smoothScrollTo:z}}var ke=[],Nt={calculate:ke,commit:ke,afterScroll:ke,idle:ke,resize:ke};function jt(i){if(i.length===0)return Nt;let t=[],r=[],l=[],e=[],s=[];for(let o=0;o<i.length;o++){let f=i[o].hooks;if(f===void 0)continue;if(f.onCalculate!==void 0)t.push(f.onCalculate);if(f.onCommit!==void 0)r.push(f.onCommit);if(f.onAfterScroll!==void 0)l.push(f.onAfterScroll);if(f.onIdle!==void 0)e.push(f.onIdle);if(f.onResize!==void 0)s.push(f.onResize)}return{calculate:t,commit:r,afterScroll:l,idle:e,resize:s}}function Qt(i,t){for(let r=0;r<i.length;r++)i[r](t)}function Zt(i,t){for(let r=0;r<i.length;r++)i[r](t)}function Ze(i,t,r){for(let l=0;l<i.length;l++)i[l](t,r)}function Gt(i){for(let t=0;t<i.length;t++)i[t]()}function Jt(i,t,r){for(let l=0;l<i.length;l++)i[l](t,r)}function er(i,t,r,l,e,s,o,f,x){let c=e!==0||s!==0;return{prefix:i,selectedClass:`${i}-item--selected`,focusedClass:`${i}-item--focused`,placeholderClass:`${i}-item--placeholder`,replacedClass:`${i}-item--replaced`,translateProp:t?"translateX(":"translateY(",itemRole:r?"option":"listitem",interactive:r,horizontal:t,startPadding:l,gap:f,hasCrossPad:c,crossStartProp:c?t?"top":"left":"",crossEndProp:c?t?"bottom":"right":"",crossStartVal:c?e+"px":"",crossEndVal:c?s+"px":"",oddClass:o,emitter:x??null}}function tr(i,t,r,l,e){if(i.containerSize<=0||i.totalItems===0)return i.clear(),!0;let{scrollPosition:s,containerSize:o,totalItems:f}=i,x=e??0;i.totalSize=t.getTotalSize();let c=t.indexAtOffset(x>0?Math.max(0,s-x):s),y=t.indexAtOffset(s+o);if(y<f-1)y++;c=Math.max(0,c),y=Math.min(f-1,Math.max(0,y));let W=Math.max(0,c-r),d=Math.min(f-1,y+r),h=Math.ceil(o/1)+r*2+10,v=d-W+1,z=Math.min(v,i.capacity,h);if(W===i.prevRangeStart&&d===i.prevRangeEnd&&!i.renderPending)return!1;i.visibleCount=z,i.startIndex=W;for(let C=0;C<z;C++){let u=W+C;i.visibleIndices[C]=u,i.visibleOffsets[C]=t.getOffset(u),i.visibleSizes[C]=t.getSize(u)}return Qt(l.calculate,i),i.prevRangeStart=W,i.prevRangeEnd=d,i.renderPending=!1,!0}var Ie={selected:!1,focused:!1};function rr(i,t,r){for(let l=0;l<t;l++)if(i[l]===r)return!0;return!1}var at,dt,ut,ft;function ir(i,t){if(!rr(at,dt,t))i.remove(),ut.release(i),ft.delete(t)}function lr(i,t,r,l,e,s,o,f,x,c){let y=x?null:e(),W=i.visibleCount,d=i.visibleIndices,h=o.interactive?String(i.totalItems):"",v=o.interactive&&i.totalItems!==i.prevAriaTotal,z=null;for(let C=0;C<W;C++){let u=d[C],p=i.visibleOffsets[C],R=i.visibleSizes[C],$=x?x(u):y[u];if(c)c(u,Ie);else Ie.selected=!1,Ie.focused=!1;let P=s.get(u),L=P;if(P===void 0){let g=t.acquire();if($!==void 0){let F;try{F=l($,u,Ie)}catch(A){if(o.emitter)o.emitter.emit("error",{error:A instanceof Error?A:Error(String(A)),context:`template:render:${u}`});t.release(g);continue}if(typeof F==="string")g.innerHTML=F;else g.innerHTML="",g.appendChild(F)}if(g.setAttribute("role",o.itemRole),g.setAttribute("data-index",String(u)),o.interactive)g.id=o.prefix+"-item-"+u,g.setAttribute("aria-posinset",String(u+1)),g.setAttribute("aria-setsize",h);if($!==void 0){let F=String($.id);if(g.setAttribute("data-id",F),F.startsWith(Ee))g.classList.add(o.placeholderClass)}if(o.hasCrossPad)g.style.setProperty(o.crossStartProp,o.crossStartVal),g.style.setProperty(o.crossEndProp,o.crossEndVal);if(c){if(g.classList.toggle(o.selectedClass,Ie.selected),g.classList.toggle(o.focusedClass,Ie.focused),Ie.selected)g.setAttribute("aria-selected","true");else g.removeAttribute("aria-selected");g._lastSelected=Ie.selected,g._lastFocused=Ie.focused}if(o.oddClass)g.classList.toggle(o.oddClass,(u&1)===1);let X=p+o.startPadding;g.style.transform=o.translateProp+X+"px)",g._lastOffset=X;let k=R-o.gap;if(o.horizontal)g.style.width=k+"px";else g.style.height=k+"px";if(g._lastSize=k,g._lastItem=$,s.set(u,g),z===null)z=document.createDocumentFragment();z.appendChild(g)}else{if(v)P.setAttribute("aria-setsize",h);if($!==void 0&&L._lastItem!==$){let k=P.getAttribute("data-id"),F=String($.id),A;try{A=l($,u,Ie)}catch(I){if(o.emitter)o.emitter.emit("error",{error:I instanceof Error?I:Error(String(I)),context:`template:render:${u}`});continue}if(typeof A==="string")P.innerHTML=A;else P.innerHTML="",P.appendChild(A);if(P.setAttribute("data-id",F),L._lastItem=$,k!==F){let I=k!==null&&k.startsWith(Ee),K=F.startsWith(Ee);if(I!==K)P.classList.toggle(o.placeholderClass,K);if(I&&!K)P.classList.add(o.replacedClass),setTimeout(()=>{P.classList.remove(o.replacedClass)},300)}}if(c){if(L._lastSelected!==Ie.selected){if(P.classList.toggle(o.selectedClass,Ie.selected),Ie.selected)P.setAttribute("aria-selected","true");else P.removeAttribute("aria-selected");L._lastSelected=Ie.selected}if(L._lastFocused!==Ie.focused)P.classList.toggle(o.focusedClass,Ie.focused),L._lastFocused=Ie.focused}let g=p+o.startPadding;if(L._lastOffset!==g)P.style.transform=o.translateProp+g+"px)",L._lastOffset=g;let X=R-o.gap;if(L._lastSize!==X){if(o.horizontal)P.style.width=X+"px";else P.style.height=X+"px";L._lastSize=X}}}if(z!==null)r.appendChild(z);if(at=d,dt=W,ut=t,ft=s,s.forEach(ir),o.interactive)i.prevAriaTotal=i.totalItems;Zt(f.commit,i)}function Ge(i,t,r,l,e,s,o,f,x,c,y,W){if(tr(i,t,r,c,x.startPadding))lr(i,l,e,s,o,f,x,c,y,W)}var nr=()=>{let i={},t=(l,e)=>{if(!i[l])i[l]=new Set;return i[l].add(e),()=>r(l,e)},r=(l,e)=>{i[l]?.delete(e)};return{on:t,off:r,emit:(l,e)=>{i[l]?.forEach((s)=>{try{s(e)}catch(o){console.error(`[vlist] Error in event handler for "${String(l)}":`,o)}})},clear:(l)=>{if(l)delete i[l];else for(let e in i)delete i[e]}}},or=2,sr=(i=0)=>({velocity:0,sampleCount:0}),ar=(i,t)=>{let r=performance.now(),l=i._lt??r,e=i._lp??t,s=r-l;if(i._lp=t,i._lt=r,s===0)return i.sampleCount=Math.min(i.sampleCount+1,5),i;if(s>100)return i.velocity=0,i.sampleCount=1,i;return i.velocity=Math.abs(t-e)/s,i.sampleCount=Math.min(i.sampleCount+1,5),i};function dr(i){let{item:t}=i;if(t.height!==void 0&&typeof t.height==="number"){if(!Number.isFinite(t.height)||t.height<=0)throw Error(`vlist: item.height must be a positive number, got ${t.height}`)}if(t.width!==void 0&&typeof t.width==="number"){if(!Number.isFinite(t.width)||t.width<=0)throw Error(`vlist: item.width must be a positive number, got ${t.width}`)}if(t.estimatedHeight!==void 0){if(!Number.isFinite(t.estimatedHeight)||t.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${t.estimatedHeight}`)}if(t.estimatedWidth!==void 0){if(!Number.isFinite(t.estimatedWidth)||t.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${t.estimatedWidth}`)}if(t.gap!==void 0){if(typeof t.gap!=="number"||!Number.isFinite(t.gap)||t.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${t.gap}`)}if(i.overscan!==void 0){if(typeof i.overscan!=="number"||!Number.isFinite(i.overscan)||i.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${i.overscan}`)}}function ur(i){let t=i.orientation==="horizontal",r=_t(i.padding);return{overscan:i.overscan??lt,horizontal:t,reverse:i.reverse??!1,classPrefix:i.classPrefix??Tt,interactive:i.interactive??!0,mainAxisPadding:Dt(r,t),crossAxisPadding:Ot(r,t),startPadding:t?r.left:r.top,endPadding:t?r.right:r.bottom,crossPadStart:t?r.top:r.left,crossPadEnd:t?r.bottom:r.right,striped:i.item.striped||!1,gap:i.item.gap??0}}function fr(i,t){if(t)return i.item.width??i.item.estimatedWidth??100;return i.item.height??i.item.estimatedHeight??40}function cr(i){let t=[...i];return t.sort((r,l)=>(r.priority??50)-(l.priority??50)),t}function mr(i){let t=new Set;for(let r of i){if(t.has(r.name))throw Error(`[vlist] Duplicate plugin: ${r.name}`);t.add(r.name)}for(let r of i)if(r.conflicts){for(let l of r.conflicts)if(t.has(l))throw Error(`[vlist] Plugin "${r.name}" conflicts with "${l}"`)}}function ct(i,t=[]){dr(i);let r=ur(i),l=fr(i,r.horizontal),e=r.gap,s=e>0?typeof l==="function"?(Q)=>l(Q)+e:l+e:l,o=typeof l==="number"?l:20,f=i.items?.length??0,x=r.striped?`${r.classPrefix}-item--odd`:"",c=nr(),y=er(r.classPrefix,r.horizontal,r.interactive,r.startPadding,r.crossPadStart,r.crossPadEnd,x,e,c),W=t.length>0?cr(t):t;if(t.length>0)mr(W);let d=Ut(i.container),h=Xt(d,r.classPrefix,r.horizontal,r.interactive,i.ariaLabel);if(i.scroll?.scrollbar==="none")h.viewport.classList.add(`${r.classPrefix}-viewport--no-scrollbar`);if(i.scroll?.gutter==="stable")h.viewport.classList.add(`${r.classPrefix}-viewport--gutter-stable`);let v=Qe(s,f);if(e>0){let Q=v.getTotalSize;v.getTotalSize=()=>{let M=Q();return M>0?M-e:0}}let z=Kt(r.classPrefix),C=Math.ceil(4096/o)+r.overscan*2+8,u=qt(C);u.totalItems=f;let p=i.items??[],R=()=>p,$=new Map,P=sr(),L={velocity:0,reliable:!1},g={range:{start:0,end:-1}},X={scrollPosition:0,direction:"down"},k={scrollPosition:0},F=-1,A=-1,I=-1,K=null,V=jt(W),D=new Map,a=[],w=[],m=[],S=null,E=null,_=null,H=null,B=null,O=null,n=null,b=null,T=null,N=null,Y=!1,q=!1,Z=null,j=0,te=0,re=null,oe=null,ae=null,ue=null,me=null;if(u.containerSize=r.horizontal?h.viewport.clientWidth:h.viewport.clientHeight,u.crossSize=r.horizontal?h.viewport.clientHeight:h.viewport.clientWidth,t.length>0){let Q={dom:h,sizeCache:v,pool:z,config:r,emitter:c,template:i.item.template,registerMethod(M,J){D.set(M,J)},getMethod(M){return D.get(M)},registerClickHandler(M){a.push(M)},registerKeydownHandler(M){w.push(M)},registerDestroyHandler(M){m.push(M)},setSizeConfig(M){let J=Qe(M,u.totalItems);Object.assign(v,J)},setVisibleRangeFn(M){},setScrollFns(M,J){E=M,_=J},setVirtualTotalFn(M){S=M},getItems:R,getItem(M){return O?O(M):p[M]},getState(){return u},rebuildSizeCache(){v.rebuild(u.totalItems)},updateContentSize(M){h.content.style[r.horizontal?"width":"height"]=M+r.mainAxisPadding+"px"},setRenderFn(M,J){H=M,B=J},renderIfNeeded(){ce()},forceRender(){se()},setGetItemFn(M){O=M},setItemStateFn(M){n=M},getItemStateFn(){return n},get rawSizeSpec(){return l},scrollTo(M){if(_)_(M);else if(r.horizontal)h.viewport.scrollLeft=M;else h.viewport.scrollTop=M},smoothScrollTo(M,J,de){if(ae)ae(M,J,void 0,de);else Q.scrollTo(M)},disableDefaultScroll(){Y=!0},disableDefaultResize(){q=!0},setScrollTarget(M){Z=M},setScrollToPosFn(M){ue=M},setScrollToIndexFn(M){me=M},onScrollFrame:ge,onScrollIdle:ze,removeItemById(M){if(b)return b(M);let J=p.findIndex((de)=>de.id===M);if(J===-1)return-1;return p.splice(J,1),u.totalItems=p.length,v.rebuild(u.totalItems),le(),J},insertItemAt(M,J){if(T){T(M,J);return}p.splice(J,0,M),u.totalItems=p.length,v.rebuild(u.totalItems),le()},setRemoveItemFn(M){b=M},setInsertItemFn(M){T=M},setUpdateItemFn(M){N=M},getRenderedElement(M){let J=D.get("_getRenderedElement");if(J)return J(M);return $.get(M)??null},setNavConfig(M){if(M.ud!==void 0)j=M.ud;if(M.lr!==void 0)te=M.lr;if(M.scrollIndex)re=M.scrollIndex;if(M.navigate)oe=M.navigate},getNavConfig:(()=>{let M={ud:0,lr:0,scrollIndex:null,navigate:null};return()=>{return M.ud=j,M.lr=te,M.scrollIndex=re,M.navigate=oe,M}})()};for(let M of W)if(M.setup)try{M.setup(Q)}catch(J){c.emit("error",{error:J instanceof Error?J:Error(String(J)),context:`plugin:setup:${M.name}`})}}let ve=r.classPrefix+"--scrolling",G=!1,U=i.scroll?.idleTimeout??Be;function ee(){if(X.scrollPosition=u.scrollPosition,X.direction=u.scrollDirection>0?"down":"up",c.emit("scroll",X),ar(P,u.scrollPosition),L.velocity=P.velocity,L.reliable=P.sampleCount>=or,c.emit("velocity:change",L),u.startIndex!==F||u.prevRangeEnd!==A)F=u.startIndex,A=u.prevRangeEnd,g.range.start=u.startIndex,g.range.end=u.prevRangeEnd,c.emit("range:change",g)}let ne=!1;function le(){if(H)return;let Q=v.getTotalSize();if(h.content.style[r.horizontal?"width":"height"]=Q+r.mainAxisPadding+"px",!ne&&Q>Fe)ne=!0,c.emit("error",{error:Error(`Content size (${Q}px) exceeds browser limit (${Fe}px). Use the scale() plugin for large datasets.`),context:"content:size:overflow"})}function ce(){if(H)H();else Ge(u,v,r.overscan,z,h.content,i.item.template,R,$,y,V,O,n)}function ge(){if(!G)G=!0,h.root.classList.add(ve);if(ce(),Ze(V.afterScroll,u.scrollPosition,u.scrollDirection),u.scrollPosition!==I)I=u.scrollPosition,ee()}function ze(){if(G)G=!1,h.root.classList.remove(ve);u.scrollDirection=0,Gt(V.idle),L.velocity=0,L.reliable=!1,c.emit("velocity:change",L),k.scrollPosition=u.scrollPosition,c.emit("scroll:idle",k)}function se(){if(u.renderPending=!0,B)B();else Ge(u,v,r.overscan,z,h.content,i.item.template,R,$,y,V,O,n);if(Ze(V.afterScroll,u.scrollPosition,u.scrollDirection),u.scrollPosition!==I){if(I=u.scrollPosition,ee(),K!==null)clearTimeout(K);K=setTimeout(ze,U)}}let ye=Vt({state:u,viewport:h.viewport,horizontal:r.horizontal,wheelEnabled:Y?!1:i.scroll?.wheel!==!1,idleTimeout:i.scroll?.idleTimeout??Be,...Z?{scrollTarget:Z}:{},onFrame:ge,onIdle:ze});ae=ye.smoothScrollTo;function Se(Q){let M=Q.target.closest("[data-index]");if(!M)return null;let J=parseInt(M.getAttribute("data-index"),10);if(Number.isNaN(J))return null;let de=p[J];if(de===void 0)return null;return{item:de,index:J}}function we(Q){for(let J=0;J<a.length;J++)a[J](Q);let M=Se(Q);if(M)c.emit("item:click",{item:M.item,index:M.index,event:Q})}function he(Q){let M=Se(Q);if(M)c.emit("item:dblclick",{item:M.item,index:M.index,event:Q})}function be(Q){let M=Se(Q);if(M)c.emit("item:contextmenu",{item:M.item,index:M.index,event:Q})}function pe(Q){for(let M=0;M<w.length;M++)w[M](Q)}if(h.content.addEventListener("click",we),h.content.addEventListener("dblclick",he),h.content.addEventListener("contextmenu",be),w.length>0)h.content.addEventListener("keydown",pe);let Me=null;if(!q)setTimeout(()=>{if(u.destroyed)return;Me=new ResizeObserver((Q)=>{for(let M of Q){let{width:J,height:de}=M.contentRect,xe=r.horizontal?J:de,$e=r.horizontal?de:J;if(Math.abs(xe-u.containerSize)<1&&Math.abs($e-u.crossSize)<1)continue;u.containerSize=xe,u.crossSize=$e,u.resizeCapacity(xe,o,r.overscan),se(),Jt(V.resize,J,de),c.emit("resize",{width:J,height:de})}}),Me.observe(h.viewport)},0);u.resizeCapacity(u.containerSize,o,r.overscan),le(),u.initialized=!0;let ie=null;if(i.defer)ie=requestAnimationFrame(()=>{if(ie=null,!u.destroyed)ce()});else ce();if(!Y)ye.attach();let fe={get element(){return h.root},get items(){return p},get total(){return S?S():p.length},setItems(Q){p=[...Q],u.totalItems=p.length,v.rebuild(u.totalItems),le(),se()},appendItems(Q){p.push(...Q),u.totalItems=p.length,v.rebuild(u.totalItems),le(),se()},prependItems(Q){p.unshift(...Q),u.totalItems=p.length,v.rebuild(u.totalItems),le(),se()},updateItem(Q,M){if(N){if(!N(Q,M))return}else{let J=p.findIndex((de)=>de.id===Q);if(J===-1)return;p[J]={...p[J],...M}}se()},insertItem(Q,M){if(T)T(Q,M??u.totalItems);else{if(M===void 0)p.push(Q);else p.splice(M,0,Q);u.totalItems=p.length,v.rebuild(u.totalItems),le()}se()},removeItem(Q){if(b){if(b(Q)<0)return}else{let M=p.findIndex((J)=>J.id===Q);if(M===-1)return;p.splice(M,1),u.totalItems=p.length,v.rebuild(u.totalItems),le()}se()},removeItems(Q){if(b){let xe=0;for(let $e of Q)if(b($e)>=0)xe++;if(xe>0)se();return xe}let M=new Set(Q),J=p.length;p=p.filter((xe)=>!M.has(xe.id));let de=J-p.length;if(de>0)u.totalItems=p.length,v.rebuild(u.totalItems),le(),u.renderPending=!0,ce();return de},getItemAt(Q){return p[Q]},getIndexById(Q){return p.findIndex((M)=>M.id===Q)},scrollToIndex(Q,M="start"){let J=S?S():p.length;if(J===0)return;let de=Math.max(0,Math.min(Q,J-1)),xe=typeof M==="string"?M:M.align??"start",$e=typeof M==="object"?M.behavior:void 0,Ue=typeof M==="object"?M.duration:void 0,Xe=typeof M==="object"?M.easing:void 0;if(me&&me(de,xe,$e,Ue,Xe)!==!1)return;let De=v.getOffset(de),Ve=v.getSize(de),He=u.containerSize,Ct=v.getTotalSize(),Ne=r.mainAxisPadding,At=Math.max(0,Ct+Ne-He),Le;if(ue)Le=ue(de,v,He,J,xe);else{let $t=r.startPadding;switch(xe){case"center":Le=$t+De-(He-Ve)/2;break;case"end":Le=De+Ve+Ne-He;break;default:Le=De}Le=Math.max(0,Math.min(Le,At))}if($e==="smooth")ye.smoothScrollTo(Le,Ue??ot,_??void 0,Xe);else if(_)_(Le);else if(r.horizontal)h.viewport.scrollLeft=Le;else h.viewport.scrollTop=Le},getScrollPosition(){return E?E():u.scrollPosition},on:c.on.bind(c),off:c.off.bind(c),destroy(){if(u.destroyed)return;if(u.destroyed=!0,G)G=!1,h.root.classList.remove(ve);if(ie!==null)cancelAnimationFrame(ie),ie=null;if(K!==null)clearTimeout(K),K=null;ye.detach(),Me?.disconnect(),h.content.removeEventListener("click",we),h.content.removeEventListener("dblclick",he),h.content.removeEventListener("contextmenu",be),h.content.removeEventListener("keydown",pe);let Q=[];for(let M of m)try{M()}catch(J){Q.push(J instanceof Error?J:Error(String(J)))}for(let M of W)if(M.destroy)try{M.destroy()}catch(J){Q.push(J instanceof Error?J:Error(String(J)))}for(let[,M]of $)M.remove();if($.clear(),z.clear(),h.root.remove(),c.emit("destroy",void 0),c.clear(),Q.length>0)for(let M of Q)console.error("vlist: error during destroy:",M)}};for(let[Q,M]of D)fe[Q]=M;return fe}var hr=(i,t,r)=>{let l=t.getTotalSize(),e=r===!0||l>Fe,s=l>Fe?Fe:l,o=l>0?s/l:1;return{isCompressed:e,actualSize:l,virtualSize:s,ratio:o}},gr=(i,t,r,l,e,s)=>{if(l===0||t===0)return s.start=0,s.end=-1,s;if(!e.isCompressed||e.ratio===1){let h=r.indexAtOffset(i),v=r.indexAtOffset(i+t);if(v<l-1)v++;return s.start=Math.max(0,h),s.end=Math.min(l-1,Math.max(0,v)),s}let{virtualSize:o}=e,f=i/o,x=r.getTotalSize(),c=f*x,y=r.indexAtOffset(c),W=Bt(r,Math.max(0,y),t,l),d=y+W;return s.start=Math.max(0,y),s.end=Math.min(l-1,Math.max(0,d)),s},pr=(i,t,r,l,e,s,o)=>{if(!s.isCompressed||l===0)return r.getOffset(i);if(s.ratio===1)return r.getOffset(i)-t;let{virtualSize:f}=s,x=t/f,c=r.getTotalSize(),y=x*c;return r.getOffset(i)-y},vr=(i,t,r,l,e,s="start")=>{if(l===0)return 0;let o;if(e.isCompressed&&e.ratio!==1){o=i/l*e.virtualSize;let c=t.getSize(i);switch(s){case"center":o-=(r-c)/2*e.ratio;break;case"end":o-=(r-c)*e.ratio;break}return Math.max(0,o)}o=t.getOffset(i);let f=t.getSize(i);switch(s){case"center":o-=(r-f)/2;break;case"end":o-=r-f;break}let x=e.virtualSize-r;return Math.max(0,Math.min(o,x))},yr=(i)=>{if(typeof i!=="object"){let t=i??2;return{top:t,right:t,bottom:t,left:t}}return{top:i.top??2,right:i.right??2,bottom:i.bottom??2,left:i.left??2}},mt=(i,t,r={},l="vlist",e=!1,s)=>{let{autoHide:o=!0,autoHideDelay:f=1000,minThumbSize:x=15,showOnHover:c=!0,showOnViewportEnter:y=!0,clickBehavior:W="scroll"}=r,d=W==="page"?"scroll":W,h=s??i,v=yr(r.padding),z=e?v.left:v.top,C=e?v.right:v.bottom,u=e?v.bottom:v.right,p=r.hoverZoneWidth??u+16,R=0,$=0,P=0,L=0,g=!1,X=!1,k=0,F=0,A=0,I=null,K=!1,V=null,D=0,a=0,w=null,m=null,S=null,E=e?"width":"height",_=e?"translateX":"translateY",H=e?(ie)=>ie.clientX:(ie)=>ie.clientY,B=e?"left":"top",O=document.createElement("div"),n=document.createElement("div"),b=document.createElement("div"),T=e?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",N=()=>{if(h===i)return;let ie=i.offsetTop;O.style[e?"left":"top"]=ie?`calc(var(${T}) + ${ie}px)`:`var(${T})`,b.style[e?"left":"top"]=`${ie}px`},Y=()=>{if(O.className=`${l}-scrollbar`,n.className=`${l}-scrollbar__thumb`,e)O.classList.add(`${l}-scrollbar--horizontal`);if(r.padding!==void 0)h.style.setProperty("--vlist-custom-scrollbar-padding-top",`${v.top}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-right",`${v.right}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${v.bottom}px`),h.style.setProperty("--vlist-custom-scrollbar-padding-left",`${v.left}px`);if(r.minThumbSize!==void 0)O.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${x}px`);if(O.appendChild(n),h.appendChild(O),b.className=`${l}-scrollbar__hover`,e)b.classList.add(`${l}-scrollbar__hover--horizontal`),b.style.height=`${p}px`;else b.style.width=`${p}px`;if(h.appendChild(b),h!==i)N()},q=()=>{if(I)clearTimeout(I),I=null},Z=()=>{if(!o)return;q(),I=setTimeout(te,f)},j=()=>{if(R<=$)return;if(q(),!K)O.classList.add(`${l}-scrollbar--visible`),K=!0;if(o&&!g&&!X)Z()},te=()=>{if(g||X)return;O.classList.remove(`${l}-scrollbar--visible`),K=!1},re=(ie,fe)=>{if(R=ie,$=fe,N(),R<=$){O.style.display="none",te();return}O.style.display="";let Q=Math.max(0,$-z-C),M=$/R;if(P=Math.max(x,M*Q),n.style[E]=`${P}px`,L=Q-P,oe(A),!o)j()},oe=(ie)=>{if(A=ie,R<=$||L<=0)return;let fe=R-$,Q=Math.min(1,Math.max(0,ie/fe));n.style.transform=`${_}(${Q*L}px)`},ae=(ie)=>{if(ie.target===n||d!=="jump"||L<=0)return;let fe=R-$,Q=O.getBoundingClientRect(),M=H(ie)-Q[B],J=Math.max(0,Math.min(M-P/2,L));t(J/L*fe),j()},ue=()=>{if(w!==null)clearTimeout(w),w=null;if(m!==null)cancelAnimationFrame(m),m=null;S=null},me=(ie)=>{let fe=L>0?a/ie*L:0;if(D<fe)return-1;if(D>=fe+P)return 1;return 0},ve=()=>{let ie=R-$,fe=me(ie);if(fe===0){ue();return}if(fe===-1){if(a<=0){ue();return}let Q=Math.max(0,a-$);a=Q,t(Q)}else{if(a>=ie){ue();return}let Q=Math.min(ie,a+$);a=Q,t(Q)}j()},G=(ie)=>{if(S===null){S=ie,m=requestAnimationFrame(G);return}let fe=R-$,Q=ie-S;S=ie;let M=me(fe);if(M===0){ue();return}let J=12*$/1000,de=Math.min(J*Q,$);if(M===-1){if(a<=0){ue();return}let xe=Math.max(0,a-de);a=xe,t(xe)}else{if(a>=fe){ue();return}let xe=Math.min(fe,a+de);a=xe,t(xe)}q(),m=requestAnimationFrame(G)},U=()=>{ue(),Z(),document.removeEventListener("mouseup",U)},ee=(ie)=>{if(ie.target===n||d!=="scroll")return;ie.preventDefault();let fe=O.getBoundingClientRect();D=H(ie)-fe[B],a=A,ve(),w=setTimeout(()=>{m=requestAnimationFrame(G)},350),document.addEventListener("mouseup",U)},ne=(ie)=>{ie.preventDefault(),ie.stopPropagation(),g=!0,k=H(ie),F=A,q(),O.classList.add(`${l}-scrollbar--dragging`),document.addEventListener("mousemove",le),document.addEventListener("mouseup",ce)},le=(ie)=>{if(!g)return;let fe=H(ie)-k,Q=L>0?fe/L:0,M=R-$,J=Q*M,de=Math.max(0,Math.min(F+J,M));n.style.transform=`${_}(${de/M*L}px)`,t(de)},ce=()=>{if(g=!1,O.classList.remove(`${l}-scrollbar--dragging`),o&&!X)Z();document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ce)},ge=e?(ie)=>ie.touches[0].clientX:(ie)=>ie.touches[0].clientY,ze=(ie)=>{ie.stopPropagation(),g=!0,k=ge(ie),F=A,q(),O.classList.add(`${l}-scrollbar--dragging`)},se=(ie)=>{if(!g)return;ie.preventDefault();let fe=ge(ie)-k,Q=L>0?fe/L:0,M=R-$,J=Q*M,de=Math.max(0,Math.min(F+J,M));n.style.transform=`${_}(${de/M*L}px)`,t(de)},ye=()=>{if(g=!1,O.classList.remove(`${l}-scrollbar--dragging`),o)Z()},Se=(ie)=>{if(ie.target===n)return;if(L<=0)return;let fe=ie.touches[0],Q=O.getBoundingClientRect(),M=(e?fe.clientX:fe.clientY)-Q[B];if(d==="jump"){let J=R-$,de=Math.max(0,Math.min(M-P/2,L));t(de/L*J)}else D=M,a=A,ve();j()},we=()=>{if(y)j()},he=()=>{if(!g){if(X=!1,o)Z()}},be=()=>{X=!0,q(),j()},pe=()=>{if(X=!1,!g&&o)Z()},Me=()=>{if(q(),ue(),V!==null)cancelAnimationFrame(V),V=null;O.removeEventListener("click",ae),O.removeEventListener("mousedown",ee),O.removeEventListener("mouseenter",be),document.removeEventListener("mouseup",U),O.removeEventListener("mouseleave",pe),O.removeEventListener("touchstart",Se),n.removeEventListener("mousedown",ne),n.removeEventListener("touchstart",ze),n.removeEventListener("touchmove",se),n.removeEventListener("touchend",ye),i.removeEventListener("mouseenter",we),i.removeEventListener("mouseleave",he),document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",ce),b.removeEventListener("click",ae),b.removeEventListener("mousedown",ee),b.removeEventListener("mouseenter",be),b.removeEventListener("mouseleave",pe),b.remove(),h.style.removeProperty("--vlist-custom-scrollbar-padding-top"),h.style.removeProperty("--vlist-custom-scrollbar-padding-right"),h.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),h.style.removeProperty("--vlist-custom-scrollbar-padding-left"),O.remove()};if(Y(),O.addEventListener("click",ae),O.addEventListener("mousedown",ee),O.addEventListener("mouseenter",be),O.addEventListener("mouseleave",pe),O.addEventListener("touchstart",Se,{passive:!0}),n.addEventListener("mousedown",ne),n.addEventListener("touchstart",ze,{passive:!0}),n.addEventListener("touchmove",se,{passive:!1}),n.addEventListener("touchend",ye,{passive:!0}),i.addEventListener("mouseenter",we),i.addEventListener("mouseleave",he),b.addEventListener("click",ae),b.addEventListener("mousedown",ee),c)b.addEventListener("mouseenter",be),b.addEventListener("mouseleave",pe);return{show:j,hide:te,updateBounds:re,updatePosition:oe,isVisible:()=>K,destroy:Me}},xr=0.65,Je=0.5,et=1.7,br=0.95,Sr=0.1,Pe=5,Ir=100;function ht(i){let t=i?.force??!1,r,l,e,s,o,f={isCompressed:!1,actualSize:0,virtualSize:0,ratio:1},x=!1,c=0,y=null,W=!1,d=0,h=0,v=null,z=null,C=0,u=0,p=null,R=new Float64Array(Pe),$=new Float64Array(Pe),P=0,L=0,g={start:0,end:-1},X=-1,k=null;function F(){return Math.max(0,f.virtualSize+c-r.containerSize)}function A(){if(f.virtualSize<=0)return 0;return Math.max(0,r.containerSize*(1-f.ratio))}function I(n){let b=r.totalItems;if(f=hr(b,l,t),f.isCompressed&&!x)H(n);else if(!f.isCompressed&&x)B(n);if(f.isCompressed){if(c=A(),r.isCompressed=!0,r.compressionRatio=f.ratio,n.updateContentSize(f.virtualSize+c),y)y.updateBounds(f.virtualSize+c,r.containerSize)}}let K=null,V=null,D=null,a=null,w=null;function m(n){d=n,h=n,r.prevScrollPosition=r.scrollPosition,r.scrollPosition=n,r.scrollDirection=n>r.prevScrollPosition?1:-1,k.forceRender()}function S(){if(v!==null)cancelAnimationFrame(v),v=null;if(z!==null)cancelAnimationFrame(z),z=null}function E(n){S(),m(Math.max(0,Math.min(n,F())))}function _(n,b,T=nt){S();let N=Math.max(0,Math.min(n,F())),Y=d;if(Math.abs(N-Y)<Je){m(N);return}let q=performance.now(),Z=(j)=>{let te=Math.min((j-q)/b,1);if(m(Y+(N-Y)*T(te)),te<1)z=requestAnimationFrame(Z);else z=null};z=requestAnimationFrame(Z)}function H(n){x=!0,r.isCompressed=!0;let b=s?"scrollLeft":"scrollTop",T=s?"overflowX":"overflow",N=e[b];if(e.style[T]="hidden",e[b]=0,N>0)d=N,h=N,r.scrollPosition=N;c=A();let Y=()=>{let re=h-d,oe=F();if(Math.abs(re)<Je)d=Math.max(0,Math.min(h,oe)),h=d,v=null;else d+=re*xr,d=Math.max(0,Math.min(d,oe)),v=requestAnimationFrame(Y);r.prevScrollPosition=r.scrollPosition,r.scrollPosition=d,r.scrollDirection=d>r.prevScrollPosition?1:-1,n.forceRender()};K=(re)=>{re.preventDefault();let oe=F();if(h=Math.max(0,Math.min(h+re.deltaY*f.ratio*et,oe)),v===null)v=requestAnimationFrame(Y)},e.addEventListener("wheel",K,{passive:!1});let q=()=>{if(p!==null)cancelAnimationFrame(p),p=null};V=(re)=>{if(q(),v!==null)cancelAnimationFrame(v),v=null;let oe=re.touches[0];if(!oe)return;let ae=s?oe.clientX:oe.clientY;C=ae,u=d,P=1,L=0,R[0]=performance.now(),$[0]=ae},D=(re)=>{re.preventDefault();let oe=re.touches[0];if(!oe)return;let ae=s?oe.clientX:oe.clientY,ue=performance.now(),me=P<Pe?P:L;if(R[me]=ue,$[me]=ae,P<Pe)P++;else L=(L+1)%Pe;let ve=C-ae,G=F(),U=Math.max(0,Math.min(u+ve*f.ratio*et,G));d=U,h=U,r.prevScrollPosition=r.scrollPosition,r.scrollPosition=U,r.scrollDirection=U>r.prevScrollPosition?1:-1,n.forceRender()},a=()=>{let re=performance.now(),oe=1/0,ae=0,ue=-1,me=0,ve=0;for(let ne=0;ne<P;ne++){let le=(L+ne)%Pe,ce=R[le];if(re-ce>=Ir)continue;ve++;let ge=$[le];if(ce<oe)oe=ce,ae=ge;if(ce>ue)ue=ce,me=ge}let G=0;if(ve>=2){let ne=ue-oe;if(ne>0)G=(ae-me)/ne}if(P=0,L=0,Math.abs(G)<Sr)return;let U=G*16,ee=()=>{if(U*=br,Math.abs(U)<0.5){p=null;return}let ne=F(),le=d+U;if(le=Math.max(0,Math.min(le,ne)),le<=0&&U<0||le>=ne&&U>0){d=le,h=le,r.scrollPosition=le,n.forceRender(),p=null;return}d=le,h=le,r.prevScrollPosition=r.scrollPosition,r.scrollPosition=le,r.scrollDirection=le>r.prevScrollPosition?1:-1,n.forceRender(),p=requestAnimationFrame(ee)};p=requestAnimationFrame(ee)},e.addEventListener("touchstart",V,{passive:!0}),e.addEventListener("touchmove",D,{passive:!1}),e.addEventListener("touchend",a,{passive:!0}),e.addEventListener("touchcancel",a,{passive:!0}),w=()=>{if(e[b]!==0)e[b]=0},e.addEventListener("scroll",w,{passive:!0});let Z=(re)=>{if(d=re,h=re,v!==null)cancelAnimationFrame(v),v=null;r.prevScrollPosition=r.scrollPosition,r.scrollPosition=re,r.scrollDirection=re>r.prevScrollPosition?1:-1,n.forceRender()},j=n.getMethod("_scrollbar:setCallback"),te=n.getMethod("_scrollbar:getInstance");if(j&&te){j(Z);let re=te();if(re)y=re,W=!1,y.updateBounds(f.virtualSize+c,r.containerSize)}else if(!y){let re=n.config.classPrefix;if(y=mt(e,Z,{},re,s,n.dom.root),W=!0,!e.classList.contains(`${re}-viewport--custom-scrollbar`))e.classList.add(`${re}-viewport--custom-scrollbar`);y.updateBounds(f.virtualSize+c,r.containerSize)}}function B(n){x=!1,r.isCompressed=!1,r.compressionRatio=1,d=0,h=0,P=0,L=0,O();let b=s?"overflowX":"overflow";e.style[b]="auto",c=0,n.updateContentSize(l.getTotalSize())}function O(){if(v!==null)cancelAnimationFrame(v),v=null;if(z!==null)cancelAnimationFrame(z),z=null;if(p!==null)cancelAnimationFrame(p),p=null;if(K)e.removeEventListener("wheel",K),K=null;if(V)e.removeEventListener("touchstart",V),V=null;if(D)e.removeEventListener("touchmove",D),D=null;if(a)e.removeEventListener("touchend",a),e.removeEventListener("touchcancel",a),a=null;if(w)e.removeEventListener("scroll",w),w=null;if(y&&W)y.destroy();y=null,W=!1;let n=s?"scrollLeft":"scrollTop";if(e&&e[n]!==0)e[n]=0}return{name:"scale",priority:20,setup(n){r=n.getState(),l=n.sizeCache,e=n.dom.viewport,s=n.config.horizontal,o=n.config.overscan,k=n,n.registerMethod("_updateCompressionMode",()=>I(n)),n.setScrollFns(()=>d,(b)=>{if(!f.isCompressed||!x){let N=s?"scrollLeft":"scrollTop";e[N]=b;return}if(S(),p!==null)cancelAnimationFrame(p),p=null;let T=b*f.ratio;m(Math.max(0,Math.min(T,F())))}),n.setScrollToIndexFn((b,T,N,Y,q)=>{if(!f.isCompressed||!x)return!1;let Z=vr(b,l,r.containerSize,r.totalItems,f,T);if(N==="smooth")_(Z,Y??ot,q);else E(Z)}),I(n),X=r.totalItems,n.registerDestroyHandler(O)},hooks:{onCalculate(n){if(n.totalItems!==X&&k)X=n.totalItems,I(k);if(!f.isCompressed||!x)return;let b=n.totalItems;if(b===0||n.containerSize<=0){n.visibleCount=0;return}gr(n.scrollPosition,n.containerSize,l,b,f,g);let T=Math.max(0,g.start-o),N=Math.min(b-1,g.end+o),Y=Math.min(N-T+1,n.capacity);n.visibleCount=Y,n.startIndex=T;for(let q=0;q<Y;q++){let Z=T+q;n.visibleIndices[q]=Z,n.visibleOffsets[q]=pr(Z,n.scrollPosition,l,b,n.containerSize,f),n.visibleSizes[q]=l.getSize(Z)}n.prevRangeStart=T,n.prevRangeEnd=N},onAfterScroll(n){if(y&&x)y.updatePosition(n),y.show()},onResize(){if(x){if(c=A(),y)y.updateBounds(f.virtualSize+c,r.containerSize);let n=F();if(d>n)d=n,h=n,r.scrollPosition=n}}},destroy(){O()}}}function gt(i){let t=null,r,l,e=0,s=0;return{name:"scrollbar",priority:15,setup(o){let{dom:f,config:x}=o,{classPrefix:c,horizontal:y}=x;r=o.getState(),l=o.sizeCache;let W=(d)=>{if(y)f.viewport.scrollLeft=d;else f.viewport.scrollTop=d};if(o.registerMethod("_scrollbar:setCallback",(d)=>{W=d}),t=mt(f.viewport,(d)=>{W(d)},i,c,y,f.root),f.viewport.classList.add(`${c}-viewport--custom-scrollbar`),i?.gutter)f.viewport.classList.add(`${c}-viewport--gutter`);queueMicrotask(()=>{if(!r.isCompressed)t?.updateBounds(l.getTotalSize(),r.containerSize)}),o.registerMethod("_scrollbar:getInstance",()=>t),o.registerDestroyHandler(()=>{if(t?.destroy(),t=null,f.viewport.classList.remove(`${c}-viewport--custom-scrollbar`),i?.gutter)f.viewport.classList.remove(`${c}-viewport--gutter`)})},hooks:{onAfterScroll(o){if(!r.isCompressed){let f=l.getTotalSize(),x=r.containerSize;if(f!==e||x!==s)e=f,s=x,t?.updateBounds(f,x)}t?.updatePosition(o),t?.show()},onResize(){if(!r.isCompressed){let o=l.getTotalSize(),f=r.containerSize;e=o,s=f,t?.updateBounds(o,f)}}},destroy(){t?.destroy(),t=null}}}var Mr=(i)=>{let t=Math.max(1,Math.floor(i.columns)),r=i.gap??0,l=i.isHeaderFn,e={row:0,col:0},s=(d)=>{if(d<=0)return 0;if(!l)return Math.ceil(d/t);let h=0,v=0,z=0;for(let C=0;C<d;C++)if(l(C)){if(z++,v)h++,v=0;h++,v=0}else if(v++,v>=t)h++,v=0;if(v)h++;return h},o=(d)=>{return e.row=f(d),e.col=x(d),e},f=(d)=>{if(!l)return Math.floor(d/t);let h=0,v=0;for(let z=0;z<=d;z++)if(l(z)){if(v)h++,v=0;if(z===d)return h;h++,v=0}else{if(z===d)return h;if(v++,v>=t)h++,v=0}return console.warn(`⚠️ getRow(${d}) fell through - returning ${h}`),h},x=(d)=>{if(!l)return d%t;if(l(d))return 0;let h=0;for(let v=0;v<=d;v++)if(l(v))h=0;else{if(v===d)return h;if(h++,h>=t)h=0}return h},c=(d,h,v)=>{if(v<=0)return{start:0,end:-1};if(!l){let R=Math.max(0,d*t),$=Math.min(v-1,(h+1)*t-1);return{start:R,end:$}}let z=-1,C=-1,u=0,p=0;for(let R=0;R<v;R++){if(l(R)){if(p)u++,p=0;if(u>=d&&u<=h){if(z<0)z=R;C=R}u++,p=0}else{if(u>=d&&u<=h){if(z<0)z=R;C=R}if(p++,p>=t)u++,p=0}if(u>h&&!p)break}if(z<0)return{start:0,end:-1};return{start:z,end:C}},y=(d,h,v)=>{if(h<0||h>=t)return-1;let z=d*t+h;if(z<0||z>=v)return-1;return z},W=(d)=>{let h=(t-1)*r;return Math.max(0,(d-h)/t)};return{get columns(){return t},get gap(){return r},update:(d)=>{if(d.columns!==void 0)t=Math.max(1,Math.floor(d.columns));if(d.gap!==void 0)r=d.gap;if(d.isHeaderFn!==void 0)l=d.isHeaderFn},getTotalRows:s,getPosition:o,getRow:f,getCol:x,getItemRange:c,getItemIndex:y,getColumnWidth:W,getColumnOffset:(d,h)=>{let v=W(h);return d*(v+r)}}},Ce={selected:!1,focused:!1};function pt(i){if(!i.columns||i.columns<1)throw Error("[vlist] grid: columns must be >= 1");let t,r,l,e,s,o,f,x,c,y,W=null,d=new Map,h=0,v=-1,z=-1,C=!0;function u(){return t.getTotalRows(l.totalItems)}function p(g){let X=t.getRow(g),k=t.getCol(g),F=t.getColumnOffset(k,h),A=r.getOffset(X);if(x)return`translate(${Math.round(A)}px, ${Math.round(F)}px)`;return`translate(${Math.round(F)}px, ${Math.round(A)}px)`}function R(g,X){let k=t.getRow(X),F=t.getColumnWidth(h),A=r.getSize(k)-t.gap;if(x)g.style.width=`${A}px`,g.style.height=`${F}px`;else g.style.width=`${F}px`,g.style.height=`${A}px`}function $(g,X,k,F){if(F)F(k,Ce);else Ce.selected=!1,Ce.focused=!1;let A=o(X,k,Ce);if(typeof A==="string")g.innerHTML=A;else g.innerHTML="",g.appendChild(A)}function P(){if(l.destroyed)return;let{scrollPosition:g,containerSize:X}=l;if(!C&&g===v&&X===z)return;v=g,z=X,C=!1;let k=u();if(X<=0||k===0)return;let F=r.indexAtOffset(g),A=r.indexAtOffset(g+X);if(A<k-1)A++;F=Math.max(0,F),A=Math.min(k-1,Math.max(0,A));let I=Math.max(0,F-y),K=Math.min(k-1,A+y);if(I===l.prevRangeStart&&K===l.prevRangeEnd&&!l.renderPending)return;let V=t.getItemRange(I,K,l.totalItems);d.forEach((_,H)=>{if(H<V.start||H>V.end)_.el.remove(),e.release(_.el),d.delete(H)});let D=`${c}-item ${c}-grid-item`,a=W?.()??null,w=a?`${c}-item--selected`:"",m=a?`${c}-item--focused`:"";for(let _=V.start;_<=V.end;_++){let H=f(_);if(!H)continue;let B=d.get(_);if(B===void 0){let O=e.acquire();O.className=D,O.setAttribute("data-index",String(_)),O.setAttribute("data-id",String(H.id)),$(O,H,_,a),B={el:O,lastId:H.id},d.set(_,B),s.appendChild(O)}else if(B.lastId!==H.id)B.el.setAttribute("data-id",String(H.id)),B.lastId=H.id,$(B.el,H,_,a);if(a)if(a(_,Ce),B.el.classList.toggle(w,Ce.selected),B.el.classList.toggle(m,Ce.focused),Ce.selected)B.el.setAttribute("aria-selected","true");else B.el.removeAttribute("aria-selected");R(B.el,_),B.el.style.transform=p(_)}let S=r.getTotalSize();s.style[x?"width":"height"]=S+"px",l.prevRangeStart=I,l.prevRangeEnd=K,l.renderPending=!1;let E=V.end-V.start+1;l.visibleCount=Math.min(E,l.capacity),l.startIndex=V.start;for(let _=0;_<l.visibleCount;_++){let H=V.start+_,B=t.getRow(H);l.visibleIndices[_]=H,l.visibleOffsets[_]=r.getOffset(B),l.visibleSizes[_]=r.getSize(B)}}function L(){if(l.destroyed)return;r.rebuild(u()),l.prevRangeStart=-1,l.prevRangeEnd=-1,l.renderPending=!0,C=!0,P()}return{name:"grid",priority:10,conflicts:["masonry","table"],setup(g){let X=i.gap??0;t=Mr({columns:i.columns,gap:X}),r=g.sizeCache,l=g.getState(),e=g.pool,s=g.dom.content,o=g.template,x=g.config.horizontal,c=g.config.classPrefix,y=g.config.overscan,f=g.getItem.bind(g),W=()=>g.getItemStateFn(),h=l.crossSize;let k=g.rawSizeSpec,F;if(typeof k==="function"){let A={columnWidth:t.getColumnWidth(h),columns:i.columns,gap:X};F=k(0,A),g.setSizeConfig((I)=>{A.columnWidth=t.getColumnWidth(h);let K=I*i.columns;return k(K,A)+X})}else if(F=k,X>0)g.setSizeConfig(F+X);if(r.rebuild(u()),X>0){let A=r.getTotalSize;r.getTotalSize=()=>{let I=A();return I>0?I-X:0}}g.setVirtualTotalFn(()=>u()),g.dom.root.classList.add(`${c}--grid`),g.setRenderFn(P,L),g.registerMethod("getGridLayout",()=>t),g.registerMethod("updateGrid",(A)=>{if(A.columns!==void 0){if(!Number.isInteger(A.columns)||A.columns<1)throw Error("[vlist] updateGrid: columns must be >= 1")}if(A.gap!==void 0&&A.gap<0)throw Error("[vlist] updateGrid: gap must be >= 0");if(t.update(A),A.gap!==void 0||A.columns!==void 0){let I=t.gap;if(typeof k==="function"){let K={columnWidth:t.getColumnWidth(h),columns:t.columns,gap:I};g.setSizeConfig((V)=>{K.columnWidth=t.getColumnWidth(h);let D=V*t.columns;return k(D,K)+I})}else g.setSizeConfig(F+I);r.rebuild(u())}if(A.columns!==void 0)g.setNavConfig({ud:t.columns});h=l.crossSize,L()}),g.registerMethod("scrollToIndex",(A,I="start")=>{let K=t.getRow(A),V=u();if(V===0)return;let D=Math.max(0,Math.min(K,V-1)),a=r.getOffset(D),w=r.getSize(D),m=l.containerSize,S=r.getTotalSize(),E=Math.max(0,S-m),_=typeof I==="string"?I:I.align??"start",H=typeof I==="object"?I.behavior:void 0,B=typeof I==="object"?I.duration:void 0,O;switch(_){case"center":O=a-(m-w)/2;break;case"end":O=a-m+w;break;default:O=a}if(O=Math.max(0,Math.min(O,E)),H==="smooth"&&B&&B>0)g.smoothScrollTo(O,B);else g.scrollTo(O)}),g.setNavConfig({total:()=>l.totalItems,ud:i.columns,lr:1,scrollIndex:(A)=>t.getRow(A)}),g.registerDestroyHandler(()=>{for(let[,A]of d)A.el.remove();d.clear(),g.dom.root.classList.remove(`${c}--grid`)})},hooks:{onResize(g,X){let k=l.crossSize;if(Math.abs(k-h)<1)return;h=k,d.forEach((F,A)=>{R(F.el,A),F.el.style.transform=p(A)})}},destroy(){d.clear()}}}var wr=(i,t,r)=>{if(String(r).startsWith(Ee))return!1;let l=Ee+t;if(i.has(l))return i.delete(l),i.add(r),!0;return!1},zr=(i)=>({selected:new Set(i??[]),focusedIndex:-1,focusVisible:!1});function Te(i,t,r,l){if(r===0)return;let e=l?-t:t,s=i.focusedIndex+e;if(s<0)s=0;if(s>=r)s=r-1;i.focusedIndex=s}function qe(i){return Array.from(i)}var Lr={preventScroll:!0};function Ke(i){let t=i?.mode??"single",r=i?.followFocus??!1,l=i?.focusOnClick??!1,e,s,o,f,x,c,y,W,d=-1,h=new Map,v=null,z=null,C=null,u=null,p,R=!1;function $(m){if(R)return;R=!0,v=m.getMethod("_layoutToDataIndex")??null,z=m.getMethod("_dataToLayoutIndex")??null,C=m.getMethod("_isGroupHeader")??null,u=m.getMethod("_scrollItemIntoView")??null;let S=m.getMethod("getGroupLayout");if(S){let E=S();p=()=>E.totalEntries}}let P=(m)=>v?v(m):m,L=(m)=>{let S=P(m);return S>=0?s(S):void 0},g=(m,S,E)=>{if(!C)return m;let _=m;while(_>=0&&_<E){if(!C(_))return _;_+=S}_=m-S;while(_>=0&&_<E){if(!C(_))return _;_-=S}return m};function X(m,S){if(t==="single")e.selected.clear(),h.clear();if(e.selected.add(m),S)h.set(m,S)}function k(m,S){if(e.selected.has(m))e.selected.delete(m),h.delete(m);else X(m,S)}function F(){e.selected.clear(),h.clear()}function A(m){e.selected.delete(m),h.delete(m)}function I(m,S){let E=Math.min(m,S),_=Math.max(m,S);for(let H=E;H<=_;H++){let B=s(H);if(B)e.selected.add(B.id),h.set(B.id,B)}}function K(){let m=y.totalItems;for(let S=0;S<m;S++){let E=s(S);if(E)e.selected.add(E.id),h.set(E.id,E)}}function V(){if(e.selected.size===0)return[];if(h.size>=e.selected.size){let _=[];for(let H of e.selected){let B=h.get(H);if(B)_.push(B)}if(_.length===e.selected.size)return _}let m=[],S=new Set(e.selected),E=y.totalItems;for(let _=0;_<E&&S.size>0;_++){let H=s(_);if(H&&S.has(H.id))m.push(H),h.set(H.id,H),S.delete(H.id)}return m}function D(){o(),f.emit("selection:change",{selected:qe(e.selected),items:V()})}let a=null,w=-1;return{name:"selection",priority:50,setup(m){e=zr(i?.initial),s=m.getItem.bind(m),o=m.forceRender.bind(m),f=m.emitter,x=m.dom;let S=m.config;if(c=m.sizeCache,y=m.getState(),W=m.scrollTo.bind(m),p=()=>y.totalItems,t==="none"){m.registerMethod("select",()=>{}),m.registerMethod("deselect",()=>{}),m.registerMethod("toggleSelect",()=>{}),m.registerMethod("selectAll",()=>{}),m.registerMethod("clearSelection",()=>{}),m.registerMethod("getSelected",()=>[]),m.registerMethod("getSelectedItems",()=>[]),m.registerMethod("selectNext",()=>{}),m.registerMethod("selectPrevious",()=>{}),m.registerMethod("_seedSelection",()=>{}),m.registerMethod("_getFocusedId",()=>{return}),m.registerMethod("_focusById",()=>{});return}let E=S.classPrefix;m.setItemStateFn((n,b)=>{if($(m),e.selected.size>0){let T=P(n),N=T>=0?s(T):void 0,Y=N?.id;if(Y!==void 0)if(e.selected.has(Y))b.selected=!0;else if(wr(e.selected,T,Y))b.selected=!0,h.delete(Ee+T),h.set(Y,N);else b.selected=!1;else b.selected=!1}else b.selected=!1;b.focused=e.focusVisible&&e.focusedIndex===n}),m.registerMethod("_getSelectedIds",()=>e.selected),m.registerMethod("_getFocusedIndex",()=>e.focusVisible?e.focusedIndex:-1),x.root.classList.add(`${E}--selectable`);let _=(n)=>{a=null,w=-1;let b=n.target.closest("[data-index]");if(!b)return!1;let T=parseInt(b.dataset.index??"-1",10);if(T<0)return!1;let N=P(T);if(N<0)return!1;let Y=s(N);if(!Y)return!1;return a=Y,w=T,!0},H=(n)=>{if(n<0)return;if(u){u(n);return}let b=m.getNavConfig(),T=b.scrollIndex?b.scrollIndex(n):n,N=c.getOffset(T),Y=c.getSize(T),q=y.containerSize,Z=y.scrollPosition;if(N<Z)W(N);else if(N+Y>Z+q)W(N-q+Y)},B=()=>{if(y.destroyed)return;if($(m),!x.content.matches(":focus-visible")&&!x.root.matches(":focus-visible"))return;let n=p();if(n===0)return;let b=e.focusedIndex>=0?Math.min(e.focusedIndex,n-1):0;b=g(b,1,n),e.focusedIndex=b,e.focusVisible=!0,x.content.setAttribute("aria-activedescendant",`${E}-item-${b}`),H(b),o()};x.root.addEventListener("focusin",B);let O=(n)=>{if(y.destroyed)return;let b=n.relatedTarget;if(b&&x.root.contains(b))return;e.focusVisible=!1,o(),x.content.removeAttribute("aria-activedescendant")};if(x.root.addEventListener("focusout",O),m.registerDestroyHandler(()=>{x.root.removeEventListener("focusin",B),x.root.removeEventListener("focusout",O)}),m.registerClickHandler((n)=>{if($(m),!_(n))return;if(t==="multiple"&&n.shiftKey&&e.focusedIndex>=0){let b=d>=0?d:e.focusedIndex,T=P(b),N=P(w);if(T>=0&&N>=0)I(T,N);e.focusedIndex=w,e.focusVisible=l,d=w,D();return}e.focusedIndex=w,e.focusVisible=l,d=w,x.content.focus(Lr),k(a.id,a),D()}),S.interactive)m.registerKeydownHandler((n)=>{$(m);let b=p();if(b===0)return;let T=m.getNavConfig(),N=e.focusedIndex,Y=!1,q=!1;if(T.navigate&&(n.key==="ArrowUp"||n.key==="ArrowDown"||n.key==="ArrowLeft"||n.key==="ArrowRight"||n.key==="PageUp"||n.key==="PageDown"||n.key==="Home"||n.key==="End")){let j=T.navigate(e.focusedIndex,n.key,b);if(j!==e.focusedIndex)e.focusedIndex=Math.max(0,Math.min(j,b-1));e.focusVisible=!0,Y=!0}else switch(n.key){case"ArrowUp":{let j=T.ud||1,te=T.lr,re=S.horizontal;if(re&&!te)break;Te(e,-(re?te:j),b,S.reverse),e.focusVisible=!0,Y=!0;break}case"ArrowDown":{let j=T.ud||1,te=T.lr,re=S.horizontal;if(re&&!te)break;Te(e,re?te:j,b,S.reverse),e.focusVisible=!0,Y=!0;break}case"ArrowLeft":{let j=T.ud||1,te=T.lr,re=S.horizontal;if(!re&&!te)break;Te(e,-(re?j:te),b,S.reverse),e.focusVisible=!0,Y=!0;break}case"ArrowRight":{let j=T.ud||1,te=T.lr,re=S.horizontal;if(!re&&!te)break;Te(e,re?j:te,b,S.reverse),e.focusVisible=!0,Y=!0;break}case"Home":if(b>0)e.focusedIndex=0;e.focusVisible=!0,Y=!0;break;case"End":if(b>0)e.focusedIndex=b-1;e.focusVisible=!0,Y=!0;break;case"PageUp":case"PageDown":{let j=T.ud||1,te=Math.max(0,e.focusedIndex),re=T.scrollIndex?T.scrollIndex(te):te,oe=c.getSize(re),ae=y.containerSize,ue=(oe>0?Math.max(1,Math.floor(ae/oe)):10)*j;if(v&&z){let me=v(e.focusedIndex),ve=n.key==="PageUp"?-ue:ue,G=y.totalItems-1;e.focusedIndex=z(Math.max(0,Math.min(G,me+ve)))}else Te(e,n.key==="PageUp"?-ue:ue,b);e.focusVisible=!0,Y=!0;break}case" ":case"Enter":if(n.key===" "&&n.shiftKey&&t==="multiple"&&e.focusedIndex>=0){if(d>=0){let j=P(d),te=P(e.focusedIndex);if(j>=0&&te>=0)I(j,te)}e.focusVisible=!0,q=!0,Y=!0;break}if(e.focusedIndex>=0){let j=L(e.focusedIndex);if(j)k(j.id,j),d=e.focusedIndex;e.focusVisible=!0,q=!0,Y=!0}break;case"a":if((n.ctrlKey||n.metaKey)&&t==="multiple"){if(e.selected.size===y.totalItems)F();else K();e.focusVisible=!0,q=!0,Y=!0}break;case"Delete":case"Backspace":if(e.selected.size>0)f.emit("delete",{selected:qe(e.selected),items:V()}),Y=!0;break}if(e.focusedIndex!==N&&C){let j=e.focusedIndex>N?1:-1;e.focusedIndex=g(e.focusedIndex,j,b)}let Z=e.focusedIndex!==N;if(n.shiftKey&&t==="multiple"&&!q&&Z){if(n.key==="ArrowUp"||n.key==="ArrowDown"||n.key==="ArrowLeft"||n.key==="ArrowRight"){let j=L(e.focusedIndex);if(j)k(j.id,j);d=e.focusedIndex,q=!0}if((n.ctrlKey||n.metaKey)&&(n.key==="Home"||n.key==="End")){let j=P(N>=0?N:e.focusedIndex),te=P(e.focusedIndex);if(j>=0&&te>=0)I(j,te);d=e.focusedIndex,q=!0}}if(r&&t==="single"&&!q&&Z&&e.focusedIndex>=0){let j=L(e.focusedIndex);if(j)X(j.id,j);q=!0}if(Y){if(n.preventDefault(),Z&&e.focusedIndex>=0)H(e.focusedIndex),x.content.setAttribute("aria-activedescendant",`${E}-item-${e.focusedIndex}`);if(q)D();else if(Z){if(o(),e.focusedIndex>=0){let j=L(e.focusedIndex);if(j)f.emit("focus:change",{id:j.id,index:e.focusedIndex})}}}});m.registerMethod("select",(...n)=>{for(let b of n)X(b);D()}),m.registerMethod("deselect",(...n)=>{for(let b of n)A(b);D()}),m.registerMethod("toggleSelect",(n)=>{k(n),D()}),m.registerMethod("selectAll",()=>{if(t!=="multiple")return;K(),D()}),m.registerMethod("clearSelection",()=>{F(),D()}),m.registerMethod("getSelected",()=>{return qe(e.selected)}),m.registerMethod("getSelectedItems",()=>{return V()}),m.registerMethod("selectNext",()=>{$(m);let n=p();if(n===0)return;if(Te(e,1,n,S.reverse),C)e.focusedIndex=g(e.focusedIndex,1,n);let b=L(e.focusedIndex);if(b)X(b.id,b);D()}),m.registerMethod("selectPrevious",()=>{$(m);let n=p();if(n===0)return;if(Te(e,-1,n,S.reverse),C)e.focusedIndex=g(e.focusedIndex,-1,n);let b=L(e.focusedIndex);if(b)X(b.id,b);D()}),m.registerMethod("_seedSelection",(n)=>{for(let b of n)e.selected.add(b)}),m.registerMethod("_getFocusedId",()=>{if(e.focusedIndex<0)return;return L(e.focusedIndex)?.id}),m.registerMethod("_focusById",(n)=>{let b=y.totalItems;for(let T=0;T<b;T++){let N=s(T);if(N&&N.id===n){let Y=z?z(T):T;e.focusedIndex=Y,f.emit("focus:change",{id:n,index:Y});return}}})},destroy(){h.clear()}}}var _e=(i)=>i==null?0:typeof i==="function"?i():i;function vt(i){let t=i?.scrollPadding,r,l;return{name:"page",priority:5,setup(e){let{dom:s,sizeCache:o,config:f,emitter:x}=e,c=f.horizontal,y=window,W=e.getState();if(e.disableDefaultScroll(),e.disableDefaultResize(),s.root.style.overflow="visible",s.root.style.height="auto",c)s.viewport.style.overflowX="visible",s.viewport.style.overflowY="visible";else s.viewport.style.overflow="visible";s.viewport.classList.remove(`${f.classPrefix}-viewport--custom-scrollbar`),e.setScrollFns(()=>{let u=s.viewport.getBoundingClientRect();return Math.max(0,c?-u.left:-u.top)},(u)=>{let p=s.viewport.getBoundingClientRect(),R=(c?p.left+y.scrollX:p.top+y.scrollY)+u;if(c)y.scrollTo({left:R,top:y.scrollY,behavior:"instant"});else y.scrollTo({left:y.scrollX,top:R,behavior:"instant"})}),W.containerSize=c?y.innerWidth:y.innerHeight,W.crossSize=c?y.innerHeight:y.innerWidth;let d=null,h=()=>{let u=s.viewport.getBoundingClientRect(),p=Math.max(0,c?-u.left:-u.top);if(W.prevScrollPosition=W.scrollPosition,W.scrollPosition=p,W.scrollDirection=p>W.prevScrollPosition?1:p<W.prevScrollPosition?-1:0,e.onScrollFrame(),d!==null)clearTimeout(d);d=setTimeout(()=>{d=null,e.onScrollIdle()},150)};y.addEventListener("scroll",h,{passive:!0}),l=()=>y.removeEventListener("scroll",h);let{innerWidth:v,innerHeight:z}=y,C=()=>{let{innerWidth:u,innerHeight:p}=y;if((c?Math.abs(u-v):Math.abs(p-z))<1)return;v=u,z=p,W.containerSize=c?u:p,W.crossSize=c?p:u,e.forceRender(),x.emit("resize",{width:u,height:p})};if(y.addEventListener("resize",C),r=()=>y.removeEventListener("resize",C),t)e.setScrollToPosFn((u,p,R,$,P)=>{let L=_e(c?t.left:t.top),g=_e(c?t.right:t.bottom);if($===0)return 0;let X=Math.max(0,Math.min(u,$-1)),k=p.getOffset(X),F=p.getSize(X),A=p.getTotalSize(),I=Math.max(0,A-R+g),K;switch(P){case"center":K=k-L-(R-L-g-F)/2;break;case"end":K=k-R+F+g;break;default:K=k-L}return Math.max(-L,Math.min(K,I))}),e.registerMethod("_scrollItemIntoView",(u)=>{let p=c?y.innerWidth:y.innerHeight,R=_e(c?t.left:t.top),$=_e(c?t.right:t.bottom),P=s.viewport.getBoundingClientRect(),L=c?y.scrollX:y.scrollY,g=c?P.left:P.top,X=g+L,k=o.getOffset(u),F=o.getSize(u),A=g+k,I=p-$,K=L;if(A<R)K=X+k-R;else if(A+F>I)K=X+k+F-I;if(K!==L)if(c)y.scrollTo({left:K,top:y.scrollY,behavior:"instant"});else y.scrollTo({left:y.scrollX,top:K,behavior:"instant"})});e.registerDestroyHandler(()=>{if(l?.(),r?.(),d!==null)clearTimeout(d)})},destroy(){l?.(),r?.(),l=void 0,r=void 0}}}var Cr=(i)=>{try{let t=sessionStorage.getItem(i);if(!t)return;return JSON.parse(t)}catch{return}};function yt(i){let t=i?.autoSave,r=t?Cr(t):i?.restore,l=!1,e=null;return{name:"snapshots",priority:50,setup(s){let{sizeCache:o,emitter:f}=s,x=s.getState(),c=()=>{let{scrollPosition:d,totalItems:h}=x,v=s.getMethod("getSelected")?.();if(h===0){let L={index:0,offsetInItem:0,total:0};if(v?.length)L.selectedIds=v;return L}let z,C;if(x.isCompressed&&x.compressionRatio!==1){let L=x.totalSize,g=d/L*h;z=Math.max(0,Math.min(Math.floor(g),h-1)),C=(g-z)*o.getSize(z)}else z=o.indexAtOffset(d),C=d-o.getOffset(z);C=Math.max(0,C);let u={index:z,offsetInItem:C,total:h,scrollTop:d},p=o.getSize(z);if(p)u.offsetRatio=C/p;let R=s.getMethod("_layoutToDataIndex");if(R){let L=R(z);if(L<0){for(let g=z+1;g<h;g++)if(L=R(g),L>=0)break}if(L>=0)u.dataIndex=L}let $=s.getMethod("_getTotal");if($)u.dataTotal=$();if(v?.length)u.selectedIds=v;let P=s.getMethod("_getFocusedId");if(P){let L=P();if(L!==void 0)u.focusedId=L}return u};s.registerMethod("getScrollSnapshot",c);let y=(d,h=!0)=>{let{index:v,offsetInItem:z,selectedIds:C,focusedId:u}=d,p=x.totalItems,R=d.dataTotal??d.total;if(p===0&&R&&R>0){let V=s.getMethod("_setTotal");if(V)V(R),p=x.totalItems;o.rebuild(p);let D=s.getMethod("_updateCompressionMode");if(D)D();if(!x.isCompressed)s.updateContentSize(o.getTotalSize())}if(p===0)return;if(!Number.isFinite(v)||!Number.isFinite(z))return;if(o.getTotal()!==p){o.rebuild(p);let V=s.getMethod("_updateCompressionMode");if(V)V();if(!x.isCompressed)s.updateContentSize(o.getTotalSize())}let $=s.getMethod("_dataToLayoutIndex"),P=v;if(d.dataIndex!==void 0&&d.dataIndex>=0)P=$?$(d.dataIndex):d.dataIndex;else if($)P=$(v);let L=Math.max(0,Math.min(P,p-1)),g=o.getSize(L),X=d.offsetRatio!==void 0?d.offsetRatio*g:Math.min(z,g),k;if(x.isCompressed&&x.compressionRatio!==1){let V=s.getMethod("_getTotal")?.(),D=V!==void 0&&d.dataTotal===V;if(d.scrollTop!==void 0&&(d.total===p||D))k=d.scrollTop;else{let a=g?X/g:0;k=(L+a)/p*x.totalSize}}else k=o.getOffset(L)+X;let F=Math.max(0,x.totalSize-x.containerSize);k=Math.max(0,Math.min(k,F));let A=k===d.scrollTop;if(d.dataIndex!==void 0&&d.dataIndex>=0){let V=g?X/g:0;s.registerMethod("_restoreAnchor",{dataIndex:d.dataIndex,fraction:V,skipAdjust:A}),s.registerMethod("_suppressSave",1)}if(s.scrollTo(k),h&&C?.length){let V=s.getMethod("select");if(V)V(...C)}let I=s.getMethod("loadVisibleRange"),K=()=>{if(u===void 0)return;let V=s.getMethod("_focusById");if(V)V(u)};if(I){let V=0,D=()=>{if(x.containerSize>0){if(Math.abs(x.scrollPosition-k)>1)s.scrollTo(k);I().then(K)}else if(++V<10)requestAnimationFrame(D)};requestAnimationFrame(D)}else{let V=s.getMethod("reload");if(V)requestAnimationFrame(()=>{V().then(K)});else requestAnimationFrame(K)}};s.registerMethod("restoreScroll",y);let W=!!(r&&t);if(s.registerDestroyHandler(()=>{l=!0}),t){e=()=>{if(l||W||s.getMethod("_suppressSave"))return;let p=c();try{sessionStorage.setItem(t,JSON.stringify(p))}catch{}},s.registerMethod("_saveSnapshot",e);let d=0,h=()=>{if(d)return;d=requestAnimationFrame(()=>{d=0,e()})};f.on("selection:change",h),f.on("focus:change",h);let v=0,z=()=>{v=0,e()},C=()=>{if(v)clearTimeout(v);v=setTimeout(z,300)};f.on("scroll",C);let u=()=>{e?.()};if(window.addEventListener("beforeunload",u),s.registerDestroyHandler(()=>{if(v)clearTimeout(v);window.removeEventListener("beforeunload",u)}),r&&r.total&&r.total>0){let p=s.getMethod("_cancelAutoLoad");if(p)p();let R=s.getMethod("_setTotal");if(R)R(r.total)}}if(r){let d=!0;if(r.selectedIds?.length){let h=s.getMethod("_seedSelection");if(h)h(r.selectedIds),d=!1}queueMicrotask(()=>{if(y(r,d),W=!1,e)e()})}},hooks:{onIdle(){if(e&&!l)e()}},destroy(){l=!0,e=null}}}function xt(i){let t=i?.gap??0,r=null,l=null,e,s,o,f,x=new Map,c=new WeakMap,y=0,W=!1,d=2;function h(u){return x.get(u)??f}function v(){let u=l.dom.viewport,p=u.scrollHeight-u.clientHeight;return p>0&&e.scrollPosition>=p-d}function z(){let u=l.dom.viewport;u.scrollHeight;let p=u.scrollHeight-u.clientHeight;if(p>e.scrollPosition)l.scrollTo(p)}function C(){l.updateContentSize(l.sizeCache.getTotalSize())}return{name:"autosize",priority:5,setup(u){if(l=u,e=u.getState(),s=u.config.horizontal,o=s?"width":"height",t===0)t=u.config.gap;if(f=typeof u.rawSizeSpec==="function"?u.rawSizeSpec(0)+t:u.rawSizeSpec+t,u.setSizeConfig(h),t>0){let p=u.sizeCache.getTotalSize;u.sizeCache.getTotalSize=()=>{let R=p();return R>0?R-t:0}}r=new ResizeObserver((p)=>{if(e.destroyed||!l)return;let R=!1,$=e.startIndex;for(let X of p){let k=X.target,F=c.get(k);if(F===void 0)continue;if(k.getAttribute("data-index")!==String(F)){r.unobserve(k);continue}if(x.has(F))continue;let A=X.borderBoxSize[0];if(!A)continue;let I=s?A.inlineSize:A.blockSize;if(I<=0)continue;let K=I+t,V=f;if(x.set(F,K),R=!0,F<$&&K!==V)y+=K-V;r.unobserve(k),k.style[o]=`${I}px`}if(!R)return;let P=v();if(u.rebuildSizeCache(),y)u.scrollTo(e.scrollPosition+y),y=0;let L=e.scrollDirection!==0,g=e.totalItems>0&&e.prevRangeEnd>=e.totalItems-1;if(P||g||!L){if(C(),W=!1,P)z()}else W=!0;u.forceRender()}),u.registerMethod("isMeasured",(p)=>x.has(p)),u.registerMethod("setMeasuredSize",(p,R)=>{x.set(p,R)}),u.registerMethod("getMeasuredCount",()=>x.size),u.registerDestroyHandler(()=>{if(r)r.disconnect(),r=null})},hooks:{onCommit(u){if(!r||!l)return;for(let p=0;p<u.visibleCount;p++){let R=u.visibleIndices[p];if(x.has(R))continue;let $=l.getRenderedElement(R);if(!$)continue;$.style[o]="",c.set($,R),r.observe($)}},onIdle(){if(!W||!l)return;let u=v();if(C(),W=!1,u)z(),l.forceRender()}},destroy(){if(r)r.disconnect(),r=null;x.clear(),l=null}}}var Ar=(i)=>{let t=Math.max(1,Math.floor(i.columns)),r=i.gap??0,l=i.containerSize,e=0,s=[],o=()=>{let v=(t-1)*r;e=Math.max(0,(l-v)/t),s=Array(t);let z=e+r;for(let C=0;C<t;C++)s[C]=C*z};o();let f=[],x=0,c=[],y=(v,z)=>{if(v<=0)return x=0,f=[],[];let C=Array(t).fill(0),u=Array(t);for(let $=0;$<t;$++)u[$]=[];let p=Array(v);for(let $=0;$<v;$++){let P=0,L=C[0];for(let k=1;k<t;k++){let F=C[k];if(F<L)L=F,P=k}let g=z($),X=C[P];p[$]={index:$,x:s[P],y:X,lane:P,size:g,crossSize:e},u[P].push($),C[P]=X+g+r}f=u;let R=0;for(let $=0;$<t;$++){let P=C[$],L=P>0?P-r:0;if(L>R)R=L}return x=R,p},W=(v)=>{if(v.length===0)return x;if(x)return x;let z=Array(t).fill(0);for(let u of v){let p=u.y+u.size,R=z[u.lane];if(p>R)z[u.lane]=p}let C=0;for(let u=0;u<t;u++)if(z[u]>C)C=z[u];return C},d=(v,z,C)=>{if(v.length===0||C<=z)return c.length=0,c;if(f.length===0||f.length!==t)return h(v,z,C);c.length=0;for(let u=0;u<t;u++){let p=f[u],R=p.length;if(!R)continue;let $=0,P=R;while($<P){let L=$+P>>>1,g=v[p[L]];if(g.y+g.size<=z)$=L+1;else P=L}for(let L=$;L<R;L++){let g=v[p[L]];if(g.y>=C)break;c.push(g)}}return c},h=(v,z,C)=>{c.length=0;for(let u of v)if(u.y+u.size>z&&u.y<C)c.push(u);return c};return{get columns(){return t},get gap(){return r},get containerSize(){return l},update:(v)=>{let z=!1;if(v.columns!==void 0){let C=Math.max(1,Math.floor(v.columns));if(C!==t)t=C,z=!0}if(v.gap!==void 0&&v.gap!==r)r=v.gap,z=!0;if(v.containerSize!==void 0&&v.containerSize!==l)l=v.containerSize,z=!0;if(z)o()},calculateLayout:y,getTotalSize:W,getVisibleItems:d}},$r=(i,t,r)=>{let l=Array.from(t).sort((o,f)=>o-f);if(l.length<=1)return;let e=[];for(let o=0;o<l.length;o++){let f=r(l[o]);if(f)e.push(f)}if(e.length<=1)return;let s=i.firstChild;for(let o=0;o<e.length;o++){let f=e[o];if(f===s)s=s.nextSibling;else i.insertBefore(f,s)}},Tr=(i=200)=>{let t=[];return{acquire:()=>{let r=t.pop();if(r)return r;let l=document.createElement("div");return l.setAttribute("role","option"),l},release:(r)=>{if(r.remove(),t.length<i)r.className="",r.textContent="",r.removeAttribute("style"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),r.removeAttribute("data-lane"),t.push(r)},clear:()=>{t.length=0}}},Er=1,Pr=(i,t,r,l=!1,e,s,o,f)=>{let x=Tr(),c=new Map,y=new Set,W=0,d="",h=-1,v={selected:!1,focused:!1},z=(A,I)=>{return v.selected=A,v.focused=I,v},C=`${r}-item ${r}-masonry-item`,u=`${r}-group-header`,p=`${r}-item--selected`,R=`${r}-item--focused`,$=(A,I)=>{if(typeof I==="string")A.innerHTML=I;else A.replaceChildren(I)},P=(A,I,K)=>{A.classList.toggle(p,I),A.classList.toggle(R,K)},L=(A,I)=>{if(l)A.style.transform=`translate(${Math.round(I.y)}px, ${Math.round(I.x)}px)`;else A.style.transform=`translate(${Math.round(I.x)}px, ${Math.round(I.y)}px)`},g=(A,I)=>{if(l)A.style.width=`${I.size}px`,A.style.height=`${I.crossSize}px`;else A.style.width=`${I.crossSize}px`,A.style.height=`${I.size}px`},X=(A,I,K,V,D)=>{let a=x.acquire(),w=I.__groupHeader,m=z(V,D);if(a.className=w?u:C,a.dataset.index=String(A),a.dataset.id=String(I.id),a.dataset.lane=String(K.lane),w)a.setAttribute("role","presentation"),a.removeAttribute("aria-selected"),a.removeAttribute("aria-setsize"),a.removeAttribute("aria-posinset"),a.removeAttribute("id");else if(f!==!1){if(a.setAttribute("role","option"),a.ariaSelected=String(V),s)a.id=`${s}-item-${A}`;if(e){let E=e();if(E!==h)h=E,d=String(E);a.setAttribute("aria-setsize",d);let _=o?o(A):A+1;a.setAttribute("aria-posinset",String(_))}}else if(a.setAttribute("role","listitem"),a.removeAttribute("aria-selected"),e){let E=e();if(E!==h)h=E,d=String(E);a.setAttribute("aria-setsize",d);let _=o?o(A):A+1;a.setAttribute("aria-posinset",String(_))}g(a,K);let S=t(I,A,m);return $(a,S),P(a,V,D),L(a,K),{element:a,lastItemId:I.id,lastSelected:V,lastFocused:D,lastY:K.y,lastX:K.x,lastSize:K.size,lastCrossSize:K.crossSize,lastSeenFrame:W}},k=(A,I,K,V)=>{W++,y.clear();for(let a=0;a<I.length;a++)y.add(I[a].index);for(let[a,w]of c)if(y.has(a))w.lastSeenFrame=W;else if(W-w.lastSeenFrame>Er)x.release(w.element),c.delete(a);let D=null;for(let a=0;a<I.length;a++){let w=I[a],m=w.index,S=A(m);if(!S)continue;let E=K.has(S.id),_=m===V,H=c.get(m);if(H){let B=H.lastItemId!==S.id,O=H.lastSelected!==E,n=H.lastFocused!==_,b=H.lastY!==w.y||H.lastX!==w.x,T=H.lastSize!==w.size||H.lastCrossSize!==w.crossSize;if(B){let N=z(E,_),Y=t(S,m,N);if($(H.element,Y),H.element.dataset.id=String(S.id),H.lastItemId=S.id,!S.__groupHeader){let q=o?o(m):m+1;H.element.setAttribute("aria-posinset",String(q))}}if(B||O||n)P(H.element,E,_),H.element.ariaSelected=String(E),H.lastSelected=E,H.lastFocused=_;if(T)g(H.element,w),H.lastSize=w.size,H.lastCrossSize=w.crossSize;if(b)L(H.element,w),H.lastY=w.y,H.lastX=w.x}else{let B=X(m,S,w,E,_);if(!D)D=document.createDocumentFragment();D.appendChild(B.element),c.set(m,B)}}if(D)i.appendChild(D)},F=()=>{for(let A of c.values())x.release(A.element);c.clear(),i.innerHTML=""};return{render:k,getElement:(A)=>c.get(A)?.element,updateItemClasses:(A,I,K)=>{let V=c.get(A);if(!V)return;let D=V.lastSelected!==I,a=V.lastFocused!==K;if(D||a)P(V.element,I,K),V.lastSelected=I,V.lastFocused=K},sortDOM:()=>{$r(i,c.keys(),(A)=>c.get(A)?.element)},clear:F,destroy:()=>{F(),x.clear()}}},kr=100,Fr=new Set;function bt(i){if(!i.columns||i.columns<1)throw Error("[vlist] masonry: columns must be >= 1");let t,r=null,l,e=null,s,o,f,x=[],c=-1,y=-1,W=!0,d=-1,h={columnWidth:0,columns:0,gap:0,containerWidth:0},v=[],z=(a)=>v[a],C=null,u=null,p=!1;function R(){if(p||!e)return;p=!0,C=e.getMethod("_getSelectedIds")??null,u=e.getMethod("_getFocusedIndex")??null}let $=[],P=new Int32Array(0),L=[];function g(){let a=t.columns,w=x.length;$=Array(a);for(let m=0;m<a;m++)$[m]=[];if(P.length<w)P=new Int32Array(w);for(let m=0;m<w;m++){let S=x[m],E=$[S.lane].length;$[S.lane].push(m),P[m]=E}L=Array(a);for(let m=0;m<a;m++){let S=$[m],E=new Float64Array(S.length);for(let _=0;_<S.length;_++){let H=x[S[_]];E[_]=H.y+H.size*0.5}L[m]=E}}function X(a,w){let m=a.length;if(!m)return-1;let S=0,E=m-1;while(S<E){let _=S+E>>1;if(a[_]<w)S=_+1;else E=_}if(S>0&&Math.abs(a[S-1]-w)<=Math.abs(a[S]-w))return S-1;return S}function k(a,w,m){let S=x[a];if(!S)return a;let E=S.lane,_=t.columns,H=P[a],B=$[E];switch(s?w==="ArrowDown"?"ArrowRight":w==="ArrowUp"?"ArrowLeft":w==="ArrowRight"?"ArrowDown":w==="ArrowLeft"?"ArrowUp":w:w){case"ArrowDown":if(H+1<B.length)return B[H+1];return a;case"ArrowUp":if(H>0)return B[H-1];return a;case"ArrowRight":{if(E>=_-1)return a;let O=E+1,n=S.y+S.size*0.5,b=$[O];if(!b.length)return a;let T=X(L[O],n);return T>=0?b[T]:a}case"ArrowLeft":{if(E<=0)return a;let O=E-1,n=S.y+S.size*0.5,b=$[O];if(!b.length)return a;let T=X(L[O],n);return T>=0?b[T]:a}case"Home":return 0;case"End":return m-1;case"PageDown":{let O=l.containerSize,n=S.size>0?S.size:150,b=Math.max(1,Math.floor(O/n)),T=Math.min(H+b,B.length-1);return B[T]}case"PageUp":{let O=l.containerSize,n=S.size>0?S.size:150,b=Math.max(1,Math.floor(O/n)),T=Math.max(0,H-b);return B[T]}}return a}let F=null;function A(){if(i.size)return(a)=>i.size(a,h);if(F!==null&&typeof F==="function")return(a)=>F(a,h);return(a)=>e.sizeCache.getSize(a)}function I(){let{columns:a,gap:w}=t;h.containerWidth=t.containerSize,h.columns=a,h.gap=w,h.columnWidth=Math.max(0,(t.containerSize-(a-1)*w)/a)}function K(){if(!e)return;I();let a=l.totalItems;x=t.calculateLayout(a,A()),d=a,g();let w=t.getTotalSize(x);e.updateContentSize(w)}function V(){if(l.destroyed||!e||!r)return;if(l.totalItems!==d)K();R();let{scrollPosition:a,containerSize:w}=l;if(!W&&a===c&&w===y)return;if(c=a,y=w,W=!1,w<=0||x.length===0)return;let m=Math.max(0,a-f),S=a+w+f,E=t.getVisibleItems(x,m,S),_=C?.()??Fr,H=u?.()??-1;v=e.getItems(),r.render(z,E,_,H);let B=E.length,O=B>0?E[0].index:0,n=B>0?E[B-1].index:0;l.prevRangeStart=O,l.prevRangeEnd=n,l.renderPending=!1;let b=Math.min(B,l.capacity);l.visibleCount=b,l.startIndex=O;for(let T=0;T<b;T++){let N=E[T];l.visibleIndices[T]=N.index,l.visibleOffsets[T]=N.y,l.visibleSizes[T]=N.size}}function D(){if(l.destroyed)return;K(),l.prevRangeStart=-1,l.prevRangeEnd=-1,l.renderPending=!0,W=!0,V()}return{name:"masonry",priority:10,conflicts:["grid","table"],setup(a){if(e=a,l=a.getState(),F=a.rawSizeSpec,s=a.config.horizontal,o=a.config.classPrefix,f=a.config.overscan*kr,a.config.reverse)throw Error("[vlist] masonry: cannot be combined with reverse mode");let w=l.crossSize;t=Ar({columns:i.columns,gap:i.gap??0,containerSize:w}),r=Pr(a.dom.content,a.template,o,s,()=>l.totalItems,void 0,void 0,a.config.interactive),a.dom.root.classList.add(`${o}--masonry`),a.setRenderFn(V,D),K(),a.registerMethod("getMasonryLayout",()=>t),a.registerMethod("updateMasonry",(m)=>{if(m.columns!==void 0&&m.columns<1)throw Error("[vlist] updateMasonry: columns must be >= 1");if(m.gap!==void 0&&m.gap<0)throw Error("[vlist] updateMasonry: gap must be >= 0");let S={};if(m.columns!==void 0)S.columns=m.columns;if(m.gap!==void 0)S.gap=m.gap;t.update(S),r?.clear(),D()}),a.registerMethod("scrollToIndex",(m,S="start")=>{let E=x[m];if(!E)return;let _=typeof S==="string"?S:S.align??"start",H=typeof S==="object"?S.behavior:void 0,B=typeof S==="object"?S.duration:void 0,O=l.containerSize,n=t.getTotalSize(x),b=Math.max(0,n-O),T=E.y;if(_==="center")T=E.y-O/2+E.size/2;else if(_==="end"){if(T=E.y-O+E.size,m>=l.totalItems-1&&E.y+E.size>b)T=b}if(T=Math.max(0,Math.min(T,b)),H==="smooth"&&B&&B>0)a.smoothScrollTo(T,B);else a.scrollTo(T)}),a.registerMethod("_scrollItemIntoView",(m)=>{let S=x[m];if(!S)return;let{scrollPosition:E,containerSize:_}=l,H=S.y,B=H+S.size;if(H<E)a.scrollTo(Math.max(0,H));else if(B>E+_)a.scrollTo(B-_)}),a.setNavConfig({total:()=>l.totalItems,navigate:k}),a.registerDestroyHandler(()=>{r?.destroy(),r=null,a.dom.root.classList.remove(`${o}--masonry`)})},hooks:{onResize(a,w){if(!t||!e)return;let m=l.crossSize;if(Math.abs(m-t.containerSize)<1)return;t.update({containerSize:m}),r?.clear(),D()},onIdle(){r?.sortDOM()}},destroy(){r?.destroy(),r=null,x=[],e=null}}}var Hr=(i={})=>{let{chunkSize:t=100,maxCachedItems:r=5000,evictionBuffer:l=200,onEvict:e}=i,s=new Map,o=0,f=0,x=(a)=>{let w=s.get(a);if(!w)w={items:Array(t),count:0,lastAccess:Date.now()},s.set(a,w);else w.lastAccess=Date.now();return w},c=(a)=>{return Math.floor(a/t)},y=(a)=>{return a%t},W=()=>o,d=(a)=>{o=a},h=(a)=>{if(a<0||a>=o)return;let w=c(a),m=s.get(w);if(!m)return;return m.items[y(a)]},v=(a)=>{if(a<0||a>=o)return!1;let w=c(a),m=s.get(w);if(!m)return!1;return m.items[y(a)]!==void 0},z=(a,w)=>{let m=c(a),S=x(m),E=y(a),_=S.items[E]===void 0;if(S.items[E]=w,_)S.count++,f++;if(a>=o)o=a+1},C=(a,w)=>{for(let m=0;m<w.length;m++){let S=w[m];if(S!==void 0)z(a+m,S)}},u=(a,w)=>{if(a<0||a>o)return;let m=c(a),S=Array.from(s.keys()).filter((O)=>O>=m).sort((O,n)=>O-n),E=[];for(let O of S){let n=s.get(O),b=O*t;for(let T=0;T<t;T++){if(n.items[T]===void 0)continue;let N=b+T;if(N<a)continue;E.push({oldIndex:N,item:n.items[T]})}}for(let{oldIndex:O}of E){let n=c(O),b=s.get(n);if(!b)continue;let T=y(O);if(b.items[T]!==void 0){if(b.items[T]=void 0,b.count--,f--,b.count===0)s.delete(n)}}o++;for(let{oldIndex:O,item:n}of E){let b=O+1,T=c(b),N=x(T),Y=y(b);N.items[Y]=n,N.count++,f++}let _=c(a),H=x(_),B=y(a);H.items[B]=w,H.count++,f++},p=(a)=>{if(a<0||a>=o)return!1;let w=c(a),m=s.get(w),S=y(a);if(!(m!==void 0&&m.items[S]!==void 0))return!1;let E=w,_=Array.from(s.keys()).filter((B)=>B>=E).sort((B,O)=>B-O),H=[];for(let B of _){let O=s.get(B),n=B*t;for(let b=0;b<t;b++){if(O.items[b]===void 0)continue;let T=n+b;if(T<=a)continue;H.push({oldIndex:T,item:O.items[b]})}}if(m.items[S]=void 0,m.count--,f--,m.count===0)s.delete(w);for(let{oldIndex:B}of H){let O=c(B),n=s.get(O);if(!n)continue;let b=y(B);if(n.items[b]!==void 0){if(n.items[b]=void 0,n.count--,f--,n.count===0)s.delete(O)}}for(let{oldIndex:B,item:O}of H){let n=B-1,b=c(n),T=x(b),N=y(n);T.items[N]=O,T.count++,f++}return o--,!0},R=(a,w)=>{let m=[];for(let S=a;S<=w&&S<o;S++)m.push(h(S));return m},$=(a,w)=>{for(let m=a;m<=w&&m<o;m++)if(!v(m))return!1;return!0},P=()=>{let a=[],w=null,m=Array.from(s.keys()).sort((S,E)=>S-E);for(let S of m){let E=s.get(S);if(!E)continue;let _=S*t;for(let H=0;H<t;H++){let B=_+H;if(B>=o)break;if(E.items[H]!==void 0)if(w===null)w={start:B,end:B};else if(B===w.end+1)w.end=B;else a.push(w),w={start:B,end:B};else if(w!==null)a.push(w),w=null}}if(w!==null)a.push(w);return a},L=(a,w)=>{let m=[],S=null;for(let E=a;E<=w&&E<o;E++)if(!v(E))if(S===null)S={start:E,end:E};else S.end=E;else if(S!==null)m.push(S),S=null;if(S!==null)m.push(S);return m},g=(a)=>{return s.has(a)},X=(a)=>{let w=s.get(a);if(!w)return!1;let m=a*t,S=Math.min(t,o-m);return w.count>=S},k=(a)=>{let w=s.get(a);if(w)w.lastAccess=Date.now()},F=(a,w)=>{if(a>w||s.size===0)return;let m=Date.now(),S=c(Math.max(0,a)),E=c(Math.min(o-1,w));for(let _=S;_<=E;_++){let H=s.get(_);if(H)H.lastAccess=m}},A=(a,w)=>{if(f<=r)return 0;let m=Math.max(0,a-l),S=Math.min(o-1,w+l),E=c(m),_=c(S),H=0,B=[];for(let[O,n]of s)if(O<E||O>_)H+=n.count,B.push(O),f-=n.count,s.delete(O);if(H>0&&e)e(H,B);return H},I=()=>{if(f<=r)return 0;let a=Array.from(s.entries()).sort(([,S],[,E])=>S.lastAccess-E.lastAccess),w=0,m=[];for(let[S,E]of a){if(f<=r)break;w+=E.count,f-=E.count,m.push(S),s.delete(S)}if(w>0&&e)e(w,m);return w},K=()=>{return{totalItems:o,cachedItems:f,cachedChunks:s.size,chunkSize:t,maxCachedItems:r,memoryEfficiency:o>0?1-f/o:1}},V=()=>f,D=()=>{s.clear(),f=0};return{chunkSize:t,maxCachedItems:r,getTotal:W,setTotal:d,get:h,has:v,set:z,setRange:C,insert:u,delete:p,getRange:R,isRangeLoaded:$,getLoadedRanges:P,findUnloadedRanges:L,getChunkIndex:c,isChunkLoaded:g,isChunkFullyLoaded:X,touchChunk:k,touchChunksForRange:F,evictDistant:A,evictToLimit:I,getStats:K,getCachedCount:V,clear:D,reset:()=>{D(),o=0}}},Rr=(i={})=>{let{maskCharacter:t=Ht,maxSampleSize:r=Rt}=i,l=[],e=!1,s=(x)=>{if(e||x.length===0)return;let c=Math.min(x.length,r);for(let y=0;y<c;y++){let W=x[y];if(!W||typeof W!=="object")continue;let d={},h=!1;for(let[v,z]of Object.entries(W)){if(v.startsWith("_")||v==="id")continue;d[v]=String(z??"").length,h=!0}if(h)l.push(d)}e=!0},o=()=>e,f=(x)=>{let c={id:`${Ee}${x}`,[st]:!0,_index:x};if(l.length===0)return c.label=t.repeat(12),c;let y=l[x%l.length];for(let[W,d]of Object.entries(y))c[W]=t.repeat(Math.max(1,d));return c};return{analyzeStructure:s,hasAnalyzedStructure:o,generate:f,generateRange:(x,c)=>{let y=[];for(let W=x;W<=c;W++)y.push(f(W));return y},clear:()=>{l=[],e=!1}}},Ye=(i)=>{if(!i||typeof i!=="object")return!1;return i[st]===!0},_r=50,Dr=(i={})=>{let{adapter:t,initialItems:r,initialTotal:l,storage:e,placeholder:s,pageSize:o=_r,maxConcurrent:f=0,onStateChange:x,onDataChange:c,onItemsLoaded:y,onItemsEvicted:W}=i,d=Hr({...e,onEvict:(G,U)=>{W?.(G),F(),k()}}),h=null,v=()=>{if(!h)h=Rr(s);return h},z=new Map,C=!1,u,p=!0,R,$,P=[],L=0,g=new Map,X=()=>{for(let G of g.values())G[1].abort();g.clear()},k=()=>{x?.(S())},F=()=>{c?.()},A=()=>{z.clear();let G=d.getLoadedRanges();for(let U of G)for(let ee=U.start;ee<=U.end;ee++){let ne=d.get(ee);if(ne&&!Ye(ne))z.set(ne.id,ee)}},I=(G,U)=>{if(!Ye(U))z.set(U.id,G)},K=(G)=>{z.delete(G)},V=(G,U)=>{return`${G}-${U}`},D=()=>d.getTotal(),a=()=>d.getCachedCount(),w=()=>C,m=()=>p,S=()=>({total:d.getTotal(),cached:d.getCachedCount(),isLoading:C,pendingRanges:P,error:u,hasMore:p,cursor:R}),E=()=>d,_=()=>v(),H=(G)=>{let U=d.get(G);if(U!==void 0)return U;if(G>=0&&G<d.getTotal())return v().generate(G);return},B=(G)=>{let U=z.get(G);if(U===void 0)return;return d.get(U)},O=(G)=>{return z.get(G)??-1},n=(G)=>{let U=d.get(G);return U!==void 0&&!Ye(U)},b=(G,U)=>{let ee=[],ne=d.getTotal();d.touchChunksForRange(G,Math.min(U,ne-1));for(let le=G;le<=U&&le<ne;le++){let ce=d.get(le);if(ce!==void 0)ee.push(ce);else ee.push(v().generate(le))}return ee},T=(G)=>{d.setTotal(G),p=d.getCachedCount()<G,F(),k()},N=(G,U=0,ee)=>{if(t&&G.length>0){let ne=v();if(!ne.hasAnalyzedStructure())ne.analyzeStructure(G)}for(let ne=0;ne<G.length;ne++){let le=G[ne];if(le!==void 0){let ce=U+ne;d.set(ce,le),I(ce,le)}}if(ee!==void 0)d.setTotal(ee);else if(U+G.length>d.getTotal())d.setTotal(U+G.length);if(d.getCachedCount()>=d.getTotal()&&d.getTotal()>0)p=!1;F(),k(),y?.(G,U,d.getTotal())},Y=(G,U)=>{let ee=d.get(G);if(!ee)return!1;let ne=ee.id,le={...ee,...U};if(d.set(G,le),U.id!==void 0&&U.id!==ne)K(ne);return I(G,le),F(),k(),!0},q=(G,U)=>{d.insert(U,G),A(),X(),F(),k()},Z=(G)=>{let U=z.get(G);if(U===void 0)return!1;if(!d.delete(U))return!1;return A(),X(),F(),k(),!0},j=async(G,U)=>{if(!t)return;let ee=d.chunkSize,ne=Math.floor(G/ee),le=Math.floor(U/ee),ce=ee*2;for(let[se,ye]of g){let Se=se.indexOf("-"),we=parseInt(se.slice(0,Se),10);if(Math.abs(we-G)>ce)ye[1].abort(),g.delete(se)}let ge=[],ze=[];for(let se=ne;se<=le;se++){let ye=se*ee,Se=ye+ee-1,we=V(ye,Se);if(d.isChunkFullyLoaded(se))continue;let he=g.get(we);if(he)ze.push(he[0]);else ge.push({start:ye,end:Se})}if(ge.length===0){if(ze.length>0)await Promise.all(ze);return}if(f>0){let se=g.size+ge.length;if(se>f){let ye=(G+U)/2,Se=Math.min(se-f,g.size);while(Se>0){let he=null,be=-1,pe=null;for(let[Me,ie]of g){let fe=Me.indexOf("-"),Q=parseInt(Me.slice(0,fe),10),M=parseInt(Me.slice(fe+1),10),J=Math.abs((Q+M)/2-ye);if(J>be)be=J,he=Me,pe=ie[1]}if(he)pe.abort(),g.delete(he);Se--}let we=f-g.size;if(ge.length>we)ge.sort((he,be)=>{let pe=Math.abs((he.start+he.end)/2-ye),Me=Math.abs((be.start+be.end)/2-ye);return pe-Me}),ge.length=Math.max(0,we)}}if(ge.length===0){if(ze.length>0)await Promise.all(ze);return}for(let se of ge){let ye=V(se.start,se.end),Se=new AbortController,we=(async()=>{P.push(se),C=!0,u=void 0,k();try{let he=se.end-se.start+1,be={offset:se.start,limit:he,cursor:se.start===$?R:void 0,signal:Se.signal},pe=await t.read(be);if(N(pe.items,se.start,pe.total),pe.cursor)R=pe.cursor,$=se.start+pe.items.length;let Me=se.start+pe.items.length;if(Me>=L){if(L=Me,pe.hasMore!==void 0)p=pe.hasMore;else if(pe.total!==void 0)p=Me<pe.total}}catch(he){if(he?.name==="AbortError")return;u=he instanceof Error?he:Error(String(he))}finally{g.delete(ye);let he=P.findIndex((be)=>be.start===se.start&&be.end===se.end);if(he>=0)P.splice(he,1);C=g.size>0,k()}})();g.set(ye,[we,Se]),ze.push(we)}await Promise.all(ze)},te=async(G,U)=>{if(d.isRangeLoaded(G,U))return;await j(G,U)},re=async()=>{if(!t)return;await j(0,o-1)},oe=async()=>{if(!t||C||!p)return!1;let G=d.getCachedCount(),U=d.getTotal(),ee=G,ne=Math.min(ee+o-1,U>0?U-1:ee+o-1);if(ee>=U&&U>0)return p=!1,!1;return await j(ee,ne),d.getCachedCount()>G},ae=async()=>{if(d.clear(),d.setTotal(0),z.clear(),h)h.clear();X(),P=[],C=!1,R=void 0,$=void 0,p=!0,L=0,u=void 0,F(),k()},ue=(G,U)=>{if(d.evictDistant(G,U)>0)A()},me=()=>{d.clear(),z.clear(),R=void 0,$=void 0,u=void 0,P=[],C=!1,F(),k()},ve=()=>{if(d.reset(),z.clear(),h)h.clear();R=void 0,$=void 0,p=!0,L=0,u=void 0,P=[],C=!1,F(),k()};if(r&&r.length>0)N(r,0,l??r.length);else if(l!==void 0)d.setTotal(l),F(),k();return{getState:S,getTotal:D,getCached:a,getIsLoading:w,getHasMore:m,getStorage:E,getPlaceholders:_,getItem:H,getItemById:B,getIndexById:O,isItemLoaded:n,getItemsInRange:b,setTotal:T,setItems:N,updateItem:Y,insertItem:q,removeItem:Z,loadRange:j,ensureRange:te,loadInitial:re,loadMore:oe,reload:ae,evictDistant:ue,clear:me,reset:ve}};function St(i){let{adapter:t,total:r,autoLoad:l=!0,storage:e}=i,s=i.loading?.cancelThreshold??kt,o=i.loading?.preloadThreshold??Pt,f=i.loading?.preloadAhead??Et,x=i.loading?.maxConcurrent??Ft,c,y,W,d,h,v,z=null,C=null,u=null,p=0,R=!1,$=-1,P=-1,L=e?.chunkSize??Oe,g=()=>{if(z=null,C!==null)clearTimeout(C),C=null},X=(I,K)=>{return c.ensureRange(I,K)},k=(I,K=Oe)=>{d.emit("load:start",{offset:I,limit:K})},F=(I)=>{d.emit("error",{error:I,context:"ensureRange"})},A=()=>{if(!z)return;z=null;let I={start:y.startIndex,end:y.startIndex+Math.max(0,y.visibleCount-1)};if(I.end<I.start)return;X(I.start,I.end).catch(F)};return{name:"data",priority:20,setup(I){y=I.getState(),W=I.sizeCache,d=I.emitter,h=I.dom,v=I.forceRender.bind(I);let K=null;I.setVirtualTotalFn(()=>K?.getTotal()??0),c=K=Dr({adapter:t,...r!==void 0&&{initialTotal:r},pageSize:e?.chunkSize??Oe,maxConcurrent:x,...e&&{storage:{...e.chunkSize!==void 0&&{chunkSize:e.chunkSize},...e.maxCachedItems!==void 0&&{maxCachedItems:e.maxCachedItems},...e.evictionBuffer!==void 0&&{evictionBuffer:e.evictionBuffer}}},onDataChange:()=>{if(y.initialized){let D=c.getTotal();y.totalItems=D;let a=W.getTotal();if(D!==a)W.rebuild(D);I.updateContentSize(W.getTotalSize()),I.renderIfNeeded()}},onItemsLoaded:(D)=>{if(y.initialized)v(),d.emit("load:end",{items:D,total:c.getTotal()})}}),I.setGetItemFn((D)=>c.getItem(D)),I.setRemoveItemFn((D)=>{let a=c.getIndexById(D);if(a<0)return-1;if(!c.removeItem(D))return-1;return a}),I.setInsertItemFn((D,a)=>{c.insertItem(D,a)}),I.setUpdateItemFn((D,a)=>{let w=c.getIndexById(D);if(w<0)return!1;return c.updateItem(w,a)}),I.registerMethod("reload",async()=>{if(z=null,$=-1,P=-1,I.forceRender(),await c.reload(),I.scrollTo(0),l)k(0),await c.loadInitial(),I.forceRender()}),I.registerMethod("loadVisibleRange",async()=>{z=null,I.forceRender();let D=c.getTotal();if(y.visibleCount>0&&y.startIndex<D){let a=Math.min(y.startIndex+y.visibleCount-1,D-1);k(y.startIndex,a-y.startIndex+1),await X(y.startIndex,a)}}),I.registerMethod("getTotal",()=>{return c.getTotal()}),I.registerMethod("setTotal",(D)=>{c.setTotal(D)}),I.registerMethod("_getTotal",()=>c.getTotal()),I.registerMethod("_setTotal",(D)=>{c.setTotal(D)}),I.registerMethod("_cancelAutoLoad",()=>{R=!0}),I.registerMethod("_getLoadedItem",(D)=>{return c.getStorage().get(D)}),I.registerMethod("_getLoadedCount",()=>c.getCached()),d.on("load:start",()=>{h.root.setAttribute("aria-busy","true")}),d.on("load:end",()=>{h.root.removeAttribute("aria-busy")}),I.registerDestroyHandler(()=>{if(u!==null)clearTimeout(u),u=null;g()}),d.on("velocity:change",({velocity:D})=>{p=Math.abs(D)});let V=()=>{if(y.destroyed)return;if(y.visibleCount>0&&y.startIndex<c.getTotal()){let D=Math.min(y.startIndex+y.visibleCount-1,c.getTotal()-1);X(y.startIndex,D).catch(F)}A()};if(window.addEventListener("online",V),I.registerDestroyHandler(()=>{window.removeEventListener("online",V)}),l)queueMicrotask(()=>{if(R)return;k(0),c.loadInitial().catch((D)=>{d.emit("error",{error:D,context:"loadInitial"})})});else if(r!==void 0)c.setTotal(r)},hooks:{onAfterScroll(){if(y.destroyed)return;let I=y.startIndex+Math.max(0,y.visibleCount-1);if(p>s){if(C!==null)clearTimeout(C),C=null;z={start:y.startIndex,end:I};return}if(p>o){let D=Math.floor(y.startIndex/L),a=Math.floor(I/L);if(D!==$||a!==P){if($=D,P=a,I>=y.startIndex)X(y.startIndex,I).catch(F)}let w=y.startIndex,m=I,S=y.scrollDirection;if(S>0)m=Math.min(m+f,c.getTotal()-1);else if(S<0)w=Math.max(0,w-f);if(z={start:w,end:m},C!==null)clearTimeout(C);C=setTimeout(()=>{if(C=null,y.destroyed||!z)return;let{start:E,end:_}=z;if(z=null,_>=E)X(E,_).catch(F)},100);return}g();let K=Math.floor(y.startIndex/L),V=Math.floor(I/L);if(K!==$||V!==P){if($=K,P=V,I>=y.startIndex)X(y.startIndex,I).catch(F)}},onIdle(){if(y.destroyed)return;p=0,$=-1,P=-1,A(),g()}},destroy(){if(u!==null)clearTimeout(u);g()}}}var We=(i,t)=>{let r=0,l=i.length-1;while(r<l){let e=r+l+1>>>1;if(i[e].headerLayoutIndex<=t)r=e;else l=e-1}return r},tt=(i,t)=>{let r=0,l=i.length-1;while(r<l){let e=r+l+1>>>1;if(i[e].firstDataIndex<=t)r=e;else l=e-1}return r},rt=(i,t,r)=>{if(i===0)return[];let l=[],e=null,s=0,o=0;for(let f=0;f<i;f++){let x=r?.(f);if(!x)continue;let c=t(f,x);if(e===null)e=c,s=0;else if(c!==e){let y=f-s;l.push({key:e,groupIndex:l.length,headerLayoutIndex:o,firstDataIndex:s,count:y}),o=o+1+y,e=c,s=f}}if(e!==null)l.push({key:e,groupIndex:l.length,headerLayoutIndex:o,firstDataIndex:s,count:i-s});return l},Or=(i,t,r)=>{let l=rt(i,t.getGroupForIndex,r),e=i+l.length,s=t.header?.height??t.header?.width??t.headerHeight;return{get totalEntries(){return e},get groupCount(){return l.length},get groups(){return l},getEntry:(o)=>{if(l.length===0)return{type:"item",dataIndex:o,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let f=We(l,o),x=l[f];if(o===x.headerLayoutIndex)return{type:"header",group:x};let c=o-x.headerLayoutIndex-1;return{type:"item",dataIndex:x.firstDataIndex+c,group:x}},layoutToDataIndex:(o)=>{if(l.length===0)return o;let f=We(l,o),x=l[f];if(o===x.headerLayoutIndex)return-1;let c=o-x.headerLayoutIndex-1;return x.firstDataIndex+c},dataToLayoutIndex:(o)=>{if(l.length===0)return o;let f=tt(l,o),x=l[f],c=o-x.firstDataIndex;return x.headerLayoutIndex+1+c},getGroupAtLayoutIndex:(o)=>{if(l.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let f=We(l,o);return l[f]},getGroupAtDataIndex:(o)=>{if(l.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let f=tt(l,o);return l[f]},getHeaderHeight:typeof s==="number"?(o)=>s:(o)=>{let f=l[o];if(!f)return 0;return s(f.key,o)},rebuild:(o,f)=>{l=rt(o,t.getGroupForIndex,f??r),e=o+l.length}}},It=(i,t,r,l,e=0)=>{let s=r?"width":"height",o=document.createElement("div");return o.className=`${t}-sticky-header`,o.setAttribute("role","presentation"),o.setAttribute("aria-hidden","true"),o.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(r?`top:0;bottom:0;left:${e||0}px`:`top:${e||0}px`),o.style[s]=`${l}px`,i.insertBefore(o,i.firstChild),o},qr=(i,t,r,l,e,s=!1,o=0,f,x)=>{let c=s?"width":"height",y=s?"height":"width",W=s?"X":"Y",d=(Y,q)=>{Y.style[c]=`${q}px`},h=x??It(i,e,s,0,o),v=()=>{let Y=document.createElement("div");return Y.className="sticky-group",Y.style.position="absolute",Y.style.willChange="transform",Y.style[y]="100%",Y},z=v(),C=v();h.append(z,C);let u=z,p=C,R=t.groups,$=[],P=[],L=[],g=0,X=()=>{R=t.groups,g=R.length,$=Array(g),P=Array(g),L=Array(g);let Y=f?f():1;for(let q=0;q<g;q++)$[q]=r.getOffset(R[q].headerLayoutIndex)*Y,P[q]=t.getHeaderHeight(q),L[q]=P[q]*Y};X();let k=-1,F=0,A=0,I=-1,K=!1,V=0,D=!1,a=(Y,q)=>{l(Y,q);let Z=P[q];return d(Y,Z),Z},w=(Y)=>{Y.replaceChildren(),Y.style.transform=""},m=(Y)=>{if(Y===k)return;if(k=Y,F=0,A=0,Y<0||Y>=g){w(u);return}F=a(u,Y),A=L[Y],d(h,F),u.style.transform=""},S=(Y)=>{if(Y===V)return;V=Y;let q=Math.round(Y);u.style.transform=`translate${W}(${q}px)`,p.style.transform=`translate${W}(${q+F}px)`},E=()=>{V=0,u.style.transform="",p.style.transform=""},_=()=>{if(!D)return;let Y=u;u=p,p=Y,k=I,F=k>=0?P[k]:0,A=k>=0?L[k]:0,d(h,F),w(p),I=-1,D=!1,E()},H=()=>{if(!D)return;w(p),I=-1,D=!1,E()},B=!!x,O=()=>{if(K)return;if(K=!0,B)h.style.visibility="";else h.style.display=""},n=()=>{if(!K)return;if(K=!1,B)h.style.visibility="hidden";else h.style.display="none";w(u),k=-1,F=0,A=0,H()},b=(Y)=>{if(g===0){n();return}if(Y<$[0]){n();return}let q=0,Z=g-1;while(q<Z){let te=q+Z+1>>>1;if($[te]+L[te]<=Y)q=te;else Z=te-1}if(!K)O();m(q);let j=q+1;if(j<g){let te=$[j]-Y;if(te<=0&&te>-A){if(I!==j||!D)I=j,a(p,j),D=!0;let re=A>0?te/A*F:te;S(re)}else if(te<=-A){if(D)_()}else if(D)H()}else if(D)H()},T=()=>{X();let Y=k;if(k=-1,F=0,A=0,Y>=0)m(Y)},N=()=>{h.remove(),k=-1,F=0,A=0,I=-1,K=!1,D=!1};if(!x)h.style.display="none";return{update:b,refresh:T,show:O,hide:n,destroy:N}},Ae={selected:!1,focused:!1},it=typeof process<"u"&&process.env?.NODE_ENV!=="production";function Mt(i){if(!i.getGroupForIndex)throw Error("[vlist] groups: getGroupForIndex is required");let t=i.header?.height??i.header?.width??i.headerHeight;if(t==null||typeof t==="number"&&t<=0)throw Error("[vlist] groups: header height/width must be a positive number or function");let r=i.header?.template??i.headerTemplate;if(!r)throw Error("[vlist] groups: header.template is required");let l=r,e,s=null,o,f,x,c,y,W,d,h=null,v,z,C,u=null,p,R,$=null,P,L=new Map,g=new Set,X=new Map,k=-1,F=-1,A=!0,I=-1,K=0,V=null,D;function a(){return e.totalEntries}function w(){let n=f.totalItems;if(n===I)return;if(it)console.log(`[groups] syncLayout: ${I} → ${n}`);let b=I>0;I=n,e.rebuild(n,h??d),D(e.totalEntries);let T=o.getTotalSize();if(c.style[v?"width":"height"]=T+"px",s)s.refresh(),s.update(f.scrollPosition);if(b)E();let N=$?.("_scrollbar:getInstance");if(N)N()?.updateBounds(T,f.containerSize)}function m(n){let b=o.getOffset(n);if(v)return`translate(${Math.round(b)}px, 0)`;return`translate(0, ${Math.round(b)}px)`}function S(n,b){let T=o.getSize(b);if(v)n.style.width=`${T}px`;else n.style.height=`${T}px`}function E(){L.forEach((n)=>{n.remove();let b=n.getAttribute("data-id");if(b)X.set(b,n);else x.release(n)}),L.clear(),g.clear()}function _(){if(X.size>0)X.forEach((n)=>x.release(n)),X.clear()}function H(n,b,T,N){if(b.type==="header"){let re=`__group_header_${b.group.groupIndex}`;if(n.getAttribute("data-id")===re)return!0;n.className=R,n.setAttribute("role","presentation"),n.removeAttribute("aria-selected"),n.setAttribute("data-id",re);let oe=l(b.group.key,b.group.groupIndex);if(typeof oe==="string")n.innerHTML=oe;else n.innerHTML="",n.appendChild(oe);return!0}let Y=b.dataIndex,q=d(Y);if(!q)return n.innerHTML="",!1;let Z=q._isPlaceholder===!0,j=String(q.id);if(!Z&&n.getAttribute("data-id")===j){if(P)n.id=`${z}-item-${N}`,n.setAttribute("aria-posinset",String(Y+1)),n.setAttribute("aria-setsize",String(f.totalItems));return!0}if(n.className=p,n.setAttribute("role","option"),n.setAttribute("data-id",j),P)n.id=`${z}-item-${N}`,n.setAttribute("aria-posinset",String(Y+1)),n.setAttribute("aria-setsize",String(f.totalItems));if(Z)n.classList.add(`${z}-item--placeholder`);if(T)T(N,Ae);else Ae.selected=!1,Ae.focused=!1;let te=W(q,Y,Ae);if(typeof te==="string")n.innerHTML=te;else n.innerHTML="",n.appendChild(te);return!Z}function B(){if(f.destroyed)return;w();let{scrollPosition:n,containerSize:b}=f;if(!A&&n===k&&b===F)return;k=n,F=b;let T=A;A=!1;let N=a();if(b<=0||N===0){if(L.size>0)L.forEach((U)=>{U.remove(),x.release(U)}),L.clear(),g.clear();return}let Y=o.indexAtOffset(n),q=o.indexAtOffset(n+b);if(q<N-1)q++;Y=Math.max(0,Y),q=Math.min(N-1,Math.max(0,q));let Z=Math.max(0,Y-C),j=Math.min(N-1,q+C);if(Z===f.prevRangeStart&&j===f.prevRangeEnd&&!f.renderPending)return;L.forEach((U,ee)=>{if(ee<Z||ee>j)U.remove(),x.release(U),L.delete(ee),g.delete(ee)});let te=u?.()??null,re=te?`${z}-item--selected`:"",oe=te?`${z}-item--focused`:"",ae=null;for(let U=Z;U<=j;U++){let ee=L.get(U),ne=!1;if(ee===void 0){let le=e.getEntry(U);ne=le.type==="header";let ce;if(le.type==="header")ce=`__group_header_${le.group.groupIndex}`;else{let ge=d(le.dataIndex);if(ge&&ge._isPlaceholder!==!0)ce=String(ge.id)}if(ce!==void 0){let ge=X.get(ce);if(ge)X.delete(ce),ee=ge}if(!ee)ee=x.acquire();if(ee.setAttribute("data-index",String(U)),H(ee,le,te,U))g.delete(U);else g.add(U);if(S(ee,U),ee.style.transform=m(U),L.set(U,ee),!ae)ae=document.createDocumentFragment();ae.appendChild(ee)}else if(T&&g.has(U)){let le=e.getEntry(U);if(le.type==="item")if(H(ee,le,te,U))g.delete(U);else g.add(U)}else ne=ee.classList.contains(R);if(!ne&&te)if(te(U,Ae),ee.classList.toggle(re,Ae.selected),ee.classList.toggle(oe,Ae.focused),Ae.selected)ee.setAttribute("aria-selected","true");else ee.removeAttribute("aria-selected")}if(ae)c.appendChild(ae);_();let ue=o.getTotalSize();c.style[v?"width":"height"]=ue+"px",f.prevRangeStart=Z,f.prevRangeEnd=j,f.renderPending=!1;let me=0,ve=0,G=!1;for(let U=Z;U<=j&&me<f.capacity;U++){let ee=e.getEntry(U);if(ee.type==="item"){if(!G)ve=ee.dataIndex,G=!0;f.visibleIndices[me]=ee.dataIndex,f.visibleOffsets[me]=o.getOffset(U),f.visibleSizes[me]=o.getSize(U),me++}}f.visibleCount=me,f.startIndex=ve}function O(){if(f.destroyed)return;if(it)console.log(`[groups] forceRender, placeholders: ${g.size}, rendered: ${L.size}`);let n=V?.()??0;if(n!==K){K=n;let b=e.groups,T=b.length;e.rebuild(I,h??d);let N=e.groups,Y=N.length!==T;if(!Y){for(let q=0;q<T;q++)if(N[q].headerLayoutIndex!==b[q].headerLayoutIndex){Y=!0;break}}if(Y){D(e.totalEntries);let q=o.getTotalSize();if(c.style[v?"width":"height"]=q+"px",s)s.refresh(),s.update(f.scrollPosition);let Z=1/0,j=Math.min(T,N.length);for(let re=0;re<j;re++)if(N[re].headerLayoutIndex!==b[re].headerLayoutIndex){Z=Math.min(N[re].headerLayoutIndex,b[re].headerLayoutIndex);break}if(N.length>T&&j<N.length)Z=Math.min(Z,N[j].headerLayoutIndex);else if(T>N.length&&j<T)Z=Math.min(Z,b[j].headerLayoutIndex);if(Z<=f.prevRangeEnd)E();let te=$?.("_scrollbar:getInstance");if(te)te()?.updateBounds(q,f.containerSize)}}f.prevRangeStart=-1,f.prevRangeEnd=-1,f.renderPending=!0,A=!0,B()}return{name:"groups",priority:10,setup(n){o=n.sizeCache,f=n.getState(),x=n.pool,c=n.dom.content,y=n.dom.root,W=n.template,v=n.config.horizontal,z=n.config.classPrefix,C=n.config.overscan,d=n.getItem.bind(n),u=()=>n.getItemStateFn(),$=n.getMethod.bind(n),P=n.config.interactive,p=`${z}-item`,R=`${z}-group-header`,queueMicrotask(()=>{let q=$?.("_getLoadedItem");if(q)h=q;let Z=$?.("_getLoadedCount");if(Z)V=Z});let b=f.totalItems;e=Or(b,i,h??d),I=b;let T=typeof t==="number"?(q)=>t:(q)=>{let Z=e.groups[q];if(!Z)return 0;return t(Z.key,q)},N=o.getSize,Y=(q)=>{let Z=e.getEntry(q);if(Z.type==="header"){if(i.sticky!==!1&&Z.group.groupIndex===0)return 0;return T(Z.group.groupIndex)}return N(Z.dataIndex)};if(n.setSizeConfig(Y),D=o.rebuild,o.rebuild=(q)=>{D(e.totalEntries)},o.rebuild(e.totalEntries),n.setVirtualTotalFn(()=>e.totalEntries),y.classList.add(`${z}--grouped`),i.sticky!==!1){let q=(te,re)=>{let oe=e.groups[re];if(!oe)return;let ae=l(oe.key,re);if(typeof ae==="string")te.innerHTML=ae;else te.replaceChildren(ae)},Z=e.getHeaderHeight(0),j=It(y,z,v,Z);if(s=qr(y,e,o,q,z,v,0,void 0,j),s.update(f.scrollPosition),!v)n.dom.viewport.style.height=`calc(100% - ${Z}px)`;else n.dom.viewport.style.width=`calc(100% - ${Z}px)`}n.setRenderFn(B,O),n.registerMethod("getGroupLayout",()=>e),n.registerMethod("_dataToLayoutIndex",(q)=>e.dataToLayoutIndex(q)),n.registerMethod("_layoutToDataIndex",(q)=>e.layoutToDataIndex(q)),n.registerMethod("_getRenderedElement",(q)=>L.get(q)??null),n.registerMethod("_isGroupHeader",(q)=>{return e.getEntry(q).type==="header"}),n.registerMethod("scrollToIndex",(q,Z="start")=>{let j=e.dataToLayoutIndex(q),te=e.totalEntries;if(te===0)return;let re=Math.max(0,Math.min(j,te-1)),oe=o.getOffset(re),ae=o.getSize(re),ue=f.containerSize,me=o.getTotalSize(),ve=Math.max(0,me-ue),G=typeof Z==="string"?Z:Z.align??"start",U=typeof Z==="object"?Z.behavior:void 0,ee=typeof Z==="object"?Z.duration:void 0,ne;switch(G){case"center":ne=oe-(ue-ae)/2;break;case"end":ne=oe-ue+ae;break;default:ne=oe}if(ne=Math.max(0,Math.min(ne,ve)),U==="smooth"&&ee&&ee>0)n.smoothScrollTo(ne,ee);else n.scrollTo(ne)}),n.registerDestroyHandler(()=>{for(let[,q]of L)q.remove();if(L.clear(),g.clear(),s)s.destroy(),s=null;y.classList.remove(`${z}--grouped`)})},hooks:{onAfterScroll(n,b){if(s)s.update(n)}},destroy(){if(s)s.destroy(),s=null;L.clear(),g.clear(),X.clear()}}}function Nr(i){let t=wt(null),r=Yr(null);if(Wr(()=>{let l=t.value;if(!l)return;let e=Kr(i),s=[];if(e.scroll?.element===window)s.push(vt());let o=e.item,f=e.orientation==="horizontal",x=f?o.width!=null:o.height!=null,c=f?o.estimatedWidth!=null:o.estimatedHeight!=null;if(!x&&c)s.push(xt());if(e.adapter)s.push(St({adapter:e.adapter,...e.loading&&{loading:e.loading}}));if(e.layout==="grid"&&e.grid)s.push(pt(e.grid));if(e.layout==="masonry"&&e.masonry)s.push(bt(e.masonry));if(e.groups){let d=e.groups,h=typeof d.headerHeight==="function"?d.headerHeight("",0):d.headerHeight;s.push(Mt({getGroupForIndex:d.getGroupForIndex,headerHeight:h,headerTemplate:d.headerTemplate,...d.sticky!==void 0&&{sticky:d.sticky}}))}if((e.selection?.mode||"none")!=="none")s.push(Ke(e.selection));else s.push(Ke({mode:"none"}));s.push(ht());let W=e.scroll?.scrollbar||e.scrollbar;if(W!=="none"){let d=typeof W==="object"?W:{};s.push(gt(d))}s.push(yt()),r.value=ct({...e,container:l},s)}),zt(()=>{r.value?.destroy(),r.value=null}),Br(i))Lt(()=>i.value.items,(l)=>{if(r.value&&l)r.value.setItems(l)});return{containerRef:t,instance:r}}function jr(i,t,r){let l=wt(r);Lt(()=>i.value,(e)=>{if(!e)return;let s=(f)=>{l.value(f)},o=e.on(t,s);zt(()=>{o()})},{immediate:!0})}export{jr as useVListEvent,Nr as useVList};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vlist-vue",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Vue composable for vlist - lightweight virtual scrolling",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Floor IO",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"./package.json": "./package.json"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"vlist": "^
|
|
35
|
+
"vlist": "^2.0.0",
|
|
36
36
|
"vue": ">=3.0.0"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|