@floor/vlist 0.6.2 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -75
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/vlist.d.ts +7 -5
- package/dist/vlist.js +1 -0
- package/package.json +12 -28
- package/dist/adapters/index.d.ts +0 -20
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/react.d.ts +0 -119
- package/dist/adapters/react.d.ts.map +0 -1
- package/dist/adapters/svelte.d.ts +0 -198
- package/dist/adapters/svelte.d.ts.map +0 -1
- package/dist/adapters/vue.d.ts +0 -151
- package/dist/adapters/vue.d.ts.map +0 -1
- package/dist/builder/context.d.ts.map +0 -1
- package/dist/builder/core.d.ts.map +0 -1
- package/dist/builder/data.d.ts.map +0 -1
- package/dist/builder/index.d.ts.map +0 -1
- package/dist/builder/types.d.ts.map +0 -1
- package/dist/compression/index.js +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/core/core.js +0 -1
- package/dist/core/full.d.ts +0 -22
- package/dist/core/full.d.ts.map +0 -1
- package/dist/core/index.js +0 -1
- package/dist/core/lite.d.ts +0 -129
- package/dist/core/lite.d.ts.map +0 -1
- package/dist/core/minimal.d.ts +0 -104
- package/dist/core/minimal.d.ts.map +0 -1
- package/dist/core-light.d.ts +0 -104
- package/dist/core-light.d.ts.map +0 -1
- package/dist/core-light.js +0 -1
- package/dist/core.d.ts +0 -129
- package/dist/core.d.ts.map +0 -1
- package/dist/data/index.js +0 -1
- package/dist/events/emitter.d.ts.map +0 -1
- package/dist/events/index.d.ts.map +0 -1
- package/dist/features/async/index.d.ts.map +0 -1
- package/dist/features/async/manager.d.ts.map +0 -1
- package/dist/features/async/placeholder.d.ts.map +0 -1
- package/dist/features/async/plugin.d.ts.map +0 -1
- package/dist/features/async/sparse.d.ts.map +0 -1
- package/dist/features/grid/index.d.ts.map +0 -1
- package/dist/features/grid/layout.d.ts.map +0 -1
- package/dist/features/grid/plugin.d.ts.map +0 -1
- package/dist/features/grid/renderer.d.ts.map +0 -1
- package/dist/features/grid/types.d.ts.map +0 -1
- package/dist/features/page/index.d.ts.map +0 -1
- package/dist/features/page/plugin.d.ts.map +0 -1
- package/dist/features/scale/index.d.ts.map +0 -1
- package/dist/features/scale/plugin.d.ts.map +0 -1
- package/dist/features/scrollbar/controller.d.ts.map +0 -1
- package/dist/features/scrollbar/index.d.ts.map +0 -1
- package/dist/features/scrollbar/plugin.d.ts.map +0 -1
- package/dist/features/scrollbar/scrollbar.d.ts.map +0 -1
- package/dist/features/sections/index.d.ts.map +0 -1
- package/dist/features/sections/layout.d.ts.map +0 -1
- package/dist/features/sections/plugin.d.ts.map +0 -1
- package/dist/features/sections/sticky.d.ts.map +0 -1
- package/dist/features/sections/types.d.ts.map +0 -1
- package/dist/features/selection/index.d.ts.map +0 -1
- package/dist/features/selection/plugin.d.ts.map +0 -1
- package/dist/features/selection/state.d.ts.map +0 -1
- package/dist/features/snapshots/index.d.ts.map +0 -1
- package/dist/features/snapshots/plugin.d.ts.map +0 -1
- package/dist/groups/index.js +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/plugins/compression/index.d.ts +0 -10
- package/dist/plugins/compression/index.d.ts.map +0 -1
- package/dist/plugins/compression/plugin.d.ts +0 -42
- package/dist/plugins/compression/plugin.d.ts.map +0 -1
- package/dist/plugins/data/index.d.ts +0 -9
- package/dist/plugins/data/index.d.ts.map +0 -1
- package/dist/plugins/data/manager.d.ts +0 -103
- package/dist/plugins/data/manager.d.ts.map +0 -1
- package/dist/plugins/data/placeholder.d.ts +0 -62
- package/dist/plugins/data/placeholder.d.ts.map +0 -1
- package/dist/plugins/data/plugin.d.ts +0 -60
- package/dist/plugins/data/plugin.d.ts.map +0 -1
- package/dist/plugins/data/sparse.d.ts +0 -91
- package/dist/plugins/data/sparse.d.ts.map +0 -1
- package/dist/plugins/grid/index.d.ts +0 -9
- package/dist/plugins/grid/index.d.ts.map +0 -1
- package/dist/plugins/grid/layout.d.ts +0 -29
- package/dist/plugins/grid/layout.d.ts.map +0 -1
- package/dist/plugins/grid/plugin.d.ts +0 -48
- package/dist/plugins/grid/plugin.d.ts.map +0 -1
- package/dist/plugins/grid/renderer.d.ts +0 -55
- package/dist/plugins/grid/renderer.d.ts.map +0 -1
- package/dist/plugins/grid/types.d.ts +0 -71
- package/dist/plugins/grid/types.d.ts.map +0 -1
- package/dist/plugins/groups/index.d.ts +0 -10
- package/dist/plugins/groups/index.d.ts.map +0 -1
- package/dist/plugins/groups/layout.d.ts +0 -46
- package/dist/plugins/groups/layout.d.ts.map +0 -1
- package/dist/plugins/groups/plugin.d.ts +0 -64
- package/dist/plugins/groups/plugin.d.ts.map +0 -1
- package/dist/plugins/groups/sticky.d.ts +0 -33
- package/dist/plugins/groups/sticky.d.ts.map +0 -1
- package/dist/plugins/groups/types.d.ts +0 -86
- package/dist/plugins/groups/types.d.ts.map +0 -1
- package/dist/plugins/scroll/controller.d.ts +0 -121
- package/dist/plugins/scroll/controller.d.ts.map +0 -1
- package/dist/plugins/scroll/index.d.ts +0 -8
- package/dist/plugins/scroll/index.d.ts.map +0 -1
- package/dist/plugins/scroll/plugin.d.ts +0 -60
- package/dist/plugins/scroll/plugin.d.ts.map +0 -1
- package/dist/plugins/scroll/scrollbar.d.ts +0 -73
- package/dist/plugins/scroll/scrollbar.d.ts.map +0 -1
- package/dist/plugins/selection/index.d.ts +0 -7
- package/dist/plugins/selection/index.d.ts.map +0 -1
- package/dist/plugins/selection/plugin.d.ts +0 -44
- package/dist/plugins/selection/plugin.d.ts.map +0 -1
- package/dist/plugins/selection/state.d.ts +0 -102
- package/dist/plugins/selection/state.d.ts.map +0 -1
- package/dist/plugins/snapshots/index.d.ts +0 -8
- package/dist/plugins/snapshots/index.d.ts.map +0 -1
- package/dist/plugins/snapshots/plugin.d.ts +0 -44
- package/dist/plugins/snapshots/plugin.d.ts.map +0 -1
- package/dist/plugins/window/index.d.ts +0 -8
- package/dist/plugins/window/index.d.ts.map +0 -1
- package/dist/plugins/window/plugin.d.ts +0 -53
- package/dist/plugins/window/plugin.d.ts.map +0 -1
- package/dist/react/index.js +0 -1
- package/dist/react/react.js +0 -1
- package/dist/render/compression.d.ts +0 -116
- package/dist/render/compression.d.ts.map +0 -1
- package/dist/render/heights.d.ts +0 -63
- package/dist/render/heights.d.ts.map +0 -1
- package/dist/render/index.d.ts +0 -9
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/renderer.d.ts +0 -103
- package/dist/render/renderer.d.ts.map +0 -1
- package/dist/render/virtual.d.ts +0 -139
- package/dist/render/virtual.d.ts.map +0 -1
- package/dist/rendering/heights.d.ts.map +0 -1
- package/dist/rendering/index.d.ts.map +0 -1
- package/dist/rendering/renderer.d.ts.map +0 -1
- package/dist/rendering/scale.d.ts.map +0 -1
- package/dist/rendering/viewport.d.ts.map +0 -1
- package/dist/scroll/index.js +0 -1
- package/dist/svelte/index.js +0 -1
- package/dist/svelte/svelte.js +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/vlist.d.ts.map +0 -1
- package/dist/vue/index.js +0 -1
- package/dist/vue/vue.js +0 -1
- package/dist/window/index.js +0 -1
package/dist/svelte/svelte.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var We=Object.defineProperty;var fn=Object.getOwnPropertyDescriptor;var hn=Object.getOwnPropertyNames;var bn=Object.prototype.hasOwnProperty;var Pe=(t,o)=>()=>(t&&(o=t(t=0)),o);var vn=(t,o)=>{for(var r in o)We(t,r,{get:o[r],enumerable:!0})},yn=(t,o,r,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of hn(o))!bn.call(t,a)&&a!==r&&We(t,a,{get:()=>o[a],enumerable:!(e=fn(o,a))||e.enumerable});return t};var Tn=t=>yn(We({},"__esModule",{value:!0}),t);var bt,Ye,Xe,vt=Pe(()=>{"use strict";bt=(t,o,r,e)=>{if(e===0)return 0;if(!t.isVariable())return Math.ceil(r/t.getHeight(0));let a=0,n=0,s=o;for(;s<e&&n<r;)n+=t.getHeight(s),a++,s++;return Math.max(1,a)},Ye=(t,o,r)=>{if(r===0)return 0;if(!t.isVariable())return Math.floor(o/t.getHeight(0));let e=0,a=0;for(let n=r-1;n>=0;n--){let s=t.getHeight(n);if(a+s>o)break;a+=s,e++}return Math.max(e,1)},Xe=(t,o,r)=>{if(r===0)return 0;let e=Math.floor(o),a=o-e,n=Math.max(0,Math.min(e,r-1));return t.getOffset(n)+a*t.getHeight(n)}});var Te,yt,Fe,Tt,Ze=Pe(()=>{"use strict";vt();Te=(t,o)=>{let r=o.getTotalHeight(),e=r>16e6,a=e?16e6:r,n=r>0?a/r:1;return{isCompressed:e,actualHeight:r,virtualHeight:a,ratio:n}},yt=(t,o,r,e,a,n)=>{if(e===0||o===0)return n.start=0,n.end=-1,n;if(!a.isCompressed){let c=r.indexAtOffset(t),m=r.indexAtOffset(t+o);return m<e-1&&m++,n.start=Math.max(0,c),n.end=Math.min(e-1,Math.max(0,m)),n}let{virtualHeight:s}=a,y=t/s*e,f=Math.floor(y),u=bt(r,Math.max(0,f),o,e),T=Math.ceil(y)+u,w=s-o-t;if(w<=o&&w>=-1){let c=Ye(r,o,e),m=Math.max(0,e-c),b=Math.max(0,Math.min(1,1-w/o));f=Math.floor(f+(m-f)*b),T=w<=1?e-1:Math.min(e-1,f+u)}return n.start=Math.max(0,f),n.end=Math.min(e-1,Math.max(0,T)),n},Fe=(t,o,r,e,a,n,s)=>{if(!n.isCompressed||e===0)return r.getOffset(t);let{virtualHeight:l}=n,y=l-a,f=y-o;if(f<=a&&f>=-1){if(o>=y-1){let H=r.getTotalHeight()-r.getOffset(t);return a-H}let I=Ye(r,a,e),w=Math.max(0,e-I),m=o/l*e,b=Math.max(0,Math.min(1,1-f/a)),v=r.getOffset(t)-r.getOffset(w),S=r.getOffset(t)-Xe(r,m,e);return S+(v-S)*b}let T=o/l*e;return r.getOffset(t)-Xe(r,T,e)},Tt=(t,o,r,e,a,n="start")=>{if(e===0)return 0;let s;if(a.isCompressed){if(n==="end"&&t===e-1)return Math.max(0,a.virtualHeight-r);s=t/e*a.virtualHeight}else s=o.getOffset(t);let l=o.getHeight(t);switch(n){case"center":s-=(r-l)/2;break;case"end":s-=r-l;break}let y=a.virtualHeight-r;return Math.max(0,Math.min(s,y))}});var Me,je=Pe(()=>{"use strict";Me=t=>t!==null&&typeof t=="object"&&t.__groupHeader===!0});var St={};vn(St,{createGridRenderer:()=>Qe});var Gn,Qe,Je=Pe(()=>{"use strict";Ze();je();Gn=(t=200)=>{let o=[];return{acquire:()=>{let n=o.pop();if(n)return n;let s=document.createElement("div");return s.setAttribute("role","option"),s},release:n=>{o.length<t&&(n.className="",n.textContent="",n.removeAttribute("style"),n.removeAttribute("data-index"),n.removeAttribute("data-id"),n.removeAttribute("data-row"),n.removeAttribute("data-col"),o.push(n))},clear:()=>{o.length=0}}},Qe=(t,o,r,e,a,n,s,l)=>{let y=Gn(),f=new Map,u=n,T=!1,I=null,w=0,c="",m=C=>(I&&w===C||(I=Te(C,r),w=C),I),b={selected:!1,focused:!1},v=(C,x)=>(b.selected=C,b.focused=x,b),S=`${a}-item ${a}-grid-item`,H=`${a}-item--selected`,h=`${a}-item--focused`,M=(C,x)=>{typeof x=="string"?C.innerHTML=x:C.replaceChildren(x)},d=(C,x,D)=>{C.classList.toggle(H,x),C.classList.toggle(h,D)},E=(C,x)=>{let D=e.getRow(C);if(x){let O=x.totalItems,N=m(O);if(N.isCompressed)return Fe(D,x.scrollTop,r,O,x.containerHeight,N,x.rangeStart)}return r.getOffset(D)},p=(C,x,D)=>{let O=C.dataset.id?.startsWith("__group_header"),N=O?0:e.getCol(x),Y=O?0:e.getColumnOffset(N,u),oe;if(T){let de=e.getRow(x),$=0,ae=new Set;for(let Z=0;Z<x;Z++){let re=e.getRow(Z);if(re<de&&!ae.has(re)){let Q=r.getHeight(Z);$+=Q,ae.add(re)}}oe=$}else oe=E(x,D);C.style.transform=`translate(${Math.round(Y)}px, ${Math.round(oe)}px)`},V=(C,x)=>{let D=C.dataset.id?.startsWith("__group_header"),O=D?u:e.getColumnWidth(u),N;if(T||D)N=r.getHeight(x)-e.gap;else{let Y=e.getRow(x);N=r.getHeight(Y)-e.gap}C.style.width=`${O}px`,C.style.height=`${N}px`},z=(C,x,D,O,N)=>{let Y=y.acquire(),oe=v(D,O);Y.className=S,Y.dataset.index=String(C),Y.dataset.id=String(x.id),Y.dataset.row=String(e.getRow(C)),Y.dataset.col=String(e.getCol(C)),Y.ariaSelected=String(D),l&&(Y.id=`${l}-item-${C}`),s&&(c=String(s()),Y.setAttribute("aria-setsize",c),Y.setAttribute("aria-posinset",String(C+1))),V(Y,C);let de=o(x,C,oe);return M(Y,de),d(Y,D,O),p(Y,C,N),Y},X=(C,x,D,O,N)=>{x.start===0&&C.length>0&&(T=Me(C[0]));for(let[$,ae]of f)($<x.start||$>x.end)&&(ae.element.remove(),y.release(ae.element),f.delete($));let Y=!1;if(s){let $=String(s());Y=$!==c,c=$}let oe=document.createDocumentFragment(),de=[];for(let $=x.start;$<=x.end;$++){let ae=$-x.start,Z=C[ae];if(!Z){console.warn(`\u26A0\uFE0F RENDER: Missing item at index ${$} (range: ${x.start}-${x.end}, items.length: ${C.length})`);continue}let re=D.has(Z.id),Q=$===O,te=f.get($);if(te){let _=te.element.dataset.id,P=String(Z.id);if(_!==P){let J=v(re,Q),B=o(Z,$,J);M(te.element,B),te.element.dataset.id=P,te.element.dataset.row=String(e.getRow($)),te.element.dataset.col=String(e.getCol($)),V(te.element,$)}d(te.element,re,Q),te.element.ariaSelected=String(re),p(te.element,$,N),Y&&te.element.setAttribute("aria-setsize",c)}else{let _=z($,Z,re,Q,N);oe.appendChild(_),de.push({index:$,element:_})}}if(de.length>0){t.appendChild(oe);for(let{index:$,element:ae}of de)f.set($,{index:$,element:ae})}},U=C=>{for(let[x,D]of f)p(D.element,x,C)},ee=(C,x,D,O)=>{let N=f.get(C);if(N){let Y=v(D,O),oe=o(x,C,Y);M(N.element,oe),d(N.element,D,O),N.element.dataset.id=String(x.id),N.element.ariaSelected=String(D),V(N.element,C)}},j=(C,x,D)=>{let O=f.get(C);O&&d(O.element,x,D)},R=C=>f.get(C)?.element,A=C=>{if(!(Math.abs(C-u)<1)){u=C;for(let[x,D]of f)V(D.element,x),p(D.element,x)}},k=()=>{for(let[,C]of f)C.element.remove(),y.release(C.element);f.clear()};return{render:X,updatePositions:U,updateItem:ee,updateItemClasses:j,getElement:R,updateContainerWidth:A,clear:k,destroy:()=>{k(),y.clear()}}}});var Sn="vlist";var In=0,Ce=5,Cn=100,Ke=2,Ln=(t=0)=>{let o=new Array(Ce);for(let r=0;r<Ce;r++)o[r]={position:0,time:0};return{velocity:0,lastPosition:t,lastTime:performance.now(),samples:o,sampleIndex:0,sampleCount:0}},wn=(t,o)=>{let r=performance.now(),e=r-t.lastTime;if(e===0)return t;if(e>Cn){t.sampleCount=0,t.sampleIndex=0,t.velocity=0;let n=t.samples[0];return n.position=o,n.time=r,t.sampleIndex=1,t.sampleCount=1,t.lastPosition=o,t.lastTime=r,t}let a=t.samples[t.sampleIndex];if(a.position=o,a.time=r,t.sampleIndex=(t.sampleIndex+1)%Ce,t.sampleCount=Math.min(t.sampleCount+1,Ce),t.sampleCount>=Ke){let n=(t.sampleIndex-t.sampleCount+Ce)%Ce,s=t.samples[n],l=o-s.position,y=r-s.time;t.velocity=y>0?Math.abs(l)/y:0}return t.lastPosition=o,t.lastTime=r,t},ft=(t,o)=>{if(typeof t=="number"){let n=o;return{getOffset:s=>s*t,getHeight:()=>t,indexAtOffset:s=>n===0||t===0?0:Math.max(0,Math.min(Math.floor(s/t),n-1)),getTotalHeight:()=>n*t,getTotal:()=>n,rebuild:s=>{n=s},isVariable:()=>!1}}let r=o,e=new Float64Array(0),a=n=>{r=n,e=new Float64Array(n+1),e[0]=0;for(let s=0;s<n;s++)e[s+1]=e[s]+t(s)};return a(o),{getOffset:n=>n<=0?0:n>=r?e[r]:e[n],getHeight:n=>t(n),indexAtOffset:n=>{if(r===0||n<=0)return 0;if(n>=e[r])return r-1;let s=0,l=r-1;for(;s<l;){let y=s+l+1>>>1;e[y]<=n?s=y:l=y-1}return s},getTotalHeight:()=>e[r]??0,getTotal:()=>r,rebuild:n=>a(n),isVariable:()=>!0}},Hn=()=>{let t={},o=(n,s)=>(t[n]||(t[n]=new Set),t[n].add(s),()=>r(n,s)),r=(n,s)=>{t[n]?.delete(s)};return{on:o,off:r,emit:(n,s)=>{t[n]?.forEach(l=>{try{l(s)}catch(y){console.error(`[vlist] Error in "${n}" handler:`,y)}})},clear:()=>{for(let n in t)delete t[n]}}},Mn=t=>{if(typeof t=="string"){let o=document.querySelector(t);if(!o)throw new Error(`[vlist/builder] Container not found: ${t}`);return o}return t},Rn=(t,o,r,e)=>{let a=document.createElement("div");a.className=o,e&&a.classList.add(`${o}--horizontal`),a.setAttribute("role","listbox"),a.setAttribute("tabindex","0"),r&&a.setAttribute("aria-label",r),e&&a.setAttribute("aria-orientation","horizontal");let n=document.createElement("div");n.className=`${o}-viewport`,e?(n.style.overflowX="auto",n.style.overflowY="hidden"):n.style.overflow="auto",n.style.height="100%",n.style.width="100%";let s=document.createElement("div");s.className=`${o}-content`,s.style.position="relative",e?s.style.height="100%":s.style.width="100%";let l=document.createElement("div");return l.className=`${o}-items`,l.style.position="relative",e?l.style.height="100%":l.style.width="100%",s.appendChild(l),n.appendChild(s),a.appendChild(n),t.appendChild(a),{root:a,viewport:n,content:s,items:l}},En=(t=100)=>{let o=[];return{acquire:()=>{let r=o.pop();if(r)return r;let e=document.createElement("div");return e.setAttribute("role","option"),e},release:r=>{o.length<t&&(r.className="",r.textContent="",r.removeAttribute("style"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),o.push(r))},clear:()=>{o.length=0}}},xn=(t,o,r,e,a)=>{if(e===0||o===0){a.start=0,a.end=0;return}let n=r.indexAtOffset(t),s=r.indexAtOffset(t+o);s<e-1&&s++,a.start=Math.max(0,n),a.end=Math.min(e-1,Math.max(0,s))},Vn=(t,o,r,e)=>{if(r===0){e.start=0,e.end=0;return}e.start=Math.max(0,t.start-o),e.end=Math.min(r-1,t.end+o)},An=(t,o,r,e,a)=>{if(e===0)return 0;let n=Math.max(0,Math.min(t,e-1)),s=o.getOffset(n),l=o.getHeight(n),y=Math.max(0,o.getTotalHeight()-r),f;switch(a){case"center":f=s-(r-l)/2;break;case"end":f=s-r+l;break;default:f=s}return Math.max(0,Math.min(f,y))},_n=t=>t<.5?2*t*t:-1+(4-2*t)*t,Pn=t=>typeof t=="string"?{align:t,behavior:"auto",duration:300}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??300}:{align:"start",behavior:"auto",duration:300},qe=t=>{if(!t.container)throw new Error("[vlist/builder] Container is required");if(!t.item)throw new Error("[vlist/builder] item configuration is required");let o=t.direction==="horizontal",r=o?"width":"height",e=o?t.item.width:t.item.height;if(e==null)throw new Error(`[vlist/builder] item.${r} is required${o?" when direction is 'horizontal'":""}`);if(typeof e=="number"&&e<=0)throw new Error(`[vlist/builder] item.${r} must be a positive number`);if(typeof e!="number"&&typeof e!="function")throw new Error(`[vlist/builder] item.${r} must be a number or a function (index) => number`);if(!t.item.template)throw new Error("[vlist/builder] item.template is required");if(o&&t.reverse)throw new Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let a=new Map,n=!1,s={use(l){if(n)throw new Error("[vlist/builder] Cannot call .use() after .build()");return a.set(l.name,l),s},build(){if(n)throw new Error("[vlist/builder] .build() can only be called once");return n=!0,Fn(t,a,o,e)}};return s};function Fn(t,o,r,e){let{item:a,items:n,overscan:s=3,classPrefix:l=Sn,ariaLabel:y,reverse:f=!1,scroll:u}=t,T=u?.wheel??!0,I=u?.wrap??!1,w=f,c=`${l}-${In++}`,m=e,b=r?typeof a.height=="number"?a.height:void 0:typeof a.width=="number"?a.width:void 0,v=a.template,S={overscan:s,classPrefix:l,reverse:w,wrap:I,horizontal:r,ariaIdPrefix:c},H=Array.from(o.values()).sort((i,g)=>(i.priority??50)-(g.priority??50)),h=new Set(H.map(i=>i.name));for(let i of H)if(i.conflicts){for(let g of i.conflicts)if(h.has(g))throw new Error(`[vlist/builder] ${i.name} and ${g} cannot be combined`)}if(r){if(h.has("withGrid"))throw new Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(h.has("withGroups"))throw new Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'")}if(w){if(h.has("withGrid"))throw new Error("[vlist/builder] withGrid cannot be used with reverse: true");if(h.has("withGroups"))throw new Error("[vlist/builder] withGroups cannot be used with reverse: true")}let M=Mn(t.container),d=Rn(M,l,y,r),E=Hn(),p=n?[...n]:[],V=ft(m,p.length),z=En(),X=d.viewport.clientHeight,U=d.viewport.clientWidth,ee=!1,j=!1,R=0,A=null,k=null,G=Ln(0),C={start:0,end:0},x={start:0,end:0},D={start:-1,end:-1},O={viewportState:{scrollTop:0,containerHeight:X,totalHeight:V.getTotalHeight(),actualHeight:V.getTotalHeight(),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},N=new Map,Y={selected:!1,focused:!1},oe=`${l}-item`,de="",$=new Map,ae=()=>{$.clear();for(let i=0;i<p.length;i++){let g=p[i];g&&$.set(g.id,i)}};ae();let Z=null,re=()=>Z?Z.getTotal():p.length,Q=[],te=[],_=[],P=[],K=[],J=[],B=new Map,ne=()=>r?d.viewport.scrollLeft:d.viewport.scrollTop,se=i=>{r?d.viewport.scrollLeft=i:d.viewport.scrollTop=i},be=(i=2)=>{let g=V.getTotalHeight();return R+X>=g-i},ue=!1,ie,fe,le=(i,g,L,F,q)=>{xn(i,g,L,F,q)},he=(i,g,L,F,q)=>An(i,g,L,F,q),ce=(i,g)=>{typeof g=="string"?i.innerHTML=g:i.replaceChildren(g)},ye=(i,g)=>{let L=Math.round(V.getOffset(g));r?i.style.transform=`translateX(${L}px)`:i.style.transform=`translateY(${L}px)`},Xt=(i,g)=>{let L=z.acquire();return L.className=oe,r?(L.style.width=`${V.getHeight(i)}px`,b!=null&&(L.style.height=`${b}px`)):L.style.height=`${V.getHeight(i)}px`,L.dataset.index=String(i),L.dataset.id=String(g.id),L.ariaSelected="false",L.id=`${c}-item-${i}`,de=String(re()),L.setAttribute("aria-setsize",de),L.setAttribute("aria-posinset",String(i+1)),ce(L,v(g,i,Y)),ye(L,i),L},we=()=>{let i=`${V.getTotalHeight()}px`;r?d.content.style.width=i:d.content.style.height=i},$e=new Set,Be=-1,Zt=()=>{if(ee)return;let i=re();if(le(R,X,V,i,C),Vn(C,s,i,x),x.start===D.start&&x.end===D.end)return;let g=String(i),L=g!==de;de=g;for(let[W,ge]of N)(W<x.start||W>x.end)&&(ge.remove(),z.release(ge),N.delete(W));let F=document.createDocumentFragment(),q=[];for(let W=x.start;W<=x.end;W++){let ge=Z?Z.getItem(W):p[W];if(!ge)continue;let pe=N.get(W);if(pe){let ve=pe.dataset.id,Ae=String(ge.id);ve!==Ae&&(ce(pe,v(ge,W,Y)),pe.dataset.id=Ae,r?pe.style.width=`${V.getHeight(W)}px`:pe.style.height=`${V.getHeight(W)}px`),ye(pe,W);let _e=$e.has(ge.id),pn=W===Be;pe.classList.toggle(`${l}-item--selected`,_e),pe.classList.toggle(`${l}-item--focused`,pn),pe.ariaSelected=_e?"true":"false",L&&pe.setAttribute("aria-setsize",de)}else{let ve=Xt(W,ge),Ae=$e.has(ge.id),_e=W===Be;Ae&&(ve.classList.add(`${l}-item--selected`),ve.ariaSelected="true"),_e&&ve.classList.add(`${l}-item--focused`),F.appendChild(ve),q.push({index:W,element:ve})}}if(q.length>0){d.items.appendChild(F);for(let{index:W,element:ge}of q)N.set(W,ge)}D.start=x.start,D.end=x.end,O.lastRenderRange.start=x.start,O.lastRenderRange.end=x.end,O.viewportState.scrollTop=R,O.viewportState.visibleRange.start=C.start,O.viewportState.visibleRange.end=C.end,O.viewportState.renderRange.start=x.start,O.viewportState.renderRange.end=x.end,E.emit("range:change",{range:{start:x.start,end:x.end}})},jt=()=>{D.start=-1,D.end=-1,ie()};ie=Zt,fe=jt;let He=()=>{if(ee)return;let i=ne(),g=i>=R?"down":"up";G=wn(G,i),d.root.classList.contains(`${l}--scrolling`)||d.root.classList.add(`${l}--scrolling`),R=i,ie(),E.emit("scroll",{scrollTop:i,direction:g}),E.emit("velocity:change",{velocity:G.velocity,reliable:G.sampleCount>=Ke});for(let L=0;L<Q.length;L++)Q[L](i,g);k&&clearTimeout(k),k=setTimeout(()=>{d.root.classList.remove(`${l}--scrolling`),G.velocity=0,G.sampleCount=0,E.emit("velocity:change",{velocity:0,reliable:!1})},u?.idleTimeout??150)},xe=null,Ie=d.viewport;Ie.addEventListener("scroll",He,{passive:!0}),r&&T&&(xe=i=>{i.deltaX||(i.preventDefault(),d.viewport.scrollLeft+=i.deltaY)},d.viewport.addEventListener("wheel",xe)),d.viewport.classList.add(`${l}-viewport--custom-scrollbar`);let ut=i=>{let L=i.target.closest("[data-index]");if(L){let F=parseInt(L.dataset.index??"-1",10);if(F>=0){let q=Z?.getItem(F)??p[F];if(q){if(q.__groupHeader)return;E.emit("item:click",{item:q,index:F,event:i})}}}for(let F=0;F<te.length;F++)te[F](i)},Qt=i=>{let L=i.target.closest("[data-index]");if(L){let F=parseInt(L.dataset.index??"-1",10);if(F>=0){let q=Z?.getItem(F)??p[F];if(q){if(q.__groupHeader)return;E.emit("item:dblclick",{item:q,index:F,event:i})}}}},ct=i=>{for(let g=0;g<_.length;g++)_[g](i)};d.items.addEventListener("click",ut),d.items.addEventListener("dblclick",Qt),d.root.addEventListener("keydown",ct);let ze=!0,Jt=()=>U,en=()=>X,Ue=new ResizeObserver(i=>{if(!ee)for(let g of i){let L=g.contentRect.height,F=g.contentRect.width,q=r?F:L;if(U=F,Math.abs(q-X)>1&&(X=q,O.viewportState.containerHeight=q,j&&(we(),ie(),E.emit("resize",{height:L,width:F}))),j)for(let W=0;W<P.length;W++)P[W](F,L)}});ze&&Ue.observe(d.viewport);let me={get dom(){return d},get heightCache(){return V},get emitter(){return E},get config(){return S},get rawConfig(){return t},get renderer(){return{render:(i,g,L,F,q)=>{$e=L,Be=F,fe()},updateItemClasses:(i,g,L)=>{let F=N.get(i);F&&(F.classList.toggle(`${l}-item--selected`,g),F.classList.toggle(`${l}-item--focused`,L),F.ariaSelected=g?"true":"false")},updatePositions:()=>{},updateItem:()=>{},getElement:i=>N.get(i)??null,clear:()=>{},destroy:()=>{}}},set renderer(i){},get dataManager(){return Z},set dataManager(i){Z=i},get scrollController(){return Ne},set scrollController(i){Ne=i},state:O,getContainerWidth(){return U},afterScroll:Q,clickHandlers:te,keydownHandlers:_,resizeHandlers:P,contentSizeHandlers:K,destroyHandlers:J,methods:B,replaceTemplate(i){v=i},replaceRenderer(i){},replaceDataManager(i){Z=i},replaceScrollController(i){Ne=i},getItemsForRange(i){let g=[];for(let L=i.start;L<=i.end;L++){let F=Z?Z.getItem(L):p[L];F&&g.push(F)}return g},getAllLoadedItems(){if(Z){let i=Z.getTotal(),g=[];for(let L=0;L<i;L++){let F=Z.getItem(L);F&&g.push(F)}return g}return[...p]},getVirtualTotal(){return re()},getCachedCompression(){return{isCompressed:!1,actualHeight:V.getTotalHeight(),virtualHeight:V.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:R,totalItems:re(),containerHeight:X,rangeStart:x.start}},renderIfNeeded(){ie()},forceRender(){fe()},getRenderFns(){return{renderIfNeeded:ie,forceRender:fe}},setRenderFns(i,g){ie=i,fe=g},setVirtualTotalFn(i){re=i},rebuildHeightCache(i){V.rebuild(i??re())},setHeightConfig(i){V=ft(i,re())},updateContentSize(i){let g=`${i}px`;r?d.content.style.width=g:d.content.style.height=g},updateCompressionMode(){},setVisibleRangeFn(i){le=i},setScrollToPosFn(i){he=i},setPositionElementFn(i){ye=i},setScrollFns(i,g){ne=i,se=L=>{g(L),He()}},setScrollTarget(i){Ie.removeEventListener("scroll",He),Ie=i,Ie.addEventListener("scroll",He,{passive:!0})},getScrollTarget(){return Ie},setContainerDimensions(i){Jt=i.width,en=i.height,U=i.width(),X=i.height(),O.viewportState.containerHeight=X},disableViewportResize(){ze&&(ze=!1,Ue.unobserve(d.viewport))}};Z={getState:()=>({total:p.length,cached:p.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>p.length,getCached:()=>p.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:i=>p[i],getItemById:i=>{let g=$.get(i);return g!==void 0?p[g]:void 0},getIndexById:i=>$.get(i)??-1,isItemLoaded:i=>i>=0&&i<p.length&&p[i]!==void 0,getItemsInRange:(i,g)=>{let L=[],F=Math.max(0,i),q=Math.min(g,p.length-1);for(let W=F;W<=q;W++)L.push(p[W]);return L},setTotal:i=>{},setItems:(i,g=0,L)=>{if(g===0&&(L!==void 0||p.length===0))p=[...i];else{let F=g+i.length;p.length<F&&(p.length=F);for(let q=0;q<i.length;q++)p[g+q]=i[q]}if(ae(),j){V.rebuild(re()),we(),me.updateCompressionMode();for(let F=0;F<K.length;F++)K[F]();fe()}},updateItem:(i,g)=>{let L=$.get(i);if(L===void 0)return!1;let F=p[L];if(!F)return!1;p[L]={...F,...g},g.id!==void 0&&g.id!==i&&($.delete(i),$.set(g.id,L));let q=N.get(L);return q&&(ce(q,v(p[L],L,Y)),q.dataset.id=String(p[L].id)),!0},removeItem:i=>{let g=$.get(i);if(g===void 0)return!1;if(p.splice(g,1),ae(),j){V.rebuild(re()),we(),me.updateCompressionMode();for(let L=0;L<K.length;L++)K[L]();fe()}return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{p=[],$.clear()},reset:()=>{p=[],$.clear(),j&&(V.rebuild(0),we(),fe())}};let Ne={getScrollTop:()=>ne(),scrollTo:i=>{se(i),R=i,ie()},scrollBy:i=>{let g=ne()+i;se(g),R=g,ie()},isAtTop:()=>R<=2,isAtBottom:(i=2)=>be(i),getScrollPercentage:()=>{let i=V.getTotalHeight(),g=Math.max(0,i-X);return g>0?R/g:0},getVelocity:()=>G.velocity,isTracking:()=>G.sampleCount>=Ke,isScrolling:()=>d.root.classList.contains(`${l}--scrolling`),updateConfig:()=>{},enableCompression:()=>{},disableCompression:()=>{},isCompressed:()=>ue,isWindowMode:()=>!1,updateContainerHeight:i=>{X=i},destroy:()=>{}},mt=new Map;for(let i of H)if(i.methods)for(let g of i.methods){let L=mt.get(g);if(L)throw new Error(`[vlist/builder] Method "${g}" is registered by both "${L}" and "${i.name}"`);mt.set(g,i.name)}for(let i of H)i.setup(me);if(j=!0,me.state.isInitialized=!0,we(),ie(),w&&p.length>0){let i=he(p.length-1,V,X,p.length,"end");se(i),R=i,ie()}let tn=i=>{me.dataManager.setItems(i,0,i.length)},nn=w?i=>{let g=be(2),L=p.length;if(me.dataManager.setItems(i,L),g&&p.length>0){let F=he(p.length-1,V,X,p.length,"end");se(F),R=F,ie()}}:i=>{let g=p.length;me.dataManager.setItems(i,g)},rn=w?i=>{let g=ne(),L=V.getTotalHeight(),F=[...p];me.dataManager.clear(),me.dataManager.setItems([...i,...F],0);let W=V.getTotalHeight()-L;W>0&&(se(g+W),R=g+W)}:i=>{let g=[...p];me.dataManager.clear(),me.dataManager.setItems([...i,...g],0)},on=(i,g)=>{me.dataManager.updateItem(i,g)},sn=i=>{me.dataManager.removeItem(i)},an=async()=>{me.dataManager.reload&&await me.dataManager.reload()},Ve=()=>{A!==null&&(cancelAnimationFrame(A),A=null)},ln=(i,g,L)=>{if(Ve(),Math.abs(g-i)<1){se(g),R=g,ie();return}let F=performance.now(),q=W=>{let ge=W-F,pe=Math.min(ge/L,1),ve=i+(g-i)*_n(pe);se(ve),R=ve,ie(),pe<1?A=requestAnimationFrame(q):A=null};A=requestAnimationFrame(q)},gt=(i,g)=>{let{align:L,behavior:F,duration:q}=Pn(g),W=re(),ge=i;I&&W>0&&(ge=(ge%W+W)%W);let pe=he(ge,V,X,W,L);F==="smooth"?ln(ne(),pe,q):(Ve(),se(pe))},dn=(i,g)=>{let L=$.get(i)??me.dataManager.getIndexById(i);L>=0&>(L,g)},un=()=>ne(),cn=(i,g)=>E.on(i,g),mn=(i,g)=>{E.off(i,g)},gn=()=>{if(!ee){ee=!0,me.state.isDestroyed=!0,d.items.removeEventListener("click",ut),d.root.removeEventListener("keydown",ct),Ie.removeEventListener("scroll",He),Ue.disconnect(),xe&&d.viewport.removeEventListener("wheel",xe),k&&clearTimeout(k);for(let i=0;i<J.length;i++)J[i]();for(let i of H)i.destroy&&i.destroy();Ve();for(let[,i]of N)i.remove(),z.release(i);N.clear(),z.clear(),E.clear(),d.root.remove()}},pt={get element(){return d.root},get items(){return B.has("_getItems")?B.get("_getItems")():p},get total(){return B.has("_getTotal")?B.get("_getTotal")():re()},setItems:B.has("setItems")?B.get("setItems"):tn,appendItems:B.has("appendItems")?B.get("appendItems"):nn,prependItems:B.has("prependItems")?B.get("prependItems"):rn,updateItem:B.has("updateItem")?B.get("updateItem"):on,removeItem:B.has("removeItem")?B.get("removeItem"):sn,reload:B.has("reload")?B.get("reload"):an,scrollToIndex:B.has("scrollToIndex")?B.get("scrollToIndex"):gt,scrollToItem:B.has("scrollToItem")?B.get("scrollToItem"):dn,cancelScroll:B.has("cancelScroll")?B.get("cancelScroll"):Ve,getScrollPosition:B.has("getScrollPosition")?B.get("getScrollPosition"):un,on:cn,off:mn,destroy:gn};for(let[i,g]of B)i==="setItems"||i==="appendItems"||i==="prependItems"||i==="updateItem"||i==="removeItem"||i==="reload"||i==="scrollToIndex"||i==="scrollToItem"||i==="cancelScroll"||i==="getScrollPosition"||(pt[i]=g);return pt}var ht=t=>{let o=Math.max(1,Math.floor(t.columns)),r=t.gap??0,e=t.isHeaderFn,a={row:0,col:0},n=c=>{if(c<=0)return 0;if(!e)return Math.ceil(c/o);let m=0,b=0,v=0;for(let S=0;S<c;S++)e(S)?(v++,b>0&&(m++,b=0),m++,b=0):(b++,b>=o&&(m++,b=0));return b>0&&m++,m},s=c=>(a.row=l(c),a.col=y(c),a),l=c=>{if(!e)return Math.floor(c/o);let m=0,b=0;for(let v=0;v<=c;v++)if(e(v)){if(b>0&&(m++,b=0),v===c)return m;m++,b=0}else{if(v===c)return m;b++,b>=o&&(m++,b=0)}return console.warn(`\u26A0\uFE0F getRow(${c}) fell through - returning ${m}`),m},y=c=>{if(!e)return c%o;if(e(c))return 0;let m=0;for(let b=0;b<=c;b++)if(e(b))m=0;else{if(b===c)return m;m++,m>=o&&(m=0)}return m},f=(c,m,b)=>{if(b<=0)return{start:0,end:-1};if(!e){let M=Math.max(0,c*o),d=Math.min(b-1,(m+1)*o-1);return{start:M,end:d}}let v=-1,S=-1,H=0,h=0;for(let M=0;M<b&&(e(M)?(h>0&&(H++,h=0),H>=c&&H<=m&&(v===-1&&(v=M),S=M),H++,h=0):(H>=c&&H<=m&&(v===-1&&(v=M),S=M),h++,h>=o&&(H++,h=0)),!(H>m&&h===0));M++);return v===-1?{start:0,end:-1}:{start:v,end:S}},u=(c,m,b)=>{if(m<0||m>=o)return-1;let v=c*o+m;return v<0||v>=b?-1:v},T=c=>{let m=(o-1)*r;return Math.max(0,(c-m)/o)};return{get columns(){return o},get gap(){return r},update:c=>{c.columns!==void 0&&(o=Math.max(1,Math.floor(c.columns))),c.gap!==void 0&&(r=c.gap),c.isHeaderFn!==void 0&&(e=c.isHeaderFn)},getTotalRows:n,getPosition:s,getRow:l,getCol:y,getItemRange:f,getItemIndex:u,getColumnWidth:T,getColumnOffset:(c,m)=>{let b=T(m);return c*(b+r)}}};Je();var It=(t,o,r,e,a,n)=>{if(e===0||o===0)return n.start=0,n.end=-1,n;let s=r.indexAtOffset(t),l=r.indexAtOffset(t+o);return l<e-1&&l++,n.start=Math.max(0,s),n.end=Math.min(e-1,Math.max(0,l)),n},Ct=(t,o,r,e)=>r===0?(e.start=0,e.end=-1,e):(e.start=Math.max(0,t.start-o),e.end=Math.min(r-1,t.end+o),e),Lt=(t,o,r,e,a,n)=>{if(e===0)return 0;let s=Math.max(0,Math.min(t,e-1)),l=o.getOffset(s),y=o.getHeight(s),f=o.getTotalHeight(),u=Math.max(0,f-r),T;switch(n){case"center":T=l-r/2+y/2;break;case"end":T=l-r+y;break;default:T=l;break}return Math.max(0,Math.min(T,u))};var et=(t,o,r,e,a,n=It)=>(n(t.scrollTop,t.containerHeight,o,r,a,t.visibleRange),Ct(t.visibleRange,e,r,t.renderRange),t.totalHeight=a.virtualHeight,t.actualHeight=a.actualHeight,t.isCompressed=a.isCompressed,t.compressionRatio=a.ratio,t),Se=(t,o,r,e,a="start",n,s=Lt)=>s(t,o,r,e,n,a);var wt=t=>{if(!t.columns||t.columns<1)throw new Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let o=null,r=null;return{name:"withGrid",priority:10,setup(e){let{dom:a,emitter:n,config:s,rawConfig:l}=e,{classPrefix:y}=s;if(s.horizontal)throw new Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(s.reverse)throw new Error("[vlist/builder] withGrid cannot be used with reverse: true");let f=l.items?.some(h=>h.__groupHeader===!0),u={columns:t.columns,gap:t.gap??0};f&&(u.isHeaderFn=h=>{let M=e.dataManager.getItem(h);return!!(M&&M.__groupHeader===!0)}),o=ht(u);let T=o.gap;e.setVirtualTotalFn(()=>{let h=e.dataManager.getTotal();return o.getTotalRows(h)});let I=l.item,w=s.horizontal?I.width:I.height,c={containerWidth:e.getContainerWidth(),columns:o.columns,gap:o.gap};typeof w=="function"?e.setHeightConfig(h=>{let M=c.containerWidth-2,d=(c.columns-1)*c.gap,E=(M-d)/c.columns,p={containerWidth:c.containerWidth,columns:c.columns,gap:c.gap,columnWidth:E,row:o.getRow(h),column:o.getCol(h),totalRows:o.getTotalRows(e.dataManager.getTotal()),totalColumns:c.columns};return w(h,p)+c.gap}):T>0&&e.setHeightConfig(w+T),e.rebuildHeightCache(),a.root.classList.add(`${y}--grid`);let m=e.getContainerWidth(),b=l.item.template,v=()=>{r=Qe(a.items,b,e.heightCache,o,y,m,()=>e.dataManager.getTotal(),s.ariaIdPrefix),e.replaceRenderer(r)};v(),e.methods.set("_getGridLayout",()=>o),e.methods.set("_getGridConfig",()=>u),e.methods.set("_replaceGridRenderer",h=>{r=h}),e.methods.set("_updateGridLayoutForGroups",h=>{o.update({isHeaderFn:h});let M=e.dataManager.getTotal(),d=0;for(let E=0;E<M;E++)if(o.getCol(E)===0){let p=e.heightCache.getHeight(E);d+=p}e.heightCache.getTotalHeight=()=>d,e.dom.content.style.height=`${d}px`,v()}),e.methods.set("updateGrid",h=>{if(h.columns!==void 0){if(!Number.isInteger(h.columns)||h.columns<1)throw new Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");u.columns=h.columns}if(h.gap!==void 0){if(h.gap<0)throw new Error("[vlist/builder] updateGrid: gap must be non-negative");u.gap=h.gap}o&&o.update(u);let M=e.getContainerWidth();c.containerWidth=M,c.columns=u.columns,c.gap=u.gap??0,r&&r.updateContainerWidth(M),e.rebuildHeightCache(),e.updateContentSize(e.heightCache.getTotalHeight()),e.updateCompressionMode();for(let d=0;d<e.contentSizeHandlers.length;d++)e.contentSizeHandlers[d]();r&&r.clear(),e.forceRender()});let S=()=>{if(e.state.isDestroyed)return;let h=e.scrollController.getScrollTop(),M=e.state.viewportState.containerHeight,d=e.getVirtualTotal(),E={start:0,end:0};if(d===0||M===0)E.start=0,E.end=0;else{E.start=Math.max(0,e.heightCache.indexAtOffset(h));let A=e.heightCache.indexAtOffset(h+M);A<d-1&&A++,E.end=Math.min(d-1,Math.max(0,A))}let p=s.overscan??3,V={start:Math.max(0,E.start-p),end:Math.min(d-1,E.end+p)};e.state.viewportState.scrollTop=h,e.state.viewportState.visibleRange=E,e.state.viewportState.renderRange=V;let z=e.state.lastRenderRange,X=e.state.viewportState.isCompressed;if(V.start===z.start&&V.end===z.end){X&&r.updatePositions(e.getCompressionContext());return}let U=e.dataManager.getTotal(),ee=o.getItemRange(V.start,V.end,U),j=e.dataManager.getItemsInRange(ee.start,ee.end),R=X?e.getCompressionContext():void 0;r.render(j,ee,new Set,-1,R),e.state.lastRenderRange={...V},n.emit("range:change",{range:V})},H=()=>{e.state.isDestroyed||(e.state.lastRenderRange={start:-1,end:-1},S())};e.setRenderFns(S,H),e.resizeHandlers.push((h,M)=>{r&&r.updateContainerWidth(h)}),e.methods.set("scrollToIndex",(h,M)=>{let d=Math.floor(h/t.columns),{align:E,behavior:p}=Dn(M),V=e.dataManager.getState(),z=o.getTotalRows(V.total),X=Math.max(0,Math.min(d,z-1)),U=Se(X,e.heightCache,e.state.viewportState.containerHeight,z,E,e.getCachedCompression());e.scrollController.scrollTo(U)}),e.methods.has("_getTotal")||e.methods.set("_getTotal",()=>e.dataManager.getTotal()),e.destroyHandlers.push(()=>{r&&(r.destroy(),r=null),a.root.classList.remove(`${y}--grid`)})},destroy(){r&&(r.destroy(),r=null)}}},tt=300,Dn=t=>typeof t=="string"?{align:t,behavior:"auto",duration:tt}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??tt}:{align:"start",behavior:"auto",duration:tt};var nt=(t,o)=>{let r=0,e=t.length-1;for(;r<e;){let a=r+e+1>>>1;t[a].headerLayoutIndex<=o?r=a:e=a-1}return r},Ht=(t,o)=>{let r=0,e=t.length-1;for(;r<e;){let a=r+e+1>>>1;t[a].firstDataIndex<=o?r=a:e=a-1}return r},Mt=(t,o)=>{if(t===0)return[];let r=[],e=o(0),a=0,n=0;for(let s=1;s<t;s++){let l=o(s);if(l!==e){let y=s-a;r.push({key:e,groupIndex:r.length,headerLayoutIndex:n,firstDataIndex:a,count:y}),n=n+1+y,e=l,a=s}}return r.push({key:e,groupIndex:r.length,headerLayoutIndex:n,firstDataIndex:a,count:t-a}),r},rt=(t,o)=>{if(t.length===0||o.length===0)return[];let r=t.length+o.length,e=new Array(r),a=0;for(let n of o){e[a]={id:`__group_header_${n.groupIndex}`,__groupHeader:!0,groupKey:n.key,groupIndex:n.groupIndex},a++;for(let s=0;s<n.count;s++)e[a]=t[n.firstDataIndex+s],a++}return e},ot=(t,o)=>{let r=typeof o=="number"?e=>o:o;return e=>{let a=t.getEntry(e);return a.type==="header"?t.getHeaderHeight(a.group.groupIndex):r(a.dataIndex)}},Rt=(t,o)=>{let r=Mt(t,o.getGroupForIndex),e=t+r.length,a=o.headerHeight;return{get totalEntries(){return e},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 w=nt(r,I),c=r[w];if(I===c.headerLayoutIndex)return{type:"header",group:c};let m=I-c.headerLayoutIndex-1;return{type:"item",dataIndex:c.firstDataIndex+m,group:c}},layoutToDataIndex:I=>{if(r.length===0)return I;let w=nt(r,I),c=r[w];if(I===c.headerLayoutIndex)return-1;let m=I-c.headerLayoutIndex-1;return c.firstDataIndex+m},dataToLayoutIndex:I=>{if(r.length===0)return I;let w=Ht(r,I),c=r[w],m=I-c.firstDataIndex;return c.headerLayoutIndex+1+m},getGroupAtLayoutIndex:I=>{if(r.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=nt(r,I);return r[w]},getGroupAtDataIndex:I=>{if(r.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let w=Ht(r,I);return r[w]},getHeaderHeight:typeof a=="number"?I=>a:I=>{let w=r[I];return w?a(w.key,I):0},rebuild:I=>{r=Mt(I,o.getGroupForIndex),e=I+r.length}}};var Et=(t,o,r,e,a)=>{let n=document.createElement("div");n.className=`${a}-sticky-header`,n.setAttribute("role","presentation"),n.setAttribute("aria-hidden","true"),n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.right="0",n.style.zIndex="5",n.style.pointerEvents="none",n.style.willChange="transform",n.style.overflow="hidden",t.insertBefore(n,t.firstChild);let s=-1,l=!1,y=0,f=m=>{if(m===s)return;s=m;let b=o.groups;if(m<0||m>=b.length){n.textContent="";return}let v=b[m],S=e.headerTemplate(v.key,v.groupIndex),H=o.getHeaderHeight(m);n.style.height=`${H}px`,typeof S=="string"?n.innerHTML=S:n.replaceChildren(S)},u=m=>{let b=o.groups;if(b.length===0){I();return}let v=0;for(let d=b.length-1;d>=0;d--)if(r.getOffset(b[d].headerLayoutIndex)<=m){v=d;break}let S=r.getOffset(b[0].headerLayoutIndex);if(m<S){I();return}l||T(),f(v);let H=o.getHeaderHeight(v),h=0,M=v+1;if(M<b.length){let E=r.getOffset(b[M].headerLayoutIndex)-m;E<H&&(h=E-H)}h!==y&&(y=h,n.style.transform=h===0?"":`translateY(${Math.round(h)}px)`)},T=()=>{l||(l=!0,n.style.display="")},I=()=>{l&&(l=!1,n.style.display="none",s=-1,y=0,n.style.transform="")},w=()=>{let m=s;s=-1,m>=0&&f(m)},c=()=>{n.remove(),s=-1,l=!1};return n.style.display="none",{update:u,refresh:w,show:T,hide:I,destroy:c}};je();var xt=t=>{if(!t.getGroupForIndex)throw new Error("[vlist/builder] withGroups: getGroupForIndex is required");if(t.headerHeight==null||t.headerHeight<=0)throw new Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!t.headerTemplate)throw new Error("[vlist/builder] withGroups: headerTemplate is required");let o=null,r=null,e=[],a=[];return{name:"withGroups",priority:10,setup(n){let{dom:s,config:l,rawConfig:y}=n,{classPrefix:f}=l;if(l.horizontal)throw new Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(l.reverse)throw new Error("[vlist/builder] withGroups cannot be used with reverse: true");let T=y.item.height;e=y.items?[...y.items]:[];let I=e.length,w={getGroupForIndex:t.getGroupForIndex,headerHeight:t.headerHeight,headerTemplate:t.headerTemplate,sticky:t.sticky??!1};o=Rt(I,w),a=rt(e,o.groups);let c=ot(o,T);n.setHeightConfig(c),n.rebuildHeightCache(a.length),n.dataManager.setItems(a,0,a.length);let m=y.item.template,{headerTemplate:b}=t,v=((d,E,p)=>Me(d)?b(d.groupKey,d.groupIndex):m(d,E,p)),S=n.methods.get("_getGridLayout"),H=n.methods.get("_replaceGridRenderer"),h=n.methods.get("_updateGridLayoutForGroups");if(S&&H){h&&h(V=>{let z=a[V];return!!(z&&Me(z))});let{createGridRenderer:d}=(Je(),Tn(St)),E=S(),p=d(s.items,v,n.heightCache,E,f,n.getContainerWidth(),()=>n.dataManager.getTotal(),l.ariaIdPrefix);H(p)}else n.replaceTemplate(v);if(s.root.classList.add(`${f}--grouped`),t.sticky!==!1){r=Et(s.root,o,n.heightCache,{...w,sticky:w.sticky??!1},f);let d=r;n.afterScroll.push((E,p)=>{d.update(E)}),r.update(n.scrollController.getScrollTop())}let M=()=>{if(!o)return;o.rebuild(e.length),a=rt(e,o.groups);let d=ot(o,T);n.setHeightConfig(d),n.rebuildHeightCache(a.length),n.dataManager.setItems(a,0,a.length),r&&r.refresh()};n.methods.set("setItems",d=>{e=[...d],M()}),n.methods.set("appendItems",d=>{e=[...e,...d],M()}),n.methods.set("prependItems",d=>{e=[...d,...e],M()}),n.methods.set("removeItem",d=>{e=e.filter(E=>E.id!==d),M()}),n.methods.set("scrollToIndex",(d,E)=>{let p=o.dataToLayoutIndex(d),{align:V,behavior:z}=On(E),X=n.dataManager.getTotal(),U=Se(p,n.heightCache,n.state.viewportState.containerHeight,X,V,n.getCachedCompression());n.scrollController.scrollTo(U)}),n.methods.set("_getItems",()=>e),n.methods.set("_getTotal",()=>e.length),n.destroyHandlers.push(()=>{r&&(r.destroy(),r=null),s.root.classList.remove(`${f}--grouped`)})},destroy(){r&&(r.destroy(),r=null)}}},st=300,On=t=>typeof t=="string"?{align:t,behavior:"auto",duration:st}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??st}:{align:"start",behavior:"auto",duration:st};var Vt=t=>({selected:new Set(t??[]),focusedIndex:-1}),it=(t,o,r)=>{if(r==="none")return t;let e=new Set(t.selected);if(r==="single")e.clear(),o.length>0&&e.add(o[0]);else for(let a of o)e.add(a);return{...t,selected:e}},at=(t,o)=>{let r=new Set(t.selected);for(let e of o)r.delete(e);return{...t,selected:r}},ke=(t,o,r)=>r==="none"?t:t.selected.has(o)?at(t,[o]):it(t,[o],r),At=(t,o,r)=>r!=="multiple"?t:{...t,selected:new Set(o.map(e=>e.id))},_t=t=>({...t,selected:new Set}),Pt=(t,o)=>(t.focusedIndex=o,t),Ft=(t,o,r=!0)=>{if(o===0)return t;let e=t.focusedIndex-1;return e<0&&(e=r?o-1:0),t.focusedIndex=e,t},kt=(t,o,r=!0)=>{if(o===0)return t;let e=t.focusedIndex+1;return e>=o&&(e=r?0:o-1),t.focusedIndex=e,t},Gt=(t,o)=>(o===0||(t.focusedIndex=0),t),Dt=(t,o)=>(o===0||(t.focusedIndex=o-1),t);var Ge=t=>Array.from(t.selected),De=(t,o)=>{let r=[];for(let e of t.selected){let a=o(e);a&&r.push(a)}return r};var lt=t=>{let o=t?.mode??"single",r=t?.initial,e=Vt(r),a=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(n){let{dom:s,emitter:l,config:y}=n,{classPrefix:f,ariaIdPrefix:u}=y;if(o==="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",()=>{});return}let{renderIfNeeded:T,forceRender:I}=n.getRenderFns(),w=()=>{n.dom.items.querySelectorAll("[data-index]").forEach(H=>{let h=H,M=h.dataset.id;if(M!==void 0){let d=/^\d+$/.test(M)?parseInt(M,10):M,E=e.selected.has(d),V=parseInt(h.dataset.index??"-1",10)===e.focusedIndex;h.classList.toggle(`${f}-item--selected`,E),h.classList.toggle(`${f}-item--focused`,V),h.ariaSelected=E?"true":"false"}})},c=()=>{n.state.isDestroyed||(T(),w())},m=()=>{n.state.isDestroyed||(I(),w())};n.setRenderFns(c,m);let b=()=>{w(),l.emit("selection:change",{selected:Ge(e),items:De(e,S=>n.dataManager.getItemById(S))})};a=document.createElement("div"),a.setAttribute("aria-live","polite"),a.setAttribute("aria-atomic","true"),a.className=`${f}-live-region`,a.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",s.root.appendChild(a);let v=a;l.on("selection:change",({selected:S})=>{let H=S.length;H===0?v.textContent="":H===1?v.textContent="1 item selected":v.textContent=`${H} items selected`}),n.clickHandlers.push(S=>{if(n.state.isDestroyed)return;let h=S.target.closest("[data-index]");if(!h)return;let M=parseInt(h.dataset.index??"-1",10);if(M<0)return;let d=n.dataManager.getItem(M);d&&(l.emit("item:click",{item:d,index:M,event:S}),e=Pt(e,M),s.root.setAttribute("aria-activedescendant",`${u}-item-${M}`),e=ke(e,d.id,o),b())}),n.keydownHandlers.push(S=>{if(n.state.isDestroyed)return;let H=n.dataManager.getTotal(),h=e.focusedIndex,M=!1,d=!1,E=e;switch(S.key){case"ArrowUp":E=Ft(e,H),M=!0,d=!0;break;case"ArrowDown":E=kt(e,H),M=!0,d=!0;break;case"Home":E=Gt(e,H),M=!0,d=!0;break;case"End":E=Dt(e,H),M=!0,d=!0;break;case" ":case"Enter":if(e.focusedIndex>=0){let p=n.dataManager.getItem(e.focusedIndex);p&&(E=ke(e,p.id,o)),M=!0}break}if(M){S.preventDefault(),e=E;let p=e.focusedIndex;if(p>=0){let V=n.dataManager.getState(),z=Se(p,n.heightCache,n.state.viewportState.containerHeight,V.total,"center",n.getCachedCompression());n.scrollController.scrollTo(z),s.root.setAttribute("aria-activedescendant",`${u}-item-${p}`)}else s.root.removeAttribute("aria-activedescendant");if(d){let{selected:V}=e;if(h>=0&&h!==p){let z=n.dataManager.getItem(h);z&&n.renderer.updateItemClasses(h,V.has(z.id),!1)}if(p>=0){let z=n.dataManager.getItem(p);z&&n.renderer.updateItemClasses(p,V.has(z.id),!0)}}else m(),l.emit("selection:change",{selected:Ge(e),items:De(e,V=>n.dataManager.getItemById(V))})}}),n.methods.set("select",(...S)=>{e=it(e,S,o),b()}),n.methods.set("deselect",(...S)=>{e=at(e,S),b()}),n.methods.set("toggleSelect",S=>{e=ke(e,S,o),b()}),n.methods.set("selectAll",()=>{if(o!=="multiple")return;let S=n.getAllLoadedItems();e=At(e,S,o),b()}),n.methods.set("clearSelection",()=>{e=_t(e);let{renderRange:S,isCompressed:H}=n.state.viewportState,h=n.getItemsForRange(S),M=H?n.getCompressionContext():void 0;n.renderer.render(h,S,e.selected,e.focusedIndex,M),l.emit("selection:change",{selected:[],items:[]})}),n.methods.set("getSelected",()=>Ge(e)),n.methods.set("getSelectedItems",()=>De(e,S=>n.dataManager.getItemById(S))),n.destroyHandlers.push(()=>{v&&v.parentNode&&v.remove()})},destroy(){a&&a.parentNode&&a.remove(),a=null}}};var Re=(t,o,r={},e="vlist",a=!1)=>{let{autoHide:n=!0,autoHideDelay:s=1e3,minThumbSize:l=30,showOnHover:y=!0,hoverZoneWidth:f=16,showOnViewportEnter:u=!0}=r,T=0,I=0,w=0,c=0,m=!1,b=!1,v=0,S=0,H=0,h=null,M=!1,d=null,E=null,p=a?"width":"height",V=a?"translateX":"translateY",z=a?Q=>Q.clientX:Q=>Q.clientY,X=a?"left":"top",U=document.createElement("div"),ee=document.createElement("div"),j=y?document.createElement("div"):null,R=()=>{U.className=`${e}-scrollbar`,ee.className=`${e}-scrollbar-thumb`,a&&U.classList.add(`${e}-scrollbar--horizontal`),U.appendChild(ee),t.appendChild(U),j&&(j.className=`${e}-scrollbar-hover`,a?(j.classList.add(`${e}-scrollbar-hover--horizontal`),j.style.height=`${f}px`):j.style.width=`${f}px`,t.appendChild(j))},A=()=>{h&&(clearTimeout(h),h=null)},k=()=>{n&&(A(),h=setTimeout(C,s))},G=()=>{T<=I||(A(),M||(U.classList.add(`${e}-scrollbar--visible`),M=!0),n&&!m&&!b&&k())},C=()=>{m||b||(U.classList.remove(`${e}-scrollbar--visible`),M=!1)},x=(Q,te)=>{T=Q,I=te;let _=T>I;if(U.style.display=_?"":"none",!_){C();return}let P=I/T;w=Math.max(l,P*I),ee.style[p]=`${w}px`,c=I-w,D(H)},D=Q=>{if(H=Q,T<=I||c<=0)return;let te=T-I,P=Math.min(1,Math.max(0,Q/te))*c;ee.style.transform=`${V}(${P}px)`},O=Q=>{if(Q.target===ee)return;let te=U.getBoundingClientRect(),K=z(Q)-te[X]-w/2,B=Math.max(0,Math.min(K,c))/c,ne=T-I,se=B*ne;o(se),G()},N=Q=>{Q.preventDefault(),Q.stopPropagation(),m=!0,v=z(Q),S=H,A(),U.classList.add(`${e}-scrollbar--dragging`),document.addEventListener("mousemove",Y),document.addEventListener("mouseup",oe)},Y=Q=>{if(!m)return;let te=z(Q)-v,_=c>0?te/c:0,P=T-I,K=_*P,J=Math.max(0,Math.min(S+K,P)),ne=J/P*c;ee.style.transform=`${V}(${ne}px)`,E=J,d===null&&(d=requestAnimationFrame(()=>{E!==null&&o(E),d=null}))},oe=()=>{m=!1,d!==null&&(cancelAnimationFrame(d),d=null),E!==null&&(o(E),E=null),U.classList.remove(`${e}-scrollbar--dragging`),n&&!b&&k(),document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",oe)},de=()=>{u&&G()},$=()=>{m||(b=!1,n&&k())},ae=()=>{b=!0,A(),G()},Z=()=>{b=!1,!m&&n&&k()},re=()=>{A(),d!==null&&(cancelAnimationFrame(d),d=null),U.removeEventListener("click",O),U.removeEventListener("mouseenter",ae),U.removeEventListener("mouseleave",Z),ee.removeEventListener("mousedown",N),t.removeEventListener("mouseenter",de),t.removeEventListener("mouseleave",$),document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",oe),j&&(j.removeEventListener("mouseenter",ae),j.removeEventListener("mouseleave",Z),j.parentNode&&j.parentNode.removeChild(j)),U.parentNode&&U.parentNode.removeChild(U)};return R(),U.addEventListener("click",O),U.addEventListener("mouseenter",ae),U.addEventListener("mouseleave",Z),ee.addEventListener("mousedown",N),t.addEventListener("mouseenter",de),t.addEventListener("mouseleave",$),j&&(j.addEventListener("mouseenter",ae),j.addEventListener("mouseleave",Z)),{show:G,hide:C,updateBounds:x,updatePosition:D,isVisible:()=>M,destroy:re}};var Ot=t=>{let o=null;return{name:"withScrollbar",priority:30,setup(r){let{dom:e,config:a}=r,{classPrefix:n,horizontal:s}=a;o=Re(e.viewport,f=>r.scrollController.scrollTo(f),t??{},n,s),e.viewport.classList.contains(`${n}-viewport--custom-scrollbar`)||e.viewport.classList.add(`${n}-viewport--custom-scrollbar`);let l=r.getCachedCompression();o.updateBounds(l.virtualHeight,r.state.viewportState.containerHeight);let y=o;r.afterScroll.push((f,u)=>{y.updatePosition(f),y.show()}),r.resizeHandlers.push((f,u)=>{if(y){let T=r.getCachedCompression();y.updateBounds(T.virtualHeight,r.state.viewportState.containerHeight)}}),r.contentSizeHandlers.push(()=>{if(y){let f=r.getCachedCompression();y.updateBounds(f.virtualHeight,r.state.viewportState.containerHeight)}}),r.destroyHandlers.push(()=>{y&&y.destroy()})},destroy(){o&&(o.destroy(),o=null)}}};Ze();var $t=()=>{let t=null,o=0,r=!1;return{name:"withCompression",priority:20,setup(e){let{dom:a,config:n}=e,{classPrefix:s,horizontal:l}=n,y=()=>{let u=e.getVirtualTotal(),T=Te(u,e.heightCache);if(T.isCompressed&&!r){r=!0,e.scrollController.enableCompression(T),e.updateContentSize(T.virtualHeight),e.setScrollFns(()=>o,m=>{o=m});let I=a.viewport,w=m=>{m.preventDefault();let b=T.virtualHeight-e.state.viewportState.containerHeight;o=Math.max(0,Math.min(o+m.deltaY,b)),e.scrollController.scrollTo(o)};if(I.addEventListener("wheel",w,{passive:!1}),e.destroyHandlers.push(()=>{I.removeEventListener("wheel",w)}),!a.viewport.querySelector(`.${s}-scrollbar-track`)){t=Re(a.viewport,b=>e.scrollController.scrollTo(b),{},s,l),a.viewport.classList.contains(`${s}-viewport--custom-scrollbar`)||a.viewport.classList.add(`${s}-viewport--custom-scrollbar`),t.updateBounds(T.virtualHeight,e.state.viewportState.containerHeight);let m=t;e.afterScroll.push((b,v)=>{m&&(m.updatePosition(b),m.show())}),e.resizeHandlers.push((b,v)=>{if(m){let S=e.getCachedCompression();m.updateBounds(S.virtualHeight,e.state.viewportState.containerHeight)}})}}else!T.isCompressed&&r?(r=!1,e.scrollController.disableCompression(),e.updateContentSize(T.actualHeight)):T.isCompressed&&(e.scrollController.updateConfig({compression:T}),e.updateContentSize(T.virtualHeight));t&&t.updateBounds(T.virtualHeight,e.state.viewportState.containerHeight),e.state.cachedCompression={state:T,totalItems:u}};e.updateCompressionMode=y;let f=e.getCachedCompression.bind(e);e.getCachedCompression=()=>e.state.cachedCompression?e.state.cachedCompression.state:f(),e.setVisibleRangeFn((u,T,I,w,c)=>{let m=Te(w,I);yt(u,T,I,w,m,c)}),e.setScrollToPosFn((u,T,I,w,c)=>{let m=Te(w,T);return Tt(u,T,I,w,m,c)}),e.setPositionElementFn((u,T)=>{let I=e.getVirtualTotal(),w=Te(I,e.heightCache);if(w.isCompressed){let c=Math.round(Fe(T,e.scrollController.getScrollTop(),e.heightCache,I,e.state.viewportState.containerHeight,w)),m=e.config.horizontal;u.style.transform=m?`translateX(${c}px)`:`translateY(${c}px)`}else{let c=Math.round(e.heightCache.getOffset(T)),m=e.config.horizontal;u.style.transform=m?`translateX(${c}px)`:`translateY(${c}px)`}}),y(),e.destroyHandlers.push(()=>{t&&(t.destroy(),t=null)})},destroy(){t&&(t.destroy(),t=null)}}};var Bt=()=>({name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(t){t.methods.set("getScrollSnapshot",()=>{let o=t.scrollController.getScrollTop(),r=t.getCachedCompression(),e=t.getVirtualTotal(),a=t.methods.get("getSelected"),n=a&&a().length>0?a():void 0;if(e===0){let f={index:0,offsetInItem:0};return n&&(f.selectedIds=n),f}let s,l;if(r.isCompressed){let u=o/r.virtualHeight*e;s=Math.max(0,Math.min(Math.floor(u),e-1)),l=(u-s)*t.heightCache.getHeight(s)}else s=t.heightCache.indexAtOffset(o),l=o-t.heightCache.getOffset(s);l=Math.max(0,l);let y={index:s,offsetInItem:l};return n&&(y.selectedIds=n),y}),t.methods.set("restoreScroll",o=>{let{index:r,offsetInItem:e,selectedIds:a}=o,n=t.getCachedCompression(),s=t.getVirtualTotal();if(s===0)return;let l=Math.max(0,Math.min(r,s-1)),y;if(n.isCompressed){let u=t.heightCache.getHeight(l),T=u>0?e/u:0;y=(l+T)/s*n.virtualHeight}else y=t.heightCache.getOffset(l)+e;let f=Math.max(0,n.virtualHeight-t.state.viewportState.containerHeight);if(y=Math.max(0,Math.min(y,f)),t.scrollController.scrollTo(y),a&&a.length>0){let u=t.methods.get("select");u&&u(...a)}})}});var zt=(t={})=>{let{chunkSize:o=100,maxCachedItems:r=5e3,evictionBuffer:e=200,onEvict:a}=t,n=new Map,s=0,l=0,y=R=>{let A=n.get(R);return A?A.lastAccess=Date.now():(A={items:new Array(o),count:0,lastAccess:Date.now()},n.set(R,A)),A},f=R=>Math.floor(R/o),u=R=>R%o,T=()=>s,I=R=>{s=R},w=R=>{if(R<0||R>=s)return;let A=f(R),k=n.get(A);if(k)return k.items[u(R)]},c=R=>{if(R<0||R>=s)return!1;let A=f(R),k=n.get(A);return k?k.items[u(R)]!==void 0:!1},m=(R,A)=>{let k=f(R),G=y(k),C=u(R),x=G.items[C]===void 0;G.items[C]=A,x&&(G.count++,l++),R>=s&&(s=R+1)},b=(R,A)=>{for(let k=0;k<A.length;k++){let G=A[k];G!==void 0&&m(R+k,G)}},v=R=>{if(R<0||R>=s)return!1;let A=f(R),k=n.get(A);if(!k)return!1;let G=u(R);return k.items[G]===void 0?!1:(k.items[G]=void 0,k.count--,l--,k.count===0&&n.delete(A),!0)},S=(R,A)=>{let k=[];for(let G=R;G<=A&&G<s;G++)k.push(w(G));return k},H=(R,A)=>{for(let k=R;k<=A&&k<s;k++)if(!c(k))return!1;return!0},h=()=>{let R=[],A=null,k=Array.from(n.keys()).sort((G,C)=>G-C);for(let G of k){let C=n.get(G);if(!C)continue;let x=G*o;for(let D=0;D<o;D++){let O=x+D;if(O>=s)break;C.items[D]!==void 0?A===null?A={start:O,end:O}:O===A.end+1?A.end=O:(R.push(A),A={start:O,end:O}):A!==null&&(R.push(A),A=null)}}return A!==null&&R.push(A),R},M=(R,A)=>{let k=[],G=null;for(let C=R;C<=A&&C<s;C++)c(C)?G!==null&&(k.push(G),G=null):G===null?G={start:C,end:C}:G.end=C;return G!==null&&k.push(G),k},d=R=>n.has(R),E=R=>{let A=n.get(R);A&&(A.lastAccess=Date.now())},p=(R,A)=>{if(R>A||n.size===0)return;let k=Date.now(),G=f(Math.max(0,R)),C=f(Math.min(s-1,A));for(let x=G;x<=C;x++){let D=n.get(x);D&&(D.lastAccess=k)}},V=(R,A)=>{if(l<=r)return 0;let k=Math.max(0,R-e),G=Math.min(s-1,A+e),C=f(k),x=f(G),D=0,O=[];for(let[N,Y]of n)(N<C||N>x)&&(D+=Y.count,O.push(N),l-=Y.count,n.delete(N));return D>0&&a&&a(D,O),D},z=()=>{if(l<=r)return 0;let R=Array.from(n.entries()).sort(([,G],[,C])=>G.lastAccess-C.lastAccess),A=0,k=[];for(let[G,C]of R){if(l<=r)break;A+=C.count,l-=C.count,k.push(G),n.delete(G)}return A>0&&a&&a(A,k),A},X=()=>({totalItems:s,cachedItems:l,cachedChunks:n.size,chunkSize:o,maxCachedItems:r,memoryEfficiency:s>0?1-l/s:1}),U=()=>l,ee=()=>{n.clear(),l=0};return{chunkSize:o,maxCachedItems:r,getTotal:T,setTotal:I,get:w,has:c,set:m,setRange:b,delete:v,getRange:S,isRangeLoaded:H,getLoadedRanges:h,findUnloadedRanges:M,getChunkIndex:f,isChunkLoaded:d,touchChunk:E,touchChunksForRange:p,evictDistant:V,evictToLimit:z,getStats:X,getCachedCount:U,clear:ee,reset:()=>{ee(),s=0}}},$n=t=>{if(t.length===0)return[];let o=[...t].sort((e,a)=>e.start-a.start),r=[{...o[0]}];for(let e=1;e<o.length;e++){let a=o[e],n=r[r.length-1];a.start<=n.end+1?n.end=Math.max(n.end,a.end):r.push({...a})}return r},Ut=(t,o,r)=>{let e=Math.floor(t.start/r)*r,a=Math.ceil((t.end+1)/r)*r-1,n={start:e,end:a};if(o.length===0)return[n];let s=[],l=$n(o),y=n.start;for(let f of l)if(!(f.end<y)&&(f.start>n.end||(f.start>y&&s.push({start:y,end:Math.min(f.start-1,n.end)}),y=f.end+1,y>n.end)))break;return y<=n.end&&s.push({start:y,end:n.end}),s};var Ee="_isPlaceholder",Bn="__placeholder_",Nt=(t={})=>{let{enabled:o=!0,maskCharacter:r="\u2588",randomVariance:e=!0,maxSampleSize:a=20,customGenerator:n}=t,s=null,l=!1,y=0,f=v=>{if(!o||l||v.length===0)return;let S=new Map,H=new Map,h=Math.min(v.length,a);for(let M=0;M<h;M++){let d=v[M];if(!(!d||typeof d!="object"))for(let[E,p]of Object.entries(d)){if(E.startsWith("_")||E==="id")continue;H.has(E)||H.set(E,{lengths:[],types:new Set});let V=H.get(E),z=Array.isArray(p)?"array":typeof p;V.types.add(z),typeof p=="string"?V.lengths.push(p.length):p!=null&&V.lengths.push(String(p).length)}}for(let[M,d]of H){if(d.lengths.length===0)continue;let E=Math.min(...d.lengths),p=Math.max(...d.lengths),V=Math.round(d.lengths.reduce((X,U)=>X+U,0)/d.lengths.length),z="string";d.types.has("number")&&d.types.size===1?z="number":d.types.has("boolean")&&d.types.size===1?z="boolean":d.types.has("array")?z="array":d.types.has("object")&&!d.types.has("string")&&(z="object"),S.set(M,{minLength:E,maxLength:p,avgLength:V,type:z})}s=S,l=!0},u=()=>l,T=v=>{let S=v.avgLength;return e&&v.minLength!==v.maxLength&&(S=Math.floor(Math.random()*(v.maxLength-v.minLength+1)+v.minLength),Math.random()<.3&&(S=Math.max(1,S+Math.floor(Math.random()*3)-1))),r.repeat(Math.max(1,S))},I=v=>{if(n)return{...n(v),[Ee]:!0};let S={id:`${Bn}${y++}`,[Ee]:!0,_index:v};if(!s||s.size===0)return S.label=r.repeat(12),S;for(let[H,h]of s)switch(h.type){case"string":S[H]=T(h);break;case"number":S[H]=0;break;case"boolean":S[H]=!1;break;case"array":S[H]=[];break;case"object":S[H]={};break;default:S[H]=T(h)}return S};return{analyzeStructure:f,hasAnalyzedStructure:u,generate:I,generateRange:(v,S)=>{let H=[];for(let h=v;h<=S;h++)H.push(I(h));return H},isPlaceholder:v=>!v||typeof v!="object"?!1:v[Ee]===!0,getPlaceholderKey:()=>Ee,clear:()=>{s=null,l=!1,y=0}}},Oe=t=>!t||typeof t!="object"?!1:t[Ee]===!0;var zn=50,Wt=(t={})=>{let{adapter:o,initialItems:r,initialTotal:e,storage:a,placeholder:n,pageSize:s=zn,onStateChange:l,onItemsLoaded:y,onItemsEvicted:f}=t,u=zt({...a,onEvict:(_,P)=>{f?.(_),h()}}),T=null,I=()=>(T||(T=Nt(n)),T),w=new Map,c=!1,m,b=!0,v,S=[],H=new Map,h=()=>{l?.(ee())},M=()=>{w.clear();let _=u.getLoadedRanges();for(let P of _)for(let K=P.start;K<=P.end;K++){let J=u.get(K);J&&!Oe(J)&&w.set(J.id,K)}},d=(_,P)=>{Oe(P)||w.set(P.id,_)},E=_=>{w.delete(_)},p=(_,P)=>`${_}-${P}`,V=()=>u.getTotal(),z=()=>u.getCachedCount(),X=()=>c,U=()=>b,ee=()=>({total:u.getTotal(),cached:u.getCachedCount(),isLoading:c,pendingRanges:S,error:m,hasMore:b,cursor:v}),j=()=>u,R=()=>I(),A=_=>{let P=u.get(_);if(P!==void 0)return P;if(_>=0&&_<u.getTotal())return I().generate(_)},k=_=>{let P=w.get(_);if(P!==void 0)return u.get(P)},G=_=>w.get(_)??-1,C=_=>{let P=u.get(_);return P!==void 0&&!Oe(P)},x=(_,P)=>{let K=[],J=u.getTotal(),B=0,ne=0;u.touchChunksForRange(_,Math.min(P,J-1));for(let se=_;se<=P&&se<J;se++){let be=u.get(se);be!==void 0?(K.push(be),B++):(K.push(I().generate(se)),ne++)}return K},D=_=>{u.setTotal(_),b=u.getCachedCount()<_,h()},O=(_,P=0,K)=>{T&&!T.hasAnalyzedStructure()&&_.length>0&&T.analyzeStructure(_);for(let J=0;J<_.length;J++){let B=_[J];if(B!==void 0){let ne=P+J;u.set(ne,B),d(ne,B)}}K!==void 0?u.setTotal(K):P+_.length>u.getTotal()&&u.setTotal(P+_.length),b=u.getCachedCount()<u.getTotal(),y?.(_,P,u.getTotal()),h()},N=(_,P)=>{let K=w.get(_);if(K===void 0)return!1;let J=u.get(K);if(!J)return!1;let B={...J,...P};return u.set(K,B),P.id!==void 0&&P.id!==_&&(E(_),d(K,B)),h(),!0},Y=_=>{let P=w.get(_);if(P===void 0)return!1;u.delete(P),E(_);let K=u.getTotal();return K>0&&u.setTotal(K-1),h(),!0},oe=async(_,P)=>{if(!o)return;let K=p(_,P);if(H.has(K))return;let J=u.getLoadedRanges(),B=Ut({start:_,end:P},J,u.chunkSize);if(B.length===0)return;let ne=u.chunkSize,se=[];for(let ue of B){let ie=Math.floor(ue.start/ne),fe=Math.floor(ue.end/ne);for(let le=ie;le<=fe;le++){let he=le*ne,ce=he+ne-1,Le=p(he,ce);!se.some(ye=>ye.start===he)&&!H.has(Le)&&se.push({start:he,end:ce})}}let be=[];for(let ue of B){let ie=Math.floor(ue.start/ne),fe=Math.floor(ue.end/ne);for(let le=ie;le<=fe;le++){let he=le*ne,ce=he+ne-1,Le=p(he,ce);if(H.has(Le)){let ye=H.get(Le);be.includes(ye)||be.push(ye)}}}for(let ue of se){let ie=p(ue.start,ue.end),fe=(async()=>{S.push(ue),c=!0,m=void 0,h();try{let le=ue.end-ue.start+1,he={offset:ue.start,limit:le,cursor:void 0},ce=await o.read(he);O(ce.items,ue.start,ce.total),ce.cursor&&(v=ce.cursor),ce.hasMore!==void 0?b=ce.hasMore:ce.total!==void 0&&(b=u.getCachedCount()<ce.total)}catch(le){m=le instanceof Error?le:new Error(String(le))}finally{H.delete(ie),S=S.filter(le=>le.start!==ue.start||le.end!==ue.end),c=H.size>0,h()}})();H.set(ie,fe),be.push(fe)}await Promise.all(be)},de=async(_,P)=>{u.isRangeLoaded(_,P)||await oe(_,P)},$=async()=>{o&&await oe(0,s-1)},ae=async()=>{if(!o||c||!b)return!1;let _=u.getCachedCount(),P=u.getTotal(),K=_,J=Math.min(K+s-1,P>0?P-1:K+s-1);return K>=P&&P>0?(b=!1,!1):(await oe(K,J),u.getCachedCount()>_)},Z=async()=>{u.clear(),w.clear(),T&&T.clear(),v=void 0,b=!0,m=void 0,h(),await $()},re=(_,P)=>{u.evictDistant(_,P)>0&&M()},Q=()=>{u.clear(),w.clear(),v=void 0,m=void 0,S=[],c=!1,h()},te=()=>{u.reset(),w.clear(),T&&T.clear(),v=void 0,b=!0,m=void 0,S=[],c=!1,h()};return r&&r.length>0?O(r,0,e??r.length):e!==void 0&&u.setTotal(e),{getState:ee,getTotal:V,getCached:z,getIsLoading:X,getHasMore:U,getStorage:j,getPlaceholders:R,getItem:A,getItemById:k,getIndexById:G,isItemLoaded:C,getItemsInRange:x,setTotal:D,setItems:O,updateItem:N,removeItem:Y,loadRange:oe,ensureRange:de,loadInitial:$,loadMore:ae,reload:Z,evictDistant:re,clear:Q,reset:te}};var Kt=t=>{let{adapter:o,loading:r}=t,e=r?.cancelThreshold??15,a=r?.preloadThreshold??2,n=r?.preloadAhead??50;return{name:"withData",priority:20,methods:["reload"],setup(s){let{emitter:l}=s,y=s.config.reverse,f=s.config.overscan,u=Wt({adapter:o,pageSize:50,onStateChange:()=>{s.state.isInitialized&&(s.heightCache.rebuild(s.getVirtualTotal()),s.updateCompressionMode(),s.state.viewportState=et(s.state.viewportState,s.heightCache,s.getVirtualTotal(),f,s.getCachedCompression()),s.updateContentSize(s.state.viewportState.totalHeight),s.renderIfNeeded())},onItemsLoaded:(v,S,H)=>{s.state.isInitialized&&(s.heightCache.rebuild(s.getVirtualTotal()),s.forceRender(),l.emit("load:end",{items:v,total:H}))}});s.replaceDataManager(u);let T=null,I=null,w=0,c=()=>{if(I){let v=I;I=null,s.dataManager.ensureRange(v.start,v.end).catch(S=>{l.emit("error",{error:S,context:"ensureRange"})})}};s.afterScroll.push((v,S)=>{if(s.state.isDestroyed)return;let H=s.scrollController.getVelocity(),M=s.scrollController.isTracking()&&H<=e;if(I&&w>e&&H<=e){let p=I;I=null,s.dataManager.ensureRange(p.start,p.end).catch(V=>{l.emit("error",{error:V,context:"ensureRange"})})}w=H,M&&!s.dataManager.getIsLoading()&&s.dataManager.getHasMore()&&(y?v<200&&(l.emit("load:start",{offset:s.dataManager.getCached(),limit:50}),s.dataManager.loadMore().catch(p=>{l.emit("error",{error:p,context:"loadMore"})})):s.state.viewportState.totalHeight-v-s.state.viewportState.containerHeight<200&&(l.emit("load:start",{offset:s.dataManager.getCached(),limit:50}),s.dataManager.loadMore().catch(V=>{l.emit("error",{error:V,context:"loadMore"})})));let{renderRange:d}=s.state.viewportState;if(!T||d.start!==T.start||d.end!==T.end)if(T={start:d.start,end:d.end},M){I=null;let p=d.start,V=d.end,z=s.getVirtualTotal();H>a&&(S==="down"?V=Math.min(d.end+n,z-1):p=Math.max(d.start-n,0)),s.dataManager.ensureRange(p,V).catch(X=>{l.emit("error",{error:X,context:"ensureRange"})})}else I={start:d.start,end:d.end}});let m=200,b=null;s.afterScroll.push((v,S)=>{b!==null&&clearTimeout(b),b=setTimeout(()=>{b=null,c()},m)}),s.destroyHandlers.push(()=>{b!==null&&(clearTimeout(b),b=null)}),l.on("load:start",()=>{s.dom.root.setAttribute("aria-busy","true")}),l.on("load:end",()=>{s.dom.root.removeAttribute("aria-busy")}),s.methods.set("reload",async()=>{await s.dataManager.reload()}),l.emit("load:start",{offset:0,limit:50}),s.dataManager.loadInitial().catch(v=>{l.emit("error",{error:v,context:"loadInitial"})})}}};var qt=()=>{let t=null;return{name:"withWindow",priority:5,setup(o){let{dom:r,state:e,config:a,emitter:n}=o;r.root.style.overflow="visible",r.root.style.height="auto",r.viewport.classList.remove(`${a.classPrefix}-viewport--custom-scrollbar`),o.disableViewportResize(),o.setScrollTarget(window),o.setScrollFns(()=>{let f=r.viewport.getBoundingClientRect();return a.horizontal?Math.max(0,-f.left):Math.max(0,-f.top)},f=>{let u=r.viewport.getBoundingClientRect();if(a.horizontal){let T=u.left+window.scrollX;window.scrollTo(T+f,window.scrollY)}else{let T=u.top+window.scrollY;window.scrollTo(window.scrollX,T+f)}}),o.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),e.viewportState.containerHeight=window.innerHeight;let s=window.innerHeight,l=window.innerWidth,y=()=>{let f=window.innerWidth,u=window.innerHeight,T=a.horizontal?f:u,I=a.horizontal?l:s;if(!(Math.abs(T-I)<=1)){s=u,l=f,e.viewportState.containerHeight=u,n.emit("resize",{width:f,height:u});for(let w=0;w<o.resizeHandlers.length;w++)o.resizeHandlers[w](f,u);o.renderIfNeeded()}};window.addEventListener("resize",y,{passive:!0}),t=()=>{window.removeEventListener("resize",y)},o.destroyHandlers.push(t)},destroy(){t&&(t(),t=null)}}};var Yt=t=>{let o=qe(t);if(t.scroll?.element===window&&(o=o.use(qt())),t.adapter&&(o=o.use(Kt({adapter:t.adapter,...t.loading&&{loading:t.loading}}))),t.layout==="grid"){if(!t.grid)throw new Error("[vlist/builder] grid configuration is required when layout is 'grid'");if(!t.grid.columns||t.grid.columns<1)throw new Error("[vlist/builder] grid.columns must be a positive integer >= 1");let n={columns:t.grid.columns};t.grid.gap!==void 0&&(n.gap=t.grid.gap),o=o.use(wt(n))}if(t.groups){if(t.direction==="horizontal")throw new Error("[vlist/builder] horizontal direction cannot be combined with groups");let n={getGroupForIndex:t.groups.getGroupForIndex,headerHeight:typeof t.groups.headerHeight=="function"?t.groups.headerHeight("",0):t.groups.headerHeight,headerTemplate:t.groups.headerTemplate};t.groups.sticky!==void 0&&(n.sticky=t.groups.sticky),o=o.use(xt(n))}let r=t.selection?.mode||"none";if(r!=="none"){let n={mode:r};t.selection?.initial!==void 0&&(n.initial=t.selection.initial),o=o.use(lt(n))}else o=o.use(lt({mode:"none"}));o=o.use($t());let e=t.scroll?.scrollbar||t.scrollbar;if(e!=="none"){let n=typeof e=="object"?e:{};o=o.use(Ot(n))}o=o.use(Bt());let a=o.build();return a.update=n=>{n.grid&&a.updateGrid&&a.updateGrid(n.grid),n.selectionMode!==void 0&&a.setSelectionMode&&a.setSelectionMode(n.selectionMode),n.itemHeight!==void 0&&console.warn("[vlist] Updating itemHeight via update() is not yet supported with the builder pattern. Please recreate the instance or use the full API from 'vlist/full'."),n.overscan!==void 0&&console.warn("[vlist] Updating overscan via update() is not yet supported with the builder pattern.")},a};function mo(t,o){let r=Yt({...o.config,container:t});return o.onInstance&&o.onInstance(r),{update(e){e.config.items&&r.setItems(e.config.items),e.onInstance&&e.onInstance(r)},destroy(){r.destroy()}}}function go(t,o,r){return t.on(o,r)}export{go as onVListEvent,mo as vlist};
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vlist.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vlist.d.ts","sourceRoot":"","sources":["../src/vlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7D;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EACzD,QAAQ,WAAW,CAAC,CAAC,CAAC,KACrB,KAAK,CAAC,CAAC,CA6IT,CAAC"}
|
package/dist/vue/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var{defineProperty:sj,getOwnPropertyNames:L2,getOwnPropertyDescriptor:O2}=Object,z2=Object.prototype.hasOwnProperty;var GJ=new WeakMap,P2=(J)=>{var X=GJ.get(J),Q;if(X)return X;if(X=sj({},"__esModule",{value:!0}),J&&typeof J==="object"||typeof J==="function")L2(J).map((j)=>!z2.call(X,j)&&sj(X,j,{get:()=>J[j],enumerable:!(Q=O2(J,j))||Q.enumerable}));return GJ.set(J,X),X};var b2=(J,X)=>{for(var Q in X)sj(J,Q,{get:X[Q],enumerable:!0,configurable:!0,set:(j)=>X[Q]=()=>j})};var MJ=(J,X)=>()=>(J&&(X=J(J=0)),X);var oj=200,Tj=50,FJ=15,LJ=2,OJ=50,nj=16000000;var zJ=(J,X,Q,j)=>{if(j===0)return 0;if(!J.isVariable())return Math.ceil(Q/J.getHeight(0));let Y=0,$=0,q=X;while(q<j&&$<Q)$+=J.getHeight(q),Y++,q++;return Math.max(1,Y)},ij=(J,X,Q)=>{if(Q===0)return 0;if(!J.isVariable())return Math.floor(X/J.getHeight(0));let j=0,Y=0;for(let $=Q-1;$>=0;$--){let q=J.getHeight($);if(Y+q>X)break;Y+=q,j++}return Math.max(j,1)},tj=(J,X,Q)=>{if(Q===0)return 0;let j=Math.floor(X),Y=X-j,$=Math.max(0,Math.min(j,Q-1));return J.getOffset($)+Y*J.getHeight($)};var Lj=(J,X)=>{let Q=X.getTotalHeight(),j=Q>nj,Y=j?nj:Q,$=Q>0?Y/Q:1;return{isCompressed:j,actualHeight:Q,virtualHeight:Y,ratio:$}},PJ=(J,X,Q,j,Y,$)=>{if(j===0||X===0)return $.start=0,$.end=-1,$;if(!Y.isCompressed){let N=Q.indexAtOffset(J),D=Q.indexAtOffset(J+X);if(D<j-1)D++;return $.start=Math.max(0,N),$.end=Math.min(j-1,Math.max(0,D)),$}let{virtualHeight:q}=Y,M=J/q*j,_=Math.floor(M),B=zJ(Q,Math.max(0,_),X,j),A=Math.ceil(M)+B,b=q-X-J;if(b<=X&&b>=-1){let N=ij(Q,X,j),D=Math.max(0,j-N),E=Math.max(0,Math.min(1,1-b/X));_=Math.floor(_+(D-_)*E),A=b<=1?j-1:Math.min(j-1,_+B)}return $.start=Math.max(0,_),$.end=Math.min(j-1,Math.max(0,A)),$},Ij=(J,X,Q,j,Y,$,q)=>{if(!$.isCompressed||j===0)return Q.getOffset(J);let{virtualHeight:Z}=$,M=Z-Y,_=M-X;if(_<=Y&&_>=-1){if(X>=M-1){let k=Q.getTotalHeight()-Q.getOffset(J);return Y-k}let L=ij(Q,Y,j),b=Math.max(0,j-L),D=X/Z*j,E=Math.max(0,Math.min(1,1-_/Y)),F=Q.getOffset(J)-Q.getOffset(b),O=Q.getOffset(J)-tj(Q,D,j);return O+(F-O)*E}let A=X/Z*j;return Q.getOffset(J)-tj(Q,A,j)},bJ=(J,X,Q,j,Y,$="start")=>{if(j===0)return 0;let q;if(Y.isCompressed){if($==="end"&&J===j-1)return Math.max(0,Y.virtualHeight-Q);q=J/j*Y.virtualHeight}else q=X.getOffset(J);let Z=X.getHeight(J);switch($){case"center":q-=(Q-Z)/2;break;case"end":q-=Q-Z;break}let M=Y.virtualHeight-Q;return Math.max(0,Math.min(q,M))};var ej=()=>{};var wj=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var kJ={};b2(kJ,{createGridRenderer:()=>jJ});var x2=(J=200)=>{let X=[];return{acquire:()=>{let $=X.pop();if($)return $;let q=document.createElement("div");return q.setAttribute("role","option"),q},release:($)=>{if(X.length<J)$.className="",$.textContent="",$.removeAttribute("style"),$.removeAttribute("data-index"),$.removeAttribute("data-id"),$.removeAttribute("data-row"),$.removeAttribute("data-col"),X.push($)},clear:()=>{X.length=0}}},jJ=(J,X,Q,j,Y,$,q,Z)=>{let M=x2(),_=new Map,B=$,A=!1,L=null,b=0,N="",D=(z)=>{if(L&&b===z)return L;return L=Lj(z,Q),b=z,L},E={selected:!1,focused:!1},F=(z,w)=>{return E.selected=z,E.focused=w,E},O=`${Y}-item ${Y}-grid-item`,k=`${Y}-item--selected`,G=`${Y}-item--focused`,T=(z,w)=>{if(typeof w==="string")z.innerHTML=w;else z.replaceChildren(w)},U=(z,w,u)=>{z.classList.toggle(k,w),z.classList.toggle(G,u)},C=(z,w)=>{let u=j.getRow(z);if(w){let h=w.totalItems,l=D(h);if(l.isCompressed)return Ij(u,w.scrollTop,Q,h,w.containerHeight,l,w.rangeStart)}return Q.getOffset(u)},W=(z,w,u)=>{let h=z.dataset.id?.startsWith("__group_header"),l=h?0:j.getCol(w),a=h?0:j.getColumnOffset(l,B),Xj;if(A){let Bj=j.getRow(w),m=0,Yj=new Set;for(let n=0;n<w;n++){let Qj=j.getRow(n);if(Qj<Bj&&!Yj.has(Qj)){let t=Q.getHeight(n);m+=t,Yj.add(Qj)}}Xj=m}else Xj=C(w,u);z.style.transform=`translate(${Math.round(a)}px, ${Math.round(Xj)}px)`},y=(z,w)=>{let u=z.dataset.id?.startsWith("__group_header"),h=u?B:j.getColumnWidth(B),l;if(A||u)l=Q.getHeight(w)-j.gap;else{let a=j.getRow(w);l=Q.getHeight(a)-j.gap}z.style.width=`${h}px`,z.style.height=`${l}px`},x=(z,w,u,h,l)=>{let a=M.acquire(),Xj=F(u,h);if(a.className=O,a.dataset.index=String(z),a.dataset.id=String(w.id),a.dataset.row=String(j.getRow(z)),a.dataset.col=String(j.getCol(z)),a.ariaSelected=String(u),Z)a.id=`${Z}-item-${z}`;if(q)N=String(q()),a.setAttribute("aria-setsize",N),a.setAttribute("aria-posinset",String(z+1));y(a,z);let Bj=X(w,z,Xj);return T(a,Bj),U(a,u,h),W(a,z,l),a},o=(z,w,u,h,l)=>{if(w.start===0&&z.length>0)A=wj(z[0]);for(let[m,Yj]of _)if(m<w.start||m>w.end)Yj.element.remove(),M.release(Yj.element),_.delete(m);let a=!1;if(q){let m=String(q());a=m!==N,N=m}let Xj=document.createDocumentFragment(),Bj=[];for(let m=w.start;m<=w.end;m++){let Yj=m-w.start,n=z[Yj];if(!n){console.warn(`⚠️ RENDER: Missing item at index ${m} (range: ${w.start}-${w.end}, items.length: ${z.length})`);continue}let Qj=u.has(n.id),t=m===h,Jj=_.get(m);if(Jj){let v=Jj.element.dataset.id,S=String(n.id);if(v!==S){let jj=F(Qj,t),g=X(n,m,jj);T(Jj.element,g),Jj.element.dataset.id=S,Jj.element.dataset.row=String(j.getRow(m)),Jj.element.dataset.col=String(j.getCol(m)),y(Jj.element,m)}if(U(Jj.element,Qj,t),Jj.element.ariaSelected=String(Qj),W(Jj.element,m,l),a)Jj.element.setAttribute("aria-setsize",N)}else{let v=x(m,n,Qj,t,l);Xj.appendChild(v),Bj.push({index:m,element:v})}}if(Bj.length>0){J.appendChild(Xj);for(let{index:m,element:Yj}of Bj)_.set(m,{index:m,element:Yj})}},d=(z)=>{for(let[w,u]of _)W(u.element,w,z)},e=(z,w,u,h)=>{let l=_.get(z);if(l){let a=F(u,h),Xj=X(w,z,a);T(l.element,Xj),U(l.element,u,h),l.element.dataset.id=String(w.id),l.element.ariaSelected=String(u),y(l.element,z)}},i=(z,w,u)=>{let h=_.get(z);if(h)U(h.element,w,u)},H=(z)=>{return _.get(z)?.element},R=(z)=>{if(Math.abs(z-B)<1)return;B=z;for(let[w,u]of _)y(u.element,w),W(u.element,w)},I=()=>{for(let[,z]of _)z.element.remove(),M.release(z.element);_.clear()};return{render:o,updatePositions:d,updateItem:e,updateItemClasses:i,getElement:H,updateContainerWidth:R,clear:I,destroy:()=>{I(),M.clear()}}};var JJ=MJ(()=>{ej()});import{ref as r2,shallowRef as a2,onMounted as o2,onBeforeUnmount as j2,watch as J2,isRef as n2,unref as i2}from"vue";var k2=0,Pj=5,y2=100,rj=2,H2=(J=0)=>{let X=Array(Pj);for(let Q=0;Q<Pj;Q++)X[Q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:X,sampleIndex:0,sampleCount:0}},T2=(J,X)=>{let Q=performance.now(),j=Q-J.lastTime;if(j===0)return J;if(j>y2){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let $=J.samples[0];return $.position=X,$.time=Q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=X,J.lastTime=Q,J}let Y=J.samples[J.sampleIndex];if(Y.position=X,Y.time=Q,J.sampleIndex=(J.sampleIndex+1)%Pj,J.sampleCount=Math.min(J.sampleCount+1,Pj),J.sampleCount>=rj){let $=(J.sampleIndex-J.sampleCount+Pj)%Pj,q=J.samples[$],Z=X-q.position,M=Q-q.time;J.velocity=M>0?Math.abs(Z)/M:0}return J.lastPosition=X,J.lastTime=Q,J},AJ=(J,X)=>{if(typeof J==="number"){let $=X;return{getOffset:(q)=>q*J,getHeight:()=>J,indexAtOffset:(q)=>{if($===0||J===0)return 0;return Math.max(0,Math.min(Math.floor(q/J),$-1))},getTotalHeight:()=>$*J,getTotal:()=>$,rebuild:(q)=>{$=q},isVariable:()=>!1}}let Q=X,j=new Float64Array(0),Y=($)=>{Q=$,j=new Float64Array($+1),j[0]=0;for(let q=0;q<$;q++)j[q+1]=j[q]+J(q)};return Y(X),{getOffset:($)=>{if($<=0)return 0;if($>=Q)return j[Q];return j[$]},getHeight:($)=>J($),indexAtOffset:($)=>{if(Q===0)return 0;if($<=0)return 0;if($>=j[Q])return Q-1;let q=0,Z=Q-1;while(q<Z){let M=q+Z+1>>>1;if(j[M]<=$)q=M;else Z=M-1}return q},getTotalHeight:()=>j[Q]??0,getTotal:()=>Q,rebuild:($)=>Y($),isVariable:()=>!0}},w2=()=>{let J={},X=($,q)=>{if(!J[$])J[$]=new Set;return J[$].add(q),()=>Q($,q)},Q=($,q)=>{J[$]?.delete(q)};return{on:X,off:Q,emit:($,q)=>{J[$]?.forEach((Z)=>{try{Z(q)}catch(M){console.error(`[vlist] Error in "${$}" handler:`,M)}})},clear:()=>{for(let $ in J)delete J[$]}}},R2=(J)=>{if(typeof J==="string"){let X=document.querySelector(J);if(!X)throw Error(`[vlist/builder] Container not found: ${J}`);return X}return J},v2=(J,X,Q,j)=>{let Y=document.createElement("div");if(Y.className=X,j)Y.classList.add(`${X}--horizontal`);if(Y.setAttribute("role","listbox"),Y.setAttribute("tabindex","0"),Q)Y.setAttribute("aria-label",Q);if(j)Y.setAttribute("aria-orientation","horizontal");let $=document.createElement("div");if($.className=`${X}-viewport`,j)$.style.overflowX="auto",$.style.overflowY="hidden";else $.style.overflow="auto";$.style.height="100%",$.style.width="100%";let q=document.createElement("div");if(q.className=`${X}-content`,q.style.position="relative",j)q.style.height="100%";else q.style.width="100%";let Z=document.createElement("div");if(Z.className=`${X}-items`,Z.style.position="relative",j)Z.style.height="100%";else Z.style.width="100%";return q.appendChild(Z),$.appendChild(q),Y.appendChild($),J.appendChild(Y),{root:Y,viewport:$,content:q,items:Z}},C2=(J=100)=>{let X=[];return{acquire:()=>{let Q=X.pop();if(Q)return Q;let j=document.createElement("div");return j.setAttribute("role","option"),j},release:(Q)=>{if(X.length<J)Q.className="",Q.textContent="",Q.removeAttribute("style"),Q.removeAttribute("data-index"),Q.removeAttribute("data-id"),X.push(Q)},clear:()=>{X.length=0}}},S2=(J,X,Q,j,Y)=>{if(j===0||X===0){Y.start=0,Y.end=0;return}let $=Q.indexAtOffset(J),q=Q.indexAtOffset(J+X);if(q<j-1)q++;Y.start=Math.max(0,$),Y.end=Math.min(j-1,Math.max(0,q))},f2=(J,X,Q,j)=>{if(Q===0){j.start=0,j.end=0;return}j.start=Math.max(0,J.start-X),j.end=Math.min(Q-1,J.end+X)},I2=(J,X,Q,j,Y)=>{if(j===0)return 0;let $=Math.max(0,Math.min(J,j-1)),q=X.getOffset($),Z=X.getHeight($),M=Math.max(0,X.getTotalHeight()-Q),_;switch(Y){case"center":_=q-(Q-Z)/2;break;case"end":_=q-Q+Z;break;default:_=q}return Math.max(0,Math.min(_,M))},p2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,u2=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:300};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??300};return{align:"start",behavior:"auto",duration:300}},aj=(J)=>{if(!J.container)throw Error("[vlist/builder] Container is required");if(!J.item)throw Error("[vlist/builder] item configuration is required");let X=J.direction==="horizontal",Q=X?"width":"height",j=X?J.item.width:J.item.height;if(j==null)throw Error(`[vlist/builder] item.${Q} is required${X?" when direction is 'horizontal'":""}`);if(typeof j==="number"&&j<=0)throw Error(`[vlist/builder] item.${Q} must be a positive number`);if(typeof j!=="number"&&typeof j!=="function")throw Error(`[vlist/builder] item.${Q} must be a number or a function (index) => number`);if(!J.item.template)throw Error("[vlist/builder] item.template is required");if(X&&J.reverse)throw Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let Y=new Map,$=!1,q={use(Z){if($)throw Error("[vlist/builder] Cannot call .use() after .build()");return Y.set(Z.name,Z),q},build(){if($)throw Error("[vlist/builder] .build() can only be called once");return $=!0,h2(J,Y,X,j)}};return q};function h2(J,X,Q,j){let{item:Y,items:$,overscan:q=3,classPrefix:Z="vlist",ariaLabel:M,reverse:_=!1,scroll:B}=J,A=B?.wheel??!0,L=B?.wrap??!1,b=_,N=`${Z}-${k2++}`,D=j,E=Q?typeof Y.height==="number"?Y.height:void 0:typeof Y.width==="number"?Y.width:void 0,F=Y.template,O={overscan:q,classPrefix:Z,reverse:b,wrap:L,horizontal:Q,ariaIdPrefix:N},k=Array.from(X.values()).sort((K,V)=>(K.priority??50)-(V.priority??50)),G=new Set(k.map((K)=>K.name));for(let K of k)if(K.conflicts){for(let V of K.conflicts)if(G.has(V))throw Error(`[vlist/builder] ${K.name} and ${V} cannot be combined`)}if(Q){if(G.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(G.has("withGroups"))throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'")}if(b){if(G.has("withGrid"))throw Error("[vlist/builder] withGrid cannot be used with reverse: true")}let T=R2(J.container),U=v2(T,Z,M,Q),C=w2(),W=$?[...$]:[],y=AJ(D,W.length),x=C2(),o=U.viewport.clientHeight,d=U.viewport.clientWidth,e=!1,i=!1,H=0,R=null,I=null,p=H2(0),z={start:0,end:0},w={start:0,end:0},u={start:-1,end:-1},h={viewportState:{scrollTop:0,containerHeight:o,totalHeight:y.getTotalHeight(),actualHeight:y.getTotalHeight(),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},l=new Map,a={selected:!1,focused:!1},Xj=`${Z}-item`,Bj="",m=new Map,Yj=()=>{m.clear();for(let K=0;K<W.length;K++){let V=W[K];if(V)m.set(V.id,K)}};Yj();let n=null,Qj=()=>n?n.getTotal():W.length,t=[],Jj=[],v=[],S=[],s=[],jj=[],g=new Map,$j=()=>{return Q?U.viewport.scrollLeft:U.viewport.scrollTop},qj=(K)=>{if(Q)U.viewport.scrollLeft=K;else U.viewport.scrollTop=K},Mj=(K=2)=>{let V=y.getTotalHeight();return H+o>=V-K},Uj=!1,Kj,_j,Zj=(K,V,P,f,r)=>{S2(K,V,P,f,r)},Gj=(K,V,P,f,r)=>{return I2(K,V,P,f,r)},Wj=(K,V)=>{if(typeof V==="string")K.innerHTML=V;else K.replaceChildren(V)},Fj=(K,V)=>{let P=Math.round(y.getOffset(V));if(Q)K.style.transform=`translateX(${P}px)`;else K.style.transform=`translateY(${P}px)`},$2=(K,V)=>{let P=x.acquire();if(P.className=Xj,Q){if(P.style.width=`${y.getHeight(K)}px`,E!=null)P.style.height=`${E}px`}else P.style.height=`${y.getHeight(K)}px`;return P.dataset.index=String(K),P.dataset.id=String(V.id),P.ariaSelected="false",P.id=`${N}-item-${K}`,Bj=String(Qj()),P.setAttribute("aria-setsize",Bj),P.setAttribute("aria-posinset",String(K+1)),Wj(P,F(V,K,a)),Fj(P,K),P},kj=()=>{let K=`${y.getTotalHeight()}px`;if(Q)U.content.style.width=K;else U.content.style.height=K},mj=new Set,gj=-1,Q2=()=>{if(e)return;let K=Qj();if(Zj(H,o,y,K,z),f2(z,q,K,w),w.start===u.start&&w.end===u.end)return;let V=String(K),P=V!==Bj;Bj=V;for(let[c,Dj]of l)if(c<w.start||c>w.end)Dj.remove(),x.release(Dj),l.delete(c);let f=document.createDocumentFragment(),r=[];for(let c=w.start;c<=w.end;c++){let Dj=n?n.getItem(c):W[c];if(!Dj)continue;let Vj=l.get(c);if(Vj){let Aj=Vj.dataset.id,Sj=String(Dj.id);if(Aj!==Sj)if(Wj(Vj,F(Dj,c,a)),Vj.dataset.id=Sj,Q)Vj.style.width=`${y.getHeight(c)}px`;else Vj.style.height=`${y.getHeight(c)}px`;Fj(Vj,c);let fj=mj.has(Dj.id),F2=c===gj;if(Vj.classList.toggle(`${Z}-item--selected`,fj),Vj.classList.toggle(`${Z}-item--focused`,F2),Vj.ariaSelected=fj?"true":"false",P)Vj.setAttribute("aria-setsize",Bj)}else{let Aj=$2(c,Dj),Sj=mj.has(Dj.id),fj=c===gj;if(Sj)Aj.classList.add(`${Z}-item--selected`),Aj.ariaSelected="true";if(fj)Aj.classList.add(`${Z}-item--focused`);f.appendChild(Aj),r.push({index:c,element:Aj})}}if(r.length>0){U.items.appendChild(f);for(let{index:c,element:Dj}of r)l.set(c,Dj)}u.start=w.start,u.end=w.end,h.lastRenderRange.start=w.start,h.lastRenderRange.end=w.end,h.viewportState.scrollTop=H,h.viewportState.visibleRange.start=z.start,h.viewportState.visibleRange.end=z.end,h.viewportState.renderRange.start=w.start,h.viewportState.renderRange.end=w.end,C.emit("range:change",{range:{start:w.start,end:w.end}})},X2=()=>{u.start=-1,u.end=-1,Kj()};Kj=Q2,_j=X2;let yj=()=>{if(e)return;let K=$j(),V=K>=H?"down":"up";if(p=T2(p,K),!U.root.classList.contains(`${Z}--scrolling`))U.root.classList.add(`${Z}--scrolling`);H=K,Kj(),C.emit("scroll",{scrollTop:K,direction:V}),C.emit("velocity:change",{velocity:p.velocity,reliable:p.sampleCount>=rj});for(let P=0;P<t.length;P++)t[P](K,V);if(I)clearTimeout(I);I=setTimeout(()=>{U.root.classList.remove(`${Z}--scrolling`),p.velocity=0,p.sampleCount=0,C.emit("velocity:change",{velocity:0,reliable:!1})},B?.idleTimeout??150)},vj=null,zj=U.viewport;if(zj.addEventListener("scroll",yj,{passive:!0}),Q&&A)vj=(K)=>{if(K.deltaX)return;K.preventDefault(),U.viewport.scrollLeft+=K.deltaY},U.viewport.addEventListener("wheel",vj);let WJ=(K)=>{let P=K.target.closest("[data-index]");if(P){let f=parseInt(P.dataset.index??"-1",10);if(f>=0){let r=n?.getItem(f)??W[f];if(r){if(r.__groupHeader)return;C.emit("item:click",{item:r,index:f,event:K})}}}for(let f=0;f<Jj.length;f++)Jj[f](K)},q2=(K)=>{let P=K.target.closest("[data-index]");if(P){let f=parseInt(P.dataset.index??"-1",10);if(f>=0){let r=n?.getItem(f)??W[f];if(r){if(r.__groupHeader)return;C.emit("item:dblclick",{item:r,index:f,event:K})}}}},NJ=(K)=>{for(let V=0;V<v.length;V++)v[V](K)};U.items.addEventListener("click",WJ),U.items.addEventListener("dblclick",q2),U.root.addEventListener("keydown",NJ);let dj=!0,K2=()=>d,Y2=()=>o,lj=new ResizeObserver((K)=>{if(e)return;for(let V of K){let P=V.contentRect.height,f=V.contentRect.width,r=Q?f:P;if(d=f,Math.abs(r-o)>1){if(o=r,h.viewportState.containerHeight=r,i)kj(),Kj(),C.emit("resize",{height:P,width:f})}if(i)for(let c=0;c<S.length;c++)S[c](f,P)}});if(dj)lj.observe(U.viewport);let Nj={get dom(){return U},get heightCache(){return y},get emitter(){return C},get config(){return O},get rawConfig(){return J},get renderer(){return{render:(K,V,P,f,r)=>{mj=P,gj=f,_j()},updateItemClasses:(K,V,P)=>{let f=l.get(K);if(!f)return;f.classList.toggle(`${Z}-item--selected`,V),f.classList.toggle(`${Z}-item--focused`,P),f.ariaSelected=V?"true":"false"},updatePositions:()=>{},updateItem:()=>{},getElement:(K)=>l.get(K)??null,clear:()=>{},destroy:()=>{}}},set renderer(K){},get dataManager(){return n},set dataManager(K){n=K},get scrollController(){return cj},set scrollController(K){cj=K},state:h,getContainerWidth(){return d},afterScroll:t,clickHandlers:Jj,keydownHandlers:v,resizeHandlers:S,contentSizeHandlers:s,destroyHandlers:jj,methods:g,replaceTemplate(K){F=K},replaceRenderer(K){},replaceDataManager(K){n=K},replaceScrollController(K){cj=K},getItemsForRange(K){let V=[];for(let P=K.start;P<=K.end;P++){let f=n?n.getItem(P):W[P];if(f)V.push(f)}return V},getAllLoadedItems(){if(n){let K=n.getTotal(),V=[];for(let P=0;P<K;P++){let f=n.getItem(P);if(f)V.push(f)}return V}return[...W]},getVirtualTotal(){return Qj()},getCachedCompression(){return{isCompressed:!1,actualHeight:y.getTotalHeight(),virtualHeight:y.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:H,totalItems:Qj(),containerHeight:o,rangeStart:w.start}},renderIfNeeded(){Kj()},forceRender(){_j()},getRenderFns(){return{renderIfNeeded:Kj,forceRender:_j}},setRenderFns(K,V){Kj=K,_j=V},setVirtualTotalFn(K){Qj=K},rebuildHeightCache(K){y.rebuild(K??Qj())},setHeightConfig(K){y=AJ(K,Qj())},updateContentSize(K){let V=`${K}px`;if(Q)U.content.style.width=V;else U.content.style.height=V},updateCompressionMode(){},setVisibleRangeFn(K){Zj=K},setScrollToPosFn(K){Gj=K},setPositionElementFn(K){Fj=K},setScrollFns(K,V){$j=K,qj=(P)=>{V(P),yj()}},setScrollTarget(K){zj.removeEventListener("scroll",yj),zj=K,zj.addEventListener("scroll",yj,{passive:!0})},getScrollTarget(){return zj},setContainerDimensions(K){K2=K.width,Y2=K.height,d=K.width(),o=K.height(),h.viewportState.containerHeight=o},disableViewportResize(){if(dj)dj=!1,lj.unobserve(U.viewport)}};n={getState:()=>({total:W.length,cached:W.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>W.length,getCached:()=>W.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:(K)=>W[K],getItemById:(K)=>{let V=m.get(K);return V!==void 0?W[V]:void 0},getIndexById:(K)=>m.get(K)??-1,isItemLoaded:(K)=>K>=0&&K<W.length&&W[K]!==void 0,getItemsInRange:(K,V)=>{let P=[],f=Math.max(0,K),r=Math.min(V,W.length-1);for(let c=f;c<=r;c++)P.push(W[c]);return P},setTotal:(K)=>{},setItems:(K,V=0,P)=>{if(V===0&&(P!==void 0||W.length===0))W=[...K];else{let f=V+K.length;if(W.length<f)W.length=f;for(let r=0;r<K.length;r++)W[V+r]=K[r]}if(Yj(),i){y.rebuild(Qj()),kj(),Nj.updateCompressionMode();for(let f=0;f<s.length;f++)s[f]();_j()}},updateItem:(K,V)=>{let P=m.get(K);if(P===void 0)return!1;let f=W[P];if(!f)return!1;if(W[P]={...f,...V},V.id!==void 0&&V.id!==K)m.delete(K),m.set(V.id,P);let r=l.get(P);if(r)Wj(r,F(W[P],P,a)),r.dataset.id=String(W[P].id);return!0},removeItem:(K)=>{let V=m.get(K);if(V===void 0)return!1;if(W.splice(V,1),Yj(),i){y.rebuild(Qj()),kj(),Nj.updateCompressionMode();for(let P=0;P<s.length;P++)s[P]();_j()}return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{W=[],m.clear()},reset:()=>{if(W=[],m.clear(),i)y.rebuild(0),kj(),_j()}};let cj={getScrollTop:()=>$j(),scrollTo:(K)=>{qj(K),H=K,Kj()},scrollBy:(K)=>{let V=$j()+K;qj(V),H=V,Kj()},isAtTop:()=>H<=2,isAtBottom:(K=2)=>Mj(K),getScrollPercentage:()=>{let K=y.getTotalHeight(),V=Math.max(0,K-o);return V>0?H/V:0},getVelocity:()=>p.velocity,isTracking:()=>p.sampleCount>=rj,isScrolling:()=>U.root.classList.contains(`${Z}--scrolling`),updateConfig:()=>{},enableCompression:()=>{},disableCompression:()=>{},isCompressed:()=>Uj,isWindowMode:()=>!1,updateContainerHeight:(K)=>{o=K},destroy:()=>{}},DJ=new Map;for(let K of k)if(K.methods)for(let V of K.methods){let P=DJ.get(V);if(P)throw Error(`[vlist/builder] Method "${V}" is registered by both "${P}" and "${K.name}"`);DJ.set(V,K.name)}for(let K of k)K.setup(Nj);if(i=!0,Nj.state.isInitialized=!0,kj(),Kj(),b&&W.length>0){let K=Gj(W.length-1,y,o,W.length,"end");qj(K),H=K,Kj()}let Z2=(K)=>{Nj.dataManager.setItems(K,0,K.length)},B2=b?(K)=>{let V=Mj(2),P=W.length;if(Nj.dataManager.setItems(K,P),V&&W.length>0){let f=Gj(W.length-1,y,o,W.length,"end");qj(f),H=f,Kj()}}:(K)=>{let V=W.length;Nj.dataManager.setItems(K,V)},U2=b?(K)=>{let V=$j(),P=y.getTotalHeight(),f=[...W];Nj.dataManager.clear(),Nj.dataManager.setItems([...K,...f],0);let c=y.getTotalHeight()-P;if(c>0)qj(V+c),H=V+c}:(K)=>{let V=[...W];Nj.dataManager.clear(),Nj.dataManager.setItems([...K,...V],0)},W2=(K,V)=>{Nj.dataManager.updateItem(K,V)},N2=(K)=>{Nj.dataManager.removeItem(K)},D2=async()=>{if(Nj.dataManager.reload)await Nj.dataManager.reload()},Cj=()=>{if(R!==null)cancelAnimationFrame(R),R=null},V2=(K,V,P)=>{if(Cj(),Math.abs(V-K)<1){qj(V),H=V,Kj();return}let f=performance.now(),r=(c)=>{let Dj=c-f,Vj=Math.min(Dj/P,1),Aj=K+(V-K)*p2(Vj);if(qj(Aj),H=Aj,Kj(),Vj<1)R=requestAnimationFrame(r);else R=null};R=requestAnimationFrame(r)},VJ=(K,V)=>{let{align:P,behavior:f,duration:r}=u2(V),c=Qj(),Dj=K;if(L&&c>0)Dj=(Dj%c+c)%c;let Vj=Gj(Dj,y,o,c,P);if(f==="smooth")V2($j(),Vj,r);else Cj(),qj(Vj)},_2=(K,V)=>{let P=m.get(K)??Nj.dataManager.getIndexById(K);if(P>=0)VJ(P,V)},G2=()=>$j(),M2=(K,V)=>{return C.on(K,V)},A2=(K,V)=>{C.off(K,V)},E2=()=>{if(e)return;if(e=!0,Nj.state.isDestroyed=!0,U.items.removeEventListener("click",WJ),U.root.removeEventListener("keydown",NJ),zj.removeEventListener("scroll",yj),lj.disconnect(),vj)U.viewport.removeEventListener("wheel",vj);if(I)clearTimeout(I);for(let K=0;K<jj.length;K++)jj[K]();for(let K of k)if(K.destroy)K.destroy();Cj();for(let[,K]of l)K.remove(),x.release(K);l.clear(),x.clear(),C.clear(),U.root.remove()},_J={get element(){return U.root},get items(){if(g.has("_getItems"))return g.get("_getItems")();return W},get total(){if(g.has("_getTotal"))return g.get("_getTotal")();return Qj()},setItems:g.has("setItems")?g.get("setItems"):Z2,appendItems:g.has("appendItems")?g.get("appendItems"):B2,prependItems:g.has("prependItems")?g.get("prependItems"):U2,updateItem:g.has("updateItem")?g.get("updateItem"):W2,removeItem:g.has("removeItem")?g.get("removeItem"):N2,reload:g.has("reload")?g.get("reload"):D2,scrollToIndex:g.has("scrollToIndex")?g.get("scrollToIndex"):VJ,scrollToItem:g.has("scrollToItem")?g.get("scrollToItem"):_2,cancelScroll:g.has("cancelScroll")?g.get("cancelScroll"):Cj,getScrollPosition:g.has("getScrollPosition")?g.get("getScrollPosition"):G2,on:M2,off:A2,destroy:E2};for(let[K,V]of g){if(K==="setItems"||K==="appendItems"||K==="prependItems"||K==="updateItem"||K==="removeItem"||K==="reload"||K==="scrollToIndex"||K==="scrollToItem"||K==="cancelScroll"||K==="getScrollPosition")continue;_J[K]=V}return _J}var EJ=(J)=>{let X=Math.max(1,Math.floor(J.columns)),Q=J.gap??0,j=J.isHeaderFn,Y={row:0,col:0},$=(N)=>{if(N<=0)return 0;if(!j)return Math.ceil(N/X);let D=0,E=0,F=0;for(let O=0;O<N;O++)if(j(O)){if(F++,E>0)D++,E=0;D++,E=0}else if(E++,E>=X)D++,E=0;if(E>0)D++;return D},q=(N)=>{return Y.row=Z(N),Y.col=M(N),Y},Z=(N)=>{if(!j)return Math.floor(N/X);let D=0,E=0;for(let F=0;F<=N;F++)if(j(F)){if(E>0)D++,E=0;if(F===N)return D;D++,E=0}else{if(F===N)return D;if(E++,E>=X)D++,E=0}return console.warn(`⚠️ getRow(${N}) fell through - returning ${D}`),D},M=(N)=>{if(!j)return N%X;if(j(N))return 0;let D=0;for(let E=0;E<=N;E++)if(j(E))D=0;else{if(E===N)return D;if(D++,D>=X)D=0}return D},_=(N,D,E)=>{if(E<=0)return{start:0,end:-1};if(!j){let T=Math.max(0,N*X),U=Math.min(E-1,(D+1)*X-1);return{start:T,end:U}}let F=-1,O=-1,k=0,G=0;for(let T=0;T<E;T++){if(j(T)){if(G>0)k++,G=0;if(k>=N&&k<=D){if(F===-1)F=T;O=T}k++,G=0}else{if(k>=N&&k<=D){if(F===-1)F=T;O=T}if(G++,G>=X)k++,G=0}if(k>D&&G===0)break}if(F===-1)return{start:0,end:-1};return{start:F,end:O}},B=(N,D,E)=>{if(D<0||D>=X)return-1;let F=N*X+D;if(F<0||F>=E)return-1;return F},A=(N)=>{let D=(X-1)*Q;return Math.max(0,(N-D)/X)};return{get columns(){return X},get gap(){return Q},update:(N)=>{if(N.columns!==void 0)X=Math.max(1,Math.floor(N.columns));if(N.gap!==void 0)Q=N.gap;if(N.isHeaderFn!==void 0)j=N.isHeaderFn},getTotalRows:$,getPosition:q,getRow:Z,getCol:M,getItemRange:_,getItemIndex:B,getColumnWidth:A,getColumnOffset:(N,D)=>{let E=A(D);return N*(E+Q)}}};JJ();var yJ=(J,X,Q,j,Y,$)=>{if(j===0||X===0)return $.start=0,$.end=-1,$;let q=Q.indexAtOffset(J),Z=Q.indexAtOffset(J+X);if(Z<j-1)Z++;return $.start=Math.max(0,q),$.end=Math.min(j-1,Math.max(0,Z)),$},HJ=(J,X,Q,j)=>{if(Q===0)return j.start=0,j.end=-1,j;return j.start=Math.max(0,J.start-X),j.end=Math.min(Q-1,J.end+X),j},TJ=(J,X,Q,j,Y,$)=>{if(j===0)return 0;let q=Math.max(0,Math.min(J,j-1)),Z=X.getOffset(q),M=X.getHeight(q),_=X.getTotalHeight(),B=Math.max(0,_-Q),A;switch($){case"center":A=Z-Q/2+M/2;break;case"end":A=Z-Q+M;break;case"start":default:A=Z;break}return Math.max(0,Math.min(A,B))};var $J=(J,X,Q,j,Y,$=yJ)=>{return $(J.scrollTop,J.containerHeight,X,Q,Y,J.visibleRange),HJ(J.visibleRange,j,Q,J.renderRange),J.totalHeight=Y.virtualHeight,J.actualHeight=Y.actualHeight,J.isCompressed=Y.isCompressed,J.compressionRatio=Y.ratio,J},Oj=(J,X,Q,j,Y="start",$,q=TJ)=>{return q(J,X,Q,j,$,Y)};var wJ=(J)=>{if(!J.columns||J.columns<1)throw Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let X=null,Q=null;return{name:"withGrid",priority:10,setup(j){let{dom:Y,emitter:$,config:q,rawConfig:Z}=j,{classPrefix:M}=q;if(q.horizontal)throw Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(q.reverse)throw Error("[vlist/builder] withGrid cannot be used with reverse: true");let _=Z.items?.some((G)=>G.__groupHeader===!0),B={columns:J.columns,gap:J.gap??0};if(_)B.isHeaderFn=(G)=>{let T=j.dataManager.getItem(G);return!!(T&&T.__groupHeader===!0)};X=EJ(B);let A=X.gap;j.setVirtualTotalFn(()=>{let G=j.dataManager.getTotal();return X.getTotalRows(G)});let L=Z.item,b=q.horizontal?L.width:L.height,N={containerWidth:j.getContainerWidth(),columns:X.columns,gap:X.gap};if(typeof b==="function")j.setHeightConfig((G)=>{let T=N.containerWidth-2,U=(N.columns-1)*N.gap,C=(T-U)/N.columns,W={containerWidth:N.containerWidth,columns:N.columns,gap:N.gap,columnWidth:C,row:X.getRow(G),column:X.getCol(G),totalRows:X.getTotalRows(j.dataManager.getTotal()),totalColumns:N.columns};return b(G,W)+N.gap});else if(A>0)j.setHeightConfig(b+A);j.rebuildHeightCache(),Y.root.classList.add(`${M}--grid`);let D=j.getContainerWidth(),E=Z.item.template,F=()=>{Q=jJ(Y.items,E,j.heightCache,X,M,D,()=>j.dataManager.getTotal(),q.ariaIdPrefix),j.replaceRenderer(Q)};F(),j.methods.set("_getGridLayout",()=>X),j.methods.set("_getGridConfig",()=>B),j.methods.set("_replaceGridRenderer",(G)=>{Q=G}),j.methods.set("_updateGridLayoutForGroups",(G)=>{X.update({isHeaderFn:G});let T=j.dataManager.getTotal(),U=0;for(let C=0;C<T;C++)if(X.getCol(C)===0){let W=j.heightCache.getHeight(C);U+=W}j.heightCache.getTotalHeight=()=>U,j.dom.content.style.height=`${U}px`,F()}),j.methods.set("updateGrid",(G)=>{if(G.columns!==void 0){if(!Number.isInteger(G.columns)||G.columns<1)throw Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");B.columns=G.columns}if(G.gap!==void 0){if(G.gap<0)throw Error("[vlist/builder] updateGrid: gap must be non-negative");B.gap=G.gap}if(X)X.update(B);let T=j.getContainerWidth();if(N.containerWidth=T,N.columns=B.columns,N.gap=B.gap??0,Q)Q.updateContainerWidth(T);j.rebuildHeightCache(),j.updateContentSize(j.heightCache.getTotalHeight()),j.updateCompressionMode();for(let U=0;U<j.contentSizeHandlers.length;U++)j.contentSizeHandlers[U]();if(Q)Q.clear();j.forceRender()});let O=()=>{if(j.state.isDestroyed)return;let G=j.scrollController.getScrollTop(),T=j.state.viewportState.containerHeight,U=j.getVirtualTotal(),C={start:0,end:0};if(U===0||T===0)C.start=0,C.end=0;else{C.start=Math.max(0,j.heightCache.indexAtOffset(G));let R=j.heightCache.indexAtOffset(G+T);if(R<U-1)R++;C.end=Math.min(U-1,Math.max(0,R))}let W=q.overscan??3,y={start:Math.max(0,C.start-W),end:Math.min(U-1,C.end+W)};j.state.viewportState.scrollTop=G,j.state.viewportState.visibleRange=C,j.state.viewportState.renderRange=y;let x=j.state.lastRenderRange,o=j.state.viewportState.isCompressed;if(y.start===x.start&&y.end===x.end){if(o)Q.updatePositions(j.getCompressionContext());return}let d=j.dataManager.getTotal(),e=X.getItemRange(y.start,y.end,d),i=j.dataManager.getItemsInRange(e.start,e.end),H=o?j.getCompressionContext():void 0;Q.render(i,e,new Set,-1,H),j.state.lastRenderRange={...y},$.emit("range:change",{range:y})},k=()=>{if(j.state.isDestroyed)return;j.state.lastRenderRange={start:-1,end:-1},O()};if(j.setRenderFns(O,k),j.resizeHandlers.push((G,T)=>{if(Q)Q.updateContainerWidth(G)}),j.methods.set("scrollToIndex",(G,T)=>{let U=Math.floor(G/J.columns),{align:C,behavior:W}=m2(T),y=j.dataManager.getState(),x=X.getTotalRows(y.total),o=Math.max(0,Math.min(U,x-1)),d=Oj(o,j.heightCache,j.state.viewportState.containerHeight,x,C,j.getCachedCompression());if(W==="smooth")j.scrollController.scrollTo(d);else j.scrollController.scrollTo(d)}),!j.methods.has("_getTotal"))j.methods.set("_getTotal",()=>j.dataManager.getTotal());j.destroyHandlers.push(()=>{if(Q)Q.destroy(),Q=null;Y.root.classList.remove(`${M}--grid`)})},destroy(){if(Q)Q.destroy(),Q=null}}},QJ=300,m2=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:QJ};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??QJ};return{align:"start",behavior:"auto",duration:QJ}};var XJ=(J,X)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].headerLayoutIndex<=X)Q=Y;else j=Y-1}return Q},RJ=(J,X)=>{let Q=0,j=J.length-1;while(Q<j){let Y=Q+j+1>>>1;if(J[Y].firstDataIndex<=X)Q=Y;else j=Y-1}return Q},vJ=(J,X)=>{if(J===0)return[];let Q=[],j=X(0),Y=0,$=0;for(let q=1;q<J;q++){let Z=X(q);if(Z!==j){let M=q-Y;Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:$,firstDataIndex:Y,count:M}),$=$+1+M,j=Z,Y=q}}return Q.push({key:j,groupIndex:Q.length,headerLayoutIndex:$,firstDataIndex:Y,count:J-Y}),Q},qJ=(J,X)=>{if(J.length===0||X.length===0)return[];let Q=J.length+X.length,j=Array(Q),Y=0;for(let $ of X){j[Y]={id:`__group_header_${$.groupIndex}`,__groupHeader:!0,groupKey:$.key,groupIndex:$.groupIndex},Y++;for(let q=0;q<$.count;q++)j[Y]=J[$.firstDataIndex+q],Y++}return j},KJ=(J,X)=>{let Q=typeof X==="number"?(j)=>X:X;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header")return J.getHeaderHeight(Y.group.groupIndex);return Q(Y.dataIndex)}},CJ=(J,X)=>{let Q=vJ(J,X.getGroupForIndex),j=J+Q.length,Y=X.headerHeight;return{get totalEntries(){return j},get groupCount(){return Q.length},get groups(){return Q},getEntry:(L)=>{if(Q.length===0)return{type:"item",dataIndex:L,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let b=XJ(Q,L),N=Q[b];if(L===N.headerLayoutIndex)return{type:"header",group:N};let D=L-N.headerLayoutIndex-1;return{type:"item",dataIndex:N.firstDataIndex+D,group:N}},layoutToDataIndex:(L)=>{if(Q.length===0)return L;let b=XJ(Q,L),N=Q[b];if(L===N.headerLayoutIndex)return-1;let D=L-N.headerLayoutIndex-1;return N.firstDataIndex+D},dataToLayoutIndex:(L)=>{if(Q.length===0)return L;let b=RJ(Q,L),N=Q[b],D=L-N.firstDataIndex;return N.headerLayoutIndex+1+D},getGroupAtLayoutIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=XJ(Q,L);return Q[b]},getGroupAtDataIndex:(L)=>{if(Q.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=RJ(Q,L);return Q[b]},getHeaderHeight:typeof Y==="number"?(L)=>Y:(L)=>{let b=Q[L];if(!b)return 0;return Y(b.key,L)},rebuild:(L)=>{Q=vJ(L,X.getGroupForIndex),j=L+Q.length}}};var SJ=(J,X,Q,j,Y)=>{let $=document.createElement("div");$.className=`${Y}-sticky-header`,$.setAttribute("role","presentation"),$.setAttribute("aria-hidden","true"),$.style.position="absolute",$.style.top="0",$.style.left="0",$.style.right="0",$.style.zIndex="5",$.style.pointerEvents="none",$.style.willChange="transform",$.style.overflow="hidden",J.insertBefore($,J.firstChild);let q=-1,Z=!1,M=0,_=(D)=>{if(D===q)return;q=D;let E=X.groups;if(D<0||D>=E.length){$.textContent="";return}let F=E[D],O=j.headerTemplate(F.key,F.groupIndex),k=X.getHeaderHeight(D);if($.style.height=`${k}px`,typeof O==="string")$.innerHTML=O;else $.replaceChildren(O)},B=(D)=>{let E=X.groups;if(E.length===0){L();return}let F=0;for(let U=E.length-1;U>=0;U--)if(Q.getOffset(E[U].headerLayoutIndex)<=D){F=U;break}let O=Q.getOffset(E[0].headerLayoutIndex);if(D<O){L();return}if(!Z)A();_(F);let k=X.getHeaderHeight(F),G=0,T=F+1;if(T<E.length){let C=Q.getOffset(E[T].headerLayoutIndex)-D;if(C<k)G=C-k}if(G!==M)M=G,$.style.transform=G===0?"":`translateY(${Math.round(G)}px)`},A=()=>{if(Z)return;Z=!0,$.style.display=""},L=()=>{if(!Z)return;Z=!1,$.style.display="none",q=-1,M=0,$.style.transform=""},b=()=>{let D=q;if(q=-1,D>=0)_(D)},N=()=>{$.remove(),q=-1,Z=!1};return $.style.display="none",{update:B,refresh:b,show:A,hide:L,destroy:N}};var fJ=(J)=>{if(!J.getGroupForIndex)throw Error("[vlist/builder] withGroups: getGroupForIndex is required");if(J.headerHeight==null||J.headerHeight<=0)throw Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!J.headerTemplate)throw Error("[vlist/builder] withGroups: headerTemplate is required");let X=null,Q=null,j=[],Y=[];return{name:"withSections",priority:10,setup($){let{dom:q,config:Z,rawConfig:M}=$,{classPrefix:_}=Z;if(Z.horizontal)throw Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");let A=M.item.height;j=M.items?[...M.items]:[];let L=j.length,b={getGroupForIndex:J.getGroupForIndex,headerHeight:J.headerHeight,headerTemplate:J.headerTemplate,sticky:J.sticky??!1};X=CJ(L,b),Y=qJ(j,X.groups);let N=KJ(X,A);$.setHeightConfig(N),$.rebuildHeightCache(Y.length),$.dataManager.setItems(Y,0,Y.length);let D=M.item.template,{headerTemplate:E}=J,F=(W,y,x)=>{if(wj(W))return E(W.groupKey,W.groupIndex);return D(W,y,x)},O=$.methods.get("_getGridLayout"),k=$.methods.get("_replaceGridRenderer"),G=$.methods.get("_updateGridLayoutForGroups");if(O&&k){if(G)G((o)=>{let d=Y[o];return!!(d&&wj(d))});let{createGridRenderer:W}=(JJ(),P2(kJ)),y=O(),x=W(q.items,F,$.heightCache,y,_,$.getContainerWidth(),()=>$.dataManager.getTotal(),Z.ariaIdPrefix);k(x)}else $.replaceTemplate(F);if(q.root.classList.add(`${_}--grouped`),J.sticky!==!1){Q=SJ(q.root,X,$.heightCache,{...b,sticky:b.sticky??!1},_);let W=Q;$.afterScroll.push((y,x)=>{W.update(y)}),Q.update($.scrollController.getScrollTop())}let T=()=>{if(!X)return;X.rebuild(j.length),Y=qJ(j,X.groups);let W=KJ(X,A);if($.setHeightConfig(W),$.rebuildHeightCache(Y.length),$.dataManager.setItems(Y,0,Y.length),Q)Q.refresh()};$.methods.set("setItems",(W)=>{j=[...W],T()}),$.methods.set("appendItems",(W)=>{j=[...j,...W],T()}),$.methods.set("prependItems",(W)=>{j=[...W,...j],T()}),$.methods.set("removeItem",(W)=>{j=j.filter((y)=>y.id!==W),T()});let{animateScroll:U,cancelScroll:C}=d2($.scrollController,$.renderIfNeeded);$.methods.set("scrollToIndex",(W,y)=>{let x=X.dataToLayoutIndex(W),{align:o,behavior:d,duration:e}=l2(y),i=$.dataManager.getTotal(),H=Oj(x,$.heightCache,$.state.viewportState.containerHeight,i,o,$.getCachedCompression());if(d==="smooth")U($.scrollController.getScrollTop(),H,e);else C(),$.scrollController.scrollTo(H)}),$.methods.set("_getItems",()=>j),$.methods.set("_getTotal",()=>j.length),$.destroyHandlers.push(()=>{if(Ej!==null)cancelAnimationFrame(Ej),Ej=null;if(Q)Q.destroy(),Q=null;q.root.classList.remove(`${_}--grouped`)})},destroy(){if(Q)Q.destroy(),Q=null}}},YJ=300,g2=(J)=>J<0.5?2*J*J:-1+(4-2*J)*J,Ej=null,d2=(J,X)=>{let Q=()=>{if(Ej!==null)cancelAnimationFrame(Ej),Ej=null};return{animateScroll:(Y,$,q)=>{if(Q(),Math.abs($-Y)<1){J.scrollTo($);return}let Z=performance.now(),M=(_)=>{let B=_-Z,A=Math.min(B/q,1),L=Y+($-Y)*g2(A);if(J.scrollTo(L),X(),A<1)Ej=requestAnimationFrame(M);else Ej=null};Ej=requestAnimationFrame(M)},cancelScroll:Q}},l2=(J)=>{if(typeof J==="string")return{align:J,behavior:"auto",duration:YJ};if(J&&typeof J==="object")return{align:J.align??"start",behavior:J.behavior??"auto",duration:J.duration??YJ};return{align:"start",behavior:"auto",duration:YJ}};var IJ=(J)=>({selected:new Set(J??[]),focusedIndex:-1}),ZJ=(J,X,Q)=>{if(Q==="none")return J;let j=new Set(J.selected);if(Q==="single"){if(j.clear(),X.length>0)j.add(X[0])}else for(let Y of X)j.add(Y);return{...J,selected:j}},BJ=(J,X)=>{let Q=new Set(J.selected);for(let j of X)Q.delete(j);return{...J,selected:Q}},pj=(J,X,Q)=>{if(Q==="none")return J;if(J.selected.has(X))return BJ(J,[X]);else return ZJ(J,[X],Q)},pJ=(J,X,Q)=>{if(Q!=="multiple")return J;return{...J,selected:new Set(X.map((j)=>j.id))}},uJ=(J)=>({...J,selected:new Set}),hJ=(J,X)=>{return J.focusedIndex=X,J},xJ=(J,X,Q=!0)=>{if(X===0)return J;let j=J.focusedIndex-1;if(j<0)j=Q?X-1:0;return J.focusedIndex=j,J},mJ=(J,X,Q=!0)=>{if(X===0)return J;let j=J.focusedIndex+1;if(j>=X)j=Q?0:X-1;return J.focusedIndex=j,J},gJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=0,J},dJ=(J,X)=>{if(X===0)return J;return J.focusedIndex=X-1,J};var uj=(J)=>{return Array.from(J.selected)},hj=(J,X)=>{let Q=[];for(let j of J.selected){let Y=X(j);if(Y)Q.push(Y)}return Q};var UJ=(J)=>{let X=J?.mode??"single",Q=J?.initial,j=IJ(Q),Y=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup($){let{dom:q,emitter:Z,config:M}=$,{classPrefix:_,ariaIdPrefix:B}=M;if(X==="none"){$.methods.set("select",()=>{}),$.methods.set("deselect",()=>{}),$.methods.set("toggleSelect",()=>{}),$.methods.set("selectAll",()=>{}),$.methods.set("clearSelection",()=>{}),$.methods.set("getSelected",()=>[]),$.methods.set("getSelectedItems",()=>[]),$.methods.set("setSelectionMode",()=>{});return}let{renderIfNeeded:A,forceRender:L}=$.getRenderFns(),b=()=>{$.dom.items.querySelectorAll("[data-index]").forEach((k)=>{let G=k,T=G.dataset.id;if(T!==void 0){let U=/^\d+$/.test(T)?parseInt(T,10):T,C=j.selected.has(U),y=parseInt(G.dataset.index??"-1",10)===j.focusedIndex;G.classList.toggle(`${_}-item--selected`,C),G.classList.toggle(`${_}-item--focused`,y),G.ariaSelected=C?"true":"false"}})},N=()=>{if($.state.isDestroyed)return;A(),b()},D=()=>{if($.state.isDestroyed)return;L(),b()};$.setRenderFns(N,D);let E=()=>{b(),Z.emit("selection:change",{selected:uj(j),items:hj(j,(O)=>$.dataManager.getItemById(O))})};Y=document.createElement("div"),Y.setAttribute("aria-live","polite"),Y.setAttribute("aria-atomic","true"),Y.className=`${_}-live-region`,Y.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",q.root.appendChild(Y);let F=Y;Z.on("selection:change",({selected:O})=>{let k=O.length;if(k===0)F.textContent="";else if(k===1)F.textContent="1 item selected";else F.textContent=`${k} items selected`}),$.clickHandlers.push((O)=>{if($.state.isDestroyed)return;let G=O.target.closest("[data-index]");if(!G)return;let T=parseInt(G.dataset.index??"-1",10);if(T<0)return;let U=$.dataManager.getItem(T);if(!U)return;Z.emit("item:click",{item:U,index:T,event:O}),j=hJ(j,T),q.root.setAttribute("aria-activedescendant",`${B}-item-${T}`),j=pj(j,U.id,X),E()}),$.keydownHandlers.push((O)=>{if($.state.isDestroyed)return;let k=$.dataManager.getTotal(),G=j.focusedIndex,T=!1,U=!1,C=j;switch(O.key){case"ArrowUp":C=xJ(j,k),T=!0,U=!0;break;case"ArrowDown":C=mJ(j,k),T=!0,U=!0;break;case"Home":C=gJ(j,k),T=!0,U=!0;break;case"End":C=dJ(j,k),T=!0,U=!0;break;case" ":case"Enter":if(j.focusedIndex>=0){let W=$.dataManager.getItem(j.focusedIndex);if(W)C=pj(j,W.id,X);T=!0}break}if(T){O.preventDefault(),j=C;let W=j.focusedIndex;if(W>=0){let y=$.dataManager.getState(),x=Oj(W,$.heightCache,$.state.viewportState.containerHeight,y.total,"center",$.getCachedCompression());$.scrollController.scrollTo(x),q.root.setAttribute("aria-activedescendant",`${B}-item-${W}`)}else q.root.removeAttribute("aria-activedescendant");if(U){let{selected:y}=j;if(G>=0&&G!==W){let x=$.dataManager.getItem(G);if(x)$.renderer.updateItemClasses(G,y.has(x.id),!1)}if(W>=0){let x=$.dataManager.getItem(W);if(x)$.renderer.updateItemClasses(W,y.has(x.id),!0)}}else D(),Z.emit("selection:change",{selected:uj(j),items:hj(j,(y)=>$.dataManager.getItemById(y))})}}),$.methods.set("select",(...O)=>{j=ZJ(j,O,X),E()}),$.methods.set("deselect",(...O)=>{j=BJ(j,O),E()}),$.methods.set("toggleSelect",(O)=>{j=pj(j,O,X),E()}),$.methods.set("selectAll",()=>{if(X!=="multiple")return;let O=$.getAllLoadedItems();j=pJ(j,O,X),E()}),$.methods.set("clearSelection",()=>{j=uJ(j);let{renderRange:O,isCompressed:k}=$.state.viewportState,G=$.getItemsForRange(O),T=k?$.getCompressionContext():void 0;$.renderer.render(G,O,j.selected,j.focusedIndex,T),Z.emit("selection:change",{selected:[],items:[]})}),$.methods.set("getSelected",()=>{return uj(j)}),$.methods.set("getSelectedItems",()=>{return hj(j,(O)=>$.dataManager.getItemById(O))}),$.destroyHandlers.push(()=>{if(F&&F.parentNode)F.remove()})},destroy(){if(Y&&Y.parentNode)Y.remove();Y=null}}};var Rj=(J,X,Q={},j="vlist",Y=!1)=>{let{autoHide:$=!0,autoHideDelay:q=1000,minThumbSize:Z=30,showOnHover:M=!0,hoverZoneWidth:_=16,showOnViewportEnter:B=!0}=Q,A=0,L=0,b=0,N=0,D=!1,E=!1,F=0,O=0,k=0,G=null,T=!1,U=null,C=null,W=Y?"width":"height",y=Y?"translateX":"translateY",x=Y?(t)=>t.clientX:(t)=>t.clientY,o=Y?"left":"top",d=document.createElement("div"),e=document.createElement("div"),i=M?document.createElement("div"):null,H=()=>{if(d.className=`${j}-scrollbar`,e.className=`${j}-scrollbar-thumb`,Y)d.classList.add(`${j}-scrollbar--horizontal`);if(d.appendChild(e),J.appendChild(d),i){if(i.className=`${j}-scrollbar-hover`,Y)i.classList.add(`${j}-scrollbar-hover--horizontal`),i.style.height=`${_}px`;else i.style.width=`${_}px`;J.appendChild(i)}},R=()=>{if(G)clearTimeout(G),G=null},I=()=>{if(!$)return;R(),G=setTimeout(z,q)},p=()=>{if(A<=L)return;if(R(),!T)d.classList.add(`${j}-scrollbar--visible`),T=!0;if($&&!D&&!E)I()},z=()=>{if(D||E)return;d.classList.remove(`${j}-scrollbar--visible`),T=!1},w=(t,Jj)=>{A=t,L=Jj;let v=A>L;if(d.style.display=v?"":"none",!v){z();return}let S=L/A;b=Math.max(Z,S*L),e.style[W]=`${b}px`,N=L-b,u(k)},u=(t)=>{if(k=t,A<=L||N<=0)return;let Jj=A-L,S=Math.min(1,Math.max(0,t/Jj))*N;e.style.transform=`${y}(${S}px)`},h=(t)=>{if(t.target===e)return;let Jj=d.getBoundingClientRect(),s=x(t)-Jj[o]-b/2,g=Math.max(0,Math.min(s,N))/N,$j=A-L,qj=g*$j;X(qj),p()},l=(t)=>{t.preventDefault(),t.stopPropagation(),D=!0,F=x(t),O=k,R(),d.classList.add(`${j}-scrollbar--dragging`),document.addEventListener("mousemove",a),document.addEventListener("mouseup",Xj)},a=(t)=>{if(!D)return;let Jj=x(t)-F,v=N>0?Jj/N:0,S=A-L,s=v*S,jj=Math.max(0,Math.min(O+s,S)),$j=jj/S*N;if(e.style.transform=`${y}(${$j}px)`,C=jj,U===null)U=requestAnimationFrame(()=>{if(C!==null)X(C);U=null})},Xj=()=>{if(D=!1,U!==null)cancelAnimationFrame(U),U=null;if(C!==null)X(C),C=null;if(d.classList.remove(`${j}-scrollbar--dragging`),$&&!E)I();document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",Xj)},Bj=()=>{if(B)p()},m=()=>{if(!D){if(E=!1,$)I()}},Yj=()=>{E=!0,R(),p()},n=()=>{if(E=!1,!D&&$)I()},Qj=()=>{if(R(),U!==null)cancelAnimationFrame(U),U=null;if(d.removeEventListener("click",h),d.removeEventListener("mouseenter",Yj),d.removeEventListener("mouseleave",n),e.removeEventListener("mousedown",l),J.removeEventListener("mouseenter",Bj),J.removeEventListener("mouseleave",m),document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",Xj),i){if(i.removeEventListener("mouseenter",Yj),i.removeEventListener("mouseleave",n),i.parentNode)i.parentNode.removeChild(i)}if(d.parentNode)d.parentNode.removeChild(d)};if(H(),d.addEventListener("click",h),d.addEventListener("mouseenter",Yj),d.addEventListener("mouseleave",n),e.addEventListener("mousedown",l),J.addEventListener("mouseenter",Bj),J.addEventListener("mouseleave",m),i)i.addEventListener("mouseenter",Yj),i.addEventListener("mouseleave",n);return{show:p,hide:z,updateBounds:w,updatePosition:u,isVisible:()=>T,destroy:Qj}};var lJ=(J)=>{let X=null;return{name:"withScrollbar",priority:30,setup(Q){let{dom:j,config:Y}=Q,{classPrefix:$,horizontal:q}=Y;if(X=Rj(j.viewport,(_)=>Q.scrollController.scrollTo(_),J??{},$,q),!j.viewport.classList.contains(`${$}-viewport--custom-scrollbar`))j.viewport.classList.add(`${$}-viewport--custom-scrollbar`);let Z=Q.getCachedCompression();X.updateBounds(Z.virtualHeight,Q.state.viewportState.containerHeight);let M=X;Q.afterScroll.push((_,B)=>{M.updatePosition(_),M.show()}),Q.resizeHandlers.push((_,B)=>{if(M){let A=Q.getCachedCompression();M.updateBounds(A.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.contentSizeHandlers.push(()=>{if(M){let _=Q.getCachedCompression();M.updateBounds(_.virtualHeight,Q.state.viewportState.containerHeight)}}),Q.destroyHandlers.push(()=>{if(M)M.destroy()})},destroy(){if(X)X.destroy(),X=null}}};ej();var cJ=()=>{let J=null,X=0,Q=!1;return{name:"withScale",priority:20,setup(j){let{dom:Y,config:$}=j,{classPrefix:q,horizontal:Z}=$,M=()=>{let B=j.getVirtualTotal(),A=Lj(B,j.heightCache);if(A.isCompressed&&!Q){Q=!0,j.scrollController.enableCompression(A),j.updateContentSize(A.virtualHeight),j.setScrollFns(()=>X,(D)=>{X=D});let L=Y.viewport,b=(D)=>{D.preventDefault();let E=A.virtualHeight-j.state.viewportState.containerHeight;X=Math.max(0,Math.min(X+D.deltaY,E)),j.scrollController.scrollTo(X)};if(L.addEventListener("wheel",b,{passive:!1}),j.destroyHandlers.push(()=>{L.removeEventListener("wheel",b)}),!Y.viewport.querySelector(`.${q}-scrollbar-track`)){if(J=Rj(Y.viewport,(E)=>j.scrollController.scrollTo(E),{},q,Z),!Y.viewport.classList.contains(`${q}-viewport--custom-scrollbar`))Y.viewport.classList.add(`${q}-viewport--custom-scrollbar`);J.updateBounds(A.virtualHeight,j.state.viewportState.containerHeight);let D=J;j.afterScroll.push((E,F)=>{if(D)D.updatePosition(E),D.show()}),j.resizeHandlers.push((E,F)=>{if(D){let O=j.getCachedCompression();D.updateBounds(O.virtualHeight,j.state.viewportState.containerHeight)}})}}else if(!A.isCompressed&&Q)Q=!1,j.scrollController.disableCompression(),j.updateContentSize(A.actualHeight);else if(A.isCompressed)j.scrollController.updateConfig({compression:A}),j.updateContentSize(A.virtualHeight);if(J)J.updateBounds(A.virtualHeight,j.state.viewportState.containerHeight);j.state.cachedCompression={state:A,totalItems:B}};j.updateCompressionMode=M;let _=j.getCachedCompression.bind(j);j.getCachedCompression=()=>{if(j.state.cachedCompression)return j.state.cachedCompression.state;return _()},j.setVisibleRangeFn((B,A,L,b,N)=>{let D=Lj(b,L);PJ(B,A,L,b,D,N)}),j.setScrollToPosFn((B,A,L,b,N)=>{let D=Lj(b,A);return bJ(B,A,L,b,D,N)}),j.setPositionElementFn((B,A)=>{let L=j.getVirtualTotal(),b=Lj(L,j.heightCache);if(b.isCompressed){let N=Math.round(Ij(A,j.scrollController.getScrollTop(),j.heightCache,L,j.state.viewportState.containerHeight,b)),D=j.config.horizontal;B.style.transform=D?`translateX(${N}px)`:`translateY(${N}px)`}else{let N=Math.round(j.heightCache.getOffset(A)),D=j.config.horizontal;B.style.transform=D?`translateX(${N}px)`:`translateY(${N}px)`}}),M(),j.destroyHandlers.push(()=>{if(J)J.destroy(),J=null})},destroy(){if(J)J.destroy(),J=null}}};var sJ=()=>{return{name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(J){J.methods.set("getScrollSnapshot",()=>{let X=J.scrollController.getScrollTop(),Q=J.getCachedCompression(),j=J.getVirtualTotal(),Y=J.methods.get("getSelected"),$=Y&&Y().length>0?Y():void 0;if(j===0){let _={index:0,offsetInItem:0};if($)_.selectedIds=$;return _}let q,Z;if(Q.isCompressed){let B=X/Q.virtualHeight*j;q=Math.max(0,Math.min(Math.floor(B),j-1)),Z=(B-q)*J.heightCache.getHeight(q)}else q=J.heightCache.indexAtOffset(X),Z=X-J.heightCache.getOffset(q);Z=Math.max(0,Z);let M={index:q,offsetInItem:Z};if($)M.selectedIds=$;return M}),J.methods.set("restoreScroll",(X)=>{let{index:Q,offsetInItem:j,selectedIds:Y}=X,$=J.getCachedCompression(),q=J.getVirtualTotal();if(q===0)return;let Z=Math.max(0,Math.min(Q,q-1)),M;if($.isCompressed){let B=J.heightCache.getHeight(Z),A=B>0?j/B:0;M=(Z+A)/q*$.virtualHeight}else M=J.heightCache.getOffset(Z)+j;let _=Math.max(0,$.virtualHeight-J.state.viewportState.containerHeight);if(M=Math.max(0,Math.min(M,_)),J.scrollController.scrollTo(M),Y&&Y.length>0){let B=J.methods.get("select");if(B)B(...Y)}})}}};var rJ=(J={})=>{let{chunkSize:X=100,maxCachedItems:Q=5000,evictionBuffer:j=200,onEvict:Y}=J,$=new Map,q=0,Z=0,M=(H)=>{let R=$.get(H);if(!R)R={items:Array(X),count:0,lastAccess:Date.now()},$.set(H,R);else R.lastAccess=Date.now();return R},_=(H)=>{return Math.floor(H/X)},B=(H)=>{return H%X},A=()=>q,L=(H)=>{q=H},b=(H)=>{if(H<0||H>=q)return;let R=_(H),I=$.get(R);if(!I)return;return I.items[B(H)]},N=(H)=>{if(H<0||H>=q)return!1;let R=_(H),I=$.get(R);if(!I)return!1;return I.items[B(H)]!==void 0},D=(H,R)=>{let I=_(H),p=M(I),z=B(H),w=p.items[z]===void 0;if(p.items[z]=R,w)p.count++,Z++;if(H>=q)q=H+1},E=(H,R)=>{for(let I=0;I<R.length;I++){let p=R[I];if(p!==void 0)D(H+I,p)}},F=(H)=>{if(H<0||H>=q)return!1;let R=_(H),I=$.get(R);if(!I)return!1;let p=B(H);if(I.items[p]===void 0)return!1;if(I.items[p]=void 0,I.count--,Z--,I.count===0)$.delete(R);return!0},O=(H,R)=>{let I=[];for(let p=H;p<=R&&p<q;p++)I.push(b(p));return I},k=(H,R)=>{for(let I=H;I<=R&&I<q;I++)if(!N(I))return!1;return!0},G=()=>{let H=[],R=null,I=Array.from($.keys()).sort((p,z)=>p-z);for(let p of I){let z=$.get(p);if(!z)continue;let w=p*X;for(let u=0;u<X;u++){let h=w+u;if(h>=q)break;if(z.items[u]!==void 0)if(R===null)R={start:h,end:h};else if(h===R.end+1)R.end=h;else H.push(R),R={start:h,end:h};else if(R!==null)H.push(R),R=null}}if(R!==null)H.push(R);return H},T=(H,R)=>{let I=[],p=null;for(let z=H;z<=R&&z<q;z++)if(!N(z))if(p===null)p={start:z,end:z};else p.end=z;else if(p!==null)I.push(p),p=null;if(p!==null)I.push(p);return I},U=(H)=>{return $.has(H)},C=(H)=>{let R=$.get(H);if(R)R.lastAccess=Date.now()},W=(H,R)=>{if(H>R||$.size===0)return;let I=Date.now(),p=_(Math.max(0,H)),z=_(Math.min(q-1,R));for(let w=p;w<=z;w++){let u=$.get(w);if(u)u.lastAccess=I}},y=(H,R)=>{if(Z<=Q)return 0;let I=Math.max(0,H-j),p=Math.min(q-1,R+j),z=_(I),w=_(p),u=0,h=[];for(let[l,a]of $)if(l<z||l>w)u+=a.count,h.push(l),Z-=a.count,$.delete(l);if(u>0&&Y)Y(u,h);return u},x=()=>{if(Z<=Q)return 0;let H=Array.from($.entries()).sort(([,p],[,z])=>p.lastAccess-z.lastAccess),R=0,I=[];for(let[p,z]of H){if(Z<=Q)break;R+=z.count,Z-=z.count,I.push(p),$.delete(p)}if(R>0&&Y)Y(R,I);return R},o=()=>{return{totalItems:q,cachedItems:Z,cachedChunks:$.size,chunkSize:X,maxCachedItems:Q,memoryEfficiency:q>0?1-Z/q:1}},d=()=>Z,e=()=>{$.clear(),Z=0};return{chunkSize:X,maxCachedItems:Q,getTotal:A,setTotal:L,get:b,has:N,set:D,setRange:E,delete:F,getRange:O,isRangeLoaded:k,getLoadedRanges:G,findUnloadedRanges:T,getChunkIndex:_,isChunkLoaded:U,touchChunk:C,touchChunksForRange:W,evictDistant:y,evictToLimit:x,getStats:o,getCachedCount:d,clear:e,reset:()=>{e(),q=0}}},c2=(J)=>{if(J.length===0)return[];let X=[...J].sort((j,Y)=>j.start-Y.start),Q=[{...X[0]}];for(let j=1;j<X.length;j++){let Y=X[j],$=Q[Q.length-1];if(Y.start<=$.end+1)$.end=Math.max($.end,Y.end);else Q.push({...Y})}return Q},aJ=(J,X,Q)=>{let j=Math.floor(J.start/Q)*Q,Y=Math.ceil((J.end+1)/Q)*Q-1,$={start:j,end:Y};if(X.length===0)return[$];let q=[],Z=c2(X),M=$.start;for(let _ of Z){if(_.end<M)continue;if(_.start>$.end)break;if(_.start>M)q.push({start:M,end:Math.min(_.start-1,$.end)});if(M=_.end+1,M>$.end)break}if(M<=$.end)q.push({start:M,end:$.end});return q};var oJ=(J={})=>{let{enabled:X=!0,maskCharacter:Q="█",randomVariance:j=!0,maxSampleSize:Y=20,customGenerator:$}=J,q=null,Z=!1,M=0,_=(F)=>{if(!X||Z||F.length===0)return;let O=new Map,k=new Map,G=Math.min(F.length,Y);for(let T=0;T<G;T++){let U=F[T];if(!U||typeof U!=="object")continue;for(let[C,W]of Object.entries(U)){if(C.startsWith("_")||C==="id")continue;if(!k.has(C))k.set(C,{lengths:[],types:new Set});let y=k.get(C),x=Array.isArray(W)?"array":typeof W;if(y.types.add(x),typeof W==="string")y.lengths.push(W.length);else if(W!==null&&W!==void 0)y.lengths.push(String(W).length)}}for(let[T,U]of k){if(U.lengths.length===0)continue;let C=Math.min(...U.lengths),W=Math.max(...U.lengths),y=Math.round(U.lengths.reduce((o,d)=>o+d,0)/U.lengths.length),x="string";if(U.types.has("number")&&U.types.size===1)x="number";else if(U.types.has("boolean")&&U.types.size===1)x="boolean";else if(U.types.has("array"))x="array";else if(U.types.has("object")&&!U.types.has("string"))x="object";O.set(T,{minLength:C,maxLength:W,avgLength:y,type:x})}q=O,Z=!0},B=()=>Z,A=(F)=>{let O=F.avgLength;if(j&&F.minLength!==F.maxLength){if(O=Math.floor(Math.random()*(F.maxLength-F.minLength+1)+F.minLength),Math.random()<0.3)O=Math.max(1,O+Math.floor(Math.random()*3)-1)}return Q.repeat(Math.max(1,O))},L=(F)=>{if($)return{...$(F),["_isPlaceholder"]:!0};let O={id:`__placeholder_${M++}`,["_isPlaceholder"]:!0,_index:F};if(!q||q.size===0)return O.label=Q.repeat(12),O;for(let[k,G]of q)switch(G.type){case"string":O[k]=A(G);break;case"number":O[k]=0;break;case"boolean":O[k]=!1;break;case"array":O[k]=[];break;case"object":O[k]={};break;default:O[k]=A(G)}return O};return{analyzeStructure:_,hasAnalyzedStructure:B,generate:L,generateRange:(F,O)=>{let k=[];for(let G=F;G<=O;G++)k.push(L(G));return k},isPlaceholder:(F)=>{if(!F||typeof F!=="object")return!1;return F._isPlaceholder===!0},getPlaceholderKey:()=>"_isPlaceholder",clear:()=>{q=null,Z=!1,M=0}}},xj=(J)=>{if(!J||typeof J!=="object")return!1;return J._isPlaceholder===!0};var s2=50,nJ=(J={})=>{let{adapter:X,initialItems:Q,initialTotal:j,storage:Y,placeholder:$,pageSize:q=s2,onStateChange:Z,onItemsLoaded:M,onItemsEvicted:_}=J,B=rJ({...Y,onEvict:(v,S)=>{_?.(v),G()}}),A=null,L=()=>{if(!A)A=oJ($);return A},b=new Map,N=!1,D,E=!0,F,O=[],k=new Map,G=()=>{Z?.(e())},T=()=>{b.clear();let v=B.getLoadedRanges();for(let S of v)for(let s=S.start;s<=S.end;s++){let jj=B.get(s);if(jj&&!xj(jj))b.set(jj.id,s)}},U=(v,S)=>{if(!xj(S))b.set(S.id,v)},C=(v)=>{b.delete(v)},W=(v,S)=>{return`${v}-${S}`},y=()=>B.getTotal(),x=()=>B.getCachedCount(),o=()=>N,d=()=>E,e=()=>({total:B.getTotal(),cached:B.getCachedCount(),isLoading:N,pendingRanges:O,error:D,hasMore:E,cursor:F}),i=()=>B,H=()=>L(),R=(v)=>{let S=B.get(v);if(S!==void 0)return S;if(v>=0&&v<B.getTotal())return L().generate(v);return},I=(v)=>{let S=b.get(v);if(S===void 0)return;return B.get(S)},p=(v)=>{return b.get(v)??-1},z=(v)=>{let S=B.get(v);return S!==void 0&&!xj(S)},w=(v,S)=>{let s=[],jj=B.getTotal(),g=0,$j=0;B.touchChunksForRange(v,Math.min(S,jj-1));for(let qj=v;qj<=S&&qj<jj;qj++){let Mj=B.get(qj);if(Mj!==void 0)s.push(Mj),g++;else s.push(L().generate(qj)),$j++}return s},u=(v)=>{B.setTotal(v),E=B.getCachedCount()<v,G()},h=(v,S=0,s)=>{if(A&&!A.hasAnalyzedStructure()&&v.length>0)A.analyzeStructure(v);for(let jj=0;jj<v.length;jj++){let g=v[jj];if(g!==void 0){let $j=S+jj;B.set($j,g),U($j,g)}}if(s!==void 0)B.setTotal(s);else if(S+v.length>B.getTotal())B.setTotal(S+v.length);E=B.getCachedCount()<B.getTotal(),M?.(v,S,B.getTotal()),G()},l=(v,S)=>{let s=b.get(v);if(s===void 0)return!1;let jj=B.get(s);if(!jj)return!1;let g={...jj,...S};if(B.set(s,g),S.id!==void 0&&S.id!==v)C(v),U(s,g);return G(),!0},a=(v)=>{let S=b.get(v);if(S===void 0)return!1;B.delete(S),C(v);let s=B.getTotal();if(s>0)B.setTotal(s-1);return G(),!0},Xj=async(v,S)=>{if(!X)return;let s=W(v,S);if(k.has(s))return;let jj=B.getLoadedRanges(),g=aJ({start:v,end:S},jj,B.chunkSize);if(g.length===0)return;let $j=B.chunkSize,qj=[];for(let Uj of g){let Kj=Math.floor(Uj.start/$j),_j=Math.floor(Uj.end/$j);for(let Zj=Kj;Zj<=_j;Zj++){let Gj=Zj*$j,Wj=Gj+$j-1,bj=W(Gj,Wj);if(!qj.some((Fj)=>Fj.start===Gj)&&!k.has(bj))qj.push({start:Gj,end:Wj})}}let Mj=[];for(let Uj of g){let Kj=Math.floor(Uj.start/$j),_j=Math.floor(Uj.end/$j);for(let Zj=Kj;Zj<=_j;Zj++){let Gj=Zj*$j,Wj=Gj+$j-1,bj=W(Gj,Wj);if(k.has(bj)){let Fj=k.get(bj);if(!Mj.includes(Fj))Mj.push(Fj)}}}for(let Uj of qj){let Kj=W(Uj.start,Uj.end),_j=(async()=>{O.push(Uj),N=!0,D=void 0,G();try{let Zj=Uj.end-Uj.start+1,Gj={offset:Uj.start,limit:Zj,cursor:void 0},Wj=await X.read(Gj);if(h(Wj.items,Uj.start,Wj.total),Wj.cursor)F=Wj.cursor;if(Wj.hasMore!==void 0)E=Wj.hasMore;else if(Wj.total!==void 0)E=B.getCachedCount()<Wj.total}catch(Zj){D=Zj instanceof Error?Zj:Error(String(Zj))}finally{k.delete(Kj),O=O.filter((Zj)=>Zj.start!==Uj.start||Zj.end!==Uj.end),N=k.size>0,G()}})();k.set(Kj,_j),Mj.push(_j)}await Promise.all(Mj)},Bj=async(v,S)=>{if(B.isRangeLoaded(v,S))return;await Xj(v,S)},m=async()=>{if(!X)return;await Xj(0,q-1)},Yj=async()=>{if(!X||N||!E)return!1;let v=B.getCachedCount(),S=B.getTotal(),s=v,jj=Math.min(s+q-1,S>0?S-1:s+q-1);if(s>=S&&S>0)return E=!1,!1;return await Xj(s,jj),B.getCachedCount()>v},n=async()=>{if(B.clear(),b.clear(),A)A.clear();F=void 0,E=!0,D=void 0,G(),await m()},Qj=(v,S)=>{if(B.evictDistant(v,S)>0)T()},t=()=>{B.clear(),b.clear(),F=void 0,D=void 0,O=[],N=!1,G()},Jj=()=>{if(B.reset(),b.clear(),A)A.clear();F=void 0,E=!0,D=void 0,O=[],N=!1,G()};if(Q&&Q.length>0)h(Q,0,j??Q.length);else if(j!==void 0)B.setTotal(j);return{getState:e,getTotal:y,getCached:x,getIsLoading:o,getHasMore:d,getStorage:i,getPlaceholders:H,getItem:R,getItemById:I,getIndexById:p,isItemLoaded:z,getItemsInRange:w,setTotal:u,setItems:h,updateItem:l,removeItem:a,loadRange:Xj,ensureRange:Bj,loadInitial:m,loadMore:Yj,reload:n,evictDistant:Qj,clear:t,reset:Jj}};var iJ=(J)=>{let{adapter:X,loading:Q}=J,j=Q?.cancelThreshold??FJ,Y=Q?.preloadThreshold??LJ,$=Q?.preloadAhead??OJ;return{name:"withAsync",priority:20,methods:["reload"],setup(q){let{emitter:Z}=q,M=q.config.reverse,_=q.config.overscan,B=nJ({adapter:X,pageSize:Tj,onStateChange:()=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.updateCompressionMode(),q.state.viewportState=$J(q.state.viewportState,q.heightCache,q.getVirtualTotal(),_,q.getCachedCompression()),q.updateContentSize(q.state.viewportState.totalHeight),q.renderIfNeeded()},onItemsLoaded:(F,O,k)=>{if(q.state.isInitialized)q.heightCache.rebuild(q.getVirtualTotal()),q.forceRender(),Z.emit("load:end",{items:F,total:k})}});q.replaceDataManager(B);let A=null,L=null,b=0,N=()=>{if(L){let F=L;L=null,q.dataManager.ensureRange(F.start,F.end).catch((O)=>{Z.emit("error",{error:O,context:"ensureRange"})})}};q.afterScroll.push((F,O)=>{if(q.state.isDestroyed)return;let k=q.scrollController.getVelocity(),T=q.scrollController.isTracking()&&k<=j;if(L&&b>j&&k<=j){let W=L;L=null,q.dataManager.ensureRange(W.start,W.end).catch((y)=>{Z.emit("error",{error:y,context:"ensureRange"})})}if(b=k,T&&!q.dataManager.getIsLoading()&&q.dataManager.getHasMore()){if(M){if(F<oj)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:Tj}),q.dataManager.loadMore().catch((W)=>{Z.emit("error",{error:W,context:"loadMore"})})}else if(q.state.viewportState.totalHeight-F-q.state.viewportState.containerHeight<oj)Z.emit("load:start",{offset:q.dataManager.getCached(),limit:Tj}),q.dataManager.loadMore().catch((y)=>{Z.emit("error",{error:y,context:"loadMore"})})}let{renderRange:U}=q.state.viewportState;if(!A||U.start!==A.start||U.end!==A.end)if(A={start:U.start,end:U.end},T){L=null;let{start:W,end:y}=U,x=q.getVirtualTotal();if(k>Y)if(O==="down")y=Math.min(U.end+$,x-1);else W=Math.max(U.start-$,0);q.dataManager.ensureRange(W,y).catch((o)=>{Z.emit("error",{error:o,context:"ensureRange"})})}else L={start:U.start,end:U.end}});let D=200,E=null;q.afterScroll.push((F,O)=>{if(E!==null)clearTimeout(E);E=setTimeout(()=>{E=null,N()},D)}),q.destroyHandlers.push(()=>{if(E!==null)clearTimeout(E),E=null}),Z.on("load:start",()=>{q.dom.root.setAttribute("aria-busy","true")}),Z.on("load:end",()=>{q.dom.root.removeAttribute("aria-busy")}),q.methods.set("reload",async()=>{await q.dataManager.reload()}),Z.emit("load:start",{offset:0,limit:Tj}),q.dataManager.loadInitial().catch((F)=>{Z.emit("error",{error:F,context:"loadInitial"})})}}};var tJ=()=>{let J=null;return{name:"withPage",priority:5,setup(X){let{dom:Q,state:j,config:Y,emitter:$}=X;Q.root.style.overflow="visible",Q.root.style.height="auto",Q.viewport.classList.remove(`${Y.classPrefix}-viewport--custom-scrollbar`),X.disableViewportResize(),X.setScrollTarget(window),X.setScrollFns(()=>{let _=Q.viewport.getBoundingClientRect();if(Y.horizontal)return Math.max(0,-_.left);else return Math.max(0,-_.top)},(_)=>{let B=Q.viewport.getBoundingClientRect();if(Y.horizontal){let A=B.left+window.scrollX;window.scrollTo(A+_,window.scrollY)}else{let A=B.top+window.scrollY;window.scrollTo(window.scrollX,A+_)}}),X.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),j.viewportState.containerHeight=window.innerHeight;let{innerHeight:q,innerWidth:Z}=window,M=()=>{let{innerWidth:_,innerHeight:B}=window,A=Y.horizontal?_:B,L=Y.horizontal?Z:q;if(Math.abs(A-L)<=1)return;q=B,Z=_,j.viewportState.containerHeight=B,$.emit("resize",{width:_,height:B});for(let b=0;b<X.resizeHandlers.length;b++)X.resizeHandlers[b](_,B);X.renderIfNeeded()};window.addEventListener("resize",M,{passive:!0}),J=()=>{window.removeEventListener("resize",M)},X.destroyHandlers.push(J)},destroy(){if(J)J(),J=null}}};var eJ=(J)=>{let X=aj(J);if(J.scroll?.element===window)X=X.use(tJ());if(J.adapter)X=X.use(iJ({adapter:J.adapter,...J.loading&&{loading:J.loading}}));if(J.layout==="grid"){if(!J.grid)throw Error("[vlist/builder] grid configuration is required when layout is 'grid'");if(!J.grid.columns||J.grid.columns<1)throw Error("[vlist/builder] grid.columns must be a positive integer >= 1");let $={columns:J.grid.columns};if(J.grid.gap!==void 0)$.gap=J.grid.gap;X=X.use(wJ($))}if(J.groups){if(J.direction==="horizontal")throw Error("[vlist/builder] horizontal direction cannot be combined with groups");let $={getGroupForIndex:J.groups.getGroupForIndex,headerHeight:typeof J.groups.headerHeight==="function"?J.groups.headerHeight("",0):J.groups.headerHeight,headerTemplate:J.groups.headerTemplate};if(J.groups.sticky!==void 0)$.sticky=J.groups.sticky;X=X.use(fJ($))}let Q=J.selection?.mode||"none";if(Q!=="none"){let $={mode:Q};if(J.selection?.initial!==void 0)$.initial=J.selection.initial;X=X.use(UJ($))}else X=X.use(UJ({mode:"none"}));X=X.use(cJ());let j=J.scroll?.scrollbar||J.scrollbar;if(j!=="none"){let $=typeof j==="object"?j:{};X=X.use(lJ($))}X=X.use(sJ());let Y=X.build();return Y.update=($)=>{if($.grid&&Y.updateGrid)Y.updateGrid($.grid);if($.selectionMode!==void 0&&Y.setSelectionMode)Y.setSelectionMode($.selectionMode);if($.itemHeight!==void 0)console.warn("[vlist] Updating itemHeight via update() is not yet supported with the builder pattern. Please recreate the instance or use the full API from 'vlist/full'.");if($.overscan!==void 0)console.warn("[vlist] Updating overscan via update() is not yet supported with the builder pattern.")},Y};function F6(J){let X=r2(null),Q=a2(null);if(o2(()=>{let j=X.value;if(!j)return;let Y=i2(J);Q.value=eJ({...Y,container:j})}),j2(()=>{Q.value?.destroy(),Q.value=null}),n2(J))J2(()=>J.value.items,(j)=>{if(Q.value&&j)Q.value.setItems(j)});return{containerRef:X,instance:Q}}function L6(J,X,Q){let j=null;J2(J,(Y)=>{if(j)j(),j=null;if(Y)j=Y.on(X,Q)},{immediate:!0}),j2(()=>{if(j)j(),j=null})}export{L6 as useVListEvent,F6 as useVList};
|
package/dist/vue/vue.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var We=Object.defineProperty;var bn=Object.getOwnPropertyDescriptor;var vn=Object.getOwnPropertyNames;var yn=Object.prototype.hasOwnProperty;var Pe=(t,o)=>()=>(t&&(o=t(t=0)),o);var Sn=(t,o)=>{for(var r in o)We(t,r,{get:o[r],enumerable:!0})},Tn=(t,o,r,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of vn(o))!yn.call(t,a)&&a!==r&&We(t,a,{get:()=>o[a],enumerable:!(e=bn(o,a))||e.enumerable});return t};var In=t=>Tn(We({},"__esModule",{value:!0}),t);var bt,Ye,Xe,vt=Pe(()=>{"use strict";bt=(t,o,r,e)=>{if(e===0)return 0;if(!t.isVariable())return Math.ceil(r/t.getHeight(0));let a=0,n=0,s=o;for(;s<e&&n<r;)n+=t.getHeight(s),a++,s++;return Math.max(1,a)},Ye=(t,o,r)=>{if(r===0)return 0;if(!t.isVariable())return Math.floor(o/t.getHeight(0));let e=0,a=0;for(let n=r-1;n>=0;n--){let s=t.getHeight(n);if(a+s>o)break;a+=s,e++}return Math.max(e,1)},Xe=(t,o,r)=>{if(r===0)return 0;let e=Math.floor(o),a=o-e,n=Math.max(0,Math.min(e,r-1));return t.getOffset(n)+a*t.getHeight(n)}});var Se,yt,Fe,St,Ze=Pe(()=>{"use strict";vt();Se=(t,o)=>{let r=o.getTotalHeight(),e=r>16e6,a=e?16e6:r,n=r>0?a/r:1;return{isCompressed:e,actualHeight:r,virtualHeight:a,ratio:n}},yt=(t,o,r,e,a,n)=>{if(e===0||o===0)return n.start=0,n.end=-1,n;if(!a.isCompressed){let c=r.indexAtOffset(t),m=r.indexAtOffset(t+o);return m<e-1&&m++,n.start=Math.max(0,c),n.end=Math.min(e-1,Math.max(0,m)),n}let{virtualHeight:s}=a,y=t/s*e,f=Math.floor(y),u=bt(r,Math.max(0,f),o,e),S=Math.ceil(y)+u,L=s-o-t;if(L<=o&&L>=-1){let c=Ye(r,o,e),m=Math.max(0,e-c),b=Math.max(0,Math.min(1,1-L/o));f=Math.floor(f+(m-f)*b),S=L<=1?e-1:Math.min(e-1,f+u)}return n.start=Math.max(0,f),n.end=Math.min(e-1,Math.max(0,S)),n},Fe=(t,o,r,e,a,n,s)=>{if(!n.isCompressed||e===0)return r.getOffset(t);let{virtualHeight:l}=n,y=l-a,f=y-o;if(f<=a&&f>=-1){if(o>=y-1){let H=r.getTotalHeight()-r.getOffset(t);return a-H}let I=Ye(r,a,e),L=Math.max(0,e-I),m=o/l*e,b=Math.max(0,Math.min(1,1-f/a)),v=r.getOffset(t)-r.getOffset(L),T=r.getOffset(t)-Xe(r,m,e);return T+(v-T)*b}let S=o/l*e;return r.getOffset(t)-Xe(r,S,e)},St=(t,o,r,e,a,n="start")=>{if(e===0)return 0;let s;if(a.isCompressed){if(n==="end"&&t===e-1)return Math.max(0,a.virtualHeight-r);s=t/e*a.virtualHeight}else s=o.getOffset(t);let l=o.getHeight(t);switch(n){case"center":s-=(r-l)/2;break;case"end":s-=r-l;break}let y=a.virtualHeight-r;return Math.max(0,Math.min(s,y))}});var Me,je=Pe(()=>{"use strict";Me=t=>t!==null&&typeof t=="object"&&t.__groupHeader===!0});var Tt={};Sn(Tt,{createGridRenderer:()=>Qe});var On,Qe,Je=Pe(()=>{"use strict";Ze();je();On=(t=200)=>{let o=[];return{acquire:()=>{let n=o.pop();if(n)return n;let s=document.createElement("div");return s.setAttribute("role","option"),s},release:n=>{o.length<t&&(n.className="",n.textContent="",n.removeAttribute("style"),n.removeAttribute("data-index"),n.removeAttribute("data-id"),n.removeAttribute("data-row"),n.removeAttribute("data-col"),o.push(n))},clear:()=>{o.length=0}}},Qe=(t,o,r,e,a,n,s,l)=>{let y=On(),f=new Map,u=n,S=!1,I=null,L=0,c="",m=C=>(I&&L===C||(I=Se(C,r),L=C),I),b={selected:!1,focused:!1},v=(C,x)=>(b.selected=C,b.focused=x,b),T=`${a}-item ${a}-grid-item`,H=`${a}-item--selected`,h=`${a}-item--focused`,M=(C,x)=>{typeof x=="string"?C.innerHTML=x:C.replaceChildren(x)},d=(C,x,D)=>{C.classList.toggle(H,x),C.classList.toggle(h,D)},E=(C,x)=>{let D=e.getRow(C);if(x){let O=x.totalItems,N=m(O);if(N.isCompressed)return Fe(D,x.scrollTop,r,O,x.containerHeight,N,x.rangeStart)}return r.getOffset(D)},p=(C,x,D)=>{let O=C.dataset.id?.startsWith("__group_header"),N=O?0:e.getCol(x),Y=O?0:e.getColumnOffset(N,u),oe;if(S){let de=e.getRow(x),$=0,ae=new Set;for(let Z=0;Z<x;Z++){let re=e.getRow(Z);if(re<de&&!ae.has(re)){let Q=r.getHeight(Z);$+=Q,ae.add(re)}}oe=$}else oe=E(x,D);C.style.transform=`translate(${Math.round(Y)}px, ${Math.round(oe)}px)`},V=(C,x)=>{let D=C.dataset.id?.startsWith("__group_header"),O=D?u:e.getColumnWidth(u),N;if(S||D)N=r.getHeight(x)-e.gap;else{let Y=e.getRow(x);N=r.getHeight(Y)-e.gap}C.style.width=`${O}px`,C.style.height=`${N}px`},z=(C,x,D,O,N)=>{let Y=y.acquire(),oe=v(D,O);Y.className=T,Y.dataset.index=String(C),Y.dataset.id=String(x.id),Y.dataset.row=String(e.getRow(C)),Y.dataset.col=String(e.getCol(C)),Y.ariaSelected=String(D),l&&(Y.id=`${l}-item-${C}`),s&&(c=String(s()),Y.setAttribute("aria-setsize",c),Y.setAttribute("aria-posinset",String(C+1))),V(Y,C);let de=o(x,C,oe);return M(Y,de),d(Y,D,O),p(Y,C,N),Y},X=(C,x,D,O,N)=>{x.start===0&&C.length>0&&(S=Me(C[0]));for(let[$,ae]of f)($<x.start||$>x.end)&&(ae.element.remove(),y.release(ae.element),f.delete($));let Y=!1;if(s){let $=String(s());Y=$!==c,c=$}let oe=document.createDocumentFragment(),de=[];for(let $=x.start;$<=x.end;$++){let ae=$-x.start,Z=C[ae];if(!Z){console.warn(`\u26A0\uFE0F RENDER: Missing item at index ${$} (range: ${x.start}-${x.end}, items.length: ${C.length})`);continue}let re=D.has(Z.id),Q=$===O,te=f.get($);if(te){let _=te.element.dataset.id,P=String(Z.id);if(_!==P){let J=v(re,Q),B=o(Z,$,J);M(te.element,B),te.element.dataset.id=P,te.element.dataset.row=String(e.getRow($)),te.element.dataset.col=String(e.getCol($)),V(te.element,$)}d(te.element,re,Q),te.element.ariaSelected=String(re),p(te.element,$,N),Y&&te.element.setAttribute("aria-setsize",c)}else{let _=z($,Z,re,Q,N);oe.appendChild(_),de.push({index:$,element:_})}}if(de.length>0){t.appendChild(oe);for(let{index:$,element:ae}of de)f.set($,{index:$,element:ae})}},U=C=>{for(let[x,D]of f)p(D.element,x,C)},ee=(C,x,D,O)=>{let N=f.get(C);if(N){let Y=v(D,O),oe=o(x,C,Y);M(N.element,oe),d(N.element,D,O),N.element.dataset.id=String(x.id),N.element.ariaSelected=String(D),V(N.element,C)}},j=(C,x,D)=>{let O=f.get(C);O&&d(O.element,x,D)},R=C=>f.get(C)?.element,A=C=>{if(!(Math.abs(C-u)<1)){u=C;for(let[x,D]of f)V(D.element,x),p(D.element,x)}},G=()=>{for(let[,C]of f)C.element.remove(),y.release(C.element);f.clear()};return{render:X,updatePositions:U,updateItem:ee,updateItemClasses:j,getElement:R,updateContainerWidth:A,clear:G,destroy:()=>{G(),y.clear()}}}});import{ref as Kn,shallowRef as qn,onMounted as Yn,onBeforeUnmount as Xt,watch as Zt,isRef as Xn,unref as Zn}from"vue";var Cn="vlist";var wn=0,Ce=5,Ln=100,Ke=2,Hn=(t=0)=>{let o=new Array(Ce);for(let r=0;r<Ce;r++)o[r]={position:0,time:0};return{velocity:0,lastPosition:t,lastTime:performance.now(),samples:o,sampleIndex:0,sampleCount:0}},Mn=(t,o)=>{let r=performance.now(),e=r-t.lastTime;if(e===0)return t;if(e>Ln){t.sampleCount=0,t.sampleIndex=0,t.velocity=0;let n=t.samples[0];return n.position=o,n.time=r,t.sampleIndex=1,t.sampleCount=1,t.lastPosition=o,t.lastTime=r,t}let a=t.samples[t.sampleIndex];if(a.position=o,a.time=r,t.sampleIndex=(t.sampleIndex+1)%Ce,t.sampleCount=Math.min(t.sampleCount+1,Ce),t.sampleCount>=Ke){let n=(t.sampleIndex-t.sampleCount+Ce)%Ce,s=t.samples[n],l=o-s.position,y=r-s.time;t.velocity=y>0?Math.abs(l)/y:0}return t.lastPosition=o,t.lastTime=r,t},ft=(t,o)=>{if(typeof t=="number"){let n=o;return{getOffset:s=>s*t,getHeight:()=>t,indexAtOffset:s=>n===0||t===0?0:Math.max(0,Math.min(Math.floor(s/t),n-1)),getTotalHeight:()=>n*t,getTotal:()=>n,rebuild:s=>{n=s},isVariable:()=>!1}}let r=o,e=new Float64Array(0),a=n=>{r=n,e=new Float64Array(n+1),e[0]=0;for(let s=0;s<n;s++)e[s+1]=e[s]+t(s)};return a(o),{getOffset:n=>n<=0?0:n>=r?e[r]:e[n],getHeight:n=>t(n),indexAtOffset:n=>{if(r===0||n<=0)return 0;if(n>=e[r])return r-1;let s=0,l=r-1;for(;s<l;){let y=s+l+1>>>1;e[y]<=n?s=y:l=y-1}return s},getTotalHeight:()=>e[r]??0,getTotal:()=>r,rebuild:n=>a(n),isVariable:()=>!0}},Rn=()=>{let t={},o=(n,s)=>(t[n]||(t[n]=new Set),t[n].add(s),()=>r(n,s)),r=(n,s)=>{t[n]?.delete(s)};return{on:o,off:r,emit:(n,s)=>{t[n]?.forEach(l=>{try{l(s)}catch(y){console.error(`[vlist] Error in "${n}" handler:`,y)}})},clear:()=>{for(let n in t)delete t[n]}}},En=t=>{if(typeof t=="string"){let o=document.querySelector(t);if(!o)throw new Error(`[vlist/builder] Container not found: ${t}`);return o}return t},xn=(t,o,r,e)=>{let a=document.createElement("div");a.className=o,e&&a.classList.add(`${o}--horizontal`),a.setAttribute("role","listbox"),a.setAttribute("tabindex","0"),r&&a.setAttribute("aria-label",r),e&&a.setAttribute("aria-orientation","horizontal");let n=document.createElement("div");n.className=`${o}-viewport`,e?(n.style.overflowX="auto",n.style.overflowY="hidden"):n.style.overflow="auto",n.style.height="100%",n.style.width="100%";let s=document.createElement("div");s.className=`${o}-content`,s.style.position="relative",e?s.style.height="100%":s.style.width="100%";let l=document.createElement("div");return l.className=`${o}-items`,l.style.position="relative",e?l.style.height="100%":l.style.width="100%",s.appendChild(l),n.appendChild(s),a.appendChild(n),t.appendChild(a),{root:a,viewport:n,content:s,items:l}},Vn=(t=100)=>{let o=[];return{acquire:()=>{let r=o.pop();if(r)return r;let e=document.createElement("div");return e.setAttribute("role","option"),e},release:r=>{o.length<t&&(r.className="",r.textContent="",r.removeAttribute("style"),r.removeAttribute("data-index"),r.removeAttribute("data-id"),o.push(r))},clear:()=>{o.length=0}}},An=(t,o,r,e,a)=>{if(e===0||o===0){a.start=0,a.end=0;return}let n=r.indexAtOffset(t),s=r.indexAtOffset(t+o);s<e-1&&s++,a.start=Math.max(0,n),a.end=Math.min(e-1,Math.max(0,s))},_n=(t,o,r,e)=>{if(r===0){e.start=0,e.end=0;return}e.start=Math.max(0,t.start-o),e.end=Math.min(r-1,t.end+o)},Pn=(t,o,r,e,a)=>{if(e===0)return 0;let n=Math.max(0,Math.min(t,e-1)),s=o.getOffset(n),l=o.getHeight(n),y=Math.max(0,o.getTotalHeight()-r),f;switch(a){case"center":f=s-(r-l)/2;break;case"end":f=s-r+l;break;default:f=s}return Math.max(0,Math.min(f,y))},Fn=t=>t<.5?2*t*t:-1+(4-2*t)*t,Gn=t=>typeof t=="string"?{align:t,behavior:"auto",duration:300}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??300}:{align:"start",behavior:"auto",duration:300},qe=t=>{if(!t.container)throw new Error("[vlist/builder] Container is required");if(!t.item)throw new Error("[vlist/builder] item configuration is required");let o=t.direction==="horizontal",r=o?"width":"height",e=o?t.item.width:t.item.height;if(e==null)throw new Error(`[vlist/builder] item.${r} is required${o?" when direction is 'horizontal'":""}`);if(typeof e=="number"&&e<=0)throw new Error(`[vlist/builder] item.${r} must be a positive number`);if(typeof e!="number"&&typeof e!="function")throw new Error(`[vlist/builder] item.${r} must be a number or a function (index) => number`);if(!t.item.template)throw new Error("[vlist/builder] item.template is required");if(o&&t.reverse)throw new Error("[vlist/builder] horizontal direction cannot be combined with reverse mode");let a=new Map,n=!1,s={use(l){if(n)throw new Error("[vlist/builder] Cannot call .use() after .build()");return a.set(l.name,l),s},build(){if(n)throw new Error("[vlist/builder] .build() can only be called once");return n=!0,kn(t,a,o,e)}};return s};function kn(t,o,r,e){let{item:a,items:n,overscan:s=3,classPrefix:l=Cn,ariaLabel:y,reverse:f=!1,scroll:u}=t,S=u?.wheel??!0,I=u?.wrap??!1,L=f,c=`${l}-${wn++}`,m=e,b=r?typeof a.height=="number"?a.height:void 0:typeof a.width=="number"?a.width:void 0,v=a.template,T={overscan:s,classPrefix:l,reverse:L,wrap:I,horizontal:r,ariaIdPrefix:c},H=Array.from(o.values()).sort((i,g)=>(i.priority??50)-(g.priority??50)),h=new Set(H.map(i=>i.name));for(let i of H)if(i.conflicts){for(let g of i.conflicts)if(h.has(g))throw new Error(`[vlist/builder] ${i.name} and ${g} cannot be combined`)}if(r){if(h.has("withGrid"))throw new Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(h.has("withGroups"))throw new Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'")}if(L){if(h.has("withGrid"))throw new Error("[vlist/builder] withGrid cannot be used with reverse: true");if(h.has("withGroups"))throw new Error("[vlist/builder] withGroups cannot be used with reverse: true")}let M=En(t.container),d=xn(M,l,y,r),E=Rn(),p=n?[...n]:[],V=ft(m,p.length),z=Vn(),X=d.viewport.clientHeight,U=d.viewport.clientWidth,ee=!1,j=!1,R=0,A=null,G=null,k=Hn(0),C={start:0,end:0},x={start:0,end:0},D={start:-1,end:-1},O={viewportState:{scrollTop:0,containerHeight:X,totalHeight:V.getTotalHeight(),actualHeight:V.getTotalHeight(),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},N=new Map,Y={selected:!1,focused:!1},oe=`${l}-item`,de="",$=new Map,ae=()=>{$.clear();for(let i=0;i<p.length;i++){let g=p[i];g&&$.set(g.id,i)}};ae();let Z=null,re=()=>Z?Z.getTotal():p.length,Q=[],te=[],_=[],P=[],K=[],J=[],B=new Map,ne=()=>r?d.viewport.scrollLeft:d.viewport.scrollTop,se=i=>{r?d.viewport.scrollLeft=i:d.viewport.scrollTop=i},be=(i=2)=>{let g=V.getTotalHeight();return R+X>=g-i},ue=!1,ie,fe,le=(i,g,w,F,q)=>{An(i,g,w,F,q)},he=(i,g,w,F,q)=>Pn(i,g,w,F,q),ce=(i,g)=>{typeof g=="string"?i.innerHTML=g:i.replaceChildren(g)},ye=(i,g)=>{let w=Math.round(V.getOffset(g));r?i.style.transform=`translateX(${w}px)`:i.style.transform=`translateY(${w}px)`},jt=(i,g)=>{let w=z.acquire();return w.className=oe,r?(w.style.width=`${V.getHeight(i)}px`,b!=null&&(w.style.height=`${b}px`)):w.style.height=`${V.getHeight(i)}px`,w.dataset.index=String(i),w.dataset.id=String(g.id),w.ariaSelected="false",w.id=`${c}-item-${i}`,de=String(re()),w.setAttribute("aria-setsize",de),w.setAttribute("aria-posinset",String(i+1)),ce(w,v(g,i,Y)),ye(w,i),w},Le=()=>{let i=`${V.getTotalHeight()}px`;r?d.content.style.width=i:d.content.style.height=i},$e=new Set,Be=-1,Qt=()=>{if(ee)return;let i=re();if(le(R,X,V,i,C),_n(C,s,i,x),x.start===D.start&&x.end===D.end)return;let g=String(i),w=g!==de;de=g;for(let[W,ge]of N)(W<x.start||W>x.end)&&(ge.remove(),z.release(ge),N.delete(W));let F=document.createDocumentFragment(),q=[];for(let W=x.start;W<=x.end;W++){let ge=Z?Z.getItem(W):p[W];if(!ge)continue;let pe=N.get(W);if(pe){let ve=pe.dataset.id,Ae=String(ge.id);ve!==Ae&&(ce(pe,v(ge,W,Y)),pe.dataset.id=Ae,r?pe.style.width=`${V.getHeight(W)}px`:pe.style.height=`${V.getHeight(W)}px`),ye(pe,W);let _e=$e.has(ge.id),hn=W===Be;pe.classList.toggle(`${l}-item--selected`,_e),pe.classList.toggle(`${l}-item--focused`,hn),pe.ariaSelected=_e?"true":"false",w&&pe.setAttribute("aria-setsize",de)}else{let ve=jt(W,ge),Ae=$e.has(ge.id),_e=W===Be;Ae&&(ve.classList.add(`${l}-item--selected`),ve.ariaSelected="true"),_e&&ve.classList.add(`${l}-item--focused`),F.appendChild(ve),q.push({index:W,element:ve})}}if(q.length>0){d.items.appendChild(F);for(let{index:W,element:ge}of q)N.set(W,ge)}D.start=x.start,D.end=x.end,O.lastRenderRange.start=x.start,O.lastRenderRange.end=x.end,O.viewportState.scrollTop=R,O.viewportState.visibleRange.start=C.start,O.viewportState.visibleRange.end=C.end,O.viewportState.renderRange.start=x.start,O.viewportState.renderRange.end=x.end,E.emit("range:change",{range:{start:x.start,end:x.end}})},Jt=()=>{D.start=-1,D.end=-1,ie()};ie=Qt,fe=Jt;let He=()=>{if(ee)return;let i=ne(),g=i>=R?"down":"up";k=Mn(k,i),d.root.classList.contains(`${l}--scrolling`)||d.root.classList.add(`${l}--scrolling`),R=i,ie(),E.emit("scroll",{scrollTop:i,direction:g}),E.emit("velocity:change",{velocity:k.velocity,reliable:k.sampleCount>=Ke});for(let w=0;w<Q.length;w++)Q[w](i,g);G&&clearTimeout(G),G=setTimeout(()=>{d.root.classList.remove(`${l}--scrolling`),k.velocity=0,k.sampleCount=0,E.emit("velocity:change",{velocity:0,reliable:!1})},u?.idleTimeout??150)},xe=null,Ie=d.viewport;Ie.addEventListener("scroll",He,{passive:!0}),r&&S&&(xe=i=>{i.deltaX||(i.preventDefault(),d.viewport.scrollLeft+=i.deltaY)},d.viewport.addEventListener("wheel",xe)),d.viewport.classList.add(`${l}-viewport--custom-scrollbar`);let ut=i=>{let w=i.target.closest("[data-index]");if(w){let F=parseInt(w.dataset.index??"-1",10);if(F>=0){let q=Z?.getItem(F)??p[F];if(q){if(q.__groupHeader)return;E.emit("item:click",{item:q,index:F,event:i})}}}for(let F=0;F<te.length;F++)te[F](i)},en=i=>{let w=i.target.closest("[data-index]");if(w){let F=parseInt(w.dataset.index??"-1",10);if(F>=0){let q=Z?.getItem(F)??p[F];if(q){if(q.__groupHeader)return;E.emit("item:dblclick",{item:q,index:F,event:i})}}}},ct=i=>{for(let g=0;g<_.length;g++)_[g](i)};d.items.addEventListener("click",ut),d.items.addEventListener("dblclick",en),d.root.addEventListener("keydown",ct);let ze=!0,tn=()=>U,nn=()=>X,Ue=new ResizeObserver(i=>{if(!ee)for(let g of i){let w=g.contentRect.height,F=g.contentRect.width,q=r?F:w;if(U=F,Math.abs(q-X)>1&&(X=q,O.viewportState.containerHeight=q,j&&(Le(),ie(),E.emit("resize",{height:w,width:F}))),j)for(let W=0;W<P.length;W++)P[W](F,w)}});ze&&Ue.observe(d.viewport);let me={get dom(){return d},get heightCache(){return V},get emitter(){return E},get config(){return T},get rawConfig(){return t},get renderer(){return{render:(i,g,w,F,q)=>{$e=w,Be=F,fe()},updateItemClasses:(i,g,w)=>{let F=N.get(i);F&&(F.classList.toggle(`${l}-item--selected`,g),F.classList.toggle(`${l}-item--focused`,w),F.ariaSelected=g?"true":"false")},updatePositions:()=>{},updateItem:()=>{},getElement:i=>N.get(i)??null,clear:()=>{},destroy:()=>{}}},set renderer(i){},get dataManager(){return Z},set dataManager(i){Z=i},get scrollController(){return Ne},set scrollController(i){Ne=i},state:O,getContainerWidth(){return U},afterScroll:Q,clickHandlers:te,keydownHandlers:_,resizeHandlers:P,contentSizeHandlers:K,destroyHandlers:J,methods:B,replaceTemplate(i){v=i},replaceRenderer(i){},replaceDataManager(i){Z=i},replaceScrollController(i){Ne=i},getItemsForRange(i){let g=[];for(let w=i.start;w<=i.end;w++){let F=Z?Z.getItem(w):p[w];F&&g.push(F)}return g},getAllLoadedItems(){if(Z){let i=Z.getTotal(),g=[];for(let w=0;w<i;w++){let F=Z.getItem(w);F&&g.push(F)}return g}return[...p]},getVirtualTotal(){return re()},getCachedCompression(){return{isCompressed:!1,actualHeight:V.getTotalHeight(),virtualHeight:V.getTotalHeight(),ratio:1}},getCompressionContext(){return{scrollTop:R,totalItems:re(),containerHeight:X,rangeStart:x.start}},renderIfNeeded(){ie()},forceRender(){fe()},getRenderFns(){return{renderIfNeeded:ie,forceRender:fe}},setRenderFns(i,g){ie=i,fe=g},setVirtualTotalFn(i){re=i},rebuildHeightCache(i){V.rebuild(i??re())},setHeightConfig(i){V=ft(i,re())},updateContentSize(i){let g=`${i}px`;r?d.content.style.width=g:d.content.style.height=g},updateCompressionMode(){},setVisibleRangeFn(i){le=i},setScrollToPosFn(i){he=i},setPositionElementFn(i){ye=i},setScrollFns(i,g){ne=i,se=w=>{g(w),He()}},setScrollTarget(i){Ie.removeEventListener("scroll",He),Ie=i,Ie.addEventListener("scroll",He,{passive:!0})},getScrollTarget(){return Ie},setContainerDimensions(i){tn=i.width,nn=i.height,U=i.width(),X=i.height(),O.viewportState.containerHeight=X},disableViewportResize(){ze&&(ze=!1,Ue.unobserve(d.viewport))}};Z={getState:()=>({total:p.length,cached:p.length,isLoading:!1,pendingRanges:[],error:void 0,hasMore:!1,cursor:void 0}),getTotal:()=>p.length,getCached:()=>p.length,getIsLoading:()=>!1,getHasMore:()=>!1,getStorage:()=>null,getPlaceholders:()=>null,getItem:i=>p[i],getItemById:i=>{let g=$.get(i);return g!==void 0?p[g]:void 0},getIndexById:i=>$.get(i)??-1,isItemLoaded:i=>i>=0&&i<p.length&&p[i]!==void 0,getItemsInRange:(i,g)=>{let w=[],F=Math.max(0,i),q=Math.min(g,p.length-1);for(let W=F;W<=q;W++)w.push(p[W]);return w},setTotal:i=>{},setItems:(i,g=0,w)=>{if(g===0&&(w!==void 0||p.length===0))p=[...i];else{let F=g+i.length;p.length<F&&(p.length=F);for(let q=0;q<i.length;q++)p[g+q]=i[q]}if(ae(),j){V.rebuild(re()),Le(),me.updateCompressionMode();for(let F=0;F<K.length;F++)K[F]();fe()}},updateItem:(i,g)=>{let w=$.get(i);if(w===void 0)return!1;let F=p[w];if(!F)return!1;p[w]={...F,...g},g.id!==void 0&&g.id!==i&&($.delete(i),$.set(g.id,w));let q=N.get(w);return q&&(ce(q,v(p[w],w,Y)),q.dataset.id=String(p[w].id)),!0},removeItem:i=>{let g=$.get(i);if(g===void 0)return!1;if(p.splice(g,1),ae(),j){V.rebuild(re()),Le(),me.updateCompressionMode();for(let w=0;w<K.length;w++)K[w]();fe()}return!0},loadRange:async()=>{},ensureRange:async()=>{},loadInitial:async()=>{},loadMore:async()=>!1,reload:async()=>{},evictDistant:()=>{},clear:()=>{p=[],$.clear()},reset:()=>{p=[],$.clear(),j&&(V.rebuild(0),Le(),fe())}};let Ne={getScrollTop:()=>ne(),scrollTo:i=>{se(i),R=i,ie()},scrollBy:i=>{let g=ne()+i;se(g),R=g,ie()},isAtTop:()=>R<=2,isAtBottom:(i=2)=>be(i),getScrollPercentage:()=>{let i=V.getTotalHeight(),g=Math.max(0,i-X);return g>0?R/g:0},getVelocity:()=>k.velocity,isTracking:()=>k.sampleCount>=Ke,isScrolling:()=>d.root.classList.contains(`${l}--scrolling`),updateConfig:()=>{},enableCompression:()=>{},disableCompression:()=>{},isCompressed:()=>ue,isWindowMode:()=>!1,updateContainerHeight:i=>{X=i},destroy:()=>{}},mt=new Map;for(let i of H)if(i.methods)for(let g of i.methods){let w=mt.get(g);if(w)throw new Error(`[vlist/builder] Method "${g}" is registered by both "${w}" and "${i.name}"`);mt.set(g,i.name)}for(let i of H)i.setup(me);if(j=!0,me.state.isInitialized=!0,Le(),ie(),L&&p.length>0){let i=he(p.length-1,V,X,p.length,"end");se(i),R=i,ie()}let rn=i=>{me.dataManager.setItems(i,0,i.length)},on=L?i=>{let g=be(2),w=p.length;if(me.dataManager.setItems(i,w),g&&p.length>0){let F=he(p.length-1,V,X,p.length,"end");se(F),R=F,ie()}}:i=>{let g=p.length;me.dataManager.setItems(i,g)},sn=L?i=>{let g=ne(),w=V.getTotalHeight(),F=[...p];me.dataManager.clear(),me.dataManager.setItems([...i,...F],0);let W=V.getTotalHeight()-w;W>0&&(se(g+W),R=g+W)}:i=>{let g=[...p];me.dataManager.clear(),me.dataManager.setItems([...i,...g],0)},an=(i,g)=>{me.dataManager.updateItem(i,g)},ln=i=>{me.dataManager.removeItem(i)},dn=async()=>{me.dataManager.reload&&await me.dataManager.reload()},Ve=()=>{A!==null&&(cancelAnimationFrame(A),A=null)},un=(i,g,w)=>{if(Ve(),Math.abs(g-i)<1){se(g),R=g,ie();return}let F=performance.now(),q=W=>{let ge=W-F,pe=Math.min(ge/w,1),ve=i+(g-i)*Fn(pe);se(ve),R=ve,ie(),pe<1?A=requestAnimationFrame(q):A=null};A=requestAnimationFrame(q)},gt=(i,g)=>{let{align:w,behavior:F,duration:q}=Gn(g),W=re(),ge=i;I&&W>0&&(ge=(ge%W+W)%W);let pe=he(ge,V,X,W,w);F==="smooth"?un(ne(),pe,q):(Ve(),se(pe))},cn=(i,g)=>{let w=$.get(i)??me.dataManager.getIndexById(i);w>=0&>(w,g)},mn=()=>ne(),gn=(i,g)=>E.on(i,g),pn=(i,g)=>{E.off(i,g)},fn=()=>{if(!ee){ee=!0,me.state.isDestroyed=!0,d.items.removeEventListener("click",ut),d.root.removeEventListener("keydown",ct),Ie.removeEventListener("scroll",He),Ue.disconnect(),xe&&d.viewport.removeEventListener("wheel",xe),G&&clearTimeout(G);for(let i=0;i<J.length;i++)J[i]();for(let i of H)i.destroy&&i.destroy();Ve();for(let[,i]of N)i.remove(),z.release(i);N.clear(),z.clear(),E.clear(),d.root.remove()}},pt={get element(){return d.root},get items(){return B.has("_getItems")?B.get("_getItems")():p},get total(){return B.has("_getTotal")?B.get("_getTotal")():re()},setItems:B.has("setItems")?B.get("setItems"):rn,appendItems:B.has("appendItems")?B.get("appendItems"):on,prependItems:B.has("prependItems")?B.get("prependItems"):sn,updateItem:B.has("updateItem")?B.get("updateItem"):an,removeItem:B.has("removeItem")?B.get("removeItem"):ln,reload:B.has("reload")?B.get("reload"):dn,scrollToIndex:B.has("scrollToIndex")?B.get("scrollToIndex"):gt,scrollToItem:B.has("scrollToItem")?B.get("scrollToItem"):cn,cancelScroll:B.has("cancelScroll")?B.get("cancelScroll"):Ve,getScrollPosition:B.has("getScrollPosition")?B.get("getScrollPosition"):mn,on:gn,off:pn,destroy:fn};for(let[i,g]of B)i==="setItems"||i==="appendItems"||i==="prependItems"||i==="updateItem"||i==="removeItem"||i==="reload"||i==="scrollToIndex"||i==="scrollToItem"||i==="cancelScroll"||i==="getScrollPosition"||(pt[i]=g);return pt}var ht=t=>{let o=Math.max(1,Math.floor(t.columns)),r=t.gap??0,e=t.isHeaderFn,a={row:0,col:0},n=c=>{if(c<=0)return 0;if(!e)return Math.ceil(c/o);let m=0,b=0,v=0;for(let T=0;T<c;T++)e(T)?(v++,b>0&&(m++,b=0),m++,b=0):(b++,b>=o&&(m++,b=0));return b>0&&m++,m},s=c=>(a.row=l(c),a.col=y(c),a),l=c=>{if(!e)return Math.floor(c/o);let m=0,b=0;for(let v=0;v<=c;v++)if(e(v)){if(b>0&&(m++,b=0),v===c)return m;m++,b=0}else{if(v===c)return m;b++,b>=o&&(m++,b=0)}return console.warn(`\u26A0\uFE0F getRow(${c}) fell through - returning ${m}`),m},y=c=>{if(!e)return c%o;if(e(c))return 0;let m=0;for(let b=0;b<=c;b++)if(e(b))m=0;else{if(b===c)return m;m++,m>=o&&(m=0)}return m},f=(c,m,b)=>{if(b<=0)return{start:0,end:-1};if(!e){let M=Math.max(0,c*o),d=Math.min(b-1,(m+1)*o-1);return{start:M,end:d}}let v=-1,T=-1,H=0,h=0;for(let M=0;M<b&&(e(M)?(h>0&&(H++,h=0),H>=c&&H<=m&&(v===-1&&(v=M),T=M),H++,h=0):(H>=c&&H<=m&&(v===-1&&(v=M),T=M),h++,h>=o&&(H++,h=0)),!(H>m&&h===0));M++);return v===-1?{start:0,end:-1}:{start:v,end:T}},u=(c,m,b)=>{if(m<0||m>=o)return-1;let v=c*o+m;return v<0||v>=b?-1:v},S=c=>{let m=(o-1)*r;return Math.max(0,(c-m)/o)};return{get columns(){return o},get gap(){return r},update:c=>{c.columns!==void 0&&(o=Math.max(1,Math.floor(c.columns))),c.gap!==void 0&&(r=c.gap),c.isHeaderFn!==void 0&&(e=c.isHeaderFn)},getTotalRows:n,getPosition:s,getRow:l,getCol:y,getItemRange:f,getItemIndex:u,getColumnWidth:S,getColumnOffset:(c,m)=>{let b=S(m);return c*(b+r)}}};Je();var It=(t,o,r,e,a,n)=>{if(e===0||o===0)return n.start=0,n.end=-1,n;let s=r.indexAtOffset(t),l=r.indexAtOffset(t+o);return l<e-1&&l++,n.start=Math.max(0,s),n.end=Math.min(e-1,Math.max(0,l)),n},Ct=(t,o,r,e)=>r===0?(e.start=0,e.end=-1,e):(e.start=Math.max(0,t.start-o),e.end=Math.min(r-1,t.end+o),e),wt=(t,o,r,e,a,n)=>{if(e===0)return 0;let s=Math.max(0,Math.min(t,e-1)),l=o.getOffset(s),y=o.getHeight(s),f=o.getTotalHeight(),u=Math.max(0,f-r),S;switch(n){case"center":S=l-r/2+y/2;break;case"end":S=l-r+y;break;default:S=l;break}return Math.max(0,Math.min(S,u))};var et=(t,o,r,e,a,n=It)=>(n(t.scrollTop,t.containerHeight,o,r,a,t.visibleRange),Ct(t.visibleRange,e,r,t.renderRange),t.totalHeight=a.virtualHeight,t.actualHeight=a.actualHeight,t.isCompressed=a.isCompressed,t.compressionRatio=a.ratio,t),Te=(t,o,r,e,a="start",n,s=wt)=>s(t,o,r,e,n,a);var Lt=t=>{if(!t.columns||t.columns<1)throw new Error("[vlist/builder] withGrid: columns must be a positive integer >= 1");let o=null,r=null;return{name:"withGrid",priority:10,setup(e){let{dom:a,emitter:n,config:s,rawConfig:l}=e,{classPrefix:y}=s;if(s.horizontal)throw new Error("[vlist/builder] withGrid cannot be used with direction: 'horizontal'");if(s.reverse)throw new Error("[vlist/builder] withGrid cannot be used with reverse: true");let f=l.items?.some(h=>h.__groupHeader===!0),u={columns:t.columns,gap:t.gap??0};f&&(u.isHeaderFn=h=>{let M=e.dataManager.getItem(h);return!!(M&&M.__groupHeader===!0)}),o=ht(u);let S=o.gap;e.setVirtualTotalFn(()=>{let h=e.dataManager.getTotal();return o.getTotalRows(h)});let I=l.item,L=s.horizontal?I.width:I.height,c={containerWidth:e.getContainerWidth(),columns:o.columns,gap:o.gap};typeof L=="function"?e.setHeightConfig(h=>{let M=c.containerWidth-2,d=(c.columns-1)*c.gap,E=(M-d)/c.columns,p={containerWidth:c.containerWidth,columns:c.columns,gap:c.gap,columnWidth:E,row:o.getRow(h),column:o.getCol(h),totalRows:o.getTotalRows(e.dataManager.getTotal()),totalColumns:c.columns};return L(h,p)+c.gap}):S>0&&e.setHeightConfig(L+S),e.rebuildHeightCache(),a.root.classList.add(`${y}--grid`);let m=e.getContainerWidth(),b=l.item.template,v=()=>{r=Qe(a.items,b,e.heightCache,o,y,m,()=>e.dataManager.getTotal(),s.ariaIdPrefix),e.replaceRenderer(r)};v(),e.methods.set("_getGridLayout",()=>o),e.methods.set("_getGridConfig",()=>u),e.methods.set("_replaceGridRenderer",h=>{r=h}),e.methods.set("_updateGridLayoutForGroups",h=>{o.update({isHeaderFn:h});let M=e.dataManager.getTotal(),d=0;for(let E=0;E<M;E++)if(o.getCol(E)===0){let p=e.heightCache.getHeight(E);d+=p}e.heightCache.getTotalHeight=()=>d,e.dom.content.style.height=`${d}px`,v()}),e.methods.set("updateGrid",h=>{if(h.columns!==void 0){if(!Number.isInteger(h.columns)||h.columns<1)throw new Error("[vlist/builder] updateGrid: columns must be a positive integer >= 1");u.columns=h.columns}if(h.gap!==void 0){if(h.gap<0)throw new Error("[vlist/builder] updateGrid: gap must be non-negative");u.gap=h.gap}o&&o.update(u);let M=e.getContainerWidth();c.containerWidth=M,c.columns=u.columns,c.gap=u.gap??0,r&&r.updateContainerWidth(M),e.rebuildHeightCache(),e.updateContentSize(e.heightCache.getTotalHeight()),e.updateCompressionMode();for(let d=0;d<e.contentSizeHandlers.length;d++)e.contentSizeHandlers[d]();r&&r.clear(),e.forceRender()});let T=()=>{if(e.state.isDestroyed)return;let h=e.scrollController.getScrollTop(),M=e.state.viewportState.containerHeight,d=e.getVirtualTotal(),E={start:0,end:0};if(d===0||M===0)E.start=0,E.end=0;else{E.start=Math.max(0,e.heightCache.indexAtOffset(h));let A=e.heightCache.indexAtOffset(h+M);A<d-1&&A++,E.end=Math.min(d-1,Math.max(0,A))}let p=s.overscan??3,V={start:Math.max(0,E.start-p),end:Math.min(d-1,E.end+p)};e.state.viewportState.scrollTop=h,e.state.viewportState.visibleRange=E,e.state.viewportState.renderRange=V;let z=e.state.lastRenderRange,X=e.state.viewportState.isCompressed;if(V.start===z.start&&V.end===z.end){X&&r.updatePositions(e.getCompressionContext());return}let U=e.dataManager.getTotal(),ee=o.getItemRange(V.start,V.end,U),j=e.dataManager.getItemsInRange(ee.start,ee.end),R=X?e.getCompressionContext():void 0;r.render(j,ee,new Set,-1,R),e.state.lastRenderRange={...V},n.emit("range:change",{range:V})},H=()=>{e.state.isDestroyed||(e.state.lastRenderRange={start:-1,end:-1},T())};e.setRenderFns(T,H),e.resizeHandlers.push((h,M)=>{r&&r.updateContainerWidth(h)}),e.methods.set("scrollToIndex",(h,M)=>{let d=Math.floor(h/t.columns),{align:E,behavior:p}=$n(M),V=e.dataManager.getState(),z=o.getTotalRows(V.total),X=Math.max(0,Math.min(d,z-1)),U=Te(X,e.heightCache,e.state.viewportState.containerHeight,z,E,e.getCachedCompression());e.scrollController.scrollTo(U)}),e.methods.has("_getTotal")||e.methods.set("_getTotal",()=>e.dataManager.getTotal()),e.destroyHandlers.push(()=>{r&&(r.destroy(),r=null),a.root.classList.remove(`${y}--grid`)})},destroy(){r&&(r.destroy(),r=null)}}},tt=300,$n=t=>typeof t=="string"?{align:t,behavior:"auto",duration:tt}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??tt}:{align:"start",behavior:"auto",duration:tt};var nt=(t,o)=>{let r=0,e=t.length-1;for(;r<e;){let a=r+e+1>>>1;t[a].headerLayoutIndex<=o?r=a:e=a-1}return r},Ht=(t,o)=>{let r=0,e=t.length-1;for(;r<e;){let a=r+e+1>>>1;t[a].firstDataIndex<=o?r=a:e=a-1}return r},Mt=(t,o)=>{if(t===0)return[];let r=[],e=o(0),a=0,n=0;for(let s=1;s<t;s++){let l=o(s);if(l!==e){let y=s-a;r.push({key:e,groupIndex:r.length,headerLayoutIndex:n,firstDataIndex:a,count:y}),n=n+1+y,e=l,a=s}}return r.push({key:e,groupIndex:r.length,headerLayoutIndex:n,firstDataIndex:a,count:t-a}),r},rt=(t,o)=>{if(t.length===0||o.length===0)return[];let r=t.length+o.length,e=new Array(r),a=0;for(let n of o){e[a]={id:`__group_header_${n.groupIndex}`,__groupHeader:!0,groupKey:n.key,groupIndex:n.groupIndex},a++;for(let s=0;s<n.count;s++)e[a]=t[n.firstDataIndex+s],a++}return e},ot=(t,o)=>{let r=typeof o=="number"?e=>o:o;return e=>{let a=t.getEntry(e);return a.type==="header"?t.getHeaderHeight(a.group.groupIndex):r(a.dataIndex)}},Rt=(t,o)=>{let r=Mt(t,o.getGroupForIndex),e=t+r.length,a=o.headerHeight;return{get totalEntries(){return e},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 L=nt(r,I),c=r[L];if(I===c.headerLayoutIndex)return{type:"header",group:c};let m=I-c.headerLayoutIndex-1;return{type:"item",dataIndex:c.firstDataIndex+m,group:c}},layoutToDataIndex:I=>{if(r.length===0)return I;let L=nt(r,I),c=r[L];if(I===c.headerLayoutIndex)return-1;let m=I-c.headerLayoutIndex-1;return c.firstDataIndex+m},dataToLayoutIndex:I=>{if(r.length===0)return I;let L=Ht(r,I),c=r[L],m=I-c.firstDataIndex;return c.headerLayoutIndex+1+m},getGroupAtLayoutIndex:I=>{if(r.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let L=nt(r,I);return r[L]},getGroupAtDataIndex:I=>{if(r.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let L=Ht(r,I);return r[L]},getHeaderHeight:typeof a=="number"?I=>a:I=>{let L=r[I];return L?a(L.key,I):0},rebuild:I=>{r=Mt(I,o.getGroupForIndex),e=I+r.length}}};var Et=(t,o,r,e,a)=>{let n=document.createElement("div");n.className=`${a}-sticky-header`,n.setAttribute("role","presentation"),n.setAttribute("aria-hidden","true"),n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.right="0",n.style.zIndex="5",n.style.pointerEvents="none",n.style.willChange="transform",n.style.overflow="hidden",t.insertBefore(n,t.firstChild);let s=-1,l=!1,y=0,f=m=>{if(m===s)return;s=m;let b=o.groups;if(m<0||m>=b.length){n.textContent="";return}let v=b[m],T=e.headerTemplate(v.key,v.groupIndex),H=o.getHeaderHeight(m);n.style.height=`${H}px`,typeof T=="string"?n.innerHTML=T:n.replaceChildren(T)},u=m=>{let b=o.groups;if(b.length===0){I();return}let v=0;for(let d=b.length-1;d>=0;d--)if(r.getOffset(b[d].headerLayoutIndex)<=m){v=d;break}let T=r.getOffset(b[0].headerLayoutIndex);if(m<T){I();return}l||S(),f(v);let H=o.getHeaderHeight(v),h=0,M=v+1;if(M<b.length){let E=r.getOffset(b[M].headerLayoutIndex)-m;E<H&&(h=E-H)}h!==y&&(y=h,n.style.transform=h===0?"":`translateY(${Math.round(h)}px)`)},S=()=>{l||(l=!0,n.style.display="")},I=()=>{l&&(l=!1,n.style.display="none",s=-1,y=0,n.style.transform="")},L=()=>{let m=s;s=-1,m>=0&&f(m)},c=()=>{n.remove(),s=-1,l=!1};return n.style.display="none",{update:u,refresh:L,show:S,hide:I,destroy:c}};je();var xt=t=>{if(!t.getGroupForIndex)throw new Error("[vlist/builder] withGroups: getGroupForIndex is required");if(t.headerHeight==null||t.headerHeight<=0)throw new Error("[vlist/builder] withGroups: headerHeight must be a positive number");if(!t.headerTemplate)throw new Error("[vlist/builder] withGroups: headerTemplate is required");let o=null,r=null,e=[],a=[];return{name:"withGroups",priority:10,setup(n){let{dom:s,config:l,rawConfig:y}=n,{classPrefix:f}=l;if(l.horizontal)throw new Error("[vlist/builder] withGroups cannot be used with direction: 'horizontal'");if(l.reverse)throw new Error("[vlist/builder] withGroups cannot be used with reverse: true");let S=y.item.height;e=y.items?[...y.items]:[];let I=e.length,L={getGroupForIndex:t.getGroupForIndex,headerHeight:t.headerHeight,headerTemplate:t.headerTemplate,sticky:t.sticky??!1};o=Rt(I,L),a=rt(e,o.groups);let c=ot(o,S);n.setHeightConfig(c),n.rebuildHeightCache(a.length),n.dataManager.setItems(a,0,a.length);let m=y.item.template,{headerTemplate:b}=t,v=((d,E,p)=>Me(d)?b(d.groupKey,d.groupIndex):m(d,E,p)),T=n.methods.get("_getGridLayout"),H=n.methods.get("_replaceGridRenderer"),h=n.methods.get("_updateGridLayoutForGroups");if(T&&H){h&&h(V=>{let z=a[V];return!!(z&&Me(z))});let{createGridRenderer:d}=(Je(),In(Tt)),E=T(),p=d(s.items,v,n.heightCache,E,f,n.getContainerWidth(),()=>n.dataManager.getTotal(),l.ariaIdPrefix);H(p)}else n.replaceTemplate(v);if(s.root.classList.add(`${f}--grouped`),t.sticky!==!1){r=Et(s.root,o,n.heightCache,{...L,sticky:L.sticky??!1},f);let d=r;n.afterScroll.push((E,p)=>{d.update(E)}),r.update(n.scrollController.getScrollTop())}let M=()=>{if(!o)return;o.rebuild(e.length),a=rt(e,o.groups);let d=ot(o,S);n.setHeightConfig(d),n.rebuildHeightCache(a.length),n.dataManager.setItems(a,0,a.length),r&&r.refresh()};n.methods.set("setItems",d=>{e=[...d],M()}),n.methods.set("appendItems",d=>{e=[...e,...d],M()}),n.methods.set("prependItems",d=>{e=[...d,...e],M()}),n.methods.set("removeItem",d=>{e=e.filter(E=>E.id!==d),M()}),n.methods.set("scrollToIndex",(d,E)=>{let p=o.dataToLayoutIndex(d),{align:V,behavior:z}=Bn(E),X=n.dataManager.getTotal(),U=Te(p,n.heightCache,n.state.viewportState.containerHeight,X,V,n.getCachedCompression());n.scrollController.scrollTo(U)}),n.methods.set("_getItems",()=>e),n.methods.set("_getTotal",()=>e.length),n.destroyHandlers.push(()=>{r&&(r.destroy(),r=null),s.root.classList.remove(`${f}--grouped`)})},destroy(){r&&(r.destroy(),r=null)}}},st=300,Bn=t=>typeof t=="string"?{align:t,behavior:"auto",duration:st}:t&&typeof t=="object"?{align:t.align??"start",behavior:t.behavior??"auto",duration:t.duration??st}:{align:"start",behavior:"auto",duration:st};var Vt=t=>({selected:new Set(t??[]),focusedIndex:-1}),it=(t,o,r)=>{if(r==="none")return t;let e=new Set(t.selected);if(r==="single")e.clear(),o.length>0&&e.add(o[0]);else for(let a of o)e.add(a);return{...t,selected:e}},at=(t,o)=>{let r=new Set(t.selected);for(let e of o)r.delete(e);return{...t,selected:r}},Ge=(t,o,r)=>r==="none"?t:t.selected.has(o)?at(t,[o]):it(t,[o],r),At=(t,o,r)=>r!=="multiple"?t:{...t,selected:new Set(o.map(e=>e.id))},_t=t=>({...t,selected:new Set}),Pt=(t,o)=>(t.focusedIndex=o,t),Ft=(t,o,r=!0)=>{if(o===0)return t;let e=t.focusedIndex-1;return e<0&&(e=r?o-1:0),t.focusedIndex=e,t},Gt=(t,o,r=!0)=>{if(o===0)return t;let e=t.focusedIndex+1;return e>=o&&(e=r?0:o-1),t.focusedIndex=e,t},kt=(t,o)=>(o===0||(t.focusedIndex=0),t),Dt=(t,o)=>(o===0||(t.focusedIndex=o-1),t);var ke=t=>Array.from(t.selected),De=(t,o)=>{let r=[];for(let e of t.selected){let a=o(e);a&&r.push(a)}return r};var lt=t=>{let o=t?.mode??"single",r=t?.initial,e=Vt(r),a=null;return{name:"withSelection",priority:50,methods:["select","deselect","toggleSelect","selectAll","clearSelection","getSelected","getSelectedItems"],setup(n){let{dom:s,emitter:l,config:y}=n,{classPrefix:f,ariaIdPrefix:u}=y;if(o==="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",()=>{});return}let{renderIfNeeded:S,forceRender:I}=n.getRenderFns(),L=()=>{n.dom.items.querySelectorAll("[data-index]").forEach(H=>{let h=H,M=h.dataset.id;if(M!==void 0){let d=/^\d+$/.test(M)?parseInt(M,10):M,E=e.selected.has(d),V=parseInt(h.dataset.index??"-1",10)===e.focusedIndex;h.classList.toggle(`${f}-item--selected`,E),h.classList.toggle(`${f}-item--focused`,V),h.ariaSelected=E?"true":"false"}})},c=()=>{n.state.isDestroyed||(S(),L())},m=()=>{n.state.isDestroyed||(I(),L())};n.setRenderFns(c,m);let b=()=>{L(),l.emit("selection:change",{selected:ke(e),items:De(e,T=>n.dataManager.getItemById(T))})};a=document.createElement("div"),a.setAttribute("aria-live","polite"),a.setAttribute("aria-atomic","true"),a.className=`${f}-live-region`,a.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",s.root.appendChild(a);let v=a;l.on("selection:change",({selected:T})=>{let H=T.length;H===0?v.textContent="":H===1?v.textContent="1 item selected":v.textContent=`${H} items selected`}),n.clickHandlers.push(T=>{if(n.state.isDestroyed)return;let h=T.target.closest("[data-index]");if(!h)return;let M=parseInt(h.dataset.index??"-1",10);if(M<0)return;let d=n.dataManager.getItem(M);d&&(l.emit("item:click",{item:d,index:M,event:T}),e=Pt(e,M),s.root.setAttribute("aria-activedescendant",`${u}-item-${M}`),e=Ge(e,d.id,o),b())}),n.keydownHandlers.push(T=>{if(n.state.isDestroyed)return;let H=n.dataManager.getTotal(),h=e.focusedIndex,M=!1,d=!1,E=e;switch(T.key){case"ArrowUp":E=Ft(e,H),M=!0,d=!0;break;case"ArrowDown":E=Gt(e,H),M=!0,d=!0;break;case"Home":E=kt(e,H),M=!0,d=!0;break;case"End":E=Dt(e,H),M=!0,d=!0;break;case" ":case"Enter":if(e.focusedIndex>=0){let p=n.dataManager.getItem(e.focusedIndex);p&&(E=Ge(e,p.id,o)),M=!0}break}if(M){T.preventDefault(),e=E;let p=e.focusedIndex;if(p>=0){let V=n.dataManager.getState(),z=Te(p,n.heightCache,n.state.viewportState.containerHeight,V.total,"center",n.getCachedCompression());n.scrollController.scrollTo(z),s.root.setAttribute("aria-activedescendant",`${u}-item-${p}`)}else s.root.removeAttribute("aria-activedescendant");if(d){let{selected:V}=e;if(h>=0&&h!==p){let z=n.dataManager.getItem(h);z&&n.renderer.updateItemClasses(h,V.has(z.id),!1)}if(p>=0){let z=n.dataManager.getItem(p);z&&n.renderer.updateItemClasses(p,V.has(z.id),!0)}}else m(),l.emit("selection:change",{selected:ke(e),items:De(e,V=>n.dataManager.getItemById(V))})}}),n.methods.set("select",(...T)=>{e=it(e,T,o),b()}),n.methods.set("deselect",(...T)=>{e=at(e,T),b()}),n.methods.set("toggleSelect",T=>{e=Ge(e,T,o),b()}),n.methods.set("selectAll",()=>{if(o!=="multiple")return;let T=n.getAllLoadedItems();e=At(e,T,o),b()}),n.methods.set("clearSelection",()=>{e=_t(e);let{renderRange:T,isCompressed:H}=n.state.viewportState,h=n.getItemsForRange(T),M=H?n.getCompressionContext():void 0;n.renderer.render(h,T,e.selected,e.focusedIndex,M),l.emit("selection:change",{selected:[],items:[]})}),n.methods.set("getSelected",()=>ke(e)),n.methods.set("getSelectedItems",()=>De(e,T=>n.dataManager.getItemById(T))),n.destroyHandlers.push(()=>{v&&v.parentNode&&v.remove()})},destroy(){a&&a.parentNode&&a.remove(),a=null}}};var Re=(t,o,r={},e="vlist",a=!1)=>{let{autoHide:n=!0,autoHideDelay:s=1e3,minThumbSize:l=30,showOnHover:y=!0,hoverZoneWidth:f=16,showOnViewportEnter:u=!0}=r,S=0,I=0,L=0,c=0,m=!1,b=!1,v=0,T=0,H=0,h=null,M=!1,d=null,E=null,p=a?"width":"height",V=a?"translateX":"translateY",z=a?Q=>Q.clientX:Q=>Q.clientY,X=a?"left":"top",U=document.createElement("div"),ee=document.createElement("div"),j=y?document.createElement("div"):null,R=()=>{U.className=`${e}-scrollbar`,ee.className=`${e}-scrollbar-thumb`,a&&U.classList.add(`${e}-scrollbar--horizontal`),U.appendChild(ee),t.appendChild(U),j&&(j.className=`${e}-scrollbar-hover`,a?(j.classList.add(`${e}-scrollbar-hover--horizontal`),j.style.height=`${f}px`):j.style.width=`${f}px`,t.appendChild(j))},A=()=>{h&&(clearTimeout(h),h=null)},G=()=>{n&&(A(),h=setTimeout(C,s))},k=()=>{S<=I||(A(),M||(U.classList.add(`${e}-scrollbar--visible`),M=!0),n&&!m&&!b&&G())},C=()=>{m||b||(U.classList.remove(`${e}-scrollbar--visible`),M=!1)},x=(Q,te)=>{S=Q,I=te;let _=S>I;if(U.style.display=_?"":"none",!_){C();return}let P=I/S;L=Math.max(l,P*I),ee.style[p]=`${L}px`,c=I-L,D(H)},D=Q=>{if(H=Q,S<=I||c<=0)return;let te=S-I,P=Math.min(1,Math.max(0,Q/te))*c;ee.style.transform=`${V}(${P}px)`},O=Q=>{if(Q.target===ee)return;let te=U.getBoundingClientRect(),K=z(Q)-te[X]-L/2,B=Math.max(0,Math.min(K,c))/c,ne=S-I,se=B*ne;o(se),k()},N=Q=>{Q.preventDefault(),Q.stopPropagation(),m=!0,v=z(Q),T=H,A(),U.classList.add(`${e}-scrollbar--dragging`),document.addEventListener("mousemove",Y),document.addEventListener("mouseup",oe)},Y=Q=>{if(!m)return;let te=z(Q)-v,_=c>0?te/c:0,P=S-I,K=_*P,J=Math.max(0,Math.min(T+K,P)),ne=J/P*c;ee.style.transform=`${V}(${ne}px)`,E=J,d===null&&(d=requestAnimationFrame(()=>{E!==null&&o(E),d=null}))},oe=()=>{m=!1,d!==null&&(cancelAnimationFrame(d),d=null),E!==null&&(o(E),E=null),U.classList.remove(`${e}-scrollbar--dragging`),n&&!b&&G(),document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",oe)},de=()=>{u&&k()},$=()=>{m||(b=!1,n&&G())},ae=()=>{b=!0,A(),k()},Z=()=>{b=!1,!m&&n&&G()},re=()=>{A(),d!==null&&(cancelAnimationFrame(d),d=null),U.removeEventListener("click",O),U.removeEventListener("mouseenter",ae),U.removeEventListener("mouseleave",Z),ee.removeEventListener("mousedown",N),t.removeEventListener("mouseenter",de),t.removeEventListener("mouseleave",$),document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",oe),j&&(j.removeEventListener("mouseenter",ae),j.removeEventListener("mouseleave",Z),j.parentNode&&j.parentNode.removeChild(j)),U.parentNode&&U.parentNode.removeChild(U)};return R(),U.addEventListener("click",O),U.addEventListener("mouseenter",ae),U.addEventListener("mouseleave",Z),ee.addEventListener("mousedown",N),t.addEventListener("mouseenter",de),t.addEventListener("mouseleave",$),j&&(j.addEventListener("mouseenter",ae),j.addEventListener("mouseleave",Z)),{show:k,hide:C,updateBounds:x,updatePosition:D,isVisible:()=>M,destroy:re}};var Ot=t=>{let o=null;return{name:"withScrollbar",priority:30,setup(r){let{dom:e,config:a}=r,{classPrefix:n,horizontal:s}=a;o=Re(e.viewport,f=>r.scrollController.scrollTo(f),t??{},n,s),e.viewport.classList.contains(`${n}-viewport--custom-scrollbar`)||e.viewport.classList.add(`${n}-viewport--custom-scrollbar`);let l=r.getCachedCompression();o.updateBounds(l.virtualHeight,r.state.viewportState.containerHeight);let y=o;r.afterScroll.push((f,u)=>{y.updatePosition(f),y.show()}),r.resizeHandlers.push((f,u)=>{if(y){let S=r.getCachedCompression();y.updateBounds(S.virtualHeight,r.state.viewportState.containerHeight)}}),r.contentSizeHandlers.push(()=>{if(y){let f=r.getCachedCompression();y.updateBounds(f.virtualHeight,r.state.viewportState.containerHeight)}}),r.destroyHandlers.push(()=>{y&&y.destroy()})},destroy(){o&&(o.destroy(),o=null)}}};Ze();var $t=()=>{let t=null,o=0,r=!1;return{name:"withCompression",priority:20,setup(e){let{dom:a,config:n}=e,{classPrefix:s,horizontal:l}=n,y=()=>{let u=e.getVirtualTotal(),S=Se(u,e.heightCache);if(S.isCompressed&&!r){r=!0,e.scrollController.enableCompression(S),e.updateContentSize(S.virtualHeight),e.setScrollFns(()=>o,m=>{o=m});let I=a.viewport,L=m=>{m.preventDefault();let b=S.virtualHeight-e.state.viewportState.containerHeight;o=Math.max(0,Math.min(o+m.deltaY,b)),e.scrollController.scrollTo(o)};if(I.addEventListener("wheel",L,{passive:!1}),e.destroyHandlers.push(()=>{I.removeEventListener("wheel",L)}),!a.viewport.querySelector(`.${s}-scrollbar-track`)){t=Re(a.viewport,b=>e.scrollController.scrollTo(b),{},s,l),a.viewport.classList.contains(`${s}-viewport--custom-scrollbar`)||a.viewport.classList.add(`${s}-viewport--custom-scrollbar`),t.updateBounds(S.virtualHeight,e.state.viewportState.containerHeight);let m=t;e.afterScroll.push((b,v)=>{m&&(m.updatePosition(b),m.show())}),e.resizeHandlers.push((b,v)=>{if(m){let T=e.getCachedCompression();m.updateBounds(T.virtualHeight,e.state.viewportState.containerHeight)}})}}else!S.isCompressed&&r?(r=!1,e.scrollController.disableCompression(),e.updateContentSize(S.actualHeight)):S.isCompressed&&(e.scrollController.updateConfig({compression:S}),e.updateContentSize(S.virtualHeight));t&&t.updateBounds(S.virtualHeight,e.state.viewportState.containerHeight),e.state.cachedCompression={state:S,totalItems:u}};e.updateCompressionMode=y;let f=e.getCachedCompression.bind(e);e.getCachedCompression=()=>e.state.cachedCompression?e.state.cachedCompression.state:f(),e.setVisibleRangeFn((u,S,I,L,c)=>{let m=Se(L,I);yt(u,S,I,L,m,c)}),e.setScrollToPosFn((u,S,I,L,c)=>{let m=Se(L,S);return St(u,S,I,L,m,c)}),e.setPositionElementFn((u,S)=>{let I=e.getVirtualTotal(),L=Se(I,e.heightCache);if(L.isCompressed){let c=Math.round(Fe(S,e.scrollController.getScrollTop(),e.heightCache,I,e.state.viewportState.containerHeight,L)),m=e.config.horizontal;u.style.transform=m?`translateX(${c}px)`:`translateY(${c}px)`}else{let c=Math.round(e.heightCache.getOffset(S)),m=e.config.horizontal;u.style.transform=m?`translateX(${c}px)`:`translateY(${c}px)`}}),y(),e.destroyHandlers.push(()=>{t&&(t.destroy(),t=null)})},destroy(){t&&(t.destroy(),t=null)}}};var Bt=()=>({name:"withSnapshots",priority:50,methods:["getScrollSnapshot","restoreScroll"],setup(t){t.methods.set("getScrollSnapshot",()=>{let o=t.scrollController.getScrollTop(),r=t.getCachedCompression(),e=t.getVirtualTotal(),a=t.methods.get("getSelected"),n=a&&a().length>0?a():void 0;if(e===0){let f={index:0,offsetInItem:0};return n&&(f.selectedIds=n),f}let s,l;if(r.isCompressed){let u=o/r.virtualHeight*e;s=Math.max(0,Math.min(Math.floor(u),e-1)),l=(u-s)*t.heightCache.getHeight(s)}else s=t.heightCache.indexAtOffset(o),l=o-t.heightCache.getOffset(s);l=Math.max(0,l);let y={index:s,offsetInItem:l};return n&&(y.selectedIds=n),y}),t.methods.set("restoreScroll",o=>{let{index:r,offsetInItem:e,selectedIds:a}=o,n=t.getCachedCompression(),s=t.getVirtualTotal();if(s===0)return;let l=Math.max(0,Math.min(r,s-1)),y;if(n.isCompressed){let u=t.heightCache.getHeight(l),S=u>0?e/u:0;y=(l+S)/s*n.virtualHeight}else y=t.heightCache.getOffset(l)+e;let f=Math.max(0,n.virtualHeight-t.state.viewportState.containerHeight);if(y=Math.max(0,Math.min(y,f)),t.scrollController.scrollTo(y),a&&a.length>0){let u=t.methods.get("select");u&&u(...a)}})}});var zt=(t={})=>{let{chunkSize:o=100,maxCachedItems:r=5e3,evictionBuffer:e=200,onEvict:a}=t,n=new Map,s=0,l=0,y=R=>{let A=n.get(R);return A?A.lastAccess=Date.now():(A={items:new Array(o),count:0,lastAccess:Date.now()},n.set(R,A)),A},f=R=>Math.floor(R/o),u=R=>R%o,S=()=>s,I=R=>{s=R},L=R=>{if(R<0||R>=s)return;let A=f(R),G=n.get(A);if(G)return G.items[u(R)]},c=R=>{if(R<0||R>=s)return!1;let A=f(R),G=n.get(A);return G?G.items[u(R)]!==void 0:!1},m=(R,A)=>{let G=f(R),k=y(G),C=u(R),x=k.items[C]===void 0;k.items[C]=A,x&&(k.count++,l++),R>=s&&(s=R+1)},b=(R,A)=>{for(let G=0;G<A.length;G++){let k=A[G];k!==void 0&&m(R+G,k)}},v=R=>{if(R<0||R>=s)return!1;let A=f(R),G=n.get(A);if(!G)return!1;let k=u(R);return G.items[k]===void 0?!1:(G.items[k]=void 0,G.count--,l--,G.count===0&&n.delete(A),!0)},T=(R,A)=>{let G=[];for(let k=R;k<=A&&k<s;k++)G.push(L(k));return G},H=(R,A)=>{for(let G=R;G<=A&&G<s;G++)if(!c(G))return!1;return!0},h=()=>{let R=[],A=null,G=Array.from(n.keys()).sort((k,C)=>k-C);for(let k of G){let C=n.get(k);if(!C)continue;let x=k*o;for(let D=0;D<o;D++){let O=x+D;if(O>=s)break;C.items[D]!==void 0?A===null?A={start:O,end:O}:O===A.end+1?A.end=O:(R.push(A),A={start:O,end:O}):A!==null&&(R.push(A),A=null)}}return A!==null&&R.push(A),R},M=(R,A)=>{let G=[],k=null;for(let C=R;C<=A&&C<s;C++)c(C)?k!==null&&(G.push(k),k=null):k===null?k={start:C,end:C}:k.end=C;return k!==null&&G.push(k),G},d=R=>n.has(R),E=R=>{let A=n.get(R);A&&(A.lastAccess=Date.now())},p=(R,A)=>{if(R>A||n.size===0)return;let G=Date.now(),k=f(Math.max(0,R)),C=f(Math.min(s-1,A));for(let x=k;x<=C;x++){let D=n.get(x);D&&(D.lastAccess=G)}},V=(R,A)=>{if(l<=r)return 0;let G=Math.max(0,R-e),k=Math.min(s-1,A+e),C=f(G),x=f(k),D=0,O=[];for(let[N,Y]of n)(N<C||N>x)&&(D+=Y.count,O.push(N),l-=Y.count,n.delete(N));return D>0&&a&&a(D,O),D},z=()=>{if(l<=r)return 0;let R=Array.from(n.entries()).sort(([,k],[,C])=>k.lastAccess-C.lastAccess),A=0,G=[];for(let[k,C]of R){if(l<=r)break;A+=C.count,l-=C.count,G.push(k),n.delete(k)}return A>0&&a&&a(A,G),A},X=()=>({totalItems:s,cachedItems:l,cachedChunks:n.size,chunkSize:o,maxCachedItems:r,memoryEfficiency:s>0?1-l/s:1}),U=()=>l,ee=()=>{n.clear(),l=0};return{chunkSize:o,maxCachedItems:r,getTotal:S,setTotal:I,get:L,has:c,set:m,setRange:b,delete:v,getRange:T,isRangeLoaded:H,getLoadedRanges:h,findUnloadedRanges:M,getChunkIndex:f,isChunkLoaded:d,touchChunk:E,touchChunksForRange:p,evictDistant:V,evictToLimit:z,getStats:X,getCachedCount:U,clear:ee,reset:()=>{ee(),s=0}}},zn=t=>{if(t.length===0)return[];let o=[...t].sort((e,a)=>e.start-a.start),r=[{...o[0]}];for(let e=1;e<o.length;e++){let a=o[e],n=r[r.length-1];a.start<=n.end+1?n.end=Math.max(n.end,a.end):r.push({...a})}return r},Ut=(t,o,r)=>{let e=Math.floor(t.start/r)*r,a=Math.ceil((t.end+1)/r)*r-1,n={start:e,end:a};if(o.length===0)return[n];let s=[],l=zn(o),y=n.start;for(let f of l)if(!(f.end<y)&&(f.start>n.end||(f.start>y&&s.push({start:y,end:Math.min(f.start-1,n.end)}),y=f.end+1,y>n.end)))break;return y<=n.end&&s.push({start:y,end:n.end}),s};var Ee="_isPlaceholder",Un="__placeholder_",Nt=(t={})=>{let{enabled:o=!0,maskCharacter:r="\u2588",randomVariance:e=!0,maxSampleSize:a=20,customGenerator:n}=t,s=null,l=!1,y=0,f=v=>{if(!o||l||v.length===0)return;let T=new Map,H=new Map,h=Math.min(v.length,a);for(let M=0;M<h;M++){let d=v[M];if(!(!d||typeof d!="object"))for(let[E,p]of Object.entries(d)){if(E.startsWith("_")||E==="id")continue;H.has(E)||H.set(E,{lengths:[],types:new Set});let V=H.get(E),z=Array.isArray(p)?"array":typeof p;V.types.add(z),typeof p=="string"?V.lengths.push(p.length):p!=null&&V.lengths.push(String(p).length)}}for(let[M,d]of H){if(d.lengths.length===0)continue;let E=Math.min(...d.lengths),p=Math.max(...d.lengths),V=Math.round(d.lengths.reduce((X,U)=>X+U,0)/d.lengths.length),z="string";d.types.has("number")&&d.types.size===1?z="number":d.types.has("boolean")&&d.types.size===1?z="boolean":d.types.has("array")?z="array":d.types.has("object")&&!d.types.has("string")&&(z="object"),T.set(M,{minLength:E,maxLength:p,avgLength:V,type:z})}s=T,l=!0},u=()=>l,S=v=>{let T=v.avgLength;return e&&v.minLength!==v.maxLength&&(T=Math.floor(Math.random()*(v.maxLength-v.minLength+1)+v.minLength),Math.random()<.3&&(T=Math.max(1,T+Math.floor(Math.random()*3)-1))),r.repeat(Math.max(1,T))},I=v=>{if(n)return{...n(v),[Ee]:!0};let T={id:`${Un}${y++}`,[Ee]:!0,_index:v};if(!s||s.size===0)return T.label=r.repeat(12),T;for(let[H,h]of s)switch(h.type){case"string":T[H]=S(h);break;case"number":T[H]=0;break;case"boolean":T[H]=!1;break;case"array":T[H]=[];break;case"object":T[H]={};break;default:T[H]=S(h)}return T};return{analyzeStructure:f,hasAnalyzedStructure:u,generate:I,generateRange:(v,T)=>{let H=[];for(let h=v;h<=T;h++)H.push(I(h));return H},isPlaceholder:v=>!v||typeof v!="object"?!1:v[Ee]===!0,getPlaceholderKey:()=>Ee,clear:()=>{s=null,l=!1,y=0}}},Oe=t=>!t||typeof t!="object"?!1:t[Ee]===!0;var Nn=50,Wt=(t={})=>{let{adapter:o,initialItems:r,initialTotal:e,storage:a,placeholder:n,pageSize:s=Nn,onStateChange:l,onItemsLoaded:y,onItemsEvicted:f}=t,u=zt({...a,onEvict:(_,P)=>{f?.(_),h()}}),S=null,I=()=>(S||(S=Nt(n)),S),L=new Map,c=!1,m,b=!0,v,T=[],H=new Map,h=()=>{l?.(ee())},M=()=>{L.clear();let _=u.getLoadedRanges();for(let P of _)for(let K=P.start;K<=P.end;K++){let J=u.get(K);J&&!Oe(J)&&L.set(J.id,K)}},d=(_,P)=>{Oe(P)||L.set(P.id,_)},E=_=>{L.delete(_)},p=(_,P)=>`${_}-${P}`,V=()=>u.getTotal(),z=()=>u.getCachedCount(),X=()=>c,U=()=>b,ee=()=>({total:u.getTotal(),cached:u.getCachedCount(),isLoading:c,pendingRanges:T,error:m,hasMore:b,cursor:v}),j=()=>u,R=()=>I(),A=_=>{let P=u.get(_);if(P!==void 0)return P;if(_>=0&&_<u.getTotal())return I().generate(_)},G=_=>{let P=L.get(_);if(P!==void 0)return u.get(P)},k=_=>L.get(_)??-1,C=_=>{let P=u.get(_);return P!==void 0&&!Oe(P)},x=(_,P)=>{let K=[],J=u.getTotal(),B=0,ne=0;u.touchChunksForRange(_,Math.min(P,J-1));for(let se=_;se<=P&&se<J;se++){let be=u.get(se);be!==void 0?(K.push(be),B++):(K.push(I().generate(se)),ne++)}return K},D=_=>{u.setTotal(_),b=u.getCachedCount()<_,h()},O=(_,P=0,K)=>{S&&!S.hasAnalyzedStructure()&&_.length>0&&S.analyzeStructure(_);for(let J=0;J<_.length;J++){let B=_[J];if(B!==void 0){let ne=P+J;u.set(ne,B),d(ne,B)}}K!==void 0?u.setTotal(K):P+_.length>u.getTotal()&&u.setTotal(P+_.length),b=u.getCachedCount()<u.getTotal(),y?.(_,P,u.getTotal()),h()},N=(_,P)=>{let K=L.get(_);if(K===void 0)return!1;let J=u.get(K);if(!J)return!1;let B={...J,...P};return u.set(K,B),P.id!==void 0&&P.id!==_&&(E(_),d(K,B)),h(),!0},Y=_=>{let P=L.get(_);if(P===void 0)return!1;u.delete(P),E(_);let K=u.getTotal();return K>0&&u.setTotal(K-1),h(),!0},oe=async(_,P)=>{if(!o)return;let K=p(_,P);if(H.has(K))return;let J=u.getLoadedRanges(),B=Ut({start:_,end:P},J,u.chunkSize);if(B.length===0)return;let ne=u.chunkSize,se=[];for(let ue of B){let ie=Math.floor(ue.start/ne),fe=Math.floor(ue.end/ne);for(let le=ie;le<=fe;le++){let he=le*ne,ce=he+ne-1,we=p(he,ce);!se.some(ye=>ye.start===he)&&!H.has(we)&&se.push({start:he,end:ce})}}let be=[];for(let ue of B){let ie=Math.floor(ue.start/ne),fe=Math.floor(ue.end/ne);for(let le=ie;le<=fe;le++){let he=le*ne,ce=he+ne-1,we=p(he,ce);if(H.has(we)){let ye=H.get(we);be.includes(ye)||be.push(ye)}}}for(let ue of se){let ie=p(ue.start,ue.end),fe=(async()=>{T.push(ue),c=!0,m=void 0,h();try{let le=ue.end-ue.start+1,he={offset:ue.start,limit:le,cursor:void 0},ce=await o.read(he);O(ce.items,ue.start,ce.total),ce.cursor&&(v=ce.cursor),ce.hasMore!==void 0?b=ce.hasMore:ce.total!==void 0&&(b=u.getCachedCount()<ce.total)}catch(le){m=le instanceof Error?le:new Error(String(le))}finally{H.delete(ie),T=T.filter(le=>le.start!==ue.start||le.end!==ue.end),c=H.size>0,h()}})();H.set(ie,fe),be.push(fe)}await Promise.all(be)},de=async(_,P)=>{u.isRangeLoaded(_,P)||await oe(_,P)},$=async()=>{o&&await oe(0,s-1)},ae=async()=>{if(!o||c||!b)return!1;let _=u.getCachedCount(),P=u.getTotal(),K=_,J=Math.min(K+s-1,P>0?P-1:K+s-1);return K>=P&&P>0?(b=!1,!1):(await oe(K,J),u.getCachedCount()>_)},Z=async()=>{u.clear(),L.clear(),S&&S.clear(),v=void 0,b=!0,m=void 0,h(),await $()},re=(_,P)=>{u.evictDistant(_,P)>0&&M()},Q=()=>{u.clear(),L.clear(),v=void 0,m=void 0,T=[],c=!1,h()},te=()=>{u.reset(),L.clear(),S&&S.clear(),v=void 0,b=!0,m=void 0,T=[],c=!1,h()};return r&&r.length>0?O(r,0,e??r.length):e!==void 0&&u.setTotal(e),{getState:ee,getTotal:V,getCached:z,getIsLoading:X,getHasMore:U,getStorage:j,getPlaceholders:R,getItem:A,getItemById:G,getIndexById:k,isItemLoaded:C,getItemsInRange:x,setTotal:D,setItems:O,updateItem:N,removeItem:Y,loadRange:oe,ensureRange:de,loadInitial:$,loadMore:ae,reload:Z,evictDistant:re,clear:Q,reset:te}};var Kt=t=>{let{adapter:o,loading:r}=t,e=r?.cancelThreshold??15,a=r?.preloadThreshold??2,n=r?.preloadAhead??50;return{name:"withData",priority:20,methods:["reload"],setup(s){let{emitter:l}=s,y=s.config.reverse,f=s.config.overscan,u=Wt({adapter:o,pageSize:50,onStateChange:()=>{s.state.isInitialized&&(s.heightCache.rebuild(s.getVirtualTotal()),s.updateCompressionMode(),s.state.viewportState=et(s.state.viewportState,s.heightCache,s.getVirtualTotal(),f,s.getCachedCompression()),s.updateContentSize(s.state.viewportState.totalHeight),s.renderIfNeeded())},onItemsLoaded:(v,T,H)=>{s.state.isInitialized&&(s.heightCache.rebuild(s.getVirtualTotal()),s.forceRender(),l.emit("load:end",{items:v,total:H}))}});s.replaceDataManager(u);let S=null,I=null,L=0,c=()=>{if(I){let v=I;I=null,s.dataManager.ensureRange(v.start,v.end).catch(T=>{l.emit("error",{error:T,context:"ensureRange"})})}};s.afterScroll.push((v,T)=>{if(s.state.isDestroyed)return;let H=s.scrollController.getVelocity(),M=s.scrollController.isTracking()&&H<=e;if(I&&L>e&&H<=e){let p=I;I=null,s.dataManager.ensureRange(p.start,p.end).catch(V=>{l.emit("error",{error:V,context:"ensureRange"})})}L=H,M&&!s.dataManager.getIsLoading()&&s.dataManager.getHasMore()&&(y?v<200&&(l.emit("load:start",{offset:s.dataManager.getCached(),limit:50}),s.dataManager.loadMore().catch(p=>{l.emit("error",{error:p,context:"loadMore"})})):s.state.viewportState.totalHeight-v-s.state.viewportState.containerHeight<200&&(l.emit("load:start",{offset:s.dataManager.getCached(),limit:50}),s.dataManager.loadMore().catch(V=>{l.emit("error",{error:V,context:"loadMore"})})));let{renderRange:d}=s.state.viewportState;if(!S||d.start!==S.start||d.end!==S.end)if(S={start:d.start,end:d.end},M){I=null;let p=d.start,V=d.end,z=s.getVirtualTotal();H>a&&(T==="down"?V=Math.min(d.end+n,z-1):p=Math.max(d.start-n,0)),s.dataManager.ensureRange(p,V).catch(X=>{l.emit("error",{error:X,context:"ensureRange"})})}else I={start:d.start,end:d.end}});let m=200,b=null;s.afterScroll.push((v,T)=>{b!==null&&clearTimeout(b),b=setTimeout(()=>{b=null,c()},m)}),s.destroyHandlers.push(()=>{b!==null&&(clearTimeout(b),b=null)}),l.on("load:start",()=>{s.dom.root.setAttribute("aria-busy","true")}),l.on("load:end",()=>{s.dom.root.removeAttribute("aria-busy")}),s.methods.set("reload",async()=>{await s.dataManager.reload()}),l.emit("load:start",{offset:0,limit:50}),s.dataManager.loadInitial().catch(v=>{l.emit("error",{error:v,context:"loadInitial"})})}}};var qt=()=>{let t=null;return{name:"withWindow",priority:5,setup(o){let{dom:r,state:e,config:a,emitter:n}=o;r.root.style.overflow="visible",r.root.style.height="auto",r.viewport.classList.remove(`${a.classPrefix}-viewport--custom-scrollbar`),o.disableViewportResize(),o.setScrollTarget(window),o.setScrollFns(()=>{let f=r.viewport.getBoundingClientRect();return a.horizontal?Math.max(0,-f.left):Math.max(0,-f.top)},f=>{let u=r.viewport.getBoundingClientRect();if(a.horizontal){let S=u.left+window.scrollX;window.scrollTo(S+f,window.scrollY)}else{let S=u.top+window.scrollY;window.scrollTo(window.scrollX,S+f)}}),o.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),e.viewportState.containerHeight=window.innerHeight;let s=window.innerHeight,l=window.innerWidth,y=()=>{let f=window.innerWidth,u=window.innerHeight,S=a.horizontal?f:u,I=a.horizontal?l:s;if(!(Math.abs(S-I)<=1)){s=u,l=f,e.viewportState.containerHeight=u,n.emit("resize",{width:f,height:u});for(let L=0;L<o.resizeHandlers.length;L++)o.resizeHandlers[L](f,u);o.renderIfNeeded()}};window.addEventListener("resize",y,{passive:!0}),t=()=>{window.removeEventListener("resize",y)},o.destroyHandlers.push(t)},destroy(){t&&(t(),t=null)}}};var Yt=t=>{let o=qe(t);if(t.scroll?.element===window&&(o=o.use(qt())),t.adapter&&(o=o.use(Kt({adapter:t.adapter,...t.loading&&{loading:t.loading}}))),t.layout==="grid"){if(!t.grid)throw new Error("[vlist/builder] grid configuration is required when layout is 'grid'");if(!t.grid.columns||t.grid.columns<1)throw new Error("[vlist/builder] grid.columns must be a positive integer >= 1");let n={columns:t.grid.columns};t.grid.gap!==void 0&&(n.gap=t.grid.gap),o=o.use(Lt(n))}if(t.groups){if(t.direction==="horizontal")throw new Error("[vlist/builder] horizontal direction cannot be combined with groups");let n={getGroupForIndex:t.groups.getGroupForIndex,headerHeight:typeof t.groups.headerHeight=="function"?t.groups.headerHeight("",0):t.groups.headerHeight,headerTemplate:t.groups.headerTemplate};t.groups.sticky!==void 0&&(n.sticky=t.groups.sticky),o=o.use(xt(n))}let r=t.selection?.mode||"none";if(r!=="none"){let n={mode:r};t.selection?.initial!==void 0&&(n.initial=t.selection.initial),o=o.use(lt(n))}else o=o.use(lt({mode:"none"}));o=o.use($t());let e=t.scroll?.scrollbar||t.scrollbar;if(e!=="none"){let n=typeof e=="object"?e:{};o=o.use(Ot(n))}o=o.use(Bt());let a=o.build();return a.update=n=>{n.grid&&a.updateGrid&&a.updateGrid(n.grid),n.selectionMode!==void 0&&a.setSelectionMode&&a.setSelectionMode(n.selectionMode),n.itemHeight!==void 0&&console.warn("[vlist] Updating itemHeight via update() is not yet supported with the builder pattern. Please recreate the instance or use the full API from 'vlist/full'."),n.overscan!==void 0&&console.warn("[vlist] Updating overscan via update() is not yet supported with the builder pattern.")},a};function So(t){let o=Kn(null),r=qn(null);return Yn(()=>{let e=o.value;if(!e)return;let a=Zn(t);r.value=Yt({...a,container:e})}),Xt(()=>{r.value?.destroy(),r.value=null}),Xn(t)&&Zt(()=>t.value.items,e=>{r.value&&e&&r.value.setItems(e)}),{containerRef:o,instance:r}}function To(t,o,r){let e=null;Zt(t,a=>{e&&(e(),e=null),a&&(e=a.on(o,r))},{immediate:!0}),Xt(()=>{e&&(e(),e=null)})}export{So as useVList,To as useVListEvent};
|
package/dist/window/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var K=()=>{let E=null;return{name:"withWindow",priority:5,setup(P){let{dom:S,state:q,config:V,emitter:I}=P;S.root.style.overflow="visible",S.root.style.height="auto",S.viewport.classList.remove(`${V.classPrefix}-viewport--custom-scrollbar`),P.disableViewportResize(),P.setScrollTarget(window),P.setScrollFns(()=>{let y=S.viewport.getBoundingClientRect();if(V.horizontal)return Math.max(0,-y.left);else return Math.max(0,-y.top)},(y)=>{let b=S.viewport.getBoundingClientRect();if(V.horizontal){let j=b.left+window.scrollX;window.scrollTo(j+y,window.scrollY)}else{let j=b.top+window.scrollY;window.scrollTo(window.scrollX,j+y)}}),P.setContainerDimensions({width:()=>window.innerWidth,height:()=>window.innerHeight}),q.viewportState.containerHeight=window.innerHeight;let{innerHeight:B,innerWidth:F}=window,G=()=>{let{innerWidth:y,innerHeight:b}=window,j=V.horizontal?y:b,J=V.horizontal?F:B;if(Math.abs(j-J)<=1)return;B=b,F=y,q.viewportState.containerHeight=b,I.emit("resize",{width:y,height:b});for(let k=0;k<P.resizeHandlers.length;k++)P.resizeHandlers[k](y,b);P.renderIfNeeded()};window.addEventListener("resize",G,{passive:!0}),E=()=>{window.removeEventListener("resize",G)},P.destroyHandlers.push(E)},destroy(){if(E)E(),E=null}}};export{K as withWindow};
|