vlist 2.0.0 → 2.0.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.
Files changed (77) hide show
  1. package/dist/index.js +1 -28
  2. package/dist/internals.js +1 -60
  3. package/package.json +1 -1
  4. package/dist/constants.js +0 -83
  5. package/dist/core/create.js +0 -740
  6. package/dist/core/dom.js +0 -47
  7. package/dist/core/hooks.js +0 -67
  8. package/dist/core/index.js +0 -13
  9. package/dist/core/pipeline.js +0 -307
  10. package/dist/core/pool.js +0 -42
  11. package/dist/core/scroll.js +0 -137
  12. package/dist/core/sizes.js +0 -6
  13. package/dist/core/state.js +0 -56
  14. package/dist/core/types.js +0 -7
  15. package/dist/core/velocity.js +0 -33
  16. package/dist/events/emitter.js +0 -60
  17. package/dist/events/index.js +0 -6
  18. package/dist/plugins/a11y/index.js +0 -1
  19. package/dist/plugins/a11y/plugin.js +0 -259
  20. package/dist/plugins/async/index.js +0 -12
  21. package/dist/plugins/async/manager.js +0 -568
  22. package/dist/plugins/async/placeholder.js +0 -154
  23. package/dist/plugins/async/plugin.js +0 -311
  24. package/dist/plugins/async/sparse.js +0 -540
  25. package/dist/plugins/autosize/index.js +0 -4
  26. package/dist/plugins/autosize/plugin.js +0 -185
  27. package/dist/plugins/grid/index.js +0 -5
  28. package/dist/plugins/grid/layout.js +0 -275
  29. package/dist/plugins/grid/plugin.js +0 -347
  30. package/dist/plugins/grid/renderer.js +0 -525
  31. package/dist/plugins/grid/types.js +0 -11
  32. package/dist/plugins/groups/async-bridge.js +0 -246
  33. package/dist/plugins/groups/index.js +0 -13
  34. package/dist/plugins/groups/layout.js +0 -294
  35. package/dist/plugins/groups/plugin.js +0 -571
  36. package/dist/plugins/groups/sticky.js +0 -255
  37. package/dist/plugins/groups/types.js +0 -12
  38. package/dist/plugins/masonry/index.js +0 -6
  39. package/dist/plugins/masonry/layout.js +0 -261
  40. package/dist/plugins/masonry/plugin.js +0 -381
  41. package/dist/plugins/masonry/renderer.js +0 -354
  42. package/dist/plugins/masonry/types.js +0 -9
  43. package/dist/plugins/page/index.js +0 -5
  44. package/dist/plugins/page/plugin.js +0 -166
  45. package/dist/plugins/scale/index.js +0 -4
  46. package/dist/plugins/scale/plugin.js +0 -507
  47. package/dist/plugins/scrollbar/controller.js +0 -574
  48. package/dist/plugins/scrollbar/index.js +0 -6
  49. package/dist/plugins/scrollbar/plugin.js +0 -93
  50. package/dist/plugins/scrollbar/scrollbar.js +0 -556
  51. package/dist/plugins/selection/index.js +0 -7
  52. package/dist/plugins/selection/plugin.js +0 -601
  53. package/dist/plugins/selection/state.js +0 -332
  54. package/dist/plugins/snapshots/index.js +0 -5
  55. package/dist/plugins/snapshots/plugin.js +0 -301
  56. package/dist/plugins/sortable/index.js +0 -6
  57. package/dist/plugins/sortable/plugin.js +0 -753
  58. package/dist/plugins/table/header.js +0 -501
  59. package/dist/plugins/table/index.js +0 -12
  60. package/dist/plugins/table/layout.js +0 -211
  61. package/dist/plugins/table/plugin.js +0 -391
  62. package/dist/plugins/table/renderer.js +0 -625
  63. package/dist/plugins/table/types.js +0 -12
  64. package/dist/plugins/transition/index.js +0 -5
  65. package/dist/plugins/transition/plugin.js +0 -405
  66. package/dist/rendering/aria.js +0 -23
  67. package/dist/rendering/index.js +0 -18
  68. package/dist/rendering/measured.js +0 -98
  69. package/dist/rendering/renderer.js +0 -586
  70. package/dist/rendering/scale.js +0 -267
  71. package/dist/rendering/scroll.js +0 -71
  72. package/dist/rendering/sizes.js +0 -193
  73. package/dist/rendering/sort.js +0 -65
  74. package/dist/rendering/viewport.js +0 -268
  75. package/dist/types.js +0 -5
  76. package/dist/utils/padding.js +0 -49
  77. package/dist/utils/stats.js +0 -124
package/dist/index.js CHANGED
@@ -1,28 +1 @@
1
- /**
2
- * vlist - Lightweight Virtual List
3
- * High-performance virtual scrolling with zero dependencies
4
- * Builder-only API for optimal tree-shaking
5
- *
6
- * For low-level internals (size cache, renderers, selection state, etc.),
7
- * import from 'vlist/internals' instead.
8
- *
9
- * @packageDocumentation
10
- */
11
- // v2 factory + plugins
12
- export { createVList } from "./core/create";
13
- export { scale } from "./plugins/scale";
14
- export { scrollbar } from "./plugins/scrollbar";
15
- export { grid } from "./plugins/grid";
16
- export { a11y } from "./plugins/a11y";
17
- export { selection } from "./plugins/selection";
18
- export { page } from "./plugins/page";
19
- export { snapshots } from "./plugins/snapshots";
20
- export { transition } from "./plugins/transition";
21
- export { autosize } from "./plugins/autosize";
22
- export { masonry } from "./plugins/masonry";
23
- export { data } from "./plugins/async";
24
- export { groups } from "./plugins/groups";
25
- export { table } from "./plugins/table";
26
- export { sortable } from "./plugins/sortable";
27
- // Utils
28
- export { createStats } from "./utils/stats";
1
+ var l2=3,T0="vlist";var r2=50;var b0=50,y0=2,k0=15,P0=6,S2=16000000,m2=150,Q0=1,s2=(j)=>j<0.5?2*j*j:1-(-2*j+2)**2/2,a2=300;var w0="x",z0=20,j0="_isPlaceholder",C2="__placeholder_";var o2={top:0,right:0,bottom:0,left:0},v0=(j)=>{if(j==null)return o2;if(typeof j==="number")return j===0?o2:{top:j,right:j,bottom:j,left:j};if(j.length===2){let[Z,K]=j;return Z===0&&K===0?o2:{top:Z,right:K,bottom:Z,left:K}}let[$,q,X,J]=j;return $===0&&q===0&&X===0&&J===0?o2:{top:$,right:q,bottom:X,left:J}},C0=(j,$)=>$?j.left+j.right:j.top+j.bottom,f0=(j,$)=>$?j.top+j.bottom:j.left+j.right;function I0(j){let $={visibleIndices:new Int32Array(j),visibleOffsets:new Float64Array(j),visibleSizes:new Float64Array(j),visibleCount:0,startIndex:0,totalSize:0,capacity:j,scrollPosition:0,prevScrollPosition:0,scrollDirection:0,containerSize:0,crossSize:0,totalItems:0,prevRangeStart:0,prevRangeEnd:-1,renderPending:!1,initialized:!1,destroyed:!1,isCompressed:!1,compressionRatio:1,prevAriaTotal:-1,resizeCapacity(q,X,J=l2){if(X<=0||q<=0)return;let Z=Math.ceil(q/X)+J*2;if(Z<=$.capacity)return;let K=Z+8,M=new Int32Array(K),F=new Float64Array(K),U=new Float64Array(K);M.set($.visibleIndices),F.set($.visibleOffsets),U.set($.visibleSizes),$.visibleIndices=M,$.visibleOffsets=F,$.visibleSizes=U,$.capacity=K},clear(){$.visibleCount=0,$.startIndex=0}};return $}var T1=(j,$)=>{let q=$;return{getOffset:(X)=>X*j,getSize:(X)=>j,indexAtOffset:(X)=>{if(q===0||j===0)return 0;return Math.max(0,Math.min(Math.floor(X/j),q-1))},getTotalSize:()=>q*j,getTotal:()=>q,rebuild:(X)=>{q=X},isVariable:()=>!1}},b1=(j,$)=>{let q=$,X=new Float64Array(0),J=(K)=>{q=K,X=new Float64Array(K+1),X[0]=0;for(let M=0;M<K;M++)X[M+1]=X[M]+j(M)};J($);let Z=(K)=>{if(q===0)return 0;if(K<=0)return 0;if(K>=X[q])return q-1;let M=0,F=q-1;while(M<F){let U=M+F+1>>>1;if(X[U]<=K)M=U;else F=U-1}return M};return{getOffset:(K)=>{if(K<=0)return 0;if(K>=q)return X[q];return X[K]},getSize:(K)=>j(K),indexAtOffset:(K)=>Z(K),getTotalSize:()=>X[q]??0,getTotal:()=>q,rebuild:(K)=>J(K),isVariable:()=>!0}},i2=(j,$)=>{if(typeof j==="number")return T1(j,$);return b1(j,$)},q0=(j,$,q,X)=>{if(X===0)return 0;if(!j.isVariable())return Math.ceil(q/j.getSize(0));let J=0,Z=0,K=$;while(K<X&&Z<q)Z+=j.getSize(K),J++,K++;return Math.max(1,J)};function S0(j){let $=[],q=`${j}-item`,X=document.createElement("div");return X.className=q,{acquire(){if($.length>0)return $.pop();return X.cloneNode(!1)},release(J){if(J.className=q,J.removeAttribute("style"),J.removeAttribute("id"),J.removeAttribute("role"),J.removeAttribute("aria-selected"),J.removeAttribute("aria-posinset"),J.removeAttribute("aria-setsize"),J.removeAttribute("data-index"),J.removeAttribute("data-id"),J.innerHTML="",$.length<100)$.push(J)},get size(){return $.length},clear(){$.length=0}}}function p0(j){if(typeof j==="string"){let $=document.querySelector(j);if(!$)throw Error(`[vlist] Container not found: ${j}`);return $}return j}function h0(j,$,q,X,J){let Z=q?`${$} ${$}--horizontal`:$,K=q?"overflow-x:auto;overflow-y:hidden;height:100%;width:100%":"overflow:auto;height:100%;width:100%",M=q?"position:relative;height:100%":"position:relative;width:100%",F=` role="${X?"listbox":"list"}"`;if(X)F+=' tabindex="0"';if(J)F+=` aria-label="${J.replace(/"/g,"&quot;")}"`;if(q)F+=' aria-orientation="horizontal"';j.insertAdjacentHTML("beforeend",`<div class="${Z}"><div class="${$}-viewport" style="${K}" tabindex="-1"><div class="${$}-content" style="${M}"${F}></div></div></div>`);let U=j.lastElementChild,B=U.firstElementChild,l=B.firstElementChild,V=document.createElement("div");return V.className=`${$}-live`,V.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",V.setAttribute("aria-live","polite"),V.setAttribute("aria-atomic","true"),V.setAttribute("role","status"),U.appendChild(V),{root:U,viewport:B,content:l,liveRegion:V}}function u0(j){let{state:$,viewport:q,horizontal:X,wheelEnabled:J,onFrame:Z,onIdle:K}=j,M=j.idleTimeout||m2,F=j.scrollTarget??q,U=null,B=null;function l(){let H=X?q.scrollLeft:q.scrollTop;if(Math.abs(H-$.scrollPosition)<0.5)return;$.prevScrollPosition=$.scrollPosition,$.scrollPosition=H,$.scrollDirection=H>$.prevScrollPosition?1:H<$.prevScrollPosition?-1:0,Z(),D()}function V(H){if($.isCompressed)return;let L;if(X){if(Math.abs(H.deltaX)>Math.abs(H.deltaY))return;let W=q.scrollLeft,w=q.scrollWidth-q.clientWidth;if(L=Math.max(0,Math.min(W+H.deltaY*Q0,w)),Math.abs(L-W)<1)return;H.preventDefault(),q.scrollLeft=L}else{let W=q.scrollWidth>q.clientWidth;if(W&&Math.abs(H.deltaX)>Math.abs(H.deltaY))return;if(W&&H.deltaX!==0)H.preventDefault(),q.scrollLeft+=H.deltaX;let w=q.scrollTop,k=q.scrollHeight-q.clientHeight;if(L=Math.max(0,Math.min(w+H.deltaY*Q0,k)),Math.abs(L-w)<1)return;H.preventDefault(),q.scrollTop=L}$.prevScrollPosition=$.scrollPosition,$.scrollPosition=L,$.scrollDirection=L>$.prevScrollPosition?1:-1,Z(),D()}function D(){if(U!==null)clearTimeout(U);U=setTimeout(()=>{U=null,$.scrollDirection=0,K()},M)}function b(){if(B!==null)cancelAnimationFrame(B),B=null}function A(H,L,W,w=s2){b();let k=$.scrollPosition;if(Math.abs(H-k)<1){if(W)W(H);else if(X)q.scrollLeft=H;else q.scrollTop=H;return}let E=performance.now();function R(G){let z=G-E,I=Math.min(z/L,1),y=k+(H-k)*w(I);if(W)W(y);else if(X)q.scrollLeft=y;else q.scrollTop=y;if(!W)$.scrollPosition=y;if(Z(),I<1)B=requestAnimationFrame(R);else B=null}B=requestAnimationFrame(R)}return{attach(){if(F.addEventListener("scroll",l,{passive:!0}),J)F.addEventListener("wheel",V,{passive:!1})},detach(){if(F.removeEventListener("scroll",l),J)F.removeEventListener("wheel",V);if(b(),U!==null)clearTimeout(U),U=null},cancelScroll:b,smoothScrollTo:A}}var d2=[],y1={calculate:d2,commit:d2,afterScroll:d2,idle:d2,resize:d2};function g0(j){if(j.length===0)return y1;let $=[],q=[],X=[],J=[],Z=[];for(let K=0;K<j.length;K++){let M=j[K].hooks;if(M===void 0)continue;if(M.onCalculate!==void 0)$.push(M.onCalculate);if(M.onCommit!==void 0)q.push(M.onCommit);if(M.onAfterScroll!==void 0)X.push(M.onAfterScroll);if(M.onIdle!==void 0)J.push(M.onIdle);if(M.onResize!==void 0)Z.push(M.onResize)}return{calculate:$,commit:q,afterScroll:X,idle:J,resize:Z}}function x0(j,$){for(let q=0;q<j.length;q++)j[q]($)}function m0(j,$){for(let q=0;q<j.length;q++)j[q]($)}function X0(j,$,q){for(let X=0;X<j.length;X++)j[X]($,q)}function d0(j){for(let $=0;$<j.length;$++)j[$]()}function c0(j,$,q){for(let X=0;X<j.length;X++)j[X]($,q)}function l0(j,$,q,X,J,Z,K,M,F){let U=J!==0||Z!==0;return{prefix:j,selectedClass:`${j}-item--selected`,focusedClass:`${j}-item--focused`,placeholderClass:`${j}-item--placeholder`,replacedClass:`${j}-item--replaced`,translateProp:$?"translateX(":"translateY(",itemRole:q?"option":"listitem",interactive:q,horizontal:$,startPadding:X,gap:M,hasCrossPad:U,crossStartProp:U?$?"top":"left":"",crossEndProp:U?$?"bottom":"right":"",crossStartVal:U?J+"px":"",crossEndVal:U?Z+"px":"",oddClass:K,emitter:F??null}}function k1(j,$,q,X,J){if(j.containerSize<=0||j.totalItems===0)return j.clear(),!0;let{scrollPosition:Z,containerSize:K,totalItems:M}=j,F=J??0;j.totalSize=$.getTotalSize();let U=$.indexAtOffset(F>0?Math.max(0,Z-F):Z),B=$.indexAtOffset(Z+K);if(B<M-1)B++;U=Math.max(0,U),B=Math.min(M-1,Math.max(0,B));let l=Math.max(0,U-q),V=Math.min(M-1,B+q),D=Math.ceil(K/1)+q*2+10,b=V-l+1,A=Math.min(b,j.capacity,D);if(l===j.prevRangeStart&&V===j.prevRangeEnd&&!j.renderPending)return!1;j.visibleCount=A,j.startIndex=l;for(let H=0;H<A;H++){let L=l+H;j.visibleIndices[H]=L,j.visibleOffsets[H]=$.getOffset(L),j.visibleSizes[H]=$.getSize(L)}return x0(X.calculate,j),j.prevRangeStart=l,j.prevRangeEnd=V,j.renderPending=!1,!0}var v2={selected:!1,focused:!1};function P1(j,$,q){for(let X=0;X<$;X++)if(j[X]===q)return!0;return!1}var r0,s0,a0,o0;function w1(j,$){if(!P1(r0,s0,$))j.remove(),a0.release(j),o0.delete($)}function z1(j,$,q,X,J,Z,K,M,F,U){let B=F?null:J(),l=j.visibleCount,V=j.visibleIndices,D=K.interactive?String(j.totalItems):"",b=K.interactive&&j.totalItems!==j.prevAriaTotal,A=null;for(let H=0;H<l;H++){let L=V[H],W=j.visibleOffsets[H],w=j.visibleSizes[H],k=F?F(L):B[L];if(U)U(L,v2);else v2.selected=!1,v2.focused=!1;let E=Z.get(L),R=E;if(E===void 0){let G=$.acquire();if(k!==void 0){let y;try{y=X(k,L,v2)}catch(S){if(K.emitter)K.emitter.emit("error",{error:S instanceof Error?S:Error(String(S)),context:`template:render:${L}`});$.release(G);continue}if(typeof y==="string")G.innerHTML=y;else G.innerHTML="",G.appendChild(y)}if(G.setAttribute("role",K.itemRole),G.setAttribute("data-index",String(L)),K.interactive)G.id=K.prefix+"-item-"+L,G.setAttribute("aria-posinset",String(L+1)),G.setAttribute("aria-setsize",D);if(k!==void 0){let y=String(k.id);if(G.setAttribute("data-id",y),y.startsWith(C2))G.classList.add(K.placeholderClass)}if(K.hasCrossPad)G.style.setProperty(K.crossStartProp,K.crossStartVal),G.style.setProperty(K.crossEndProp,K.crossEndVal);if(U){if(G.classList.toggle(K.selectedClass,v2.selected),G.classList.toggle(K.focusedClass,v2.focused),v2.selected)G.setAttribute("aria-selected","true");else G.removeAttribute("aria-selected");G._lastSelected=v2.selected,G._lastFocused=v2.focused}if(K.oddClass)G.classList.toggle(K.oddClass,(L&1)===1);let z=W+K.startPadding;G.style.transform=K.translateProp+z+"px)",G._lastOffset=z;let I=w-K.gap;if(K.horizontal)G.style.width=I+"px";else G.style.height=I+"px";if(G._lastSize=I,G._lastItem=k,Z.set(L,G),A===null)A=document.createDocumentFragment();A.appendChild(G)}else{if(b)E.setAttribute("aria-setsize",D);if(k!==void 0&&R._lastItem!==k){let I=E.getAttribute("data-id"),y=String(k.id),S;try{S=X(k,L,v2)}catch(h){if(K.emitter)K.emitter.emit("error",{error:h instanceof Error?h:Error(String(h)),context:`template:render:${L}`});continue}if(typeof S==="string")E.innerHTML=S;else E.innerHTML="",E.appendChild(S);if(E.setAttribute("data-id",y),R._lastItem=k,I!==y){let h=I!==null&&I.startsWith(C2),r=y.startsWith(C2);if(h!==r)E.classList.toggle(K.placeholderClass,r);if(h&&!r)E.classList.add(K.replacedClass),setTimeout(()=>{E.classList.remove(K.replacedClass)},300)}}if(U){if(R._lastSelected!==v2.selected){if(E.classList.toggle(K.selectedClass,v2.selected),v2.selected)E.setAttribute("aria-selected","true");else E.removeAttribute("aria-selected");R._lastSelected=v2.selected}if(R._lastFocused!==v2.focused)E.classList.toggle(K.focusedClass,v2.focused),R._lastFocused=v2.focused}let G=W+K.startPadding;if(R._lastOffset!==G)E.style.transform=K.translateProp+G+"px)",R._lastOffset=G;let z=w-K.gap;if(R._lastSize!==z){if(K.horizontal)E.style.width=z+"px";else E.style.height=z+"px";R._lastSize=z}}}if(A!==null)q.appendChild(A);if(r0=V,s0=l,a0=$,o0=Z,Z.forEach(w1),K.interactive)j.prevAriaTotal=j.totalItems;m0(M.commit,j)}function Y0(j,$,q,X,J,Z,K,M,F,U,B,l){if(k1(j,$,q,U,F.startPadding))z1(j,X,J,Z,K,M,F,U,B,l)}var Z0=()=>{let j={},$=(Z,K)=>{if(!j[Z])j[Z]=new Set;return j[Z].add(K),()=>q(Z,K)},q=(Z,K)=>{j[Z]?.delete(K)};return{on:$,off:q,emit:(Z,K)=>{j[Z]?.forEach((M)=>{try{M(K)}catch(F){console.error(`[vlist] Error in event handler for "${String(Z)}":`,F)}})},clear:(Z)=>{if(Z)delete j[Z];else for(let K in j)delete j[K]}}};var i0=2,n0=(j=0)=>({velocity:0,sampleCount:0}),t0=(j,$)=>{let q=performance.now(),X=j._lt??q,J=j._lp??$,Z=q-X;if(j._lp=$,j._lt=q,Z===0)return j.sampleCount=Math.min(j.sampleCount+1,5),j;if(Z>100)return j.velocity=0,j.sampleCount=1,j;return j.velocity=Math.abs($-J)/Z,j.sampleCount=Math.min(j.sampleCount+1,5),j};function v1(j){let{item:$}=j;if($.height!==void 0&&typeof $.height==="number"){if(!Number.isFinite($.height)||$.height<=0)throw Error(`vlist: item.height must be a positive number, got ${$.height}`)}if($.width!==void 0&&typeof $.width==="number"){if(!Number.isFinite($.width)||$.width<=0)throw Error(`vlist: item.width must be a positive number, got ${$.width}`)}if($.estimatedHeight!==void 0){if(!Number.isFinite($.estimatedHeight)||$.estimatedHeight<=0)throw Error(`vlist: item.estimatedHeight must be a positive number, got ${$.estimatedHeight}`)}if($.estimatedWidth!==void 0){if(!Number.isFinite($.estimatedWidth)||$.estimatedWidth<=0)throw Error(`vlist: item.estimatedWidth must be a positive number, got ${$.estimatedWidth}`)}if($.gap!==void 0){if(typeof $.gap!=="number"||!Number.isFinite($.gap)||$.gap<0)throw Error(`vlist: item.gap must be a non-negative number, got ${$.gap}`)}if(j.overscan!==void 0){if(typeof j.overscan!=="number"||!Number.isFinite(j.overscan)||j.overscan<0)throw Error(`vlist: overscan must be a non-negative number, got ${j.overscan}`)}}function C1(j){let $=j.orientation==="horizontal",q=v0(j.padding);return{overscan:j.overscan??l2,horizontal:$,reverse:j.reverse??!1,classPrefix:j.classPrefix??T0,interactive:j.interactive??!0,mainAxisPadding:C0(q,$),crossAxisPadding:f0(q,$),startPadding:$?q.left:q.top,endPadding:$?q.right:q.bottom,crossPadStart:$?q.top:q.left,crossPadEnd:$?q.bottom:q.right,striped:j.item.striped||!1,gap:j.item.gap??0}}function f1(j,$){if($)return j.item.width??j.item.estimatedWidth??100;return j.item.height??j.item.estimatedHeight??40}function I1(j){let $=[...j];return $.sort((q,X)=>(q.priority??50)-(X.priority??50)),$}function S1(j){let $=new Set;for(let q of j){if($.has(q.name))throw Error(`[vlist] Duplicate plugin: ${q.name}`);$.add(q.name)}for(let q of j)if(q.conflicts){for(let X of q.conflicts)if($.has(X))throw Error(`[vlist] Plugin "${q.name}" conflicts with "${X}"`)}}function e0(j,$=[]){v1(j);let q=C1(j),X=f1(j,q.horizontal),J=q.gap,Z=J>0?typeof X==="function"?(X2)=>X(X2)+J:X+J:X,K=typeof X==="number"?X:20,M=j.items?.length??0,F=q.striped?`${q.classPrefix}-item--odd`:"",U=Z0(),B=l0(q.classPrefix,q.horizontal,q.interactive,q.startPadding,q.crossPadStart,q.crossPadEnd,F,J,U),l=$.length>0?I1($):$;if($.length>0)S1(l);let V=p0(j.container),D=h0(V,q.classPrefix,q.horizontal,q.interactive,j.ariaLabel);if(j.scroll?.scrollbar==="none")D.viewport.classList.add(`${q.classPrefix}-viewport--no-scrollbar`);if(j.scroll?.gutter==="stable")D.viewport.classList.add(`${q.classPrefix}-viewport--gutter-stable`);let A=i2(Z,M);if(J>0){let X2=A.getTotalSize;A.getTotalSize=()=>{let d=X2();return d>0?d-J:0}}let H=S0(q.classPrefix),L=Math.ceil(4096/K)+q.overscan*2+8,W=I0(L);W.totalItems=M;let w=j.items??[],k=()=>w,E=new Map,R=n0(),G={velocity:0,reliable:!1},z={range:{start:0,end:-1}},I={scrollPosition:0,direction:"down"},y={scrollPosition:0},S=-1,h=-1,r=-1,c=null,P=g0(l),T=new Map,v=[],Y=[],N=[],O=null,p=null,s=null,o=null,u=null,Q=null,_=null,C=null,g=null,i=null,f=!1,x=!1,a=null,e=0,t=0,Q2=null,Z2=null,G2=null,M2=null,W2=null;if(W.containerSize=q.horizontal?D.viewport.clientWidth:D.viewport.clientHeight,W.crossSize=q.horizontal?D.viewport.clientHeight:D.viewport.clientWidth,$.length>0){let X2={dom:D,sizeCache:A,pool:H,config:q,emitter:U,template:j.item.template,registerMethod(d,U2){T.set(d,U2)},getMethod(d){return T.get(d)},registerClickHandler(d){v.push(d)},registerKeydownHandler(d){Y.push(d)},registerDestroyHandler(d){N.push(d)},setSizeConfig(d){let U2=i2(d,W.totalItems);Object.assign(A,U2)},setVisibleRangeFn(d){},setScrollFns(d,U2){p=d,s=U2},setVirtualTotalFn(d){O=d},getItems:k,getItem(d){return Q?Q(d):w[d]},getState(){return W},rebuildSizeCache(){A.rebuild(W.totalItems)},updateContentSize(d){D.content.style[q.horizontal?"width":"height"]=d+q.mainAxisPadding+"px"},setRenderFn(d,U2){o=d,u=U2},renderIfNeeded(){E2()},forceRender(){D2()},setGetItemFn(d){Q=d},setItemStateFn(d){_=d},getItemStateFn(){return _},get rawSizeSpec(){return X},scrollTo(d){if(s)s(d);else if(q.horizontal)D.viewport.scrollLeft=d;else D.viewport.scrollTop=d},smoothScrollTo(d,U2,m){if(G2)G2(d,U2,void 0,m);else X2.scrollTo(d)},disableDefaultScroll(){f=!0},disableDefaultResize(){x=!0},setScrollTarget(d){a=d},setScrollToPosFn(d){M2=d},setScrollToIndexFn(d){W2=d},onScrollFrame:R2,onScrollIdle:A2,removeItemById(d){if(C)return C(d);let U2=w.findIndex((m)=>m.id===d);if(U2===-1)return-1;return w.splice(U2,1),W.totalItems=w.length,A.rebuild(W.totalItems),q2(),U2},insertItemAt(d,U2){if(g){g(d,U2);return}w.splice(U2,0,d),W.totalItems=w.length,A.rebuild(W.totalItems),q2()},setRemoveItemFn(d){C=d},setInsertItemFn(d){g=d},setUpdateItemFn(d){i=d},getRenderedElement(d){let U2=T.get("_getRenderedElement");if(U2)return U2(d);return E.get(d)??null},setNavConfig(d){if(d.ud!==void 0)e=d.ud;if(d.lr!==void 0)t=d.lr;if(d.scrollIndex)Q2=d.scrollIndex;if(d.navigate)Z2=d.navigate},getNavConfig:(()=>{let d={ud:0,lr:0,scrollIndex:null,navigate:null};return()=>{return d.ud=e,d.lr=t,d.scrollIndex=Q2,d.navigate=Z2,d}})()};for(let d of l)if(d.setup)try{d.setup(X2)}catch(U2){U.emit("error",{error:U2 instanceof Error?U2:Error(String(U2)),context:`plugin:setup:${d.name}`})}}let J2=q.classPrefix+"--scrolling",n=!1,$2=j.scroll?.idleTimeout??m2;function K2(){if(I.scrollPosition=W.scrollPosition,I.direction=W.scrollDirection>0?"down":"up",U.emit("scroll",I),t0(R,W.scrollPosition),G.velocity=R.velocity,G.reliable=R.sampleCount>=i0,U.emit("velocity:change",G),W.startIndex!==S||W.prevRangeEnd!==h)S=W.startIndex,h=W.prevRangeEnd,z.range.start=W.startIndex,z.range.end=W.prevRangeEnd,U.emit("range:change",z)}let B2=!1;function q2(){if(o)return;let X2=A.getTotalSize();if(D.content.style[q.horizontal?"width":"height"]=X2+q.mainAxisPadding+"px",!B2&&X2>S2)B2=!0,U.emit("error",{error:Error(`Content size (${X2}px) exceeds browser limit (${S2}px). Use the scale() plugin for large datasets.`),context:"content:size:overflow"})}function E2(){if(o)o();else Y0(W,A,q.overscan,H,D.content,j.item.template,k,E,B,P,Q,_)}function R2(){if(!n)n=!0,D.root.classList.add(J2);if(E2(),X0(P.afterScroll,W.scrollPosition,W.scrollDirection),W.scrollPosition!==r)r=W.scrollPosition,K2()}function A2(){if(n)n=!1,D.root.classList.remove(J2);W.scrollDirection=0,d0(P.idle),G.velocity=0,G.reliable=!1,U.emit("velocity:change",G),y.scrollPosition=W.scrollPosition,U.emit("scroll:idle",y)}function D2(){if(W.renderPending=!0,u)u();else Y0(W,A,q.overscan,H,D.content,j.item.template,k,E,B,P,Q,_);if(X0(P.afterScroll,W.scrollPosition,W.scrollDirection),W.scrollPosition!==r){if(r=W.scrollPosition,K2(),c!==null)clearTimeout(c);c=setTimeout(A2,$2)}}let b2=u0({state:W,viewport:D.viewport,horizontal:q.horizontal,wheelEnabled:f?!1:j.scroll?.wheel!==!1,idleTimeout:j.scroll?.idleTimeout??m2,...a?{scrollTarget:a}:{},onFrame:R2,onIdle:A2});G2=b2.smoothScrollTo;function y2(X2){let U2=X2.target.closest("[data-index]");if(!U2)return null;let m=parseInt(U2.getAttribute("data-index"),10);if(Number.isNaN(m))return null;let j2=w[m];if(j2===void 0)return null;return{item:j2,index:m}}function F2(X2){for(let U2=0;U2<v.length;U2++)v[U2](X2);let d=y2(X2);if(d)U.emit("item:click",{item:d.item,index:d.index,event:X2})}function k2(X2){let d=y2(X2);if(d)U.emit("item:dblclick",{item:d.item,index:d.index,event:X2})}function H2(X2){let d=y2(X2);if(d)U.emit("item:contextmenu",{item:d.item,index:d.index,event:X2})}function w2(X2){for(let d=0;d<Y.length;d++)Y[d](X2)}if(D.content.addEventListener("click",F2),D.content.addEventListener("dblclick",k2),D.content.addEventListener("contextmenu",H2),Y.length>0)D.content.addEventListener("keydown",w2);let N2=null;if(!x)setTimeout(()=>{if(W.destroyed)return;N2=new ResizeObserver((d)=>{for(let U2 of d){let{width:m,height:j2}=U2.contentRect,Y2=q.horizontal?m:j2,V2=q.horizontal?j2:m;if(Math.abs(Y2-W.containerSize)<1&&Math.abs(V2-W.crossSize)<1)continue;W.containerSize=Y2,W.crossSize=V2,W.resizeCapacity(Y2,K,q.overscan),D2(),c0(P.resize,m,j2),U.emit("resize",{width:m,height:j2})}}),N2.observe(D.viewport)},0);W.resizeCapacity(W.containerSize,K,q.overscan),q2(),W.initialized=!0;let L2=null;if(j.defer)L2=requestAnimationFrame(()=>{if(L2=null,!W.destroyed)E2()});else E2();if(!f)b2.attach();let P2={get element(){return D.root},get items(){return w},get total(){return O?O():w.length},setItems(X2){w=[...X2],W.totalItems=w.length,A.rebuild(W.totalItems),q2(),D2()},appendItems(X2){w.push(...X2),W.totalItems=w.length,A.rebuild(W.totalItems),q2(),D2()},prependItems(X2){w.unshift(...X2),W.totalItems=w.length,A.rebuild(W.totalItems),q2(),D2()},updateItem(X2,d){if(i){if(!i(X2,d))return}else{let U2=w.findIndex((m)=>m.id===X2);if(U2===-1)return;w[U2]={...w[U2],...d}}D2()},insertItem(X2,d){if(g)g(X2,d??W.totalItems);else{if(d===void 0)w.push(X2);else w.splice(d,0,X2);W.totalItems=w.length,A.rebuild(W.totalItems),q2()}D2()},removeItem(X2){if(C){if(C(X2)<0)return}else{let d=w.findIndex((U2)=>U2.id===X2);if(d===-1)return;w.splice(d,1),W.totalItems=w.length,A.rebuild(W.totalItems),q2()}D2()},removeItems(X2){if(C){let j2=0;for(let Y2 of X2)if(C(Y2)>=0)j2++;if(j2>0)D2();return j2}let d=new Set(X2),U2=w.length;w=w.filter((j2)=>!d.has(j2.id));let m=U2-w.length;if(m>0)W.totalItems=w.length,A.rebuild(W.totalItems),q2(),W.renderPending=!0,E2();return m},getItemAt(X2){return w[X2]},getIndexById(X2){return w.findIndex((d)=>d.id===X2)},scrollToIndex(X2,d="start"){let U2=O?O():w.length;if(U2===0)return;let m=Math.max(0,Math.min(X2,U2-1)),j2=typeof d==="string"?d:d.align??"start",Y2=typeof d==="object"?d.behavior:void 0,V2=typeof d==="object"?d.duration:void 0,_2=typeof d==="object"?d.easing:void 0;if(W2&&W2(m,j2,Y2,V2,_2)!==!1)return;let T2=A.getOffset(m),z2=A.getSize(m),O2=W.containerSize,p2=A.getTotalSize(),f2=q.mainAxisPadding,E1=Math.max(0,p2+f2-O2),I2;if(M2)I2=M2(m,A,O2,U2,j2);else{let R1=q.startPadding;switch(j2){case"center":I2=R1+T2-(O2-z2)/2;break;case"end":I2=T2+z2+f2-O2;break;default:I2=T2}I2=Math.max(0,Math.min(I2,E1))}if(Y2==="smooth")b2.smoothScrollTo(I2,V2??a2,s??void 0,_2);else if(s)s(I2);else if(q.horizontal)D.viewport.scrollLeft=I2;else D.viewport.scrollTop=I2},getScrollPosition(){return p?p():W.scrollPosition},on:U.on.bind(U),off:U.off.bind(U),destroy(){if(W.destroyed)return;if(W.destroyed=!0,n)n=!1,D.root.classList.remove(J2);if(L2!==null)cancelAnimationFrame(L2),L2=null;if(c!==null)clearTimeout(c),c=null;b2.detach(),N2?.disconnect(),D.content.removeEventListener("click",F2),D.content.removeEventListener("dblclick",k2),D.content.removeEventListener("contextmenu",H2),D.content.removeEventListener("keydown",w2);let X2=[];for(let d of N)try{d()}catch(U2){X2.push(U2 instanceof Error?U2:Error(String(U2)))}for(let d of l)if(d.destroy)try{d.destroy()}catch(U2){X2.push(U2 instanceof Error?U2:Error(String(U2)))}for(let[,d]of E)d.remove();if(E.clear(),H.clear(),D.root.remove(),U.emit("destroy",void 0),U.clear(),X2.length>0)for(let d of X2)console.error("vlist: error during destroy:",d)}};for(let[X2,d]of T)P2[X2]=d;return P2}var $1=(j,$,q)=>{let X=$.getTotalSize(),J=q===!0||X>S2,Z=X>S2?S2:X,K=X>0?Z/X:1;return{isCompressed:J,actualSize:X,virtualSize:Z,ratio:K}},J1=(j,$,q,X,J,Z)=>{if(X===0||$===0)return Z.start=0,Z.end=-1,Z;if(!J.isCompressed||J.ratio===1){let D=q.indexAtOffset(j),b=q.indexAtOffset(j+$);if(b<X-1)b++;return Z.start=Math.max(0,D),Z.end=Math.min(X-1,Math.max(0,b)),Z}let{virtualSize:K}=J,M=j/K,F=q.getTotalSize(),U=M*F,B=q.indexAtOffset(U),l=q0(q,Math.max(0,B),$,X),V=B+l;return Z.start=Math.max(0,B),Z.end=Math.min(X-1,Math.max(0,V)),Z};var n2=(j,$,q,X,J,Z,K)=>{if(!Z.isCompressed||X===0)return q.getOffset(j);if(Z.ratio===1)return q.getOffset(j)-$;let{virtualSize:M}=Z,F=$/M,U=q.getTotalSize(),B=F*U;return q.getOffset(j)-B},Q1=(j,$,q,X,J,Z="start")=>{if(X===0)return 0;let K;if(J.isCompressed&&J.ratio!==1){K=j/X*J.virtualSize;let B=$.getSize(j);switch(Z){case"center":K-=(q-B)/2*J.ratio;break;case"end":K-=(q-B)*J.ratio;break}return Math.max(0,K)}K=$.getOffset(j);let M=$.getSize(j);switch(Z){case"center":K-=(q-M)/2;break;case"end":K-=q-M;break}let F=J.virtualSize-q;return Math.max(0,Math.min(K,F))};var p1=(j)=>{if(typeof j!=="object"){let $=j??2;return{top:$,right:$,bottom:$,left:$}}return{top:j.top??2,right:j.right??2,bottom:j.bottom??2,left:j.left??2}},t2=(j,$,q={},X="vlist",J=!1,Z)=>{let{autoHide:K=!0,autoHideDelay:M=1000,minThumbSize:F=15,showOnHover:U=!0,showOnViewportEnter:B=!0,clickBehavior:l="scroll"}=q,V=l==="page"?"scroll":l,D=Z??j,b=p1(q.padding),A=J?b.left:b.top,H=J?b.right:b.bottom,L=J?b.bottom:b.right,W=q.hoverZoneWidth??L+16,w=0,k=0,E=0,R=0,G=!1,z=!1,I=0,y=0,S=0,h=null,r=!1,c=null,P=0,T=0,v=null,Y=null,N=null,O=J?"width":"height",p=J?"translateX":"translateY",s=J?(N2)=>N2.clientX:(N2)=>N2.clientY,o=J?"left":"top",u=document.createElement("div"),Q=document.createElement("div"),_=document.createElement("div"),C=J?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",g=()=>{if(D===j)return;let N2=j.offsetTop;u.style[J?"left":"top"]=N2?`calc(var(${C}) + ${N2}px)`:`var(${C})`,_.style[J?"left":"top"]=`${N2}px`},i=()=>{if(u.className=`${X}-scrollbar`,Q.className=`${X}-scrollbar__thumb`,J)u.classList.add(`${X}-scrollbar--horizontal`);if(q.padding!==void 0)D.style.setProperty("--vlist-custom-scrollbar-padding-top",`${b.top}px`),D.style.setProperty("--vlist-custom-scrollbar-padding-right",`${b.right}px`),D.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${b.bottom}px`),D.style.setProperty("--vlist-custom-scrollbar-padding-left",`${b.left}px`);if(q.minThumbSize!==void 0)u.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${F}px`);if(u.appendChild(Q),D.appendChild(u),_.className=`${X}-scrollbar__hover`,J)_.classList.add(`${X}-scrollbar__hover--horizontal`),_.style.height=`${W}px`;else _.style.width=`${W}px`;if(D.appendChild(_),D!==j)g()},f=()=>{if(h)clearTimeout(h),h=null},x=()=>{if(!K)return;f(),h=setTimeout(e,M)},a=()=>{if(w<=k)return;if(f(),!r)u.classList.add(`${X}-scrollbar--visible`),r=!0;if(K&&!G&&!z)x()},e=()=>{if(G||z)return;u.classList.remove(`${X}-scrollbar--visible`),r=!1},t=(N2,L2)=>{if(w=N2,k=L2,g(),w<=k){u.style.display="none",e();return}u.style.display="";let P2=Math.max(0,k-A-H),X2=k/w;if(E=Math.max(F,X2*P2),Q.style[O]=`${E}px`,R=P2-E,Q2(S),!K)a()},Q2=(N2)=>{if(S=N2,w<=k||R<=0)return;let L2=w-k,P2=Math.min(1,Math.max(0,N2/L2));Q.style.transform=`${p}(${P2*R}px)`},Z2=(N2)=>{if(N2.target===Q||V!=="jump"||R<=0)return;let L2=w-k,P2=u.getBoundingClientRect(),X2=s(N2)-P2[o],d=Math.max(0,Math.min(X2-E/2,R));$(d/R*L2),a()},G2=()=>{if(v!==null)clearTimeout(v),v=null;if(Y!==null)cancelAnimationFrame(Y),Y=null;N=null},M2=(N2)=>{let L2=R>0?T/N2*R:0;if(P<L2)return-1;if(P>=L2+E)return 1;return 0},W2=()=>{let N2=w-k,L2=M2(N2);if(L2===0){G2();return}if(L2===-1){if(T<=0){G2();return}let P2=Math.max(0,T-k);T=P2,$(P2)}else{if(T>=N2){G2();return}let P2=Math.min(N2,T+k);T=P2,$(P2)}a()},J2=(N2)=>{if(N===null){N=N2,Y=requestAnimationFrame(J2);return}let L2=w-k,P2=N2-N;N=N2;let X2=M2(L2);if(X2===0){G2();return}let d=12*k/1000,U2=Math.min(d*P2,k);if(X2===-1){if(T<=0){G2();return}let m=Math.max(0,T-U2);T=m,$(m)}else{if(T>=L2){G2();return}let m=Math.min(L2,T+U2);T=m,$(m)}f(),Y=requestAnimationFrame(J2)},n=()=>{G2(),x(),document.removeEventListener("mouseup",n)},$2=(N2)=>{if(N2.target===Q||V!=="scroll")return;N2.preventDefault();let L2=u.getBoundingClientRect();P=s(N2)-L2[o],T=S,W2(),v=setTimeout(()=>{Y=requestAnimationFrame(J2)},350),document.addEventListener("mouseup",n)},K2=(N2)=>{N2.preventDefault(),N2.stopPropagation(),G=!0,I=s(N2),y=S,f(),u.classList.add(`${X}-scrollbar--dragging`),document.addEventListener("mousemove",B2),document.addEventListener("mouseup",q2)},B2=(N2)=>{if(!G)return;let L2=s(N2)-I,P2=R>0?L2/R:0,X2=w-k,d=P2*X2,U2=Math.max(0,Math.min(y+d,X2));Q.style.transform=`${p}(${U2/X2*R}px)`,$(U2)},q2=()=>{if(G=!1,u.classList.remove(`${X}-scrollbar--dragging`),K&&!z)x();document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",q2)},E2=J?(N2)=>N2.touches[0].clientX:(N2)=>N2.touches[0].clientY,R2=(N2)=>{N2.stopPropagation(),G=!0,I=E2(N2),y=S,f(),u.classList.add(`${X}-scrollbar--dragging`)},A2=(N2)=>{if(!G)return;N2.preventDefault();let L2=E2(N2)-I,P2=R>0?L2/R:0,X2=w-k,d=P2*X2,U2=Math.max(0,Math.min(y+d,X2));Q.style.transform=`${p}(${U2/X2*R}px)`,$(U2)},D2=()=>{if(G=!1,u.classList.remove(`${X}-scrollbar--dragging`),K)x()},b2=(N2)=>{if(N2.target===Q)return;if(R<=0)return;let L2=N2.touches[0],P2=u.getBoundingClientRect(),X2=(J?L2.clientX:L2.clientY)-P2[o];if(V==="jump"){let d=w-k,U2=Math.max(0,Math.min(X2-E/2,R));$(U2/R*d)}else P=X2,T=S,W2();a()},y2=()=>{if(B)a()},F2=()=>{if(!G){if(z=!1,K)x()}},k2=()=>{z=!0,f(),a()},H2=()=>{if(z=!1,!G&&K)x()},w2=()=>{if(f(),G2(),c!==null)cancelAnimationFrame(c),c=null;u.removeEventListener("click",Z2),u.removeEventListener("mousedown",$2),u.removeEventListener("mouseenter",k2),document.removeEventListener("mouseup",n),u.removeEventListener("mouseleave",H2),u.removeEventListener("touchstart",b2),Q.removeEventListener("mousedown",K2),Q.removeEventListener("touchstart",R2),Q.removeEventListener("touchmove",A2),Q.removeEventListener("touchend",D2),j.removeEventListener("mouseenter",y2),j.removeEventListener("mouseleave",F2),document.removeEventListener("mousemove",B2),document.removeEventListener("mouseup",q2),_.removeEventListener("click",Z2),_.removeEventListener("mousedown",$2),_.removeEventListener("mouseenter",k2),_.removeEventListener("mouseleave",H2),_.remove(),D.style.removeProperty("--vlist-custom-scrollbar-padding-top"),D.style.removeProperty("--vlist-custom-scrollbar-padding-right"),D.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),D.style.removeProperty("--vlist-custom-scrollbar-padding-left"),u.remove()};if(i(),u.addEventListener("click",Z2),u.addEventListener("mousedown",$2),u.addEventListener("mouseenter",k2),u.addEventListener("mouseleave",H2),u.addEventListener("touchstart",b2,{passive:!0}),Q.addEventListener("mousedown",K2),Q.addEventListener("touchstart",R2,{passive:!0}),Q.addEventListener("touchmove",A2,{passive:!1}),Q.addEventListener("touchend",D2,{passive:!0}),j.addEventListener("mouseenter",y2),j.addEventListener("mouseleave",F2),_.addEventListener("click",Z2),_.addEventListener("mousedown",$2),U)_.addEventListener("mouseenter",k2),_.addEventListener("mouseleave",H2);return{show:a,hide:e,updateBounds:t,updatePosition:Q2,isVisible:()=>r,destroy:w2}};var h1=0.65,j1=0.5,q1=1.7,u1=0.95,g1=0.1,x2=5,x1=100;function K0(j){let $=j?.force??!1,q,X,J,Z,K,M={isCompressed:!1,actualSize:0,virtualSize:0,ratio:1},F=!1,U=0,B=null,l=!1,V=0,D=0,b=null,A=null,H=0,L=0,W=null,w=new Float64Array(x2),k=new Float64Array(x2),E=0,R=0,G={start:0,end:-1},z=-1,I=null;function y(){return Math.max(0,M.virtualSize+U-q.containerSize)}function S(){if(M.virtualSize<=0)return 0;return Math.max(0,q.containerSize*(1-M.ratio))}function h(Q){let _=q.totalItems;if(M=$1(_,X,$),M.isCompressed&&!F)s(Q);else if(!M.isCompressed&&F)o(Q);if(M.isCompressed){if(U=S(),q.isCompressed=!0,q.compressionRatio=M.ratio,Q.updateContentSize(M.virtualSize+U),B)B.updateBounds(M.virtualSize+U,q.containerSize)}}let r=null,c=null,P=null,T=null,v=null;function Y(Q){V=Q,D=Q,q.prevScrollPosition=q.scrollPosition,q.scrollPosition=Q,q.scrollDirection=Q>q.prevScrollPosition?1:-1,I.forceRender()}function N(){if(b!==null)cancelAnimationFrame(b),b=null;if(A!==null)cancelAnimationFrame(A),A=null}function O(Q){N(),Y(Math.max(0,Math.min(Q,y())))}function p(Q,_,C=s2){N();let g=Math.max(0,Math.min(Q,y())),i=V;if(Math.abs(g-i)<j1){Y(g);return}let f=performance.now(),x=(a)=>{let e=Math.min((a-f)/_,1);if(Y(i+(g-i)*C(e)),e<1)A=requestAnimationFrame(x);else A=null};A=requestAnimationFrame(x)}function s(Q){F=!0,q.isCompressed=!0;let _=Z?"scrollLeft":"scrollTop",C=Z?"overflowX":"overflow",g=J[_];if(J.style[C]="hidden",J[_]=0,g>0)V=g,D=g,q.scrollPosition=g;U=S();let i=()=>{let t=D-V,Q2=y();if(Math.abs(t)<j1)V=Math.max(0,Math.min(D,Q2)),D=V,b=null;else V+=t*h1,V=Math.max(0,Math.min(V,Q2)),b=requestAnimationFrame(i);q.prevScrollPosition=q.scrollPosition,q.scrollPosition=V,q.scrollDirection=V>q.prevScrollPosition?1:-1,Q.forceRender()};r=(t)=>{t.preventDefault();let Q2=y();if(D=Math.max(0,Math.min(D+t.deltaY*M.ratio*q1,Q2)),b===null)b=requestAnimationFrame(i)},J.addEventListener("wheel",r,{passive:!1});let f=()=>{if(W!==null)cancelAnimationFrame(W),W=null};c=(t)=>{if(f(),b!==null)cancelAnimationFrame(b),b=null;let Q2=t.touches[0];if(!Q2)return;let Z2=Z?Q2.clientX:Q2.clientY;H=Z2,L=V,E=1,R=0,w[0]=performance.now(),k[0]=Z2},P=(t)=>{t.preventDefault();let Q2=t.touches[0];if(!Q2)return;let Z2=Z?Q2.clientX:Q2.clientY,G2=performance.now(),M2=E<x2?E:R;if(w[M2]=G2,k[M2]=Z2,E<x2)E++;else R=(R+1)%x2;let W2=H-Z2,J2=y(),n=Math.max(0,Math.min(L+W2*M.ratio*q1,J2));V=n,D=n,q.prevScrollPosition=q.scrollPosition,q.scrollPosition=n,q.scrollDirection=n>q.prevScrollPosition?1:-1,Q.forceRender()},T=()=>{let t=performance.now(),Q2=1/0,Z2=0,G2=-1,M2=0,W2=0;for(let K2=0;K2<E;K2++){let B2=(R+K2)%x2,q2=w[B2];if(t-q2>=x1)continue;W2++;let E2=k[B2];if(q2<Q2)Q2=q2,Z2=E2;if(q2>G2)G2=q2,M2=E2}let J2=0;if(W2>=2){let K2=G2-Q2;if(K2>0)J2=(Z2-M2)/K2}if(E=0,R=0,Math.abs(J2)<g1)return;let n=J2*16,$2=()=>{if(n*=u1,Math.abs(n)<0.5){W=null;return}let K2=y(),B2=V+n;if(B2=Math.max(0,Math.min(B2,K2)),B2<=0&&n<0||B2>=K2&&n>0){V=B2,D=B2,q.scrollPosition=B2,Q.forceRender(),W=null;return}V=B2,D=B2,q.prevScrollPosition=q.scrollPosition,q.scrollPosition=B2,q.scrollDirection=B2>q.prevScrollPosition?1:-1,Q.forceRender(),W=requestAnimationFrame($2)};W=requestAnimationFrame($2)},J.addEventListener("touchstart",c,{passive:!0}),J.addEventListener("touchmove",P,{passive:!1}),J.addEventListener("touchend",T,{passive:!0}),J.addEventListener("touchcancel",T,{passive:!0}),v=()=>{if(J[_]!==0)J[_]=0},J.addEventListener("scroll",v,{passive:!0});let x=(t)=>{if(V=t,D=t,b!==null)cancelAnimationFrame(b),b=null;q.prevScrollPosition=q.scrollPosition,q.scrollPosition=t,q.scrollDirection=t>q.prevScrollPosition?1:-1,Q.forceRender()},a=Q.getMethod("_scrollbar:setCallback"),e=Q.getMethod("_scrollbar:getInstance");if(a&&e){a(x);let t=e();if(t)B=t,l=!1,B.updateBounds(M.virtualSize+U,q.containerSize)}else if(!B){let t=Q.config.classPrefix;if(B=t2(J,x,{},t,Z,Q.dom.root),l=!0,!J.classList.contains(`${t}-viewport--custom-scrollbar`))J.classList.add(`${t}-viewport--custom-scrollbar`);B.updateBounds(M.virtualSize+U,q.containerSize)}}function o(Q){F=!1,q.isCompressed=!1,q.compressionRatio=1,V=0,D=0,E=0,R=0,u();let _=Z?"overflowX":"overflow";J.style[_]="auto",U=0,Q.updateContentSize(X.getTotalSize())}function u(){if(b!==null)cancelAnimationFrame(b),b=null;if(A!==null)cancelAnimationFrame(A),A=null;if(W!==null)cancelAnimationFrame(W),W=null;if(r)J.removeEventListener("wheel",r),r=null;if(c)J.removeEventListener("touchstart",c),c=null;if(P)J.removeEventListener("touchmove",P),P=null;if(T)J.removeEventListener("touchend",T),J.removeEventListener("touchcancel",T),T=null;if(v)J.removeEventListener("scroll",v),v=null;if(B&&l)B.destroy();B=null,l=!1;let Q=Z?"scrollLeft":"scrollTop";if(J&&J[Q]!==0)J[Q]=0}return{name:"scale",priority:20,setup(Q){q=Q.getState(),X=Q.sizeCache,J=Q.dom.viewport,Z=Q.config.horizontal,K=Q.config.overscan,I=Q,Q.registerMethod("_updateCompressionMode",()=>h(Q)),Q.setScrollFns(()=>V,(_)=>{if(!M.isCompressed||!F){let g=Z?"scrollLeft":"scrollTop";J[g]=_;return}if(N(),W!==null)cancelAnimationFrame(W),W=null;let C=_*M.ratio;Y(Math.max(0,Math.min(C,y())))}),Q.setScrollToIndexFn((_,C,g,i,f)=>{if(!M.isCompressed||!F)return!1;let x=Q1(_,X,q.containerSize,q.totalItems,M,C);if(g==="smooth")p(x,i??a2,f);else O(x)}),h(Q),z=q.totalItems,Q.registerDestroyHandler(u)},hooks:{onCalculate(Q){if(Q.totalItems!==z&&I)z=Q.totalItems,h(I);if(!M.isCompressed||!F)return;let _=Q.totalItems;if(_===0||Q.containerSize<=0){Q.visibleCount=0;return}J1(Q.scrollPosition,Q.containerSize,X,_,M,G);let C=Math.max(0,G.start-K),g=Math.min(_-1,G.end+K),i=Math.min(g-C+1,Q.capacity);Q.visibleCount=i,Q.startIndex=C;for(let f=0;f<i;f++){let x=C+f;Q.visibleIndices[f]=x,Q.visibleOffsets[f]=n2(x,Q.scrollPosition,X,_,Q.containerSize,M),Q.visibleSizes[f]=X.getSize(x)}Q.prevRangeStart=C,Q.prevRangeEnd=g},onAfterScroll(Q){if(B&&F)B.updatePosition(Q),B.show()},onResize(){if(F){if(U=S(),B)B.updateBounds(M.virtualSize+U,q.containerSize);let Q=y();if(V>Q)V=Q,D=Q,q.scrollPosition=Q}}},destroy(){u()}}}function U0(j){let $=null,q,X,J=0,Z=0;return{name:"scrollbar",priority:15,setup(K){let{dom:M,config:F}=K,{classPrefix:U,horizontal:B}=F;q=K.getState(),X=K.sizeCache;let l=(V)=>{if(B)M.viewport.scrollLeft=V;else M.viewport.scrollTop=V};if(K.registerMethod("_scrollbar:setCallback",(V)=>{l=V}),$=t2(M.viewport,(V)=>{l(V)},j,U,B,M.root),M.viewport.classList.add(`${U}-viewport--custom-scrollbar`),j?.gutter)M.viewport.classList.add(`${U}-viewport--gutter`);queueMicrotask(()=>{if(!q.isCompressed)$?.updateBounds(X.getTotalSize(),q.containerSize)}),K.registerMethod("_scrollbar:getInstance",()=>$),K.registerDestroyHandler(()=>{if($?.destroy(),$=null,M.viewport.classList.remove(`${U}-viewport--custom-scrollbar`),j?.gutter)M.viewport.classList.remove(`${U}-viewport--gutter`)})},hooks:{onAfterScroll(K){if(!q.isCompressed){let M=X.getTotalSize(),F=q.containerSize;if(M!==J||F!==Z)J=M,Z=F,$?.updateBounds(M,F)}$?.updatePosition(K),$?.show()},onResize(){if(!q.isCompressed){let K=X.getTotalSize(),M=q.containerSize;J=K,Z=M,$?.updateBounds(K,M)}}},destroy(){$?.destroy(),$=null}}}var X1=(j)=>{let $=Math.max(1,Math.floor(j.columns)),q=j.gap??0,X=j.isHeaderFn,J={row:0,col:0},Z=(b)=>{if(b<=0)return 0;if(!X)return Math.ceil(b/$);let A=0,H=0,L=0;for(let W=0;W<b;W++)if(X(W)){if(L++,H)A++,H=0;A++,H=0}else if(H++,H>=$)A++,H=0;if(H)A++;return A},K=(b)=>{return J.row=M(b),J.col=F(b),J},M=(b)=>{if(!X)return Math.floor(b/$);let A=0,H=0;for(let L=0;L<=b;L++)if(X(L)){if(H)A++,H=0;if(L===b)return A;A++,H=0}else{if(L===b)return A;if(H++,H>=$)A++,H=0}return console.warn(`⚠️ getRow(${b}) fell through - returning ${A}`),A},F=(b)=>{if(!X)return b%$;if(X(b))return 0;let A=0;for(let H=0;H<=b;H++)if(X(H))A=0;else{if(H===b)return A;if(A++,A>=$)A=0}return A},U=(b,A,H)=>{if(H<=0)return{start:0,end:-1};if(!X){let E=Math.max(0,b*$),R=Math.min(H-1,(A+1)*$-1);return{start:E,end:R}}let L=-1,W=-1,w=0,k=0;for(let E=0;E<H;E++){if(X(E)){if(k)w++,k=0;if(w>=b&&w<=A){if(L<0)L=E;W=E}w++,k=0}else{if(w>=b&&w<=A){if(L<0)L=E;W=E}if(k++,k>=$)w++,k=0}if(w>A&&!k)break}if(L<0)return{start:0,end:-1};return{start:L,end:W}},B=(b,A,H)=>{if(A<0||A>=$)return-1;let L=b*$+A;if(L<0||L>=H)return-1;return L},l=(b)=>{let A=($-1)*q;return Math.max(0,(b-A)/$)};return{get columns(){return $},get gap(){return q},update:(b)=>{if(b.columns!==void 0)$=Math.max(1,Math.floor(b.columns));if(b.gap!==void 0)q=b.gap;if(b.isHeaderFn!==void 0)X=b.isHeaderFn},getTotalRows:Z,getPosition:K,getRow:M,getCol:F,getItemRange:U,getItemIndex:B,getColumnWidth:l,getColumnOffset:(b,A)=>{let H=l(A);return b*(H+q)}}};var h2={selected:!1,focused:!1};function B0(j){if(!j.columns||j.columns<1)throw Error("[vlist] grid: columns must be >= 1");let $,q,X,J,Z,K,M,F,U,B,l=null,V=new Map,D=0,b=-1,A=-1,H=!0;function L(){return $.getTotalRows(X.totalItems)}function W(G){let z=$.getRow(G),I=$.getCol(G),y=$.getColumnOffset(I,D),S=q.getOffset(z);if(F)return`translate(${Math.round(S)}px, ${Math.round(y)}px)`;return`translate(${Math.round(y)}px, ${Math.round(S)}px)`}function w(G,z){let I=$.getRow(z),y=$.getColumnWidth(D),S=q.getSize(I)-$.gap;if(F)G.style.width=`${S}px`,G.style.height=`${y}px`;else G.style.width=`${y}px`,G.style.height=`${S}px`}function k(G,z,I,y){if(y)y(I,h2);else h2.selected=!1,h2.focused=!1;let S=K(z,I,h2);if(typeof S==="string")G.innerHTML=S;else G.innerHTML="",G.appendChild(S)}function E(){if(X.destroyed)return;let{scrollPosition:G,containerSize:z}=X;if(!H&&G===b&&z===A)return;b=G,A=z,H=!1;let I=L();if(z<=0||I===0)return;let y=q.indexAtOffset(G),S=q.indexAtOffset(G+z);if(S<I-1)S++;y=Math.max(0,y),S=Math.min(I-1,Math.max(0,S));let h=Math.max(0,y-B),r=Math.min(I-1,S+B);if(h===X.prevRangeStart&&r===X.prevRangeEnd&&!X.renderPending)return;let c=$.getItemRange(h,r,X.totalItems);V.forEach((p,s)=>{if(s<c.start||s>c.end)p.el.remove(),J.release(p.el),V.delete(s)});let P=`${U}-item ${U}-grid-item`,T=l?.()??null,v=T?`${U}-item--selected`:"",Y=T?`${U}-item--focused`:"";for(let p=c.start;p<=c.end;p++){let s=M(p);if(!s)continue;let o=V.get(p);if(o===void 0){let u=J.acquire();u.className=P,u.setAttribute("data-index",String(p)),u.setAttribute("data-id",String(s.id)),k(u,s,p,T),o={el:u,lastId:s.id},V.set(p,o),Z.appendChild(u)}else if(o.lastId!==s.id)o.el.setAttribute("data-id",String(s.id)),o.lastId=s.id,k(o.el,s,p,T);if(T)if(T(p,h2),o.el.classList.toggle(v,h2.selected),o.el.classList.toggle(Y,h2.focused),h2.selected)o.el.setAttribute("aria-selected","true");else o.el.removeAttribute("aria-selected");w(o.el,p),o.el.style.transform=W(p)}let N=q.getTotalSize();Z.style[F?"width":"height"]=N+"px",X.prevRangeStart=h,X.prevRangeEnd=r,X.renderPending=!1;let O=c.end-c.start+1;X.visibleCount=Math.min(O,X.capacity),X.startIndex=c.start;for(let p=0;p<X.visibleCount;p++){let s=c.start+p,o=$.getRow(s);X.visibleIndices[p]=s,X.visibleOffsets[p]=q.getOffset(o),X.visibleSizes[p]=q.getSize(o)}}function R(){if(X.destroyed)return;q.rebuild(L()),X.prevRangeStart=-1,X.prevRangeEnd=-1,X.renderPending=!0,H=!0,E()}return{name:"grid",priority:10,conflicts:["masonry","table"],setup(G){let z=j.gap??0;$=X1({columns:j.columns,gap:z}),q=G.sizeCache,X=G.getState(),J=G.pool,Z=G.dom.content,K=G.template,F=G.config.horizontal,U=G.config.classPrefix,B=G.config.overscan,M=G.getItem.bind(G),l=()=>G.getItemStateFn(),D=X.crossSize;let I=G.rawSizeSpec,y;if(typeof I==="function"){let h={columnWidth:$.getColumnWidth(D),columns:j.columns,gap:z};y=I(0,h),G.setSizeConfig((r)=>{h.columnWidth=$.getColumnWidth(D);let c=r*j.columns;return I(c,h)+z})}else if(y=I,z>0)G.setSizeConfig(y+z);if(q.rebuild(L()),z>0){let S=q.getTotalSize;q.getTotalSize=()=>{let h=S();return h>0?h-z:0}}G.setVirtualTotalFn(()=>L()),G.dom.root.classList.add(`${U}--grid`),G.setRenderFn(E,R),G.registerMethod("getGridLayout",()=>$),G.registerMethod("updateGrid",(S)=>{if(S.columns!==void 0){if(!Number.isInteger(S.columns)||S.columns<1)throw Error("[vlist] updateGrid: columns must be >= 1")}if(S.gap!==void 0&&S.gap<0)throw Error("[vlist] updateGrid: gap must be >= 0");if($.update(S),S.gap!==void 0||S.columns!==void 0){let h=$.gap;if(typeof I==="function"){let r={columnWidth:$.getColumnWidth(D),columns:$.columns,gap:h};G.setSizeConfig((c)=>{r.columnWidth=$.getColumnWidth(D);let P=c*$.columns;return I(P,r)+h})}else G.setSizeConfig(y+h);q.rebuild(L())}if(S.columns!==void 0)G.setNavConfig({ud:$.columns});D=X.crossSize,R()}),G.registerMethod("scrollToIndex",(S,h="start")=>{let r=$.getRow(S),c=L();if(c===0)return;let P=Math.max(0,Math.min(r,c-1)),T=q.getOffset(P),v=q.getSize(P),Y=X.containerSize,N=q.getTotalSize(),O=Math.max(0,N-Y),p=typeof h==="string"?h:h.align??"start",s=typeof h==="object"?h.behavior:void 0,o=typeof h==="object"?h.duration:void 0,u;switch(p){case"center":u=T-(Y-v)/2;break;case"end":u=T-Y+v;break;default:u=T}if(u=Math.max(0,Math.min(u,O)),s==="smooth"&&o&&o>0)G.smoothScrollTo(u,o);else G.scrollTo(u)}),G.setNavConfig({total:()=>X.totalItems,ud:j.columns,lr:1,scrollIndex:(S)=>$.getRow(S)}),G.registerDestroyHandler(()=>{for(let[,S]of V)S.el.remove();V.clear(),G.dom.root.classList.remove(`${U}--grid`)})},hooks:{onResize(G,z){let I=X.crossSize;if(Math.abs(I-D)<1)return;D=I,V.forEach((y,S)=>{w(y.el,S),y.el.style.transform=W(S)})}},destroy(){V.clear()}}}function W0(){return{name:"a11y",priority:55,setup(j){if(j.getItemStateFn())return;let{dom:$,config:q,sizeCache:X}=j,J=j.getState(),Z=j.emitter,K=q.classPrefix,M=$.liveRegion,F=-1,U=!1,B,l=-1,V=(z)=>j.getItem(z),D=()=>J.totalItems,b={id:0,index:0},A={selected:[],items:[]};j.setItemStateFn((z,I)=>{I.selected=l===z,I.focused=U&&F===z});function H(z){M.textContent="",M.textContent=z}let L=(z,I,y)=>{let S=z;while(S>=0&&S<y){let h=V(S);if(!h||!h.__groupHeader)return S;S+=I}S=z-I;while(S>=0&&S<y){let h=V(S);if(!h||!h.__groupHeader)return S;S-=I}return z},W=(z)=>{let I=j.getNavConfig(),y=I.scrollIndex?I.scrollIndex(z):z,S=X.getOffset(y),h=X.getSize(y),r=J.scrollPosition,c=J.containerSize,P=q.startPadding,T=q.endPadding,v=S+P,Y=v+h,N=r;if(v<r)N=Math.max(0,S);else if(Y>r+c)N=Y+T-c;if(N!==r)J.scrollPosition=N,j.scrollTo(N)},w=(z,I)=>{if($.content.setAttribute("aria-activedescendant",`${K}-item-${z}`),I)W(z);j.forceRender()},k=(z)=>{F=z,U=!0,w(z,!0);let I=V(z);if(I)b.id=I.id,b.index=z,Z.emit("focus:change",b),H(`Item ${z+1} of ${D()}`)},E=(z,I)=>{if(F=z,I)U=!0;let y=V(z);if(y&&B===y.id)B=void 0,l=-1;else B=y?.id,l=y?z:-1;if(w(z,I),B!==void 0&&y&&B===y.id)A.selected[0]=B,A.selected.length=1,A.items[0]=y,A.items.length=1,H(`Selected, item ${z+1} of ${D()}`);else A.selected.length=0,A.items.length=0,H("Deselected");Z.emit("selection:change",A)},R=()=>{if(J.destroyed)return;if(!$.content.matches(":focus-visible"))return;let z=D();if(z===0)return;let I=F>=0?Math.min(F,z-1):0;I=L(I,1,z),k(I)},G=(z)=>{if(J.destroyed)return;let I=z.relatedTarget;if(I&&$.root.contains(I))return;U=!1,$.content.removeAttribute("aria-activedescendant"),j.forceRender()};$.content.addEventListener("focusin",R),$.content.addEventListener("focusout",G),j.registerKeydownHandler((z)=>{if(J.destroyed)return;let I=D();if(I===0)return;let y=F,S=y;if(z.key===" "||z.key==="Enter"){if(y>=0){let r=V(y);if(r&&!r.__groupHeader)E(y,!0)}z.preventDefault();return}let h=j.getNavConfig();if(h.navigate)switch(z.key){case"ArrowUp":case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"PageUp":case"PageDown":case"Home":case"End":S=h.navigate(y,z.key,I);break;default:return}else{let r=h.ud||1,c=h.lr,P=q.horizontal;switch(z.key){case"ArrowUp":if(P&&!c)return;S=y-(P?c:r);break;case"ArrowDown":if(P&&!c)return;S=y+(P?c:r);break;case"ArrowLeft":if(!P&&!c)return;S=y-(P?r:c);break;case"ArrowRight":if(!P&&!c)return;S=y+(P?r:c);break;case"PageUp":case"PageDown":{let T=X.getSize(Math.max(0,h.scrollIndex?h.scrollIndex(y):y)),Y=Math.max(1,Math.floor(J.containerSize/T))*r;S=z.key==="PageUp"?y-Y:y+Y;break}case"Home":S=0;break;case"End":S=I-1;break;default:return}}if(S<0)S=0;else if(S>=I)S=I-1;if(z.preventDefault(),S=L(S,S>=y?1:-1,I),S!==y)k(S)}),j.registerClickHandler((z)=>{if(J.destroyed)return;let I=z.target.closest("[data-index]");if(!I)return;let y=parseInt(I.dataset.index??"-1",10);if(y<0)return;let S=V(y);if(!S||S.__groupHeader)return;U=!1,$.content.focus({preventScroll:!0}),E(y,!1)}),j.registerDestroyHandler(()=>{$.content.removeEventListener("focusin",R),$.content.removeEventListener("focusout",G)})}}}var c2=(j,$,q)=>{if(String(q).startsWith(C2))return!1;let X=C2+$;if(j.has(X))return j.delete(X),j.add(q),!0;return!1},Y1=(j)=>({selected:new Set(j??[]),focusedIndex:-1,focusVisible:!1});function u2(j,$,q,X){if(q===0)return;let J=X?-$:$,Z=j.focusedIndex+J;if(Z<0)Z=0;if(Z>=q)Z=q-1;j.focusedIndex=Z}function e2(j){return Array.from(j)}var m1={preventScroll:!0};function N0(j){let $=j?.mode??"single",q=j?.followFocus??!1,X=j?.focusOnClick??!1,J,Z,K,M,F,U,B,l,V=-1,D=new Map,b=null,A=null,H=null,L=null,W,w=!1;function k(Y){if(w)return;w=!0,b=Y.getMethod("_layoutToDataIndex")??null,A=Y.getMethod("_dataToLayoutIndex")??null,H=Y.getMethod("_isGroupHeader")??null,L=Y.getMethod("_scrollItemIntoView")??null;let N=Y.getMethod("getGroupLayout");if(N){let O=N();W=()=>O.totalEntries}}let E=(Y)=>b?b(Y):Y,R=(Y)=>{let N=E(Y);return N>=0?Z(N):void 0},G=(Y,N,O)=>{if(!H)return Y;let p=Y;while(p>=0&&p<O){if(!H(p))return p;p+=N}p=Y-N;while(p>=0&&p<O){if(!H(p))return p;p-=N}return Y};function z(Y,N){if($==="single")J.selected.clear(),D.clear();if(J.selected.add(Y),N)D.set(Y,N)}function I(Y,N){if(J.selected.has(Y))J.selected.delete(Y),D.delete(Y);else z(Y,N)}function y(){J.selected.clear(),D.clear()}function S(Y){J.selected.delete(Y),D.delete(Y)}function h(Y,N){let O=Math.min(Y,N),p=Math.max(Y,N);for(let s=O;s<=p;s++){let o=Z(s);if(o)J.selected.add(o.id),D.set(o.id,o)}}function r(){let Y=B.totalItems;for(let N=0;N<Y;N++){let O=Z(N);if(O)J.selected.add(O.id),D.set(O.id,O)}}function c(){if(J.selected.size===0)return[];if(D.size>=J.selected.size){let p=[];for(let s of J.selected){let o=D.get(s);if(o)p.push(o)}if(p.length===J.selected.size)return p}let Y=[],N=new Set(J.selected),O=B.totalItems;for(let p=0;p<O&&N.size>0;p++){let s=Z(p);if(s&&N.has(s.id))Y.push(s),D.set(s.id,s),N.delete(s.id)}return Y}function P(){K(),M.emit("selection:change",{selected:e2(J.selected),items:c()})}let T=null,v=-1;return{name:"selection",priority:50,setup(Y){J=Y1(j?.initial),Z=Y.getItem.bind(Y),K=Y.forceRender.bind(Y),M=Y.emitter,F=Y.dom;let N=Y.config;if(U=Y.sizeCache,B=Y.getState(),l=Y.scrollTo.bind(Y),W=()=>B.totalItems,$==="none"){Y.registerMethod("select",()=>{}),Y.registerMethod("deselect",()=>{}),Y.registerMethod("toggleSelect",()=>{}),Y.registerMethod("selectAll",()=>{}),Y.registerMethod("clearSelection",()=>{}),Y.registerMethod("getSelected",()=>[]),Y.registerMethod("getSelectedItems",()=>[]),Y.registerMethod("selectNext",()=>{}),Y.registerMethod("selectPrevious",()=>{}),Y.registerMethod("_seedSelection",()=>{}),Y.registerMethod("_getFocusedId",()=>{return}),Y.registerMethod("_focusById",()=>{});return}let O=N.classPrefix;Y.setItemStateFn((Q,_)=>{if(k(Y),J.selected.size>0){let C=E(Q),g=C>=0?Z(C):void 0,i=g?.id;if(i!==void 0)if(J.selected.has(i))_.selected=!0;else if(c2(J.selected,C,i))_.selected=!0,D.delete(C2+C),D.set(i,g);else _.selected=!1;else _.selected=!1}else _.selected=!1;_.focused=J.focusVisible&&J.focusedIndex===Q}),Y.registerMethod("_getSelectedIds",()=>J.selected),Y.registerMethod("_getFocusedIndex",()=>J.focusVisible?J.focusedIndex:-1),F.root.classList.add(`${O}--selectable`);let p=(Q)=>{T=null,v=-1;let _=Q.target.closest("[data-index]");if(!_)return!1;let C=parseInt(_.dataset.index??"-1",10);if(C<0)return!1;let g=E(C);if(g<0)return!1;let i=Z(g);if(!i)return!1;return T=i,v=C,!0},s=(Q)=>{if(Q<0)return;if(L){L(Q);return}let _=Y.getNavConfig(),C=_.scrollIndex?_.scrollIndex(Q):Q,g=U.getOffset(C),i=U.getSize(C),f=B.containerSize,x=B.scrollPosition;if(g<x)l(g);else if(g+i>x+f)l(g-f+i)},o=()=>{if(B.destroyed)return;if(k(Y),!F.content.matches(":focus-visible")&&!F.root.matches(":focus-visible"))return;let Q=W();if(Q===0)return;let _=J.focusedIndex>=0?Math.min(J.focusedIndex,Q-1):0;_=G(_,1,Q),J.focusedIndex=_,J.focusVisible=!0,F.content.setAttribute("aria-activedescendant",`${O}-item-${_}`),s(_),K()};F.root.addEventListener("focusin",o);let u=(Q)=>{if(B.destroyed)return;let _=Q.relatedTarget;if(_&&F.root.contains(_))return;J.focusVisible=!1,K(),F.content.removeAttribute("aria-activedescendant")};if(F.root.addEventListener("focusout",u),Y.registerDestroyHandler(()=>{F.root.removeEventListener("focusin",o),F.root.removeEventListener("focusout",u)}),Y.registerClickHandler((Q)=>{if(k(Y),!p(Q))return;if($==="multiple"&&Q.shiftKey&&J.focusedIndex>=0){let _=V>=0?V:J.focusedIndex,C=E(_),g=E(v);if(C>=0&&g>=0)h(C,g);J.focusedIndex=v,J.focusVisible=X,V=v,P();return}J.focusedIndex=v,J.focusVisible=X,V=v,F.content.focus(m1),I(T.id,T),P()}),N.interactive)Y.registerKeydownHandler((Q)=>{k(Y);let _=W();if(_===0)return;let C=Y.getNavConfig(),g=J.focusedIndex,i=!1,f=!1;if(C.navigate&&(Q.key==="ArrowUp"||Q.key==="ArrowDown"||Q.key==="ArrowLeft"||Q.key==="ArrowRight"||Q.key==="PageUp"||Q.key==="PageDown"||Q.key==="Home"||Q.key==="End")){let a=C.navigate(J.focusedIndex,Q.key,_);if(a!==J.focusedIndex)J.focusedIndex=Math.max(0,Math.min(a,_-1));J.focusVisible=!0,i=!0}else switch(Q.key){case"ArrowUp":{let a=C.ud||1,e=C.lr,t=N.horizontal;if(t&&!e)break;u2(J,-(t?e:a),_,N.reverse),J.focusVisible=!0,i=!0;break}case"ArrowDown":{let a=C.ud||1,e=C.lr,t=N.horizontal;if(t&&!e)break;u2(J,t?e:a,_,N.reverse),J.focusVisible=!0,i=!0;break}case"ArrowLeft":{let a=C.ud||1,e=C.lr,t=N.horizontal;if(!t&&!e)break;u2(J,-(t?a:e),_,N.reverse),J.focusVisible=!0,i=!0;break}case"ArrowRight":{let a=C.ud||1,e=C.lr,t=N.horizontal;if(!t&&!e)break;u2(J,t?a:e,_,N.reverse),J.focusVisible=!0,i=!0;break}case"Home":if(_>0)J.focusedIndex=0;J.focusVisible=!0,i=!0;break;case"End":if(_>0)J.focusedIndex=_-1;J.focusVisible=!0,i=!0;break;case"PageUp":case"PageDown":{let a=C.ud||1,e=Math.max(0,J.focusedIndex),t=C.scrollIndex?C.scrollIndex(e):e,Q2=U.getSize(t),Z2=B.containerSize,M2=(Q2>0?Math.max(1,Math.floor(Z2/Q2)):10)*a;if(b&&A){let W2=b(J.focusedIndex),J2=Q.key==="PageUp"?-M2:M2,n=B.totalItems-1;J.focusedIndex=A(Math.max(0,Math.min(n,W2+J2)))}else u2(J,Q.key==="PageUp"?-M2:M2,_);J.focusVisible=!0,i=!0;break}case" ":case"Enter":if(Q.key===" "&&Q.shiftKey&&$==="multiple"&&J.focusedIndex>=0){if(V>=0){let a=E(V),e=E(J.focusedIndex);if(a>=0&&e>=0)h(a,e)}J.focusVisible=!0,f=!0,i=!0;break}if(J.focusedIndex>=0){let a=R(J.focusedIndex);if(a)I(a.id,a),V=J.focusedIndex;J.focusVisible=!0,f=!0,i=!0}break;case"a":if((Q.ctrlKey||Q.metaKey)&&$==="multiple"){if(J.selected.size===B.totalItems)y();else r();J.focusVisible=!0,f=!0,i=!0}break;case"Delete":case"Backspace":if(J.selected.size>0)M.emit("delete",{selected:e2(J.selected),items:c()}),i=!0;break}if(J.focusedIndex!==g&&H){let a=J.focusedIndex>g?1:-1;J.focusedIndex=G(J.focusedIndex,a,_)}let x=J.focusedIndex!==g;if(Q.shiftKey&&$==="multiple"&&!f&&x){if(Q.key==="ArrowUp"||Q.key==="ArrowDown"||Q.key==="ArrowLeft"||Q.key==="ArrowRight"){let t=R(J.focusedIndex);if(t)I(t.id,t);V=J.focusedIndex,f=!0}if((Q.ctrlKey||Q.metaKey)&&(Q.key==="Home"||Q.key==="End")){let t=E(g>=0?g:J.focusedIndex),Q2=E(J.focusedIndex);if(t>=0&&Q2>=0)h(t,Q2);V=J.focusedIndex,f=!0}}if(q&&$==="single"&&!f&&x&&J.focusedIndex>=0){let a=R(J.focusedIndex);if(a)z(a.id,a);f=!0}if(i){if(Q.preventDefault(),x&&J.focusedIndex>=0)s(J.focusedIndex),F.content.setAttribute("aria-activedescendant",`${O}-item-${J.focusedIndex}`);if(f)P();else if(x){if(K(),J.focusedIndex>=0){let a=R(J.focusedIndex);if(a)M.emit("focus:change",{id:a.id,index:J.focusedIndex})}}}});Y.registerMethod("select",(...Q)=>{for(let _ of Q)z(_);P()}),Y.registerMethod("deselect",(...Q)=>{for(let _ of Q)S(_);P()}),Y.registerMethod("toggleSelect",(Q)=>{I(Q),P()}),Y.registerMethod("selectAll",()=>{if($!=="multiple")return;r(),P()}),Y.registerMethod("clearSelection",()=>{y(),P()}),Y.registerMethod("getSelected",()=>{return e2(J.selected)}),Y.registerMethod("getSelectedItems",()=>{return c()}),Y.registerMethod("selectNext",()=>{k(Y);let Q=W();if(Q===0)return;if(u2(J,1,Q,N.reverse),H)J.focusedIndex=G(J.focusedIndex,1,Q);let _=R(J.focusedIndex);if(_)z(_.id,_);P()}),Y.registerMethod("selectPrevious",()=>{k(Y);let Q=W();if(Q===0)return;if(u2(J,-1,Q,N.reverse),H)J.focusedIndex=G(J.focusedIndex,-1,Q);let _=R(J.focusedIndex);if(_)z(_.id,_);P()}),Y.registerMethod("_seedSelection",(Q)=>{for(let _ of Q)J.selected.add(_)}),Y.registerMethod("_getFocusedId",()=>{if(J.focusedIndex<0)return;return R(J.focusedIndex)?.id}),Y.registerMethod("_focusById",(Q)=>{let _=B.totalItems;for(let C=0;C<_;C++){let g=Z(C);if(g&&g.id===Q){let i=A?A(C):C;J.focusedIndex=i,M.emit("focus:change",{id:Q,index:i});return}}})},destroy(){D.clear()}}}var $0=(j)=>j==null?0:typeof j==="function"?j():j;function V0(j){let $=j?.scrollPadding,q,X;return{name:"page",priority:5,setup(J){let{dom:Z,sizeCache:K,config:M,emitter:F}=J,U=M.horizontal,B=window,l=J.getState();if(J.disableDefaultScroll(),J.disableDefaultResize(),Z.root.style.overflow="visible",Z.root.style.height="auto",U)Z.viewport.style.overflowX="visible",Z.viewport.style.overflowY="visible";else Z.viewport.style.overflow="visible";Z.viewport.classList.remove(`${M.classPrefix}-viewport--custom-scrollbar`),J.setScrollFns(()=>{let L=Z.viewport.getBoundingClientRect();return Math.max(0,U?-L.left:-L.top)},(L)=>{let W=Z.viewport.getBoundingClientRect(),w=(U?W.left+B.scrollX:W.top+B.scrollY)+L;if(U)B.scrollTo({left:w,top:B.scrollY,behavior:"instant"});else B.scrollTo({left:B.scrollX,top:w,behavior:"instant"})}),l.containerSize=U?B.innerWidth:B.innerHeight,l.crossSize=U?B.innerHeight:B.innerWidth;let V=null,D=()=>{let L=Z.viewport.getBoundingClientRect(),W=Math.max(0,U?-L.left:-L.top);if(l.prevScrollPosition=l.scrollPosition,l.scrollPosition=W,l.scrollDirection=W>l.prevScrollPosition?1:W<l.prevScrollPosition?-1:0,J.onScrollFrame(),V!==null)clearTimeout(V);V=setTimeout(()=>{V=null,J.onScrollIdle()},150)};B.addEventListener("scroll",D,{passive:!0}),X=()=>B.removeEventListener("scroll",D);let{innerWidth:b,innerHeight:A}=B,H=()=>{let{innerWidth:L,innerHeight:W}=B;if((U?Math.abs(L-b):Math.abs(W-A))<1)return;b=L,A=W,l.containerSize=U?L:W,l.crossSize=U?W:L,J.forceRender(),F.emit("resize",{width:L,height:W})};if(B.addEventListener("resize",H),q=()=>B.removeEventListener("resize",H),$)J.setScrollToPosFn((L,W,w,k,E)=>{let R=$0(U?$.left:$.top),G=$0(U?$.right:$.bottom);if(k===0)return 0;let z=Math.max(0,Math.min(L,k-1)),I=W.getOffset(z),y=W.getSize(z),S=W.getTotalSize(),h=Math.max(0,S-w+G),r;switch(E){case"center":r=I-R-(w-R-G-y)/2;break;case"end":r=I-w+y+G;break;default:r=I-R}return Math.max(-R,Math.min(r,h))}),J.registerMethod("_scrollItemIntoView",(L)=>{let W=U?B.innerWidth:B.innerHeight,w=$0(U?$.left:$.top),k=$0(U?$.right:$.bottom),E=Z.viewport.getBoundingClientRect(),R=U?B.scrollX:B.scrollY,G=U?E.left:E.top,z=G+R,I=K.getOffset(L),y=K.getSize(L),S=G+I,h=W-k,r=R;if(S<w)r=z+I-w;else if(S+y>h)r=z+I+y-h;if(r!==R)if(U)B.scrollTo({left:r,top:B.scrollY,behavior:"instant"});else B.scrollTo({left:B.scrollX,top:r,behavior:"instant"})});J.registerDestroyHandler(()=>{if(X?.(),q?.(),V!==null)clearTimeout(V)})},destroy(){X?.(),q?.(),X=void 0,q=void 0}}}var d1=(j)=>{try{let $=sessionStorage.getItem(j);if(!$)return;return JSON.parse($)}catch{return}};function M0(j){let $=j?.autoSave,q=$?d1($):j?.restore,X=!1,J=null;return{name:"snapshots",priority:50,setup(Z){let{sizeCache:K,emitter:M}=Z,F=Z.getState(),U=()=>{let{scrollPosition:V,totalItems:D}=F,A=Z.getMethod("getSelected")?.();if(D===0){let G={index:0,offsetInItem:0,total:0};if(A?.length)G.selectedIds=A;return G}let H,L;if(F.isCompressed&&F.compressionRatio!==1){let G=F.totalSize,I=V/G*D;H=Math.max(0,Math.min(Math.floor(I),D-1)),L=(I-H)*K.getSize(H)}else H=K.indexAtOffset(V),L=V-K.getOffset(H);L=Math.max(0,L);let W={index:H,offsetInItem:L,total:D,scrollTop:V},w=K.getSize(H);if(w)W.offsetRatio=L/w;let k=Z.getMethod("_layoutToDataIndex");if(k){let G=k(H);if(G<0){for(let z=H+1;z<D;z++)if(G=k(z),G>=0)break}if(G>=0)W.dataIndex=G}let E=Z.getMethod("_getTotal");if(E)W.dataTotal=E();if(A?.length)W.selectedIds=A;let R=Z.getMethod("_getFocusedId");if(R){let G=R();if(G!==void 0)W.focusedId=G}return W};Z.registerMethod("getScrollSnapshot",U);let B=(V,D=!0)=>{let{index:b,offsetInItem:A,selectedIds:H,focusedId:L}=V,W=F.totalItems,w=V.dataTotal??V.total;if(W===0&&w&&w>0){let P=Z.getMethod("_setTotal");if(P)P(w),W=F.totalItems;K.rebuild(W);let T=Z.getMethod("_updateCompressionMode");if(T)T();if(!F.isCompressed)Z.updateContentSize(K.getTotalSize())}if(W===0)return;if(!Number.isFinite(b)||!Number.isFinite(A))return;if(K.getTotal()!==W){K.rebuild(W);let P=Z.getMethod("_updateCompressionMode");if(P)P();if(!F.isCompressed)Z.updateContentSize(K.getTotalSize())}let E=Z.getMethod("_dataToLayoutIndex"),R=b;if(V.dataIndex!==void 0&&V.dataIndex>=0)R=E?E(V.dataIndex):V.dataIndex;else if(E)R=E(b);let G=Math.max(0,Math.min(R,W-1)),z=K.getSize(G),I=V.offsetRatio!==void 0?V.offsetRatio*z:Math.min(A,z),y;if(F.isCompressed&&F.compressionRatio!==1){let P=Z.getMethod("_getTotal")?.(),T=P!==void 0&&V.dataTotal===P;if(V.scrollTop!==void 0&&(V.total===W||T))y=V.scrollTop;else{let v=z?I/z:0;y=(G+v)/W*F.totalSize}}else y=K.getOffset(G)+I;let S=Math.max(0,F.totalSize-F.containerSize);y=Math.max(0,Math.min(y,S));let h=y===V.scrollTop;if(V.dataIndex!==void 0&&V.dataIndex>=0){let P=z?I/z:0;Z.registerMethod("_restoreAnchor",{dataIndex:V.dataIndex,fraction:P,skipAdjust:h}),Z.registerMethod("_suppressSave",1)}if(Z.scrollTo(y),D&&H?.length){let P=Z.getMethod("select");if(P)P(...H)}let r=Z.getMethod("loadVisibleRange"),c=()=>{if(L===void 0)return;let P=Z.getMethod("_focusById");if(P)P(L)};if(r){let P=0,T=()=>{if(F.containerSize>0){if(Math.abs(F.scrollPosition-y)>1)Z.scrollTo(y);r().then(c)}else if(++P<10)requestAnimationFrame(T)};requestAnimationFrame(T)}else{let P=Z.getMethod("reload");if(P)requestAnimationFrame(()=>{P().then(c)});else requestAnimationFrame(c)}};Z.registerMethod("restoreScroll",B);let l=!!(q&&$);if(Z.registerDestroyHandler(()=>{X=!0}),$){J=()=>{if(X||l||Z.getMethod("_suppressSave"))return;let W=U();try{sessionStorage.setItem($,JSON.stringify(W))}catch{}},Z.registerMethod("_saveSnapshot",J);let V=0,D=()=>{if(V)return;V=requestAnimationFrame(()=>{V=0,J()})};M.on("selection:change",D),M.on("focus:change",D);let b=0,A=()=>{b=0,J()},H=()=>{if(b)clearTimeout(b);b=setTimeout(A,300)};M.on("scroll",H);let L=()=>{J?.()};if(window.addEventListener("beforeunload",L),Z.registerDestroyHandler(()=>{if(b)clearTimeout(b);window.removeEventListener("beforeunload",L)}),q&&q.total&&q.total>0){let W=Z.getMethod("_cancelAutoLoad");if(W)W();let w=Z.getMethod("_setTotal");if(w)w(q.total)}}if(q){let V=!0;if(q.selectedIds?.length){let D=Z.getMethod("_seedSelection");if(D)D(q.selectedIds),V=!1}queueMicrotask(()=>{if(B(q,V),l=!1,J)J()})}},hooks:{onIdle(){if(J&&!X)J()}},destroy(){X=!0,J=null}}}function Z1(j,$){if($===!1)return null;return{duration:Math.min($?.duration??j.duration,1000),easing:$?.easing??j.easing}}function _0(j){let $=j?.duration??200,q=j?.easing??"cubic-bezier(0.2, 0, 0, 1)",X={duration:$,easing:q},J=Z1(X,j?.remove),Z=Z1(X,j?.insert),K=null,M=null;return{name:"transition",conflicts:["grid","table","masonry"],priority:45,setup(F){let{sizeCache:U,emitter:B}=F,l=F.config,V=F.dom,D=F.getState(),b=l.reverse?"bottom center":"top center",A=l.horizontal?"translateX":"translateY",H=F.getMethod("_dataToLayoutIndex")??null,L=(k)=>H?H(k):k,W=(k)=>{let E=String(k).replace(/"/g,"\\\""),R=V.content.querySelector(`[data-id="${E}"]`),G=R?parseInt(R.dataset.index??"-1",10):-1;return{el:R,layoutIndex:G}},w=()=>{let k=V.content.children;for(let E=0;E<k.length;E++)k[E].style.transition="none";V.content.offsetHeight;for(let E=0;E<k.length;E++)k[E].style.transition=""};if(J){let k=(R)=>{if(K)K();let G=typeof document<"u"?document.activeElement:null,z=G&&V.content.contains(G)?parseInt(G.dataset?.index??"-1",10):-1,I=W(R),y=I.layoutIndex,S=I.el,h=y>=0?U.getSize(y):0,r=y>=0?U.getOffset(y):0;if(!S||y<0){if(F.removeItemById(R)<0)return!1;if(F.forceRender(),w(),B.emit("data:change",{type:"remove",id:R}),z>=0){let g=D.totalItems;if(g>0)F.getRenderedElement(Math.min(z,g-1))?.focus()}return B.emit("remove:end",{id:R}),!0}let c=S.cloneNode(!0);c.style.pointerEvents="none",c.style.overflow="hidden",c.removeAttribute("data-index"),c.removeAttribute("data-id"),c.removeAttribute("id"),c.removeAttribute("aria-selected"),c.classList.remove(`${l.classPrefix}-item--selected`);let P=l.horizontal?"scrollLeft":"scrollTop",T=V.viewport[P];if(F.removeItemById(R)<0)return!1;F.forceRender(),w(),B.emit("data:change",{type:"remove",id:R});let Y=T-V.viewport[P];c.style.zIndex="1",V.content.appendChild(c);let N=J,O={duration:N.duration,easing:N.easing},p=[],s=Math.round(r-Y);p.push(c.animate([{transform:`${A}(${s}px) scaleY(1)`,opacity:1,transformOrigin:b},{transform:`${A}(${Math.round(r)}px) scaleY(0)`,opacity:0,transformOrigin:b}],O));let o=Y>0,u=V.content.children;for(let C=0;C<u.length;C++){let g=u[C];if(g===c)continue;let i=parseInt(g.dataset?.index??"-1",10);if(i<0||!o&&i<y)continue;let f=U.getOffset(i),x=i>=y?Math.round(f+h-Y):Math.round(f-Y),a=Math.round(f);if(x===a)continue;p.push(g.animate([{transform:`${A}(${x}px)`},{transform:`${A}(${a}px)`}],O))}let Q=!1,_=()=>{if(Q)return;Q=!0,K=null,c.remove();for(let C of p)if(C.playState!=="finished")C.cancel();if(z>=0){let C=D.totalItems;if(C>0)F.getRenderedElement(Math.min(z,C-1))?.focus()}B.emit("remove:end",{id:R})};return K=_,Promise.all(p.map((C)=>C.finished)).then(_,_),setTimeout(_,N.duration+50),!0},E=(R)=>{if(R.length===0)return 0;if(R.length===1)return k(R[0])?1:0;if(K)K();if(M)M();let G=typeof document<"u"?document.activeElement:null,z=G&&V.content.contains(G)?parseInt(G.dataset?.index??"-1",10):-1,I=[];for(let Q of R){let _=W(Q);I.push({id:Q,layoutIndex:_.layoutIndex,el:_.el,size:_.layoutIndex>=0?U.getSize(_.layoutIndex):0,offset:_.layoutIndex>=0?U.getOffset(_.layoutIndex):0})}I.sort((Q,_)=>_.layoutIndex-Q.layoutIndex);let y=[];for(let Q of I){if(!Q.el||Q.layoutIndex<0)continue;let _=Q.el.cloneNode(!0);_.style.pointerEvents="none",_.style.overflow="hidden",_.removeAttribute("data-index"),_.removeAttribute("data-id"),_.removeAttribute("id"),_.removeAttribute("aria-selected"),_.classList.remove(`${l.classPrefix}-item--selected`),y.push({clone:_,offset:Q.offset,size:Q.size,layoutIndex:Q.layoutIndex})}let S=new Map,h=V.content.children;for(let Q=0;Q<h.length;Q++){let _=h[Q],C=_.dataset?.id,g=parseInt(_.dataset?.index??"-1",10);if(C&&g>=0)S.set(C,U.getOffset(g))}let r=l.horizontal?"scrollLeft":"scrollTop",c=V.viewport[r],P=[];for(let Q of I)if(F.removeItemById(Q.id)>=0)P.push(Q.id);if(P.length===0)return 0;F.forceRender(),w();for(let Q of P)B.emit("data:change",{type:"remove",id:Q});if(y.length===0){if(z>=0){let Q=D.totalItems;if(Q>0)F.getRenderedElement(Math.min(z,Q-1))?.focus()}for(let Q of P)B.emit("remove:end",{id:Q});return P.length}let T=c-V.viewport[r],v=J,Y={duration:v.duration,easing:v.easing},N=[];y.sort((Q,_)=>Q.layoutIndex-_.layoutIndex);let O=0;for(let Q of y){Q.clone.style.zIndex="1",V.content.appendChild(Q.clone);let _=Math.round(Q.offset-T),C=Math.round(Q.offset-O);N.push(Q.clone.animate([{transform:`${A}(${_}px) scaleY(1)`,opacity:1,transformOrigin:b},{transform:`${A}(${C}px) scaleY(0)`,opacity:0,transformOrigin:b}],Y)),O+=Q.size}let p=new Set(y.map((Q)=>Q.clone)),s=V.content.children;for(let Q=0;Q<s.length;Q++){let _=s[Q];if(p.has(_))continue;let C=_.dataset?.id,g=parseInt(_.dataset?.index??"-1",10);if(!C||g<0)continue;let i=S.get(C);if(i===void 0)continue;let f=U.getOffset(g),x=Math.round(i-T),a=Math.round(f);if(x===a)continue;N.push(_.animate([{transform:`${A}(${x}px)`},{transform:`${A}(${a}px)`}],Y))}let o=!1,u=()=>{if(o)return;o=!0,K=null;for(let{clone:Q}of y)Q.remove();for(let Q of N)if(Q.playState!=="finished")Q.cancel();if(z>=0){let Q=D.totalItems;if(Q>0)F.getRenderedElement(Math.min(z,Q-1))?.focus()}for(let Q of P)B.emit("remove:end",{id:Q})};return K=u,Promise.all(N.map((Q)=>Q.finished)).then(u,u),setTimeout(u,v.duration+50),P.length};F.registerMethod("removeItem",k),F.registerMethod("removeItems",E)}if(Z){let k=(E,R)=>{if(M)M();if(K)K();let G=R??0,z=new Map,I=V.content.children;for(let Q=0;Q<I.length;Q++){let _=I[Q],C=_.dataset?.id,g=parseInt(_.dataset?.index??"-1",10);if(C&&g>=0)z.set(C,U.getOffset(g))}let y=l.horizontal?"scrollLeft":"scrollTop",S=l.horizontal?"scrollWidth":"scrollHeight",h=l.horizontal?"clientWidth":"clientHeight",r=V.viewport[y],c=V.viewport[S]-V.viewport[h],P=r>=c-1;F.insertItemAt(E,G),F.forceRender(),w(),B.emit("data:change",{type:"insert",id:E.id});let T=V.viewport[y]-r,v=L(G);if(l.reverse&&T===0&&P){V.viewport[y]=V.viewport[S]-V.viewport[h];let Q=V.viewport[y];if(D.prevScrollPosition=D.scrollPosition,D.scrollPosition=Q,T=Q-r,T>0)F.forceRender(),w()}let Y=F.getRenderedElement(v),N=Z,O={duration:N.duration,easing:N.easing},p=[];if(Y){let Q=U.getOffset(v);p.push(Y.animate([{transform:`${A}(${Math.round(Q)}px) scaleY(0)`,opacity:0,transformOrigin:b},{transform:`${A}(${Math.round(Q)}px) scaleY(1)`,opacity:1,transformOrigin:b}],O))}let s=V.content.children;for(let Q=0;Q<s.length;Q++){let _=s[Q];if(_===Y)continue;let C=_.dataset?.id,g=parseInt(_.dataset?.index??"-1",10);if(!C||g<0)continue;let i=z.get(C);if(i===void 0)continue;let f=U.getOffset(g),x=Math.round(i+T),a=Math.round(f);if(x===a)continue;p.push(_.animate([{transform:`${A}(${x}px)`},{transform:`${A}(${a}px)`}],O))}if(p.length===0)return;let o=!1,u=()=>{if(o)return;o=!0,M=null;for(let Q of p)if(Q.playState!=="finished")Q.cancel()};M=u,Promise.all(p.map((Q)=>Q.finished)).then(u,u),setTimeout(u,N.duration+50)};F.registerMethod("insertItem",k)}},destroy(){if(K)K();if(M)M()}}}function G0(j){let $=j?.gap??0,q=null,X=null,J,Z,K,M,F=new Map,U=new WeakMap,B=0,l=!1,V=2;function D(L){return F.get(L)??M}function b(){let L=X.dom.viewport,W=L.scrollHeight-L.clientHeight;return W>0&&J.scrollPosition>=W-V}function A(){let L=X.dom.viewport;L.scrollHeight;let W=L.scrollHeight-L.clientHeight;if(W>J.scrollPosition)X.scrollTo(W)}function H(){X.updateContentSize(X.sizeCache.getTotalSize())}return{name:"autosize",priority:5,setup(L){if(X=L,J=L.getState(),Z=L.config.horizontal,K=Z?"width":"height",$===0)$=L.config.gap;if(M=typeof L.rawSizeSpec==="function"?L.rawSizeSpec(0)+$:L.rawSizeSpec+$,L.setSizeConfig(D),$>0){let W=L.sizeCache.getTotalSize;L.sizeCache.getTotalSize=()=>{let w=W();return w>0?w-$:0}}q=new ResizeObserver((W)=>{if(J.destroyed||!X)return;let w=!1,k=J.startIndex;for(let z of W){let I=z.target,y=U.get(I);if(y===void 0)continue;if(I.getAttribute("data-index")!==String(y)){q.unobserve(I);continue}if(F.has(y))continue;let S=z.borderBoxSize[0];if(!S)continue;let h=Z?S.inlineSize:S.blockSize;if(h<=0)continue;let r=h+$,c=M;if(F.set(y,r),w=!0,y<k&&r!==c)B+=r-c;q.unobserve(I),I.style[K]=`${h}px`}if(!w)return;let E=b();if(L.rebuildSizeCache(),B)L.scrollTo(J.scrollPosition+B),B=0;let R=J.scrollDirection!==0,G=J.totalItems>0&&J.prevRangeEnd>=J.totalItems-1;if(E||G||!R){if(H(),l=!1,E)A()}else l=!0;L.forceRender()}),L.registerMethod("isMeasured",(W)=>F.has(W)),L.registerMethod("setMeasuredSize",(W,w)=>{F.set(W,w)}),L.registerMethod("getMeasuredCount",()=>F.size),L.registerDestroyHandler(()=>{if(q)q.disconnect(),q=null})},hooks:{onCommit(L){if(!q||!X)return;for(let W=0;W<L.visibleCount;W++){let w=L.visibleIndices[W];if(F.has(w))continue;let k=X.getRenderedElement(w);if(!k)continue;k.style[K]="",U.set(k,w),q.observe(k)}},onIdle(){if(!l||!X)return;let L=b();if(H(),l=!1,L)A(),X.forceRender()}},destroy(){if(q)q.disconnect(),q=null;F.clear(),X=null}}}var K1=(j)=>{let $=Math.max(1,Math.floor(j.columns)),q=j.gap??0,X=j.containerSize,J=0,Z=[],K=()=>{let A=($-1)*q;J=Math.max(0,(X-A)/$),Z=Array($);let H=J+q;for(let L=0;L<$;L++)Z[L]=L*H};K();let M=[],F=0,U=[],B=(A,H)=>{if(A<=0)return F=0,M=[],[];let L=Array($).fill(0),W=Array($);for(let E=0;E<$;E++)W[E]=[];let w=Array(A);for(let E=0;E<A;E++){let R=0,G=L[0];for(let y=1;y<$;y++){let S=L[y];if(S<G)G=S,R=y}let z=H(E),I=L[R];w[E]={index:E,x:Z[R],y:I,lane:R,size:z,crossSize:J},W[R].push(E),L[R]=I+z+q}M=W;let k=0;for(let E=0;E<$;E++){let R=L[E],G=R>0?R-q:0;if(G>k)k=G}return F=k,w},l=(A)=>{if(A.length===0)return F;if(F)return F;let H=Array($).fill(0);for(let W of A){let w=W.y+W.size,k=H[W.lane];if(w>k)H[W.lane]=w}let L=0;for(let W=0;W<$;W++)if(H[W]>L)L=H[W];return L},V=(A,H,L)=>{if(A.length===0||L<=H)return U.length=0,U;if(M.length===0||M.length!==$)return D(A,H,L);U.length=0;for(let W=0;W<$;W++){let w=M[W],k=w.length;if(!k)continue;let E=0,R=k;while(E<R){let G=E+R>>>1,z=A[w[G]];if(z.y+z.size<=H)E=G+1;else R=G}for(let G=E;G<k;G++){let z=A[w[G]];if(z.y>=L)break;U.push(z)}}return U},D=(A,H,L)=>{U.length=0;for(let W of A)if(W.y+W.size>H&&W.y<L)U.push(W);return U};return{get columns(){return $},get gap(){return q},get containerSize(){return X},update:(A)=>{let H=!1;if(A.columns!==void 0){let L=Math.max(1,Math.floor(A.columns));if(L!==$)$=L,H=!0}if(A.gap!==void 0&&A.gap!==q)q=A.gap,H=!0;if(A.containerSize!==void 0&&A.containerSize!==X)X=A.containerSize,H=!0;if(H)K()},calculateLayout:B,getTotalSize:l,getVisibleItems:V}};var U1=(j,$,q)=>{let X=Array.from($).sort((K,M)=>K-M);if(X.length<=1)return;let J=[];for(let K=0;K<X.length;K++){let M=q(X[K]);if(M)J.push(M)}if(J.length<=1)return;let Z=j.firstChild;for(let K=0;K<J.length;K++){let M=J[K];if(M===Z)Z=Z.nextSibling;else j.insertBefore(M,Z)}};var c1=(j=200)=>{let $=[];return{acquire:()=>{let Z=$.pop();if(Z)return Z;let K=document.createElement("div");return K.setAttribute("role","option"),K},release:(Z)=>{if(Z.remove(),$.length<j)Z.className="",Z.textContent="",Z.removeAttribute("style"),Z.removeAttribute("data-index"),Z.removeAttribute("data-id"),Z.removeAttribute("data-lane"),$.push(Z)},clear:()=>{$.length=0}}},l1=1,B1=(j,$,q,X=!1,J,Z,K,M)=>{let F=c1(),U=new Map,B=new Set,l=0,V="",D=-1,b={selected:!1,focused:!1},A=(c,P)=>{return b.selected=c,b.focused=P,b},H=`${q}-item ${q}-masonry-item`,L=`${q}-group-header`,W=`${q}-item--selected`,w=`${q}-item--focused`,k=(c,P)=>{if(typeof P==="string")c.innerHTML=P;else c.replaceChildren(P)},E=(c,P,T)=>{c.classList.toggle(W,P),c.classList.toggle(w,T)},R=(c,P)=>{if(X)c.style.transform=`translate(${Math.round(P.y)}px, ${Math.round(P.x)}px)`;else c.style.transform=`translate(${Math.round(P.x)}px, ${Math.round(P.y)}px)`},G=(c,P)=>{if(X)c.style.width=`${P.size}px`,c.style.height=`${P.crossSize}px`;else c.style.width=`${P.crossSize}px`,c.style.height=`${P.size}px`},z=(c,P,T,v,Y)=>{let N=F.acquire(),O=P.__groupHeader,p=A(v,Y);if(N.className=O?L:H,N.dataset.index=String(c),N.dataset.id=String(P.id),N.dataset.lane=String(T.lane),O)N.setAttribute("role","presentation"),N.removeAttribute("aria-selected"),N.removeAttribute("aria-setsize"),N.removeAttribute("aria-posinset"),N.removeAttribute("id");else if(M!==!1){if(N.setAttribute("role","option"),N.ariaSelected=String(v),Z)N.id=`${Z}-item-${c}`;if(J){let o=J();if(o!==D)D=o,V=String(o);N.setAttribute("aria-setsize",V);let u=K?K(c):c+1;N.setAttribute("aria-posinset",String(u))}}else if(N.setAttribute("role","listitem"),N.removeAttribute("aria-selected"),J){let o=J();if(o!==D)D=o,V=String(o);N.setAttribute("aria-setsize",V);let u=K?K(c):c+1;N.setAttribute("aria-posinset",String(u))}G(N,T);let s=$(P,c,p);return k(N,s),E(N,v,Y),R(N,T),{element:N,lastItemId:P.id,lastSelected:v,lastFocused:Y,lastY:T.y,lastX:T.x,lastSize:T.size,lastCrossSize:T.crossSize,lastSeenFrame:l}},I=(c,P,T,v)=>{l++,B.clear();for(let N=0;N<P.length;N++)B.add(P[N].index);for(let[N,O]of U)if(B.has(N))O.lastSeenFrame=l;else if(l-O.lastSeenFrame>l1)F.release(O.element),U.delete(N);let Y=null;for(let N=0;N<P.length;N++){let O=P[N],p=O.index,s=c(p);if(!s)continue;let o=T.has(s.id),u=p===v,Q=U.get(p);if(Q){let _=Q.lastItemId!==s.id,C=Q.lastSelected!==o,g=Q.lastFocused!==u,i=Q.lastY!==O.y||Q.lastX!==O.x,f=Q.lastSize!==O.size||Q.lastCrossSize!==O.crossSize;if(_){let x=A(o,u),a=$(s,p,x);if(k(Q.element,a),Q.element.dataset.id=String(s.id),Q.lastItemId=s.id,!s.__groupHeader){let t=K?K(p):p+1;Q.element.setAttribute("aria-posinset",String(t))}}if(_||C||g)E(Q.element,o,u),Q.element.ariaSelected=String(o),Q.lastSelected=o,Q.lastFocused=u;if(f)G(Q.element,O),Q.lastSize=O.size,Q.lastCrossSize=O.crossSize;if(i)R(Q.element,O),Q.lastY=O.y,Q.lastX=O.x}else{let _=z(p,s,O,o,u);if(!Y)Y=document.createDocumentFragment();Y.appendChild(_.element),U.set(p,_)}}if(Y)j.appendChild(Y)},y=()=>{for(let c of U.values())F.release(c.element);U.clear(),j.innerHTML=""};return{render:I,getElement:(c)=>U.get(c)?.element,updateItemClasses:(c,P,T)=>{let v=U.get(c);if(!v)return;let Y=v.lastSelected!==P,N=v.lastFocused!==T;if(Y||N)E(v.element,P,T),v.lastSelected=P,v.lastFocused=T},sortDOM:()=>{U1(j,U.keys(),(c)=>U.get(c)?.element)},clear:y,destroy:()=>{y(),F.clear()}}};var r1=100,s1=new Set;function A0(j){if(!j.columns||j.columns<1)throw Error("[vlist] masonry: columns must be >= 1");let $,q=null,X,J=null,Z,K,M,F=[],U=-1,B=-1,l=!0,V=-1,D={columnWidth:0,columns:0,gap:0,containerWidth:0},b=[],A=(T)=>b[T],H=null,L=null,W=!1;function w(){if(W||!J)return;W=!0,H=J.getMethod("_getSelectedIds")??null,L=J.getMethod("_getFocusedIndex")??null}let k=[],E=new Int32Array(0),R=[];function G(){let T=$.columns,v=F.length;k=Array(T);for(let Y=0;Y<T;Y++)k[Y]=[];if(E.length<v)E=new Int32Array(v);for(let Y=0;Y<v;Y++){let N=F[Y],O=k[N.lane].length;k[N.lane].push(Y),E[Y]=O}R=Array(T);for(let Y=0;Y<T;Y++){let N=k[Y],O=new Float64Array(N.length);for(let p=0;p<N.length;p++){let s=F[N[p]];O[p]=s.y+s.size*0.5}R[Y]=O}}function z(T,v){let Y=T.length;if(!Y)return-1;let N=0,O=Y-1;while(N<O){let p=N+O>>1;if(T[p]<v)N=p+1;else O=p}if(N>0&&Math.abs(T[N-1]-v)<=Math.abs(T[N]-v))return N-1;return N}function I(T,v,Y){let N=F[T];if(!N)return T;let O=N.lane,p=$.columns,s=E[T],o=k[O];switch(Z?v==="ArrowDown"?"ArrowRight":v==="ArrowUp"?"ArrowLeft":v==="ArrowRight"?"ArrowDown":v==="ArrowLeft"?"ArrowUp":v:v){case"ArrowDown":if(s+1<o.length)return o[s+1];return T;case"ArrowUp":if(s>0)return o[s-1];return T;case"ArrowRight":{if(O>=p-1)return T;let Q=O+1,_=N.y+N.size*0.5,C=k[Q];if(!C.length)return T;let g=z(R[Q],_);return g>=0?C[g]:T}case"ArrowLeft":{if(O<=0)return T;let Q=O-1,_=N.y+N.size*0.5,C=k[Q];if(!C.length)return T;let g=z(R[Q],_);return g>=0?C[g]:T}case"Home":return 0;case"End":return Y-1;case"PageDown":{let Q=X.containerSize,_=N.size>0?N.size:150,C=Math.max(1,Math.floor(Q/_)),g=Math.min(s+C,o.length-1);return o[g]}case"PageUp":{let Q=X.containerSize,_=N.size>0?N.size:150,C=Math.max(1,Math.floor(Q/_)),g=Math.max(0,s-C);return o[g]}}return T}let y=null;function S(){if(j.size)return(T)=>j.size(T,D);if(y!==null&&typeof y==="function")return(T)=>y(T,D);return(T)=>J.sizeCache.getSize(T)}function h(){let{columns:T,gap:v}=$;D.containerWidth=$.containerSize,D.columns=T,D.gap=v,D.columnWidth=Math.max(0,($.containerSize-(T-1)*v)/T)}function r(){if(!J)return;h();let T=X.totalItems;F=$.calculateLayout(T,S()),V=T,G();let v=$.getTotalSize(F);J.updateContentSize(v)}function c(){if(X.destroyed||!J||!q)return;if(X.totalItems!==V)r();w();let{scrollPosition:T,containerSize:v}=X;if(!l&&T===U&&v===B)return;if(U=T,B=v,l=!1,v<=0||F.length===0)return;let Y=Math.max(0,T-M),N=T+v+M,O=$.getVisibleItems(F,Y,N),p=H?.()??s1,s=L?.()??-1;b=J.getItems(),q.render(A,O,p,s);let o=O.length,u=o>0?O[0].index:0,Q=o>0?O[o-1].index:0;X.prevRangeStart=u,X.prevRangeEnd=Q,X.renderPending=!1;let _=Math.min(o,X.capacity);X.visibleCount=_,X.startIndex=u;for(let C=0;C<_;C++){let g=O[C];X.visibleIndices[C]=g.index,X.visibleOffsets[C]=g.y,X.visibleSizes[C]=g.size}}function P(){if(X.destroyed)return;r(),X.prevRangeStart=-1,X.prevRangeEnd=-1,X.renderPending=!0,l=!0,c()}return{name:"masonry",priority:10,conflicts:["grid","table"],setup(T){if(J=T,X=T.getState(),y=T.rawSizeSpec,Z=T.config.horizontal,K=T.config.classPrefix,M=T.config.overscan*r1,T.config.reverse)throw Error("[vlist] masonry: cannot be combined with reverse mode");let v=X.crossSize;$=K1({columns:j.columns,gap:j.gap??0,containerSize:v}),q=B1(T.dom.content,T.template,K,Z,()=>X.totalItems,void 0,void 0,T.config.interactive),T.dom.root.classList.add(`${K}--masonry`),T.setRenderFn(c,P),r(),T.registerMethod("getMasonryLayout",()=>$),T.registerMethod("updateMasonry",(Y)=>{if(Y.columns!==void 0&&Y.columns<1)throw Error("[vlist] updateMasonry: columns must be >= 1");if(Y.gap!==void 0&&Y.gap<0)throw Error("[vlist] updateMasonry: gap must be >= 0");let N={};if(Y.columns!==void 0)N.columns=Y.columns;if(Y.gap!==void 0)N.gap=Y.gap;$.update(N),q?.clear(),P()}),T.registerMethod("scrollToIndex",(Y,N="start")=>{let O=F[Y];if(!O)return;let p=typeof N==="string"?N:N.align??"start",s=typeof N==="object"?N.behavior:void 0,o=typeof N==="object"?N.duration:void 0,u=X.containerSize,Q=$.getTotalSize(F),_=Math.max(0,Q-u),C=O.y;if(p==="center")C=O.y-u/2+O.size/2;else if(p==="end"){if(C=O.y-u+O.size,Y>=X.totalItems-1&&O.y+O.size>_)C=_}if(C=Math.max(0,Math.min(C,_)),s==="smooth"&&o&&o>0)T.smoothScrollTo(C,o);else T.scrollTo(C)}),T.registerMethod("_scrollItemIntoView",(Y)=>{let N=F[Y];if(!N)return;let{scrollPosition:O,containerSize:p}=X,s=N.y,o=s+N.size;if(s<O)T.scrollTo(Math.max(0,s));else if(o>O+p)T.scrollTo(o-p)}),T.setNavConfig({total:()=>X.totalItems,navigate:I}),T.registerDestroyHandler(()=>{q?.destroy(),q=null,T.dom.root.classList.remove(`${K}--masonry`)})},hooks:{onResize(T,v){if(!$||!J)return;let Y=X.crossSize;if(Math.abs(Y-$.containerSize)<1)return;$.update({containerSize:Y}),q?.clear(),P()},onIdle(){q?.sortDOM()}},destroy(){q?.destroy(),q=null,F=[],J=null}}}var W1=(j={})=>{let{chunkSize:$=100,maxCachedItems:q=5000,evictionBuffer:X=200,onEvict:J}=j,Z=new Map,K=0,M=0,F=(v)=>{let Y=Z.get(v);if(!Y)Y={items:Array($),count:0,lastAccess:Date.now()},Z.set(v,Y);else Y.lastAccess=Date.now();return Y},U=(v)=>{return Math.floor(v/$)},B=(v)=>{return v%$},l=()=>K,V=(v)=>{K=v},D=(v)=>{if(v<0||v>=K)return;let Y=U(v),N=Z.get(Y);if(!N)return;return N.items[B(v)]},b=(v)=>{if(v<0||v>=K)return!1;let Y=U(v),N=Z.get(Y);if(!N)return!1;return N.items[B(v)]!==void 0},A=(v,Y)=>{let N=U(v),O=F(N),p=B(v),s=O.items[p]===void 0;if(O.items[p]=Y,s)O.count++,M++;if(v>=K)K=v+1},H=(v,Y)=>{for(let N=0;N<Y.length;N++){let O=Y[N];if(O!==void 0)A(v+N,O)}},L=(v,Y)=>{if(v<0||v>K)return;let N=U(v),O=Array.from(Z.keys()).filter((Q)=>Q>=N).sort((Q,_)=>Q-_),p=[];for(let Q of O){let _=Z.get(Q),C=Q*$;for(let g=0;g<$;g++){if(_.items[g]===void 0)continue;let i=C+g;if(i<v)continue;p.push({oldIndex:i,item:_.items[g]})}}for(let{oldIndex:Q}of p){let _=U(Q),C=Z.get(_);if(!C)continue;let g=B(Q);if(C.items[g]!==void 0){if(C.items[g]=void 0,C.count--,M--,C.count===0)Z.delete(_)}}K++;for(let{oldIndex:Q,item:_}of p){let C=Q+1,g=U(C),i=F(g),f=B(C);i.items[f]=_,i.count++,M++}let s=U(v),o=F(s),u=B(v);o.items[u]=Y,o.count++,M++},W=(v)=>{if(v<0||v>=K)return!1;let Y=U(v),N=Z.get(Y),O=B(v);if(!(N!==void 0&&N.items[O]!==void 0))return!1;let s=Y,o=Array.from(Z.keys()).filter((Q)=>Q>=s).sort((Q,_)=>Q-_),u=[];for(let Q of o){let _=Z.get(Q),C=Q*$;for(let g=0;g<$;g++){if(_.items[g]===void 0)continue;let i=C+g;if(i<=v)continue;u.push({oldIndex:i,item:_.items[g]})}}if(N.items[O]=void 0,N.count--,M--,N.count===0)Z.delete(Y);for(let{oldIndex:Q}of u){let _=U(Q),C=Z.get(_);if(!C)continue;let g=B(Q);if(C.items[g]!==void 0){if(C.items[g]=void 0,C.count--,M--,C.count===0)Z.delete(_)}}for(let{oldIndex:Q,item:_}of u){let C=Q-1,g=U(C),i=F(g),f=B(C);i.items[f]=_,i.count++,M++}return K--,!0},w=(v,Y)=>{let N=[];for(let O=v;O<=Y&&O<K;O++)N.push(D(O));return N},k=(v,Y)=>{for(let N=v;N<=Y&&N<K;N++)if(!b(N))return!1;return!0},E=()=>{let v=[],Y=null,N=Array.from(Z.keys()).sort((O,p)=>O-p);for(let O of N){let p=Z.get(O);if(!p)continue;let s=O*$;for(let o=0;o<$;o++){let u=s+o;if(u>=K)break;if(p.items[o]!==void 0)if(Y===null)Y={start:u,end:u};else if(u===Y.end+1)Y.end=u;else v.push(Y),Y={start:u,end:u};else if(Y!==null)v.push(Y),Y=null}}if(Y!==null)v.push(Y);return v},R=(v,Y)=>{let N=[],O=null;for(let p=v;p<=Y&&p<K;p++)if(!b(p))if(O===null)O={start:p,end:p};else O.end=p;else if(O!==null)N.push(O),O=null;if(O!==null)N.push(O);return N},G=(v)=>{return Z.has(v)},z=(v)=>{let Y=Z.get(v);if(!Y)return!1;let N=v*$,O=Math.min($,K-N);return Y.count>=O},I=(v)=>{let Y=Z.get(v);if(Y)Y.lastAccess=Date.now()},y=(v,Y)=>{if(v>Y||Z.size===0)return;let N=Date.now(),O=U(Math.max(0,v)),p=U(Math.min(K-1,Y));for(let s=O;s<=p;s++){let o=Z.get(s);if(o)o.lastAccess=N}},S=(v,Y)=>{if(M<=q)return 0;let N=Math.max(0,v-X),O=Math.min(K-1,Y+X),p=U(N),s=U(O),o=0,u=[];for(let[Q,_]of Z)if(Q<p||Q>s)o+=_.count,u.push(Q),M-=_.count,Z.delete(Q);if(o>0&&J)J(o,u);return o},h=()=>{if(M<=q)return 0;let v=Array.from(Z.entries()).sort(([,O],[,p])=>O.lastAccess-p.lastAccess),Y=0,N=[];for(let[O,p]of v){if(M<=q)break;Y+=p.count,M-=p.count,N.push(O),Z.delete(O)}if(Y>0&&J)J(Y,N);return Y},r=()=>{return{totalItems:K,cachedItems:M,cachedChunks:Z.size,chunkSize:$,maxCachedItems:q,memoryEfficiency:K>0?1-M/K:1}},c=()=>M,P=()=>{Z.clear(),M=0};return{chunkSize:$,maxCachedItems:q,getTotal:l,setTotal:V,get:D,has:b,set:A,setRange:H,insert:L,delete:W,getRange:w,isRangeLoaded:k,getLoadedRanges:E,findUnloadedRanges:R,getChunkIndex:U,isChunkLoaded:G,isChunkFullyLoaded:z,touchChunk:I,touchChunksForRange:y,evictDistant:S,evictToLimit:h,getStats:r,getCachedCount:c,clear:P,reset:()=>{P(),K=0}}};var N1=(j={})=>{let{maskCharacter:$=w0,maxSampleSize:q=z0}=j,X=[],J=!1,Z=(B)=>{if(J||B.length===0)return;let l=Math.min(B.length,q);for(let V=0;V<l;V++){let D=B[V];if(!D||typeof D!=="object")continue;let b={},A=!1;for(let[H,L]of Object.entries(D)){if(H.startsWith("_")||H==="id")continue;b[H]=String(L??"").length,A=!0}if(A)X.push(b)}J=!0},K=()=>J,M=(B)=>{let l={id:`${C2}${B}`,[j0]:!0,_index:B};if(X.length===0)return l.label=$.repeat(12),l;let V=X[B%X.length];for(let[D,b]of Object.entries(V))l[D]=$.repeat(Math.max(1,b));return l};return{analyzeStructure:Z,hasAnalyzedStructure:K,generate:M,generateRange:(B,l)=>{let V=[];for(let D=B;D<=l;D++)V.push(M(D));return V},clear:()=>{X=[],J=!1}}},J0=(j)=>{if(!j||typeof j!=="object")return!1;return j[j0]===!0};var a1=50,V1=(j={})=>{let{adapter:$,initialItems:q,initialTotal:X,storage:J,placeholder:Z,pageSize:K=a1,maxConcurrent:M=0,onStateChange:F,onDataChange:U,onItemsLoaded:B,onItemsEvicted:l}=j,V=W1({...J,onEvict:(J2,n)=>{l?.(J2),y(),I()}}),D=null,b=()=>{if(!D)D=N1(Z);return D},A=new Map,H=!1,L,W=!0,w,k,E=[],R=0,G=new Map,z=()=>{for(let J2 of G.values())J2[1].abort();G.clear()},I=()=>{F?.(N())},y=()=>{U?.()},S=()=>{A.clear();let J2=V.getLoadedRanges();for(let n of J2)for(let $2=n.start;$2<=n.end;$2++){let K2=V.get($2);if(K2&&!J0(K2))A.set(K2.id,$2)}},h=(J2,n)=>{if(!J0(n))A.set(n.id,J2)},r=(J2)=>{A.delete(J2)},c=(J2,n)=>{return`${J2}-${n}`},P=()=>V.getTotal(),T=()=>V.getCachedCount(),v=()=>H,Y=()=>W,N=()=>({total:V.getTotal(),cached:V.getCachedCount(),isLoading:H,pendingRanges:E,error:L,hasMore:W,cursor:w}),O=()=>V,p=()=>b(),s=(J2)=>{let n=V.get(J2);if(n!==void 0)return n;if(J2>=0&&J2<V.getTotal())return b().generate(J2);return},o=(J2)=>{let n=A.get(J2);if(n===void 0)return;return V.get(n)},u=(J2)=>{return A.get(J2)??-1},Q=(J2)=>{let n=V.get(J2);return n!==void 0&&!J0(n)},_=(J2,n)=>{let $2=[],K2=V.getTotal();V.touchChunksForRange(J2,Math.min(n,K2-1));for(let B2=J2;B2<=n&&B2<K2;B2++){let q2=V.get(B2);if(q2!==void 0)$2.push(q2);else $2.push(b().generate(B2))}return $2},C=(J2)=>{V.setTotal(J2),W=V.getCachedCount()<J2,y(),I()},g=(J2,n=0,$2)=>{if($&&J2.length>0){let K2=b();if(!K2.hasAnalyzedStructure())K2.analyzeStructure(J2)}for(let K2=0;K2<J2.length;K2++){let B2=J2[K2];if(B2!==void 0){let q2=n+K2;V.set(q2,B2),h(q2,B2)}}if($2!==void 0)V.setTotal($2);else if(n+J2.length>V.getTotal())V.setTotal(n+J2.length);if(V.getCachedCount()>=V.getTotal()&&V.getTotal()>0)W=!1;y(),I(),B?.(J2,n,V.getTotal())},i=(J2,n)=>{let $2=V.get(J2);if(!$2)return!1;let K2=$2.id,B2={...$2,...n};if(V.set(J2,B2),n.id!==void 0&&n.id!==K2)r(K2);return h(J2,B2),y(),I(),!0},f=(J2,n)=>{V.insert(n,J2),S(),z(),y(),I()},x=(J2)=>{let n=A.get(J2);if(n===void 0)return!1;if(!V.delete(n))return!1;return S(),z(),y(),I(),!0},a=async(J2,n)=>{if(!$)return;let $2=V.chunkSize,K2=Math.floor(J2/$2),B2=Math.floor(n/$2),q2=$2*2;for(let[A2,D2]of G){let b2=A2.indexOf("-"),y2=parseInt(A2.slice(0,b2),10);if(Math.abs(y2-J2)>q2)D2[1].abort(),G.delete(A2)}let E2=[],R2=[];for(let A2=K2;A2<=B2;A2++){let D2=A2*$2,b2=D2+$2-1,y2=c(D2,b2);if(V.isChunkFullyLoaded(A2))continue;let k2=G.get(y2);if(k2)R2.push(k2[0]);else E2.push({start:D2,end:b2})}if(E2.length===0){if(R2.length>0)await Promise.all(R2);return}if(M>0){let A2=G.size+E2.length;if(A2>M){let D2=(J2+n)/2,b2=Math.min(A2-M,G.size);while(b2>0){let F2=null,k2=-1,H2=null;for(let[w2,N2]of G){let L2=w2.indexOf("-"),P2=parseInt(w2.slice(0,L2),10),X2=parseInt(w2.slice(L2+1),10),d=Math.abs((P2+X2)/2-D2);if(d>k2)k2=d,F2=w2,H2=N2[1]}if(F2)H2.abort(),G.delete(F2);b2--}let y2=M-G.size;if(E2.length>y2)E2.sort((F2,k2)=>{let H2=Math.abs((F2.start+F2.end)/2-D2),w2=Math.abs((k2.start+k2.end)/2-D2);return H2-w2}),E2.length=Math.max(0,y2)}}if(E2.length===0){if(R2.length>0)await Promise.all(R2);return}for(let A2 of E2){let D2=c(A2.start,A2.end),b2=new AbortController,y2=(async()=>{E.push(A2),H=!0,L=void 0,I();try{let F2=A2.end-A2.start+1,k2={offset:A2.start,limit:F2,cursor:A2.start===k?w:void 0,signal:b2.signal},H2=await $.read(k2);if(g(H2.items,A2.start,H2.total),H2.cursor)w=H2.cursor,k=A2.start+H2.items.length;let w2=A2.start+H2.items.length;if(w2>=R){if(R=w2,H2.hasMore!==void 0)W=H2.hasMore;else if(H2.total!==void 0)W=w2<H2.total}}catch(F2){if(F2?.name==="AbortError")return;L=F2 instanceof Error?F2:Error(String(F2))}finally{G.delete(D2);let F2=E.findIndex((k2)=>k2.start===A2.start&&k2.end===A2.end);if(F2>=0)E.splice(F2,1);H=G.size>0,I()}})();G.set(D2,[y2,b2]),R2.push(y2)}await Promise.all(R2)},e=async(J2,n)=>{if(V.isRangeLoaded(J2,n))return;await a(J2,n)},t=async()=>{if(!$)return;await a(0,K-1)},Q2=async()=>{if(!$||H||!W)return!1;let J2=V.getCachedCount(),n=V.getTotal(),$2=J2,K2=Math.min($2+K-1,n>0?n-1:$2+K-1);if($2>=n&&n>0)return W=!1,!1;return await a($2,K2),V.getCachedCount()>J2},Z2=async()=>{if(V.clear(),V.setTotal(0),A.clear(),D)D.clear();z(),E=[],H=!1,w=void 0,k=void 0,W=!0,R=0,L=void 0,y(),I()},G2=(J2,n)=>{if(V.evictDistant(J2,n)>0)S()},M2=()=>{V.clear(),A.clear(),w=void 0,k=void 0,L=void 0,E=[],H=!1,y(),I()},W2=()=>{if(V.reset(),A.clear(),D)D.clear();w=void 0,k=void 0,W=!0,R=0,L=void 0,E=[],H=!1,y(),I()};if(q&&q.length>0)g(q,0,X??q.length);else if(X!==void 0)V.setTotal(X),y(),I();return{getState:N,getTotal:P,getCached:T,getIsLoading:v,getHasMore:Y,getStorage:O,getPlaceholders:p,getItem:s,getItemById:o,getIndexById:u,isItemLoaded:Q,getItemsInRange:_,setTotal:C,setItems:g,updateItem:i,insertItem:f,removeItem:x,loadRange:a,ensureRange:e,loadInitial:t,loadMore:Q2,reload:Z2,evictDistant:G2,clear:M2,reset:W2}};function D0(j){let{adapter:$,total:q,autoLoad:X=!0,storage:J}=j,Z=j.loading?.cancelThreshold??k0,K=j.loading?.preloadThreshold??y0,M=j.loading?.preloadAhead??b0,F=j.loading?.maxConcurrent??P0,U,B,l,V,D,b,A=null,H=null,L=null,W=0,w=!1,k=-1,E=-1,R=J?.chunkSize??r2,G=()=>{if(A=null,H!==null)clearTimeout(H),H=null},z=(h,r)=>{return U.ensureRange(h,r)},I=(h,r=r2)=>{V.emit("load:start",{offset:h,limit:r})},y=(h)=>{V.emit("error",{error:h,context:"ensureRange"})},S=()=>{if(!A)return;A=null;let h={start:B.startIndex,end:B.startIndex+Math.max(0,B.visibleCount-1)};if(h.end<h.start)return;z(h.start,h.end).catch(y)};return{name:"data",priority:20,setup(h){B=h.getState(),l=h.sizeCache,V=h.emitter,D=h.dom,b=h.forceRender.bind(h);let r=null;h.setVirtualTotalFn(()=>r?.getTotal()??0),U=r=V1({adapter:$,...q!==void 0&&{initialTotal:q},pageSize:J?.chunkSize??r2,maxConcurrent:F,...J&&{storage:{...J.chunkSize!==void 0&&{chunkSize:J.chunkSize},...J.maxCachedItems!==void 0&&{maxCachedItems:J.maxCachedItems},...J.evictionBuffer!==void 0&&{evictionBuffer:J.evictionBuffer}}},onDataChange:()=>{if(B.initialized){let P=U.getTotal();B.totalItems=P;let T=l.getTotal();if(P!==T)l.rebuild(P);h.updateContentSize(l.getTotalSize()),h.renderIfNeeded()}},onItemsLoaded:(P)=>{if(B.initialized)b(),V.emit("load:end",{items:P,total:U.getTotal()})}}),h.setGetItemFn((P)=>U.getItem(P)),h.setRemoveItemFn((P)=>{let T=U.getIndexById(P);if(T<0)return-1;if(!U.removeItem(P))return-1;return T}),h.setInsertItemFn((P,T)=>{U.insertItem(P,T)}),h.setUpdateItemFn((P,T)=>{let v=U.getIndexById(P);if(v<0)return!1;return U.updateItem(v,T)}),h.registerMethod("reload",async()=>{if(A=null,k=-1,E=-1,h.forceRender(),await U.reload(),h.scrollTo(0),X)I(0),await U.loadInitial(),h.forceRender()}),h.registerMethod("loadVisibleRange",async()=>{A=null,h.forceRender();let P=U.getTotal();if(B.visibleCount>0&&B.startIndex<P){let T=Math.min(B.startIndex+B.visibleCount-1,P-1);I(B.startIndex,T-B.startIndex+1),await z(B.startIndex,T)}}),h.registerMethod("getTotal",()=>{return U.getTotal()}),h.registerMethod("setTotal",(P)=>{U.setTotal(P)}),h.registerMethod("_getTotal",()=>U.getTotal()),h.registerMethod("_setTotal",(P)=>{U.setTotal(P)}),h.registerMethod("_cancelAutoLoad",()=>{w=!0}),h.registerMethod("_getLoadedItem",(P)=>{return U.getStorage().get(P)}),h.registerMethod("_getLoadedCount",()=>U.getCached()),V.on("load:start",()=>{D.root.setAttribute("aria-busy","true")}),V.on("load:end",()=>{D.root.removeAttribute("aria-busy")}),h.registerDestroyHandler(()=>{if(L!==null)clearTimeout(L),L=null;G()}),V.on("velocity:change",({velocity:P})=>{W=Math.abs(P)});let c=()=>{if(B.destroyed)return;if(B.visibleCount>0&&B.startIndex<U.getTotal()){let P=Math.min(B.startIndex+B.visibleCount-1,U.getTotal()-1);z(B.startIndex,P).catch(y)}S()};if(window.addEventListener("online",c),h.registerDestroyHandler(()=>{window.removeEventListener("online",c)}),X)queueMicrotask(()=>{if(w)return;I(0),U.loadInitial().catch((P)=>{V.emit("error",{error:P,context:"loadInitial"})})});else if(q!==void 0)U.setTotal(q)},hooks:{onAfterScroll(){if(B.destroyed)return;let h=B.startIndex+Math.max(0,B.visibleCount-1);if(W>Z){if(H!==null)clearTimeout(H),H=null;A={start:B.startIndex,end:h};return}if(W>K){let P=Math.floor(B.startIndex/R),T=Math.floor(h/R);if(P!==k||T!==E){if(k=P,E=T,h>=B.startIndex)z(B.startIndex,h).catch(y)}let v=B.startIndex,Y=h,N=B.scrollDirection;if(N>0)Y=Math.min(Y+M,U.getTotal()-1);else if(N<0)v=Math.max(0,v-M);if(A={start:v,end:Y},H!==null)clearTimeout(H);H=setTimeout(()=>{if(H=null,B.destroyed||!A)return;let{start:O,end:p}=A;if(A=null,p>=O)z(O,p).catch(y)},100);return}G();let r=Math.floor(B.startIndex/R),c=Math.floor(h/R);if(r!==k||c!==E){if(k=r,E=c,h>=B.startIndex)z(B.startIndex,h).catch(y)}},onIdle(){if(B.destroyed)return;W=0,k=-1,E=-1,S(),G()}},destroy(){if(L!==null)clearTimeout(L);G()}}}var H0=(j,$)=>{let q=0,X=j.length-1;while(q<X){let J=q+X+1>>>1;if(j[J].headerLayoutIndex<=$)q=J;else X=J-1}return q},M1=(j,$)=>{let q=0,X=j.length-1;while(q<X){let J=q+X+1>>>1;if(j[J].firstDataIndex<=$)q=J;else X=J-1}return q},_1=(j,$,q)=>{if(j===0)return[];let X=[],J=null,Z=0,K=0;for(let M=0;M<j;M++){let F=q?.(M);if(!F)continue;let U=$(M,F);if(J===null)J=U,Z=0;else if(U!==J){let B=M-Z;X.push({key:J,groupIndex:X.length,headerLayoutIndex:K,firstDataIndex:Z,count:B}),K=K+1+B,J=U,Z=M}}if(J!==null)X.push({key:J,groupIndex:X.length,headerLayoutIndex:K,firstDataIndex:Z,count:j-Z});return X};var G1=(j,$,q)=>{let X=_1(j,$.getGroupForIndex,q),J=j+X.length,Z=$.header?.height??$.header?.width??$.headerHeight;return{get totalEntries(){return J},get groupCount(){return X.length},get groups(){return X},getEntry:(D)=>{if(X.length===0)return{type:"item",dataIndex:D,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let b=H0(X,D),A=X[b];if(D===A.headerLayoutIndex)return{type:"header",group:A};let H=D-A.headerLayoutIndex-1;return{type:"item",dataIndex:A.firstDataIndex+H,group:A}},layoutToDataIndex:(D)=>{if(X.length===0)return D;let b=H0(X,D),A=X[b];if(D===A.headerLayoutIndex)return-1;let H=D-A.headerLayoutIndex-1;return A.firstDataIndex+H},dataToLayoutIndex:(D)=>{if(X.length===0)return D;let b=M1(X,D),A=X[b],H=D-A.firstDataIndex;return A.headerLayoutIndex+1+H},getGroupAtLayoutIndex:(D)=>{if(X.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=H0(X,D);return X[b]},getGroupAtDataIndex:(D)=>{if(X.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let b=M1(X,D);return X[b]},getHeaderHeight:typeof Z==="number"?(D)=>Z:(D)=>{let b=X[D];if(!b)return 0;return Z(b.key,D)},rebuild:(D,b)=>{X=_1(D,$.getGroupForIndex,b??q),J=D+X.length}}};var L0=(j,$,q,X,J=0)=>{let Z=q?"width":"height",K=document.createElement("div");return K.className=`${$}-sticky-header`,K.setAttribute("role","presentation"),K.setAttribute("aria-hidden","true"),K.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${J||0}px`:`top:${J||0}px`),K.style[Z]=`${X}px`,j.insertBefore(K,j.firstChild),K},A1=(j,$,q,X,J,Z=!1,K=0,M,F)=>{let U=Z?"width":"height",B=Z?"height":"width",l=Z?"X":"Y",V=(i,f)=>{i.style[U]=`${f}px`},D=F??L0(j,J,Z,0,K),b=()=>{let i=document.createElement("div");return i.className="sticky-group",i.style.position="absolute",i.style.willChange="transform",i.style[B]="100%",i},A=b(),H=b();D.append(A,H);let L=A,W=H,w=$.groups,k=[],E=[],R=[],G=0,z=()=>{w=$.groups,G=w.length,k=Array(G),E=Array(G),R=Array(G);let i=M?M():1;for(let f=0;f<G;f++)k[f]=q.getOffset(w[f].headerLayoutIndex)*i,E[f]=$.getHeaderHeight(f),R[f]=E[f]*i};z();let I=-1,y=0,S=0,h=-1,r=!1,c=0,P=!1,T=(i,f)=>{X(i,f);let x=E[f];return V(i,x),x},v=(i)=>{i.replaceChildren(),i.style.transform=""},Y=(i)=>{if(i===I)return;if(I=i,y=0,S=0,i<0||i>=G){v(L);return}y=T(L,i),S=R[i],V(D,y),L.style.transform=""},N=(i)=>{if(i===c)return;c=i;let f=Math.round(i);L.style.transform=`translate${l}(${f}px)`,W.style.transform=`translate${l}(${f+y}px)`},O=()=>{c=0,L.style.transform="",W.style.transform=""},p=()=>{if(!P)return;let i=L;L=W,W=i,I=h,y=I>=0?E[I]:0,S=I>=0?R[I]:0,V(D,y),v(W),h=-1,P=!1,O()},s=()=>{if(!P)return;v(W),h=-1,P=!1,O()},o=!!F,u=()=>{if(r)return;if(r=!0,o)D.style.visibility="";else D.style.display=""},Q=()=>{if(!r)return;if(r=!1,o)D.style.visibility="hidden";else D.style.display="none";v(L),I=-1,y=0,S=0,s()},_=(i)=>{if(G===0){Q();return}if(i<k[0]){Q();return}let f=0,x=G-1;while(f<x){let e=f+x+1>>>1;if(k[e]+R[e]<=i)f=e;else x=e-1}if(!r)u();Y(f);let a=f+1;if(a<G){let e=k[a]-i;if(e<=0&&e>-S){if(h!==a||!P)h=a,T(W,a),P=!0;let t=S>0?e/S*y:e;N(t)}else if(e<=-S){if(P)p()}else if(P)s()}else if(P)s()},C=()=>{z();let i=I;if(I=-1,y=0,S=0,i>=0)Y(i)},g=()=>{D.remove(),I=-1,y=0,S=0,h=-1,r=!1,P=!1};if(!F)D.style.display="none";return{update:_,refresh:C,show:u,hide:Q,destroy:g}};var g2={selected:!1,focused:!1},D1=typeof process<"u"&&process.env?.NODE_ENV!=="production";function F0(j){if(!j.getGroupForIndex)throw Error("[vlist] groups: getGroupForIndex is required");let $=j.header?.height??j.header?.width??j.headerHeight;if($==null||typeof $==="number"&&$<=0)throw Error("[vlist] groups: header height/width must be a positive number or function");let q=j.header?.template??j.headerTemplate;if(!q)throw Error("[vlist] groups: header.template is required");let X=q,J,Z=null,K,M,F,U,B,l,V,D=null,b,A,H,L=null,W,w,k=null,E,R=new Map,G=new Set,z=new Map,I=-1,y=-1,S=!0,h=-1,r=0,c=null,P;function T(){return J.totalEntries}function v(){let Q=M.totalItems;if(Q===h)return;if(D1)console.log(`[groups] syncLayout: ${h} → ${Q}`);let _=h>0;h=Q,J.rebuild(Q,D??V),P(J.totalEntries);let C=K.getTotalSize();if(U.style[b?"width":"height"]=C+"px",Z)Z.refresh(),Z.update(M.scrollPosition);if(_)O();let g=k?.("_scrollbar:getInstance");if(g)g()?.updateBounds(C,M.containerSize)}function Y(Q){let _=K.getOffset(Q);if(b)return`translate(${Math.round(_)}px, 0)`;return`translate(0, ${Math.round(_)}px)`}function N(Q,_){let C=K.getSize(_);if(b)Q.style.width=`${C}px`;else Q.style.height=`${C}px`}function O(){R.forEach((Q)=>{Q.remove();let _=Q.getAttribute("data-id");if(_)z.set(_,Q);else F.release(Q)}),R.clear(),G.clear()}function p(){if(z.size>0)z.forEach((Q)=>F.release(Q)),z.clear()}function s(Q,_,C,g){if(_.type==="header"){let t=`__group_header_${_.group.groupIndex}`;if(Q.getAttribute("data-id")===t)return!0;Q.className=w,Q.setAttribute("role","presentation"),Q.removeAttribute("aria-selected"),Q.setAttribute("data-id",t);let Q2=X(_.group.key,_.group.groupIndex);if(typeof Q2==="string")Q.innerHTML=Q2;else Q.innerHTML="",Q.appendChild(Q2);return!0}let i=_.dataIndex,f=V(i);if(!f)return Q.innerHTML="",!1;let x=f._isPlaceholder===!0,a=String(f.id);if(!x&&Q.getAttribute("data-id")===a){if(E)Q.id=`${A}-item-${g}`,Q.setAttribute("aria-posinset",String(i+1)),Q.setAttribute("aria-setsize",String(M.totalItems));return!0}if(Q.className=W,Q.setAttribute("role","option"),Q.setAttribute("data-id",a),E)Q.id=`${A}-item-${g}`,Q.setAttribute("aria-posinset",String(i+1)),Q.setAttribute("aria-setsize",String(M.totalItems));if(x)Q.classList.add(`${A}-item--placeholder`);if(C)C(g,g2);else g2.selected=!1,g2.focused=!1;let e=l(f,i,g2);if(typeof e==="string")Q.innerHTML=e;else Q.innerHTML="",Q.appendChild(e);return!x}function o(){if(M.destroyed)return;v();let{scrollPosition:Q,containerSize:_}=M;if(!S&&Q===I&&_===y)return;I=Q,y=_;let C=S;S=!1;let g=T();if(_<=0||g===0){if(R.size>0)R.forEach((n)=>{n.remove(),F.release(n)}),R.clear(),G.clear();return}let i=K.indexAtOffset(Q),f=K.indexAtOffset(Q+_);if(f<g-1)f++;i=Math.max(0,i),f=Math.min(g-1,Math.max(0,f));let x=Math.max(0,i-H),a=Math.min(g-1,f+H);if(x===M.prevRangeStart&&a===M.prevRangeEnd&&!M.renderPending)return;R.forEach((n,$2)=>{if($2<x||$2>a)n.remove(),F.release(n),R.delete($2),G.delete($2)});let e=L?.()??null,t=e?`${A}-item--selected`:"",Q2=e?`${A}-item--focused`:"",Z2=null;for(let n=x;n<=a;n++){let $2=R.get(n),K2=!1;if($2===void 0){let B2=J.getEntry(n);K2=B2.type==="header";let q2;if(B2.type==="header")q2=`__group_header_${B2.group.groupIndex}`;else{let R2=V(B2.dataIndex);if(R2&&R2._isPlaceholder!==!0)q2=String(R2.id)}if(q2!==void 0){let R2=z.get(q2);if(R2)z.delete(q2),$2=R2}if(!$2)$2=F.acquire();if($2.setAttribute("data-index",String(n)),s($2,B2,e,n))G.delete(n);else G.add(n);if(N($2,n),$2.style.transform=Y(n),R.set(n,$2),!Z2)Z2=document.createDocumentFragment();Z2.appendChild($2)}else if(C&&G.has(n)){let B2=J.getEntry(n);if(B2.type==="item")if(s($2,B2,e,n))G.delete(n);else G.add(n)}else K2=$2.classList.contains(w);if(!K2&&e)if(e(n,g2),$2.classList.toggle(t,g2.selected),$2.classList.toggle(Q2,g2.focused),g2.selected)$2.setAttribute("aria-selected","true");else $2.removeAttribute("aria-selected")}if(Z2)U.appendChild(Z2);p();let G2=K.getTotalSize();U.style[b?"width":"height"]=G2+"px",M.prevRangeStart=x,M.prevRangeEnd=a,M.renderPending=!1;let M2=0,W2=0,J2=!1;for(let n=x;n<=a&&M2<M.capacity;n++){let $2=J.getEntry(n);if($2.type==="item"){if(!J2)W2=$2.dataIndex,J2=!0;M.visibleIndices[M2]=$2.dataIndex,M.visibleOffsets[M2]=K.getOffset(n),M.visibleSizes[M2]=K.getSize(n),M2++}}M.visibleCount=M2,M.startIndex=W2}function u(){if(M.destroyed)return;if(D1)console.log(`[groups] forceRender, placeholders: ${G.size}, rendered: ${R.size}`);let Q=c?.()??0;if(Q!==r){r=Q;let _=J.groups,C=_.length;J.rebuild(h,D??V);let g=J.groups,i=g.length!==C;if(!i){for(let f=0;f<C;f++)if(g[f].headerLayoutIndex!==_[f].headerLayoutIndex){i=!0;break}}if(i){P(J.totalEntries);let f=K.getTotalSize();if(U.style[b?"width":"height"]=f+"px",Z)Z.refresh(),Z.update(M.scrollPosition);let x=1/0,a=Math.min(C,g.length);for(let t=0;t<a;t++)if(g[t].headerLayoutIndex!==_[t].headerLayoutIndex){x=Math.min(g[t].headerLayoutIndex,_[t].headerLayoutIndex);break}if(g.length>C&&a<g.length)x=Math.min(x,g[a].headerLayoutIndex);else if(C>g.length&&a<C)x=Math.min(x,_[a].headerLayoutIndex);if(x<=M.prevRangeEnd)O();let e=k?.("_scrollbar:getInstance");if(e)e()?.updateBounds(f,M.containerSize)}}M.prevRangeStart=-1,M.prevRangeEnd=-1,M.renderPending=!0,S=!0,o()}return{name:"groups",priority:10,setup(Q){K=Q.sizeCache,M=Q.getState(),F=Q.pool,U=Q.dom.content,B=Q.dom.root,l=Q.template,b=Q.config.horizontal,A=Q.config.classPrefix,H=Q.config.overscan,V=Q.getItem.bind(Q),L=()=>Q.getItemStateFn(),k=Q.getMethod.bind(Q),E=Q.config.interactive,W=`${A}-item`,w=`${A}-group-header`,queueMicrotask(()=>{let f=k?.("_getLoadedItem");if(f)D=f;let x=k?.("_getLoadedCount");if(x)c=x});let _=M.totalItems;J=G1(_,j,D??V),h=_;let C=typeof $==="number"?(f)=>$:(f)=>{let x=J.groups[f];if(!x)return 0;return $(x.key,f)},g=K.getSize,i=(f)=>{let x=J.getEntry(f);if(x.type==="header"){if(j.sticky!==!1&&x.group.groupIndex===0)return 0;return C(x.group.groupIndex)}return g(x.dataIndex)};if(Q.setSizeConfig(i),P=K.rebuild,K.rebuild=(f)=>{P(J.totalEntries)},K.rebuild(J.totalEntries),Q.setVirtualTotalFn(()=>J.totalEntries),B.classList.add(`${A}--grouped`),j.sticky!==!1){let f=(e,t)=>{let Q2=J.groups[t];if(!Q2)return;let Z2=X(Q2.key,t);if(typeof Z2==="string")e.innerHTML=Z2;else e.replaceChildren(Z2)},x=J.getHeaderHeight(0),a=L0(B,A,b,x);if(Z=A1(B,J,K,f,A,b,0,void 0,a),Z.update(M.scrollPosition),!b)Q.dom.viewport.style.height=`calc(100% - ${x}px)`;else Q.dom.viewport.style.width=`calc(100% - ${x}px)`}Q.setRenderFn(o,u),Q.registerMethod("getGroupLayout",()=>J),Q.registerMethod("_dataToLayoutIndex",(f)=>J.dataToLayoutIndex(f)),Q.registerMethod("_layoutToDataIndex",(f)=>J.layoutToDataIndex(f)),Q.registerMethod("_getRenderedElement",(f)=>R.get(f)??null),Q.registerMethod("_isGroupHeader",(f)=>{return J.getEntry(f).type==="header"}),Q.registerMethod("scrollToIndex",(f,x="start")=>{let a=J.dataToLayoutIndex(f),e=J.totalEntries;if(e===0)return;let t=Math.max(0,Math.min(a,e-1)),Q2=K.getOffset(t),Z2=K.getSize(t),G2=M.containerSize,M2=K.getTotalSize(),W2=Math.max(0,M2-G2),J2=typeof x==="string"?x:x.align??"start",n=typeof x==="object"?x.behavior:void 0,$2=typeof x==="object"?x.duration:void 0,K2;switch(J2){case"center":K2=Q2-(G2-Z2)/2;break;case"end":K2=Q2-G2+Z2;break;default:K2=Q2}if(K2=Math.max(0,Math.min(K2,W2)),n==="smooth"&&$2&&$2>0)Q.smoothScrollTo(K2,$2);else Q.scrollTo(K2)}),Q.registerDestroyHandler(()=>{for(let[,f]of R)f.remove();if(R.clear(),G.clear(),Z)Z.destroy(),Z=null;B.classList.remove(`${A}--grouped`)})},hooks:{onAfterScroll(Q,_){if(Z)Z.update(Q)}},destroy(){if(Z)Z.destroy(),Z=null;R.clear(),G.clear(),z.clear()}}}var H1=(j,$=50,q=1/0,X=!0)=>{let J=j,Z=[],K=0,M=()=>{Z=J.map((H,L)=>({def:H,index:L,width:0,minWidth:o1(H.minWidth??$,1),maxWidth:H.maxWidth??q,resizable:H.resizable??X,offset:0}))},F=(H)=>{if(Z.length===0){K=0;return}let L=0,W=0;for(let w=0;w<Z.length;w++){let k=Z[w],E=k.def;if(E.width!==void 0)k.width=O0(E.width,k.minWidth,k.maxWidth),L+=k.width;else W++}if(W){let k=Math.max(0,H-L)/W;for(let E=0;E<Z.length;E++){let R=Z[E];if(R.def.width===void 0)R.width=O0(k,R.minWidth,R.maxWidth)}}U()},U=()=>{let H=0;for(let L=0;L<Z.length;L++){let W=Z[L];W.offset=H,H+=W.width}K=H},B=(H,L)=>{if(H<0||H>=Z.length)return 0;let W=Z[H];if(!W.resizable)return W.width;let w=O0(L,W.minWidth,W.maxWidth);return W.width=w,U(),w},l=(H)=>{return Z[H]},V=(H)=>{if(Z.length===0)return;if(H<0)return Z[0];if(H>=K)return Z[Z.length-1];let L=0,W=Z.length-1;while(L<W){let w=L+W>>>1,k=Z[w];if(H<k.offset)W=w-1;else if(H>=k.offset+k.width)L=w+1;else return k}return Z[L]},D=(H)=>{if(H<0||H>=Z.length)return 0;return Z[H].offset},b=(H)=>{if(H<0||H>=Z.length)return 0;return Z[H].width},A=(H)=>{J=H,M()};return M(),{get columns(){return Z},get totalWidth(){return K},resolve:F,updateColumns:A,resizeColumn:B,getColumn:l,getColumnAtX:V,getColumnOffset:D,getColumnWidth:b}},O0=(j,$,q)=>Math.min(q,Math.max($,j)),o1=(j,$)=>Math.max($,j);var L1=(j,$,q,X,J,Z)=>{let K=document.createElement("div");K.setAttribute("role","rowgroup");let M=document.createElement("div");M.className=`${q}-table-header`,M.setAttribute("role","row"),M.setAttribute("aria-rowindex","1"),M.style.height=`${$}px`;let F=document.createElement("div");F.className=`${q}-table-header-scroll`,F.setAttribute("role","presentation"),M.appendChild(F),K.appendChild(M),j.insertBefore(K,j.firstChild),j.style.setProperty("--vlist-table-header-height",`${$}px`);let U=[],B=[],l=!0,V=null,D="asc",b=null,A=!1,H=-1,L=0,W=0,w=0,k=(Y,N)=>{let O=document.createElement("div");O.className=`${q}-table-header-cell`,O.setAttribute("role","columnheader"),O.setAttribute("aria-colindex",String(N+1)),O.setAttribute("tabindex",N===0?"0":"-1"),O.dataset.columnKey=Y.def.key;let p=Y.def.align;if(p==="center")O.classList.add(`${q}-table-header-cell--center`);else if(p==="right")O.classList.add(`${q}-table-header-cell--right`);let s=document.createElement("div");s.className=`${q}-table-header-content`;let o=Y.def.header?Y.def.header(Y.def):Y.def.label;if(typeof o==="string")s.textContent=o;else s.appendChild(o);if(O.appendChild(s),Y.def.sortable){let u=document.createElement("span");u.className=`${q}-table-header-sort`,u.setAttribute("aria-hidden","true"),O.appendChild(u),B.push(u),O.classList.add(`${q}-table-header-cell--sortable`)}else B.push(null);if(Y.resizable){let u=document.createElement("div");u.className=`${q}-table-header-resize`,u.dataset.resizeIndex=String(N),O.appendChild(u)}return O},E=(Y)=>{b=Y,F.textContent="",U=[],B=[];let N=Y.columns;for(let O=0;O<N.length;O++){let p=N[O],s=k(p,O);U.push(s),F.appendChild(s)}if(R(Y),V)G(V,D)},R=(Y)=>{b=Y;let N=Y.columns;F.style.width=`${Y.totalWidth}px`;for(let O=0;O<U.length&&O<N.length;O++){let p=U[O],s=N[O];p.style.width=`${s.width}px`}},G=(Y,N)=>{if(V=Y,D=N,!b)return;let O=b.columns;for(let p=0;p<B.length&&p<O.length;p++){let s=B[p];if(!s)continue;if(O[p].def.key===Y)s.textContent=N==="asc"?"▲":"▼",s.style.opacity="0.7",U[p].setAttribute("aria-sort",N==="asc"?"ascending":"descending");else s.textContent="",s.style.opacity="0",U[p].removeAttribute("aria-sort")}},z=(Y)=>{F.style.transform=`translateX(${-Y}px)`},I=(Y)=>{let N=Y.target;if(!N.dataset.resizeIndex)return;if(Y.preventDefault(),Y.stopPropagation(),H=+N.dataset.resizeIndex,!b)return;let O=b.getColumn(H);if(!O?.resizable)return;A=!0,L=Y.clientX,W=O.width,j.classList.add(`${q}--col-resizing`),j.style.cursor="col-resize",N.classList.add(`${q}-table-header-resize--active`),N.setPointerCapture(Y.pointerId),N.addEventListener("pointermove",y),N.addEventListener("pointerup",S),N.addEventListener("pointercancel",S)},y=(Y)=>{if(!A||!b)return;let N=Y.clientX-L;if(Math.abs(N)<1)return;let O=Math.max(0,W+N);X(H,O)},S=(Y)=>{if(!A)return;let N=Y.target;N.removeEventListener("pointermove",y),N.removeEventListener("pointerup",S),N.removeEventListener("pointercancel",S);try{N.releasePointerCapture(Y.pointerId)}catch{}N.classList.remove(`${q}-table-header-resize--active`),j.classList.remove(`${q}--col-resizing`),j.style.cursor="",A=!1,H=-1},h=(Y)=>{let N=Y.target;if(N.dataset.resizeIndex)return;if(A)return;let O=N;while(O&&!O.dataset.columnKey)if(O=O.parentElement,O===M||O===null)return;let p=O.dataset.columnKey;if(!b)return;let s=b.columns,o=-1;for(let Q=0;Q<s.length;Q++)if(s[Q].def.key===p){o=Q;break}if(o===-1)return;let u=s[o];if(Z)Z({key:p,index:o,event:Y});if(u.def.sortable&&J){let Q;if(V===p)Q=D==="asc"?"desc":null;else Q="asc";J({key:p,index:o,direction:Q})}},r=(Y)=>{if(Y<0||Y>=U.length)return;U[w]?.setAttribute("tabindex","-1"),w=Y;let N=U[w];N.setAttribute("tabindex","0"),N.focus()},c=(Y)=>{let N=Y.key;if(N==="ArrowRight"){if(Y.ctrlKey||Y.metaKey){if(!b)return;let O=b.getColumn(w);if(O?.resizable)X(w,O.width+10),Y.preventDefault()}else if(w<U.length-1)r(w+1),Y.preventDefault();Y.stopPropagation();return}if(N==="ArrowLeft"){if(Y.ctrlKey||Y.metaKey){if(!b)return;let O=b.getColumn(w);if(O?.resizable)X(w,O.width-10),Y.preventDefault()}else if(w>0)r(w-1),Y.preventDefault();Y.stopPropagation();return}if(N==="Home"){r(0),Y.preventDefault(),Y.stopPropagation();return}if(N==="End"){r(U.length-1),Y.preventDefault(),Y.stopPropagation();return}if(N==="Enter"||N===" "){if(!b)return;let O=b.getColumn(w);if(O?.def.sortable&&J){let p;if(V===O.def.key)p=D==="asc"?"desc":null;else p="asc";J({key:O.def.key,index:w,direction:p}),Y.preventDefault()}Y.stopPropagation();return}if(N==="ArrowDown"){j.focus(),Y.preventDefault(),Y.stopPropagation();return}};return M.addEventListener("pointerdown",I),M.addEventListener("click",h),M.addEventListener("keydown",c),{element:M,update:R,updateSort:G,rebuild:E,show:()=>{if(l)return;l=!0,M.style.display=""},hide:()=>{if(!l)return;l=!1,M.style.display="none"},destroy:()=>{M.removeEventListener("pointerdown",I),M.removeEventListener("click",h),M.removeEventListener("keydown",c),j.style.removeProperty("--vlist-table-header-height"),K.remove(),U=[],B=[],b=null,l=!1},syncScroll:z}};var i1=()=>{let j=[];return{acquire:()=>j.pop()||document.createElement("div"),release:($)=>{if($.parentNode?.removeChild($),j.length<200)$.className="",$.removeAttribute("data-id"),$.removeAttribute("data-index"),$.removeAttribute("aria-selected"),$.removeAttribute("aria-rowindex"),$.removeAttribute("role"),$.style.cssText="",$.textContent="",j.push($)},clear:()=>{j.length=0}}},F1=(j,$,q,X,J,Z,K,M,F)=>{let U=i1(),B=new Map,l=-1,V=q,D=null,b=null,A=null,H=(f,x)=>{b=f,A=x},L=(f,x)=>{x?f.setAttribute("aria-selected","true"):f.removeAttribute("aria-selected")},W=(f,x,a,e)=>{f.setAttribute("role",x),f.setAttribute("data-id",String(a)),f.setAttribute("data-index",String(e))},w=(f)=>String(f).startsWith("__placeholder_"),k=`${J}-item ${J}-table-row`,E=`${J}-item--selected`,R=`${J}-item--focused`,G=`${J}-table-cell`,z=`${J}-table-cell--center`,I=`${J}-table-cell--right`,y=`${J}-item--odd`,S=`${J}-item--placeholder`,h=`${J}-item--replaced`,r=`${J}-item ${J}-table-row ${J}-table-group-header`,c=`${J}-table-group-header-content`,P=(f,x,a,e,t=!1)=>{if(a.def.cell){let Q2=a.def.cell(x,a.def,e);if(typeof Q2==="string")f.innerHTML=Q2;else f.replaceChildren(Q2)}else{let Q2=x[a.def.key],Z2=Q2!=null?String(Q2):"";if(t&&Z2)f.innerHTML=`<span>${Z2}</span>`;else f.textContent=Z2}},T=(f,x,a,e,t=!1)=>{let Q2=k;if(M){if(D){let Z2=D(x);if(Z2>=0&&(Z2&1)===1)Q2+=` ${y}`}else if((x&1)===1)Q2+=` ${y}`}if(t)Q2+=` ${S}`;if(a)Q2+=` ${E}`;if(e)Q2+=` ${R}`;f.className=Q2},v=(f,x,a)=>{if(a?.compression?.isCompressed)return Math.round(n2(f,a.scrollPosition,x,a.totalItems,a.containerSize,a.compression,a.rangeStart));return x.getOffset(f)},Y=(f,x)=>{let a=x.def.align;if(a==="center")f.classList.add(z),f.classList.remove(I);else if(a==="right")f.classList.add(I),f.classList.remove(z);else f.classList.remove(z,I)},N=(f,x)=>{let e=V.columns.length;if(x.length===e)return x;let t=[];for(let Q2=0;Q2<e;Q2++){let Z2;if(Q2<x.length)Z2=x[Q2];else Z2=document.createElement("div"),Z2.className=G,f.appendChild(Z2);t.push(Z2)}for(let Q2=e;Q2<x.length;Q2++)x[Q2].remove();return t},O=(f,x,a,e)=>{let t=U.acquire(),Q2=f,Z2=a.getSize(x),G2=v(x,a,e);t.style.cssText=`width:${V.totalWidth}px;height:${Z2}px;transform:translateY(${G2}px)`,t.className=r,W(t,"presentation",f.id,x),t.removeAttribute("aria-selected"),t.removeAttribute("aria-rowindex"),t.replaceChildren();let M2=document.createElement("div");if(M2.className=c,A){let W2=A(Q2.groupKey,Q2.groupIndex);if(typeof W2==="string")M2.innerHTML=W2;else M2.appendChild(W2)}return t.appendChild(M2),{element:t,cells:[],index:x,isGroupHeader:!0,lastItemId:f.id,lastSelected:!1,lastFocused:!1,lastOffset:G2,lastHeight:Z2}},p=(f,x,a,e,t,Q2)=>{let Z2=U.acquire(),G2=t.getSize(x),M2=v(x,t,Q2),W2=w(f.id);Z2.style.cssText=`width:${V.totalWidth}px;height:${G2}px;transform:translateY(${M2}px)`,T(Z2,x,a,e,W2),W(Z2,"row",f.id,x),Z2.id=`${Z}-item-${x}`,Z2.setAttribute("aria-rowindex",String(x+2)),L(Z2,a);let J2=N(Z2,[]),n=V.columns;for(let $2=0;$2<J2.length&&$2<n.length;$2++){let K2=J2[$2],B2=n[$2];K2.style.cssText=`left:${B2.offset}px;width:${B2.width}px`,K2.setAttribute("role","gridcell"),K2.setAttribute("aria-colindex",String($2+1)),Y(K2,B2),P(K2,f,B2,x,W2)}return{element:Z2,cells:J2,index:x,isGroupHeader:!1,lastItemId:f.id,lastSelected:a,lastFocused:e,lastOffset:M2,lastHeight:G2}},s=(f,x,a,e,t)=>{for(let[W2,J2]of B)if(W2<x.start||W2>x.end)U.release(J2.element),B.delete(W2);let Q2=!1,Z2=K();if(Z2!==l)l=Z2,Q2=!0;let G2=null,M2=$();D=typeof M==="string"&&F?F():null;for(let W2=x.start;W2<=x.end;W2++){let J2=W2-x.start,n=f[J2];if(!n)continue;let $2=a.has(n.id),K2=W2===e,B2=b?b(n):!1,q2=B.get(W2);if(q2){if(q2.isGroupHeader!==B2){U.release(q2.element),B.delete(W2);let E2=B2?O(n,W2,M2,t):p(n,W2,$2,K2,M2,t);if(B.set(W2,E2),!G2)G2=document.createDocumentFragment();G2.appendChild(E2.element);continue}if(B2){if(q2.lastItemId!==n.id){let D2=n,b2=q2.element.firstElementChild;if(b2&&A){let y2=A(D2.groupKey,D2.groupIndex);if(typeof y2==="string")b2.innerHTML=y2;else b2.replaceChildren(y2)}q2.element.setAttribute("data-id",String(n.id)),q2.lastItemId=n.id}let R2=v(W2,M2,t);if(q2.lastOffset!==R2)q2.lastOffset=R2,q2.element.style.transform=`translateY(${R2}px)`;let A2=M2.getSize(W2);if(q2.lastHeight!==A2)q2.lastHeight=A2,q2.element.style.height=`${A2}px`}else{let E2=q2.lastItemId!==n.id,R2=q2.lastSelected!==$2,A2=q2.lastFocused!==K2;if(E2){let y2=q2.lastItemId!=null&&w(q2.lastItemId),F2=w(n.id);if(!F2&&c2(a,W2,n.id))$2=!0;let k2=V.columns;for(let H2=0;H2<q2.cells.length&&H2<k2.length;H2++)P(q2.cells[H2],n,k2[H2],W2,F2);if(T(q2.element,W2,$2,K2,F2),q2.element.setAttribute("data-id",String(n.id)),L(q2.element,$2),y2&&!F2)q2.element.classList.add(h),setTimeout(()=>{q2.element.classList.remove(h)},300);q2.lastItemId=n.id,q2.lastSelected=$2,q2.lastFocused=K2}else if(R2||A2)T(q2.element,W2,$2,K2,w(n.id)),L(q2.element,$2),q2.lastSelected=$2,q2.lastFocused=K2;let D2=v(W2,M2,t);if(q2.lastOffset!==D2)q2.lastOffset=D2,q2.element.style.transform=`translateY(${D2}px)`;let b2=M2.getSize(W2);if(q2.lastHeight!==b2)q2.lastHeight=b2,q2.element.style.height=`${b2}px`;if(Q2)q2.element.setAttribute("aria-rowindex",String(W2+2))}}else{if(c2(a,W2,n.id))$2=!0;let E2=B2?O(n,W2,M2,t):p(n,W2,$2,K2,M2,t);if(B.set(W2,E2),!G2)G2=document.createDocumentFragment();G2.appendChild(E2.element)}}if(G2)j.appendChild(G2)},o=(f)=>{let x=$();for(let[a,e]of B){let t=v(a,x,f);if(e.lastOffset!==t)e.lastOffset=t,e.element.style.transform=`translateY(${t}px)`}},u=(f,x,a,e)=>{let t=B.get(f);if(!t)return;if(t.isGroupHeader)return;let Q2=V.columns;for(let Z2=0;Z2<t.cells.length&&Z2<Q2.length;Z2++)P(t.cells[Z2],x,Q2[Z2],f);t.element.setAttribute("data-id",String(x.id)),t.lastItemId=x.id,T(t.element,f,a,e),L(t.element,a),t.lastSelected=a,t.lastFocused=e},Q=(f,x,a)=>{let e=B.get(f);if(!e)return;if(e.isGroupHeader)return;let t=e.lastSelected!==x,Q2=e.lastFocused!==a;if(t||Q2)T(e.element,f,x,a),L(e.element,x),e.lastSelected=x,e.lastFocused=a},_=(f)=>{V=f;let x=f.columns;for(let[,a]of B)if(a.element.style.width=`${f.totalWidth}px`,a.cells.length>0)for(let e=0;e<a.cells.length&&e<x.length;e++){let t=a.cells[e],Q2=x[e];t.style.left=`${Q2.offset}px`,t.style.width=`${Q2.width}px`}},C=(f)=>{return B.get(f)?.element},g=()=>{for(let[,f]of B)U.release(f.element);B.clear(),l=-1};return{render:s,updatePositions:o,updateItem:u,updateItemClasses:Q,getElement:C,updateColumnLayout:_,setGroupHeaderFn:H,clear:g,destroy:()=>{g(),U.clear()}}};var n1=new Set;function E0(j){if(!j.columns?.length)throw Error("[vlist] table: columns must be a non-empty array");if(j.rowHeight===void 0&&j.estimatedRowHeight===void 0)throw Error("[vlist] table: either rowHeight or estimatedRowHeight is required");let $=null,q=null,X=null,J,Z,K=null,M=null,F=null,U=!1,B=-1,l=-1,V=-1,D=!0,b=-1;function A(){if(U||!K)return;U=!0,M=K.getMethod("_getSelectedIds")??null,F=K.getMethod("_getFocusedIndex")??null}let H=[],L={start:0,end:0};function W(){if(J.destroyed||!K||!X||!$)return;let{scrollPosition:k,containerSize:E,totalItems:R}=J;if(!D&&k===B&&E===l&&R===V)return;if(B=k,l=E,V=R,D=!1,E<=0||R===0)return;let G=R+1;if(G!==b)b=G,K.dom.root.setAttribute("aria-rowcount",`${G}`);let z=Z.indexAtOffset(k),I=Z.indexAtOffset(k+E);if(I<R-1)I++;z=Math.max(0,z),I=Math.min(R-1,I);let y=K.config.overscan,S=Math.max(0,z-y),h=Math.min(R-1,I+y);if(S===J.prevRangeStart&&h===J.prevRangeEnd&&!J.renderPending)return;A();let r=M?.()??n1,c=F?.()??-1;H.length=0;for(let T=S;T<=h;T++){let v=K.getItem(T);if(v)H.push(v)}L.start=S,L.end=h,X.render(H,L,r,c),J.prevRangeStart=S,J.prevRangeEnd=h,J.renderPending=!1;let P=h-S+1;J.visibleCount=Math.min(P,J.capacity),J.startIndex=S;for(let T=0;T<J.visibleCount;T++){let v=S+T;J.visibleIndices[T]=v,J.visibleOffsets[T]=Z.getOffset(v),J.visibleSizes[T]=Z.getSize(v)}K.dom.content.style.height=Z.getTotalSize()+"px"}function w(){if(J.destroyed)return;J.prevRangeStart=-1,J.prevRangeEnd=-1,J.renderPending=!0,D=!0,W()}return{name:"table",priority:10,conflicts:["grid","masonry"],setup(k){K=k,J=k.getState(),Z=k.sizeCache;let{dom:E,config:R,emitter:G}=k,{classPrefix:z}=R;if(R.horizontal)throw Error("[vlist] table: cannot be used with horizontal orientation");if(R.reverse)throw Error("[vlist] table: cannot be used with reverse mode");let I=j.resizable??!0,y=j.minColumnWidth??50,S=j.maxColumnWidth??1/0,h=j.rowBorders??!0,r=j.rowHeight,c=j.headerHeight??(typeof r==="number"?r:40),P=j.sort?.key??null,T=j.sort?.direction??"asc";if($=H1(j.columns,y,S,I),typeof r==="function"||typeof r==="number")k.setSizeConfig(r);if(k.rebuildSizeCache(),E.root.classList.add(`${z}--table`),h)E.root.classList.add(`${z}--table-row-borders`);if(j.columnBorders)E.root.classList.add(`${z}--table-col-borders`);if(R.interactive)E.root.setAttribute("tabindex","0");E.root.setAttribute("role","grid"),E.root.setAttribute("aria-colcount",`${j.columns.length}`),E.viewport.setAttribute("role","none"),E.content.setAttribute("role","rowgroup");let v=J.crossSize;$.resolve(v);let Y=()=>{if(!$)return;E.content.style.minWidth=`${$.totalWidth}px`},N=(u,Q)=>{if(!$)return;let _=$.getColumn(u);if(!_)return;let C=_.width,g=$.resizeColumn(u,Q);q?.update($),X?.updateColumnLayout($),Y(),G.emit("column:resize",{key:_.def.key,index:u,previousWidth:C,width:g})},O=(u)=>{P=u.direction===null?null:u.key,T=u.direction??"asc",q?.updateSort(P,T),G.emit("column:sort",u)};if(q=L1(E.root,c,z,N,O),q.rebuild($),P)q.updateSort(P,T);Y(),X=F1(E.content,()=>Z,$,j.columns,z,z,()=>J.totalItems,R.striped||void 0),k.setRenderFn(W,w);let p=q,s=-1,o=()=>{let u=E.viewport.scrollLeft;if(u!==s)s=u,p?.syncScroll?.(u)};E.viewport.addEventListener("scroll",o,{passive:!0}),k.registerMethod("updateColumns",(u)=>{if(!$||!q)return;if($.updateColumns(u),$.resolve(J.crossSize),q.rebuild($),P)q.updateSort(P,T);Y(),X?.updateColumnLayout($),X?.clear(),k.forceRender()}),k.registerMethod("resizeColumn",(u,Q)=>{if(!$)return;let _;if(typeof u==="string"){let C=$.columns;_=-1;for(let g=0;g<C.length;g++)if(C[g].def.key===u){_=g;break}if(_===-1)return}else _=u;N(_,Q)}),k.registerMethod("getColumnWidths",()=>{if(!$)return{};let u={},Q=$.columns;for(let _=0;_<Q.length;_++)u[Q[_].def.key]=Q[_].width;return u}),k.registerMethod("setSort",(u,Q)=>{P=u,T=Q??"asc",q?.updateSort(P,T)}),k.registerMethod("getSort",()=>{return{key:P,direction:T}}),k.registerMethod("_getTableLayout",()=>$),k.registerMethod("_getTableHeaderHeight",()=>c),k.registerMethod("_updateRenderedItem",(u,Q,_,C)=>{X?.updateItem(u,Q,_,C)}),k.registerMethod("_replaceTableRenderer",(u)=>{X=u}),k.registerMethod("_updateTableForGroups",(u,Q)=>{X?.setGroupHeaderFn(u,Q)}),k.registerMethod("_updateItemClasses",(u,Q,_)=>{X?.updateItemClasses(u,Q,_)}),k.registerKeydownHandler((u)=>{if(u.key!=="ArrowLeft"&&u.key!=="ArrowRight")return;if(!$)return;let Q=$.columns;if(Q.length===0)return;let _=E.viewport.clientWidth;if($.totalWidth<=_)return;let C=E.viewport.scrollLeft;if(u.key==="ArrowRight"){for(let g=0;g<Q.length;g++)if(Q[g].offset>C+1){E.viewport.scrollLeft=Q[g].offset,u.preventDefault();return}}else{for(let g=Q.length-1;g>=0;g--)if(Q[g].offset<C-1){E.viewport.scrollLeft=Q[g].offset,u.preventDefault();return}if(C>0)E.viewport.scrollLeft=0,u.preventDefault()}}),k.registerDestroyHandler(()=>{E.viewport.removeEventListener("scroll",o),q?.destroy(),q=null,X?.destroy(),X=null,E.content.style.minWidth="",E.root.classList.remove(`${z}--table`),E.root.classList.remove(`${z}--table-row-borders`),E.root.classList.remove(`${z}--table-col-borders`),E.root.removeAttribute("role"),E.root.removeAttribute("aria-colcount"),E.root.removeAttribute("aria-rowcount"),E.root.removeAttribute("tabindex"),E.viewport.removeAttribute("role"),E.content.removeAttribute("role")})},hooks:{onResize(k,E){if(!$||!K)return;let R=J.crossSize;if($.resolve(R),q?.update($),X?.updateColumnLayout($),$)K.dom.content.style.minWidth=`${$.totalWidth}px`},onAfterScroll(){if(!K||!q)return;q?.syncScroll?.(K.dom.viewport.scrollLeft)}},destroy(){q?.destroy(),q=null,X?.destroy(),X=null,K=null}}}function R0(j){let $=j?.handle??null,q=j?.ghostClass??"vlist-sort-ghost",X=j?.shiftDuration??150,J=j?.edgeScrollZone??40,Z=j?.edgeScrollSpeed??20,K=j?.dragThreshold??5,M=j?.ghostContainer??null,F,U,B=null,l,V,D,b,A,H,L,W,w,k,E=!1,R=-1,G=-1,z=0,I=0,y=0,S=0,h=!1,r=null,c=0,P=null,T=0,v=0,Y=0,N=null,O=!1,p="",s=-1,o=-1,u=[],Q="",_=null,C=null,g="",i=!1,f=(m)=>{return m.closest("[data-index]")},x=(m)=>{let j2=m.dataset.index;return j2===void 0?-1:+j2},a=(m)=>{let j2=m.getBoundingClientRect(),Y2=m.cloneNode(!0);return Y2.className=`${b}-item ${q}`,Y2.removeAttribute("data-index"),Y2.style.cssText=`position:fixed;pointer-events:none;z-index:10000;width:${j2.width}px;height:${j2.height}px;left:${j2.left}px;top:${j2.top}px;transition:none;will-change:transform`,(M||document.body).appendChild(Y2),Y2},e=()=>{if(!r)return;r.style.left=`${y-v}px`,r.style.top=`${S-Y}px`},t=()=>{let m=F.totalItems;if(m===0)return 0;let j2=V.getBoundingClientRect(),Y2=F.scrollPosition,V2=A?y-v-j2.left+V.scrollLeft+Y2:S-Y-j2.top+Y2,_2=V2+T,T2=U.getOffset(R)+U.getSize(R);if(_2>T2){let O2=U.indexAtOffset(_2),p2=U.getOffset(O2)+U.getSize(O2)/2,f2=_2>p2?O2:O2-1;return Math.min(Math.max(f2,R),m-1)}let z2=U.getOffset(R);if(V2<z2){let O2=U.indexAtOffset(V2),p2=U.getOffset(O2)+U.getSize(O2)/2,f2=V2<p2?O2:O2+1;return Math.max(Math.min(f2,R),0)}return R},Q2=()=>{let m=l.children,j2=T;for(let Y2=0;Y2<m.length;Y2++){let V2=m[Y2],_2=x(V2);if(_2<0||_2===R)continue;let T2=0;if(G>R){if(_2>R&&_2<=G)T2=-j2}else if(G<R){if(_2>=G&&_2<R)T2=j2}let z2=U.getOffset(_2),O2=Math.round(z2+T2);V2.style.transition=L,V2.style.transform=`${H}(${O2}px)`}},Z2=()=>{let m=l.children;for(let j2=0;j2<m.length;j2++){let Y2=m[j2],V2=x(Y2);if(V2>=0)Y2.style.transform=`${H}(${Math.round(U.getOffset(V2))}px)`;Y2.style.transition=""}},G2=()=>{if(!B)return;let m=t();if(m===G)return;G=m,Q2(),B.emitter.emit("sort:move",{fromIndex:R,currentIndex:G})},M2=()=>{let m=V.getBoundingClientRect();if(A)return y<m.left||y>m.right;return S<m.top||S>m.bottom},W2=()=>{let m=B?.getMethod("_getFocusedIndex");return m?m():-1},J2=(m)=>{let j2=B?.getMethod("_focusById");if(j2)j2(m)},n=(m)=>{if(!B)return;let j2=A?V.clientWidth:V.clientHeight,Y2=F.scrollPosition,V2=U.getOffset(m),_2=V2+U.getSize(m);if(V2<Y2)B.scrollTo(Math.max(0,V2));else if(_2>Y2+j2)B.scrollTo(_2-j2)},$2=(m)=>{if(!C)return;C.textContent="",C.offsetHeight,C.textContent=m},K2=(m)=>{if(!B)return"";let Y2=B.getItems()[m];if(!Y2)return"";return l.querySelector(`[data-index="${m}"]`)?.textContent?.trim()||String(Y2.id)},B2=()=>String(F.totalItems),q2=(m)=>{let j2=l.children;for(let Y2=0;Y2<j2.length;Y2++)j2[Y2].style.transition=m},E2=()=>{let m=()=>{if(!E||!B)return;let j2=V.getBoundingClientRect(),Y2=0,V2=3;if(A){let T2=y-j2.left,z2=j2.right-y;if(T2<J){let O2=Math.min(V2,1-T2/J);Y2=-Z*O2*O2}else if(z2<J){let O2=Math.min(V2,1-z2/J);Y2=Z*O2*O2}}else{let T2=S-j2.top,z2=j2.bottom-S;if(T2<J){let O2=Math.min(V2,1-T2/J);Y2=-Z*O2*O2}else if(z2<J){let O2=Math.min(V2,1-z2/J);Y2=Z*O2*O2}}let _2=M2();if(Y2!==0){let T2=F.scrollPosition,z2=U.getTotalSize()-(A?V.clientWidth:V.clientHeight);if(Y2<0&&T2<=0||Y2>0&&T2>=z2)i=_2;else i=!0,B.scrollTo(T2+Y2)}else i=_2;c=requestAnimationFrame(m)};c=requestAnimationFrame(m)},R2=()=>{if(c)cancelAnimationFrame(c),c=0},A2=(m=!1)=>{if(E=!1,h=!1,r&&r.parentNode)r.remove();r=null,P=null;let j2=l.children;for(let V2=0;V2<j2.length;V2++){let _2=j2[V2];_2.classList.remove(k);let T2=x(_2);if(T2>=0)_2.style.transform=`${H}(${Math.round(U.getOffset(T2))}px)`;_2.style.transition=""}R2(),D.classList.remove(W),document.body.style.cursor="";let Y2=window.getSelection();if(Y2)Y2.removeAllRanges();if(document.removeEventListener("pointermove",y2),document.removeEventListener("pointerup",F2),document.removeEventListener("pointercancel",H2),!m&&B)B.forceRender()},D2=(m,j2)=>{if(!B)return;let Y2=m!==j2&&m>=0&&j2>=0,V2=()=>{if(!B)return;if(E=!1,Y2){if(D.classList.add(w),B.emitter.emit("sort:end",{fromIndex:m,toIndex:j2}),N!==null)J2(N);A2(!0),requestAnimationFrame(()=>D.classList.remove(w))}else D.classList.add(w),B.emitter.emit("sort:cancel",{originalItems:[...B.getItems()]}),A2(!1),requestAnimationFrame(()=>D.classList.remove(w))};if(!r){V2();return}let _2=V.getBoundingClientRect(),T2=F.scrollPosition,z2=U.getOffset(j2),O2=X>0?X:150;if(r.style.transition=`left ${O2}ms ease, top ${O2}ms ease`,A)r.style.left=`${_2.left-V.scrollLeft+z2-T2}px`,r.style.top=`${_2.top}px`;else r.style.left=`${_2.left}px`,r.style.top=`${_2.top+z2-T2}px`;let p2=!1,f2=()=>{if(p2)return;p2=!0,r?.removeEventListener("transitionend",f2),V2()};r.addEventListener("transitionend",f2),setTimeout(f2,O2+50)},b2=(m)=>{if(F.destroyed||!B)return;if(E)return;if(O)X2();if(m.button!==0)return;let j2=m.target;if($){if(!j2.closest($))return}let Y2=f(j2);if(!Y2)return;let V2=x(Y2);if(V2<0)return;z=m.clientX,I=m.clientY,y=m.clientX,S=m.clientY,R=V2,h=!1,P=Y2;let _2=Y2.getBoundingClientRect();v=m.clientX-_2.left,Y=m.clientY-_2.top,document.addEventListener("pointermove",y2),document.addEventListener("pointerup",F2),document.addEventListener("pointercancel",H2)};function y2(m){if(!B)return;if(y=m.clientX,S=m.clientY,!h){let j2=y-z,Y2=S-I;if(Math.sqrt(j2*j2+Y2*Y2)<K)return;if(h=!0,E=!0,G=R,D.classList.add(W),document.body.style.cursor="grabbing",T=U.getSize(R),P)r=a(P),P.classList.add(k);let V2=W2();if(V2>=0){let T2=B.getItems()[V2];N=T2?T2.id:null}else N=null;B.emitter.emit("sort:start",{index:R}),E2()}if(E){if(m.preventDefault(),e(),!i)G2();else if(M2()){if(G!==R)G=R,Z2()}}}function F2(m){if(!h){document.removeEventListener("pointermove",y2),document.removeEventListener("pointerup",F2),document.removeEventListener("pointercancel",H2),P=null;return}m.preventDefault(),document.removeEventListener("pointermove",y2),document.removeEventListener("pointerup",F2),document.removeEventListener("pointercancel",H2),R2(),D2(R,G)}let k2=()=>{if(!h)return;document.removeEventListener("pointermove",y2),document.removeEventListener("pointerup",F2),document.removeEventListener("pointercancel",H2),R2(),Z2(),D2(R,R)};function H2(){k2()}let w2=()=>{let m=l.querySelectorAll(`.${g}`);for(let j2=0;j2<m.length;j2++)m[j2].classList.remove(g)},N2=()=>{w2();let m=l.querySelector(`[data-id="${p}"]`);if(m)m.classList.add(g)},L2=(m)=>{if(!B)return;let j2=B.getItems(),Y2=j2[m];if(!Y2)return;O=!0,p=Y2.id,s=m,o=m,u=[...j2],D.classList.add(W),B.emitter.emit("sort:start",{index:m}),N2(),$2(`Grabbed ${K2(m)}. Current position ${m+1} of ${B2()}. Use Up and Down arrow keys to move, Space to drop, Escape to cancel.`)},P2=()=>{if(!O||!B)return;O=!1;let m=o,j2=K2(m);q2("none"),D.classList.remove(W),w2(),J2(p),B.forceRender(),$2(`${j2} dropped. Final position ${m+1} of ${B2()}.`),u=[],requestAnimationFrame(()=>q2(""))},X2=()=>{if(!O||!B)return;O=!1;let m=s;if(q2("none"),D.classList.remove(W),w2(),o!==m)B.emitter.emit("sort:cancel",{originalItems:u});J2(p),B.forceRender(),n(m),$2(`Reorder cancelled. Returned to position ${m+1} of ${B2()}.`),u=[],requestAnimationFrame(()=>q2(""))},d=(m)=>{if(!O||!B)return;let j2=F.totalItems,Y2=o+m;if(Y2<0||Y2>=j2)return;let V2=o,_2=Y2;q2("none"),B.emitter.emit("sort:end",{fromIndex:V2,toIndex:_2}),o=_2,J2(p),B.forceRender(),n(_2),N2(),$2(`${K2(_2)} moved. New position ${_2+1} of ${B2()}.`),requestAnimationFrame(()=>q2(""))},U2=(m)=>{if(F.destroyed)return;if(E){if(m.key==="Escape")m.preventDefault(),m.stopImmediatePropagation(),k2();return}if(O)switch(m.key){case" ":case"Enter":m.preventDefault(),m.stopImmediatePropagation(),P2();return;case"Escape":m.preventDefault(),m.stopImmediatePropagation(),X2();return;case"ArrowUp":case"ArrowLeft":m.preventDefault(),m.stopImmediatePropagation(),d(-1);return;case"ArrowDown":case"ArrowRight":m.preventDefault(),m.stopImmediatePropagation(),d(1);return;default:if(!m.key.startsWith("F")&&m.key!=="Tab")m.preventDefault(),m.stopImmediatePropagation();return}if(m.key===" "&&!m.shiftKey&&!m.ctrlKey&&!m.metaKey){let j2=W2();if(j2>=0)m.preventDefault(),m.stopImmediatePropagation(),L2(j2)}};return{name:"sortable",priority:30,conflicts:["grid","masonry","table","scale"],setup(m){B=m,F=m.getState(),U=m.sizeCache,l=m.dom.content,V=m.dom.viewport,D=m.dom.root,b=m.config.classPrefix,A=m.config.horizontal,H=A?"translateX":"translateY",L=X>0?`transform ${X}ms ease`:"none",W=`${b}--sorting`,w=`${b}--settling`,k=`${b}-item--drag-source`,g=`${b}-item--kb-sorting`,m.registerMethod("isSorting",()=>E||O),l.addEventListener("pointerdown",b2),D.addEventListener("keydown",U2),Q=`${b}-sort-instructions`,_=document.createElement("div"),_.id=Q,_.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",_.textContent="Press Space to reorder. Use arrow keys to move, Space to drop, Escape to cancel.",D.appendChild(_),C=document.createElement("div"),C.setAttribute("role","status"),C.setAttribute("aria-live","assertive"),C.setAttribute("aria-atomic","true"),C.style.cssText="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0",D.appendChild(C),m.registerDestroyHandler(()=>{if(O)X2();A2(),l.removeEventListener("pointerdown",b2),D.removeEventListener("keydown",U2),_?.remove(),C?.remove()})},hooks:{onCommit(){if(!B)return;let m=l.children;for(let j2=0;j2<m.length;j2++){let Y2=m[j2],V2=x(Y2);if(V2<0)continue;if(Y2.setAttribute("aria-roledescription","sortable item"),Y2.setAttribute("aria-describedby",Q),O)if(Y2.getAttribute("data-id")===String(p))Y2.classList.add(g);else Y2.classList.remove(g);if(E)if(V2===R)Y2.classList.add(k),P=Y2;else{Y2.classList.remove(k);let _2=0;if(G>R){if(V2>R&&V2<=G)_2=-T}else if(G<R){if(V2>=G&&V2<R)_2=T}let T2=Math.round(U.getOffset(V2)+_2);Y2.style.transform=`${H}(${T2}px)`}}}},destroy(){if(r&&r.parentNode)r.remove();r=null,R2(),_?.remove(),C?.remove(),B=null}}}var t1=50,e1=0.1;function O1(j){let $=0,q=0,X=0;function J(){return X>0?q/X:0}function Z(F){if($=F,F>e1&&F<t1)q+=F,X++}function K(){let F=j.getTotal();if(F===0)return 0;let U=j.getItemSize();if(U<=0)return 0;let B=j.getContainerSize();if(B<=0)return 0;let l=j.getScrollPosition(),V=typeof j.getColumns==="function"?j.getColumns():1,b=Math.ceil(F/V)*U,H=Math.min(b,S2)-B,L=b-B,W=H>0?L/H:1,w=l*W,k=Math.ceil((w+B)/U);return Math.min(k*V,F)}function M(){let F=j.getTotal(),U=K();return{progress:F>0?Math.min(100,Math.max(0,U/F*100)):0,velocity:$,velocityAvg:J(),itemCount:U,total:F}}return{getState:M,onVelocity:Z}}export{_0 as transition,E0 as table,R0 as sortable,M0 as snapshots,N0 as selection,U0 as scrollbar,K0 as scale,V0 as page,A0 as masonry,F0 as groups,B0 as grid,D0 as data,e0 as createVList,O1 as createStats,G0 as autosize,W0 as a11y};
package/dist/internals.js CHANGED
@@ -1,60 +1 @@
1
- /**
2
- * vlist/internals - Low-Level Exports
3
- *
4
- * Advanced utilities for feature authors, custom renderers, and power users.
5
- * These are implementation details — use at your own risk.
6
- *
7
- * For the stable public API, import from 'vlist' instead.
8
- *
9
- * @packageDocumentation
10
- */
11
- // =============================================================================
12
- // Groups domain
13
- // =============================================================================
14
- export { createGroupLayout, buildLayoutItems, createGroupedSizeFn, createStickyHeader, isGroupHeader, } from "./plugins/groups";
15
- // =============================================================================
16
- // Grid domain
17
- // =============================================================================
18
- export { createGridLayout, } from "./plugins/grid";
19
- export { createGridRenderer, } from "./plugins/grid/renderer";
20
- // =============================================================================
21
- // Table domain
22
- // =============================================================================
23
- export { createTableLayout, createTableHeader, createTableRenderer, } from "./plugins/table";
24
- // =============================================================================
25
- // Masonry domain
26
- // =============================================================================
27
- export { createMasonryLayout, createMasonryRenderer, } from "./plugins/masonry";
28
- // =============================================================================
29
- // Rendering domain (virtual scrolling, size cache, scaling)
30
- // =============================================================================
31
- export {
32
- // Size cache (variable item sizes - works for both vertical and horizontal)
33
- createSizeCache,
34
- // Measured size cache (auto-measurement for Mode B)
35
- createMeasuredSizeCache,
36
- // Virtual scrolling calculations
37
- simpleVisibleRange, calculateRenderRange, calculateTotalSize, calculateActualSize, calculateItemOffset, calculateScrollToIndex, clampScrollPosition, rangesEqual, isInRange, getRangeCount, diffRanges,
38
- // Scale utilities (for handling 1M+ items)
39
- MAX_VIRTUAL_SIZE, getCompressionState as getScaleState, getCompression as getScale, needsCompression as needsScaling, getMaxItemsWithoutCompression as getMaxItemsWithoutScaling, getCompressionInfo as getScaleInfo, calculateCompressedVisibleRange as calculateScaledVisibleRange, calculateCompressedRenderRange as calculateScaledRenderRange, calculateCompressedItemPosition as calculateScaledItemPosition, calculateCompressedScrollToIndex as calculateScaledScrollToIndex, calculateIndexFromScrollPosition, } from "./rendering";
40
- // =============================================================================
41
- // Selection domain
42
- // =============================================================================
43
- export { createSelectionState, selectItems, deselectItems, toggleSelection, selectAll, clearSelection, isSelected, getSelectedIds, } from "./plugins/selection";
44
- export { getSelectedItemsImmutable as getSelectedItems } from "./plugins/selection/state";
45
- // =============================================================================
46
- // Events domain
47
- // =============================================================================
48
- export { createEmitter } from "./events";
49
- // =============================================================================
50
- // Async domain
51
- // =============================================================================
52
- export { createDataManager as createAsyncManager, createSparseStorage, createPlaceholderManager, isPlaceholderItem, filterPlaceholders, mergeRanges, calculateMissingRanges, } from "./plugins/async";
53
- // =============================================================================
54
- // Scrollbar domain
55
- // =============================================================================
56
- export { createScrollController, createScrollbar, rafThrottle, } from "./plugins/scrollbar";
57
- // =============================================================================
58
- // Stats utility
59
- // =============================================================================
60
- export { createStats, } from "./utils/stats";
1
+ var v2=(J)=>{return J!==null&&typeof J==="object"&&J.__groupHeader===!0};var h2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let j=q+$+1>>>1;if(J[j].headerLayoutIndex<=Q)q=j;else $=j-1}return q},a2=(J,Q)=>{let q=0,$=J.length-1;while(q<$){let j=q+$+1>>>1;if(J[j].firstDataIndex<=Q)q=j;else $=j-1}return q},s2=(J,Q,q)=>{if(J===0)return[];let $=[],j=null,Y=0,B=0;for(let D=0;D<J;D++){let P=q?.(D);if(!P)continue;let V=Q(D,P);if(j===null)j=V,Y=0;else if(V!==j){let y=D-Y;$.push({key:j,groupIndex:$.length,headerLayoutIndex:B,firstDataIndex:Y,count:y}),B=B+1+y,j=V,Y=D}}if(j!==null)$.push({key:j,groupIndex:$.length,headerLayoutIndex:B,firstDataIndex:Y,count:J-Y});return $},n2=(J,Q)=>{if(J.length===0||Q.length===0)return[];let q=J.length+Q.length,$=Array(q),j=0;for(let Y of Q){$[j]={id:`__group_header_${Y.groupIndex}`,__groupHeader:!0,groupKey:Y.key,groupIndex:Y.groupIndex},j++;for(let B=0;B<Y.count;B++)$[j]=J[Y.firstDataIndex+B],j++}return $},o2=(J,Q,q=!1)=>{let $=typeof Q==="number"?(j)=>Q:Q;return(j)=>{let Y=J.getEntry(j);if(Y.type==="header"){if(q&&Y.group.groupIndex===0)return 0;return J.getHeaderHeight(Y.group.groupIndex)}return $(Y.dataIndex)}},i2=(J,Q,q)=>{let $=s2(J,Q.getGroupForIndex,q),j=J+$.length,Y=Q.header?.height??Q.header?.width??Q.headerHeight;return{get totalEntries(){return j},get groupCount(){return $.length},get groups(){return $},getEntry:(E)=>{if($.length===0)return{type:"item",dataIndex:E,group:{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0}};let W=h2($,E),_=$[W];if(E===_.headerLayoutIndex)return{type:"header",group:_};let Z=E-_.headerLayoutIndex-1;return{type:"item",dataIndex:_.firstDataIndex+Z,group:_}},layoutToDataIndex:(E)=>{if($.length===0)return E;let W=h2($,E),_=$[W];if(E===_.headerLayoutIndex)return-1;let Z=E-_.headerLayoutIndex-1;return _.firstDataIndex+Z},dataToLayoutIndex:(E)=>{if($.length===0)return E;let W=a2($,E),_=$[W],Z=E-_.firstDataIndex;return _.headerLayoutIndex+1+Z},getGroupAtLayoutIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let W=h2($,E);return $[W]},getGroupAtDataIndex:(E)=>{if($.length===0)return{key:"",groupIndex:0,headerLayoutIndex:0,firstDataIndex:0,count:0};let W=a2($,E);return $[W]},getHeaderHeight:typeof Y==="number"?(E)=>Y:(E)=>{let W=$[E];if(!W)return 0;return Y(W.key,E)},rebuild:(E,W)=>{$=s2(E,Q.getGroupForIndex,W??q),j=E+$.length}}};var hJ=(J,Q,q,$,j=0)=>{let Y=q?"width":"height",B=document.createElement("div");return B.className=`${Q}-sticky-header`,B.setAttribute("role","presentation"),B.setAttribute("aria-hidden","true"),B.style.cssText="position:relative;z-index:5;pointer-events:none;overflow:hidden;"+(q?`top:0;bottom:0;left:${j||0}px`:`top:${j||0}px`),B.style[Y]=`${$}px`,J.insertBefore(B,J.firstChild),B},t2=(J,Q,q,$,j,Y=!1,B=0,D,P)=>{let V=Y?"width":"height",y=Y?"height":"width",f=Y?"X":"Y",G=(F,K)=>{F.style[V]=`${K}px`},E=P??hJ(J,j,Y,0,B),W=()=>{let F=document.createElement("div");return F.className="sticky-group",F.style.position="absolute",F.style.willChange="transform",F.style[y]="100%",F},_=W(),Z=W();E.append(_,Z);let O=_,T=Z,z=Q.groups,w=[],I=[],g=[],u=0,Y2=()=>{z=Q.groups,u=z.length,w=Array(u),I=Array(u),g=Array(u);let F=D?D():1;for(let K=0;K<u;K++)w[K]=q.getOffset(z[K].headerLayoutIndex)*F,I[K]=Q.getHeaderHeight(K),g[K]=I[K]*F};Y2();let o=-1,i=0,$2=0,U2=-1,j2=!1,r=0,d=!1,J2=(F,K)=>{$(F,K);let R=I[K];return G(F,R),R},L=(F)=>{F.replaceChildren(),F.style.transform=""},X=(F)=>{if(F===o)return;if(o=F,i=0,$2=0,F<0||F>=u){L(O);return}i=J2(O,F),$2=g[F],G(E,i),O.style.transform=""},U=(F)=>{if(F===r)return;r=F;let K=Math.round(F);O.style.transform=`translate${f}(${K}px)`,T.style.transform=`translate${f}(${K+i}px)`},M=()=>{r=0,O.style.transform="",T.style.transform=""},v=()=>{if(!d)return;let F=O;O=T,T=F,o=U2,i=o>=0?I[o]:0,$2=o>=0?g[o]:0,G(E,i),L(T),U2=-1,d=!1,M()},c=()=>{if(!d)return;L(T),U2=-1,d=!1,M()},l=!!P,S=()=>{if(j2)return;if(j2=!0,l)E.style.visibility="";else E.style.display=""},N=()=>{if(!j2)return;if(j2=!1,l)E.style.visibility="hidden";else E.style.display="none";L(O),o=-1,i=0,$2=0,c()},H=(F)=>{if(u===0){N();return}if(F<w[0]){N();return}let K=0,R=u-1;while(K<R){let h=K+R+1>>>1;if(w[h]+g[h]<=F)K=h;else R=h-1}if(!j2)S();X(K);let b=K+1;if(b<u){let h=w[b]-F;if(h<=0&&h>-$2){if(U2!==b||!d)U2=b,J2(T,b),d=!0;let p=$2>0?h/$2*i:h;U(p)}else if(h<=-$2){if(d)v()}else if(d)c()}else if(d)c()},A=()=>{Y2();let F=o;if(o=-1,i=0,$2=0,F>=0)X(F)},k=()=>{E.remove(),o=-1,i=0,$2=0,U2=-1,j2=!1,d=!1};if(!P)E.style.display="none";return{update:H,refresh:A,show:S,hide:N,destroy:k}};var e2=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.isHeaderFn,j={row:0,col:0},Y=(W)=>{if(W<=0)return 0;if(!$)return Math.ceil(W/Q);let _=0,Z=0,O=0;for(let T=0;T<W;T++)if($(T)){if(O++,Z)_++,Z=0;_++,Z=0}else if(Z++,Z>=Q)_++,Z=0;if(Z)_++;return _},B=(W)=>{return j.row=D(W),j.col=P(W),j},D=(W)=>{if(!$)return Math.floor(W/Q);let _=0,Z=0;for(let O=0;O<=W;O++)if($(O)){if(Z)_++,Z=0;if(O===W)return _;_++,Z=0}else{if(O===W)return _;if(Z++,Z>=Q)_++,Z=0}return console.warn(`⚠️ getRow(${W}) fell through - returning ${_}`),_},P=(W)=>{if(!$)return W%Q;if($(W))return 0;let _=0;for(let Z=0;Z<=W;Z++)if($(Z))_=0;else{if(Z===W)return _;if(_++,_>=Q)_=0}return _},V=(W,_,Z)=>{if(Z<=0)return{start:0,end:-1};if(!$){let I=Math.max(0,W*Q),g=Math.min(Z-1,(_+1)*Q-1);return{start:I,end:g}}let O=-1,T=-1,z=0,w=0;for(let I=0;I<Z;I++){if($(I)){if(w)z++,w=0;if(z>=W&&z<=_){if(O<0)O=I;T=I}z++,w=0}else{if(z>=W&&z<=_){if(O<0)O=I;T=I}if(w++,w>=Q)z++,w=0}if(z>_&&!w)break}if(O<0)return{start:0,end:-1};return{start:O,end:T}},y=(W,_,Z)=>{if(_<0||_>=Q)return-1;let O=W*Q+_;if(O<0||O>=Z)return-1;return O},f=(W)=>{let _=(Q-1)*q;return Math.max(0,(W-_)/Q)};return{get columns(){return Q},get gap(){return q},update:(W)=>{if(W.columns!==void 0)Q=Math.max(1,Math.floor(W.columns));if(W.gap!==void 0)q=W.gap;if(W.isHeaderFn!==void 0)$=W.isHeaderFn},getTotalRows:Y,getPosition:B,getRow:D,getCol:P,getItemRange:V,getItemIndex:y,getColumnWidth:f,getColumnOffset:(W,_)=>{let Z=f(_);return W*(Z+q)}}};var H2=16000000;var JJ="x",QJ=20,g2="_isPlaceholder",R2="__placeholder_";var y2=(J,Q,q)=>{if(String(q).startsWith(R2))return!1;let $=R2+Q;if(J.has($))return J.delete($),J.add(q),!0;return!1},$J=(J)=>({selected:new Set(J??[]),focusedIndex:-1,focusVisible:!1}),u2=(J,Q,q)=>{if(q==="none")return J;let $=new Set(J.selected);if(q==="single"){if($.clear(),Q.length>0)$.add(Q[0])}else for(let j of Q)$.add(j);return{...J,selected:$}},m2=(J,Q)=>{let q=new Set(J.selected);for(let $ of Q)q.delete($);return{...J,selected:q}},qJ=(J,Q,q)=>{if(q==="none")return J;if(J.selected.has(Q))return m2(J,[Q]);else return u2(J,[Q],q)},YJ=(J,Q,q)=>{if(q!=="multiple")return J;return{...J,selected:new Set(Q.map(($)=>$.id))}},jJ=(J)=>({...J,selected:new Set});var BJ=(J,Q)=>{return J.selected.has(Q)},XJ=(J)=>{return Array.from(J.selected)},UJ=(J,Q)=>{let q=[];for(let $ of J.selected){let j=Q($);if(j)q.push(j)}return q};var gJ=(J,Q)=>{let q=Q;return{getOffset:($)=>$*J,getSize:($)=>J,indexAtOffset:($)=>{if(q===0||J===0)return 0;return Math.max(0,Math.min(Math.floor($/J),q-1))},getTotalSize:()=>q*J,getTotal:()=>q,rebuild:($)=>{q=$},isVariable:()=>!1}},uJ=(J,Q)=>{let q=Q,$=new Float64Array(0),j=(B)=>{q=B,$=new Float64Array(B+1),$[0]=0;for(let D=0;D<B;D++)$[D+1]=$[D]+J(D)};j(Q);let Y=(B)=>{if(q===0)return 0;if(B<=0)return 0;if(B>=$[q])return q-1;let D=0,P=q-1;while(D<P){let V=D+P+1>>>1;if($[V]<=B)D=V;else P=V-1}return D};return{getOffset:(B)=>{if(B<=0)return 0;if(B>=q)return $[q];return $[B]},getSize:(B)=>J(B),indexAtOffset:(B)=>Y(B),getTotalSize:()=>$[q]??0,getTotal:()=>q,rebuild:(B)=>j(B),isVariable:()=>!0}},z2=(J,Q)=>{if(typeof J==="number")return gJ(J,Q);return uJ(J,Q)},d2=(J,Q,q,$)=>{if($===0)return 0;if(!J.isVariable())return Math.ceil(q/J.getSize(0));let j=0,Y=0,B=Q;while(B<$&&Y<q)Y+=J.getSize(B),j++,B++;return Math.max(1,j)};var w2=(J,Q,q)=>{let $=Q.getTotalSize(),j=q===!0||$>H2,Y=$>H2?H2:$,B=$>0?Y/$:1;return{isCompressed:j,actualSize:$,virtualSize:Y,ratio:B}},NJ=(J,Q,q,$,j,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;if(!j.isCompressed||j.ratio===1){let E=q.indexAtOffset(J),W=q.indexAtOffset(J+Q);if(W<$-1)W++;return Y.start=Math.max(0,E),Y.end=Math.min($-1,Math.max(0,W)),Y}let{virtualSize:B}=j,D=J/B,P=q.getTotalSize(),V=D*P,y=q.indexAtOffset(V),f=d2(q,Math.max(0,y),Q,$),G=y+f;return Y.start=Math.max(0,y),Y.end=Math.min($-1,Math.max(0,G)),Y},KJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},P2=(J,Q,q,$,j,Y,B)=>{if(!Y.isCompressed||$===0)return q.getOffset(J);if(Y.ratio===1)return q.getOffset(J)-Q;let{virtualSize:D}=Y,P=Q/D,V=q.getTotalSize(),y=P*V;return q.getOffset(J)-y},ZJ=(J,Q,q,$,j,Y="start")=>{if($===0)return 0;let B;if(j.isCompressed&&j.ratio!==1){B=J/$*j.virtualSize;let y=Q.getSize(J);switch(Y){case"center":B-=(q-y)/2*j.ratio;break;case"end":B-=(q-y)*j.ratio;break}return Math.max(0,B)}B=Q.getOffset(J);let D=Q.getSize(J);switch(Y){case"center":B-=(q-D)/2;break;case"end":B-=q-D;break}let P=j.virtualSize-q;return Math.max(0,Math.min(B,P))},_J=(J,Q,q,$)=>{if(q===0)return 0;if($.isCompressed&&$.ratio!==1){let j=J/$.virtualSize;return Math.floor(j*q)}return Q.indexAtOffset(J)},WJ=(J,Q)=>{if(typeof Q==="number")return J*Q>H2;return Q.getTotalSize()>H2},VJ=(J)=>{if(J<=0)return 0;return Math.floor(H2/J)},MJ=(J,Q,q)=>{let $=w2(J,Q,q);if(!$.isCompressed)return`No compression needed (${J} items, ${($.actualSize/1e6).toFixed(2)}M px)`;return`Compressed to ${($.ratio*100).toFixed(1)}% (${J} items, ${($.actualSize/1e6).toFixed(1)}M px → ${($.virtualSize/1e6).toFixed(1)}M px virtual)`};var C2=(J,Q,q)=>{let $=Array.from(Q).sort((B,D)=>B-D);if($.length<=1)return;let j=[];for(let B=0;B<$.length;B++){let D=q($[B]);if(D)j.push(D)}if(j.length<=1)return;let Y=J.firstChild;for(let B=0;B<j.length;B++){let D=j[B];if(D===Y)Y=Y.nextSibling;else J.insertBefore(D,Y)}};var mJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-row"),Y.removeAttribute("data-col"),Q.push(Y)},clear:()=>{Q.length=0}}},dJ=1,cJ=(J,Q,q,$,j,Y,B,D,P=!1,V,y)=>{let f=mJ(),G=new Map,E=Y,W=!1,_=0,Z="",O=-1,T={selected:!1,focused:!1},z=(N,H)=>{return T.selected=N,T.focused=H,T},w=`${j}-item ${j}-grid-item`,I=`${j}-group-header`,g=`${j}-item--selected`,u=`${j}-item--focused`,Y2=`${j}-item--placeholder`,o=`${j}-item--replaced`,i=(N,H)=>{if(typeof H==="string")N.innerHTML=H;else N.replaceChildren(H)},$2=(N,H,A)=>{N.classList.toggle(g,H),N.classList.toggle(u,A)},U2=(N,H)=>{let A=$.getRow(N);if(H?.compression?.isCompressed)return P2(A,H.scrollPosition,q,H.totalItems,H.containerSize,H.compression,H.rangeStart);return q.getOffset(A)},j2=(N,H)=>{let A=$.getCol(N),F=W&&A===0?0:$.getColumnOffset(A,E),K;if(W){let R=$.getRow(N),b=0,h=-1;for(let p=0;p<N;p++){let m=$.getRow(p);if(m<R&&m!==h){let n=q.getSize(p);b+=n,h=m}}K=b}else K=U2(N,H);if(P)return`translate(${Math.round(K)}px, ${Math.round(F)}px)`;return`translate(${Math.round(F)}px, ${Math.round(K)}px)`},r=(N,H)=>{let A=N.classList.contains(I),k=A?E:$.getColumnWidth(E),F;if(W||A)F=q.getSize(H)-$.gap;else{let K=$.getRow(H);F=q.getSize(K)-$.gap}if(P)N.style.width=`${F}px`,N.style.height=`${k}px`;else N.style.width=`${k}px`,N.style.height=`${F}px`},d=(N,H,A,k,F)=>{let K=f.acquire(),R=!!H.__groupHeader,b=z(A,k);if(K.className=R?I:w,K.dataset.index=String(N),K.dataset.id=String(H.id),K.dataset.row=String($.getRow(N)),K.dataset.col=String($.getCol(N)),R)K.setAttribute("role","presentation"),K.removeAttribute("aria-selected"),K.removeAttribute("aria-setsize"),K.removeAttribute("aria-posinset"),K.removeAttribute("id");else if(y!==!1){if(K.setAttribute("role","option"),K.ariaSelected=String(A),D)K.id=`${D}-item-${N}`;if(B){let m=B();if(m!==O)O=m,Z=String(m);K.setAttribute("aria-setsize",Z);let n=V?V(N):N+1;K.setAttribute("aria-posinset",String(n))}}else if(K.setAttribute("role","listitem"),K.removeAttribute("aria-selected"),B){let m=B();if(m!==O)O=m,Z=String(m);K.setAttribute("aria-setsize",Z);let n=V?V(N):N+1;K.setAttribute("aria-posinset",String(n))}r(K,N);let h=Q(H,N,b);if(i(K,h),String(H.id).startsWith(R2))K.classList.add(Y2);return $2(K,A,k),K.style.transform=F,{element:K,lastItemId:H.id,lastSelected:A,lastFocused:k,lastTransform:F,lastSeenFrame:_}},J2=(N,H,A,k,F)=>{if(_++,H.start===0&&N.length)W=v2(N[0]);for(let[b,h]of G)if(b>=H.start&&b<=H.end)h.lastSeenFrame=_;else if(_-h.lastSeenFrame>dJ)f.release(h.element),G.delete(b);let K=!1;if(B){let b=B();if(b!==O)O=b,Z=String(b),K=!0}let R=null;for(let b=H.start;b<=H.end;b++){let h=b-H.start,p=N[h];if(!p)continue;let m=A.has(p.id),n=b===k,e=G.get(b);if(e){let K2=e.lastItemId!==p.id,Q2=e.lastSelected!==m,x=e.lastFocused!==n;if(K2){let a=String(e.lastItemId),q2=String(p.id),X2=a.startsWith(R2),s=q2.startsWith(R2);if(!s&&y2(A,b,p.id))m=!0;let V2=z(m,n),E2=Q(p,b,V2);if(i(e.element,E2),e.element.dataset.id=q2,e.element.dataset.row=String($.getRow(b)),e.element.dataset.col=String($.getCol(b)),r(e.element,b),e.element.classList.toggle(Y2,s),X2&&!s)e.element.classList.add(o),setTimeout(()=>e.element.classList.remove(o),300);if(e.lastItemId=p.id,!p.__groupHeader){let W2=V?V(b):b+1;e.element.setAttribute("aria-posinset",String(W2))}}if(K2||Q2||x)$2(e.element,m,n),e.element.ariaSelected=String(m),e.lastSelected=m,e.lastFocused=n;let C=j2(b,F);if(e.lastTransform!==C)e.element.style.transform=C,e.lastTransform=C;if(K&&!p.__groupHeader)e.element.setAttribute("aria-setsize",Z)}else{if(y2(A,b,p.id))m=!0;let K2=j2(b,F),Q2=d(b,p,m,n,K2);if(!R)R=document.createDocumentFragment();R.appendChild(Q2.element),G.set(b,Q2)}}if(R)J.appendChild(R)},L=(N)=>{for(let[H,A]of G){let k=j2(H,N);if(A.lastTransform!==k)A.element.style.transform=k,A.lastTransform=k}},X=(N,H,A,k)=>{let F=G.get(N);if(!F)return;let K=z(A,k),R=Q(H,N,K);i(F.element,R),$2(F.element,A,k),F.element.dataset.id=String(H.id),F.element.ariaSelected=String(A),r(F.element,N),F.lastItemId=H.id,F.lastSelected=A,F.lastFocused=k},U=(N,H,A)=>{let k=G.get(N);if(!k)return;let F=k.lastSelected!==H,K=k.lastFocused!==A;if(F||K)$2(k.element,H,A),k.lastSelected=H,k.lastFocused=A},M=(N)=>{return G.get(N)?.element},v=(N)=>{if(Math.abs(N-E)<1)return;E=N;for(let[H,A]of G){r(A.element,H);let k=j2(H);A.element.style.transform=k,A.lastTransform=k}},c=()=>{C2(J,G.keys(),(N)=>G.get(N)?.element)},l=()=>{for(let[,N]of G)f.release(N.element);G.clear()};return{render:J2,updatePositions:L,updateItem:X,updateItemClasses:U,getElement:M,sortDOM:c,updateContainerWidth:v,clear:l,destroy:()=>{l(),f.clear()}}};var DJ=(J,Q=50,q=1/0,$=!0)=>{let j=J,Y=[],B=0,D=()=>{Y=j.map((Z,O)=>({def:Z,index:O,width:0,minWidth:rJ(Z.minWidth??Q,1),maxWidth:Z.maxWidth??q,resizable:Z.resizable??$,offset:0}))},P=(Z)=>{if(Y.length===0){B=0;return}let O=0,T=0;for(let z=0;z<Y.length;z++){let w=Y[z],I=w.def;if(I.width!==void 0)w.width=c2(I.width,w.minWidth,w.maxWidth),O+=w.width;else T++}if(T){let w=Math.max(0,Z-O)/T;for(let I=0;I<Y.length;I++){let g=Y[I];if(g.def.width===void 0)g.width=c2(w,g.minWidth,g.maxWidth)}}V()},V=()=>{let Z=0;for(let O=0;O<Y.length;O++){let T=Y[O];T.offset=Z,Z+=T.width}B=Z},y=(Z,O)=>{if(Z<0||Z>=Y.length)return 0;let T=Y[Z];if(!T.resizable)return T.width;let z=c2(O,T.minWidth,T.maxWidth);return T.width=z,V(),z},f=(Z)=>{return Y[Z]},G=(Z)=>{if(Y.length===0)return;if(Z<0)return Y[0];if(Z>=B)return Y[Y.length-1];let O=0,T=Y.length-1;while(O<T){let z=O+T>>>1,w=Y[z];if(Z<w.offset)T=z-1;else if(Z>=w.offset+w.width)O=z+1;else return w}return Y[O]},E=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].offset},W=(Z)=>{if(Z<0||Z>=Y.length)return 0;return Y[Z].width},_=(Z)=>{j=Z,D()};return D(),{get columns(){return Y},get totalWidth(){return B},resolve:P,updateColumns:_,resizeColumn:y,getColumn:f,getColumnAtX:G,getColumnOffset:E,getColumnWidth:W}},c2=(J,Q,q)=>Math.min(q,Math.max(Q,J)),rJ=(J,Q)=>Math.max(Q,J);var GJ=(J,Q,q,$,j,Y)=>{let B=document.createElement("div");B.setAttribute("role","rowgroup");let D=document.createElement("div");D.className=`${q}-table-header`,D.setAttribute("role","row"),D.setAttribute("aria-rowindex","1"),D.style.height=`${Q}px`;let P=document.createElement("div");P.className=`${q}-table-header-scroll`,P.setAttribute("role","presentation"),D.appendChild(P),B.appendChild(D),J.insertBefore(B,J.firstChild),J.style.setProperty("--vlist-table-header-height",`${Q}px`);let V=[],y=[],f=!0,G=null,E="asc",W=null,_=!1,Z=-1,O=0,T=0,z=0,w=(X,U)=>{let M=document.createElement("div");M.className=`${q}-table-header-cell`,M.setAttribute("role","columnheader"),M.setAttribute("aria-colindex",String(U+1)),M.setAttribute("tabindex",U===0?"0":"-1"),M.dataset.columnKey=X.def.key;let v=X.def.align;if(v==="center")M.classList.add(`${q}-table-header-cell--center`);else if(v==="right")M.classList.add(`${q}-table-header-cell--right`);let c=document.createElement("div");c.className=`${q}-table-header-content`;let l=X.def.header?X.def.header(X.def):X.def.label;if(typeof l==="string")c.textContent=l;else c.appendChild(l);if(M.appendChild(c),X.def.sortable){let S=document.createElement("span");S.className=`${q}-table-header-sort`,S.setAttribute("aria-hidden","true"),M.appendChild(S),y.push(S),M.classList.add(`${q}-table-header-cell--sortable`)}else y.push(null);if(X.resizable){let S=document.createElement("div");S.className=`${q}-table-header-resize`,S.dataset.resizeIndex=String(U),M.appendChild(S)}return M},I=(X)=>{W=X,P.textContent="",V=[],y=[];let U=X.columns;for(let M=0;M<U.length;M++){let v=U[M],c=w(v,M);V.push(c),P.appendChild(c)}if(g(X),G)u(G,E)},g=(X)=>{W=X;let U=X.columns;P.style.width=`${X.totalWidth}px`;for(let M=0;M<V.length&&M<U.length;M++){let v=V[M],c=U[M];v.style.width=`${c.width}px`}},u=(X,U)=>{if(G=X,E=U,!W)return;let M=W.columns;for(let v=0;v<y.length&&v<M.length;v++){let c=y[v];if(!c)continue;if(M[v].def.key===X)c.textContent=U==="asc"?"▲":"▼",c.style.opacity="0.7",V[v].setAttribute("aria-sort",U==="asc"?"ascending":"descending");else c.textContent="",c.style.opacity="0",V[v].removeAttribute("aria-sort")}},Y2=(X)=>{P.style.transform=`translateX(${-X}px)`},o=(X)=>{let U=X.target;if(!U.dataset.resizeIndex)return;if(X.preventDefault(),X.stopPropagation(),Z=+U.dataset.resizeIndex,!W)return;let M=W.getColumn(Z);if(!M?.resizable)return;_=!0,O=X.clientX,T=M.width,J.classList.add(`${q}--col-resizing`),J.style.cursor="col-resize",U.classList.add(`${q}-table-header-resize--active`),U.setPointerCapture(X.pointerId),U.addEventListener("pointermove",i),U.addEventListener("pointerup",$2),U.addEventListener("pointercancel",$2)},i=(X)=>{if(!_||!W)return;let U=X.clientX-O;if(Math.abs(U)<1)return;let M=Math.max(0,T+U);$(Z,M)},$2=(X)=>{if(!_)return;let U=X.target;U.removeEventListener("pointermove",i),U.removeEventListener("pointerup",$2),U.removeEventListener("pointercancel",$2);try{U.releasePointerCapture(X.pointerId)}catch{}U.classList.remove(`${q}-table-header-resize--active`),J.classList.remove(`${q}--col-resizing`),J.style.cursor="",_=!1,Z=-1},U2=(X)=>{let U=X.target;if(U.dataset.resizeIndex)return;if(_)return;let M=U;while(M&&!M.dataset.columnKey)if(M=M.parentElement,M===D||M===null)return;let v=M.dataset.columnKey;if(!W)return;let c=W.columns,l=-1;for(let N=0;N<c.length;N++)if(c[N].def.key===v){l=N;break}if(l===-1)return;let S=c[l];if(Y)Y({key:v,index:l,event:X});if(S.def.sortable&&j){let N;if(G===v)N=E==="asc"?"desc":null;else N="asc";j({key:v,index:l,direction:N})}},j2=(X)=>{if(X<0||X>=V.length)return;V[z]?.setAttribute("tabindex","-1"),z=X;let U=V[z];U.setAttribute("tabindex","0"),U.focus()},r=(X)=>{let U=X.key;if(U==="ArrowRight"){if(X.ctrlKey||X.metaKey){if(!W)return;let M=W.getColumn(z);if(M?.resizable)$(z,M.width+10),X.preventDefault()}else if(z<V.length-1)j2(z+1),X.preventDefault();X.stopPropagation();return}if(U==="ArrowLeft"){if(X.ctrlKey||X.metaKey){if(!W)return;let M=W.getColumn(z);if(M?.resizable)$(z,M.width-10),X.preventDefault()}else if(z>0)j2(z-1),X.preventDefault();X.stopPropagation();return}if(U==="Home"){j2(0),X.preventDefault(),X.stopPropagation();return}if(U==="End"){j2(V.length-1),X.preventDefault(),X.stopPropagation();return}if(U==="Enter"||U===" "){if(!W)return;let M=W.getColumn(z);if(M?.def.sortable&&j){let v;if(G===M.def.key)v=E==="asc"?"desc":null;else v="asc";j({key:M.def.key,index:z,direction:v}),X.preventDefault()}X.stopPropagation();return}if(U==="ArrowDown"){J.focus(),X.preventDefault(),X.stopPropagation();return}};return D.addEventListener("pointerdown",o),D.addEventListener("click",U2),D.addEventListener("keydown",r),{element:D,update:g,updateSort:u,rebuild:I,show:()=>{if(f)return;f=!0,D.style.display=""},hide:()=>{if(!f)return;f=!1,D.style.display="none"},destroy:()=>{D.removeEventListener("pointerdown",o),D.removeEventListener("click",U2),D.removeEventListener("keydown",r),J.style.removeProperty("--vlist-table-header-height"),B.remove(),V=[],y=[],W=null,f=!1},syncScroll:Y2}};var lJ=()=>{let J=[];return{acquire:()=>J.pop()||document.createElement("div"),release:(Q)=>{if(Q.parentNode?.removeChild(Q),J.length<200)Q.className="",Q.removeAttribute("data-id"),Q.removeAttribute("data-index"),Q.removeAttribute("aria-selected"),Q.removeAttribute("aria-rowindex"),Q.removeAttribute("role"),Q.style.cssText="",Q.textContent="",J.push(Q)},clear:()=>{J.length=0}}},OJ=(J,Q,q,$,j,Y,B,D,P)=>{let V=lJ(),y=new Map,f=-1,G=q,E=null,W=null,_=null,Z=(K,R)=>{W=K,_=R},O=(K,R)=>{R?K.setAttribute("aria-selected","true"):K.removeAttribute("aria-selected")},T=(K,R,b,h)=>{K.setAttribute("role",R),K.setAttribute("data-id",String(b)),K.setAttribute("data-index",String(h))},z=(K)=>String(K).startsWith("__placeholder_"),w=`${j}-item ${j}-table-row`,I=`${j}-item--selected`,g=`${j}-item--focused`,u=`${j}-table-cell`,Y2=`${j}-table-cell--center`,o=`${j}-table-cell--right`,i=`${j}-item--odd`,$2=`${j}-item--placeholder`,U2=`${j}-item--replaced`,j2=`${j}-item ${j}-table-row ${j}-table-group-header`,r=`${j}-table-group-header-content`,d=(K,R,b,h,p=!1)=>{if(b.def.cell){let m=b.def.cell(R,b.def,h);if(typeof m==="string")K.innerHTML=m;else K.replaceChildren(m)}else{let m=R[b.def.key],n=m!=null?String(m):"";if(p&&n)K.innerHTML=`<span>${n}</span>`;else K.textContent=n}},J2=(K,R,b,h,p=!1)=>{let m=w;if(D){if(E){let n=E(R);if(n>=0&&(n&1)===1)m+=` ${i}`}else if((R&1)===1)m+=` ${i}`}if(p)m+=` ${$2}`;if(b)m+=` ${I}`;if(h)m+=` ${g}`;K.className=m},L=(K,R,b)=>{if(b?.compression?.isCompressed)return Math.round(P2(K,b.scrollPosition,R,b.totalItems,b.containerSize,b.compression,b.rangeStart));return R.getOffset(K)},X=(K,R)=>{let b=R.def.align;if(b==="center")K.classList.add(Y2),K.classList.remove(o);else if(b==="right")K.classList.add(o),K.classList.remove(Y2);else K.classList.remove(Y2,o)},U=(K,R)=>{let h=G.columns.length;if(R.length===h)return R;let p=[];for(let m=0;m<h;m++){let n;if(m<R.length)n=R[m];else n=document.createElement("div"),n.className=u,K.appendChild(n);p.push(n)}for(let m=h;m<R.length;m++)R[m].remove();return p},M=(K,R,b,h)=>{let p=V.acquire(),m=K,n=b.getSize(R),e=L(R,b,h);p.style.cssText=`width:${G.totalWidth}px;height:${n}px;transform:translateY(${e}px)`,p.className=j2,T(p,"presentation",K.id,R),p.removeAttribute("aria-selected"),p.removeAttribute("aria-rowindex"),p.replaceChildren();let K2=document.createElement("div");if(K2.className=r,_){let Q2=_(m.groupKey,m.groupIndex);if(typeof Q2==="string")K2.innerHTML=Q2;else K2.appendChild(Q2)}return p.appendChild(K2),{element:p,cells:[],index:R,isGroupHeader:!0,lastItemId:K.id,lastSelected:!1,lastFocused:!1,lastOffset:e,lastHeight:n}},v=(K,R,b,h,p,m)=>{let n=V.acquire(),e=p.getSize(R),K2=L(R,p,m),Q2=z(K.id);n.style.cssText=`width:${G.totalWidth}px;height:${e}px;transform:translateY(${K2}px)`,J2(n,R,b,h,Q2),T(n,"row",K.id,R),n.id=`${Y}-item-${R}`,n.setAttribute("aria-rowindex",String(R+2)),O(n,b);let x=U(n,[]),C=G.columns;for(let a=0;a<x.length&&a<C.length;a++){let q2=x[a],X2=C[a];q2.style.cssText=`left:${X2.offset}px;width:${X2.width}px`,q2.setAttribute("role","gridcell"),q2.setAttribute("aria-colindex",String(a+1)),X(q2,X2),d(q2,K,X2,R,Q2)}return{element:n,cells:x,index:R,isGroupHeader:!1,lastItemId:K.id,lastSelected:b,lastFocused:h,lastOffset:K2,lastHeight:e}},c=(K,R,b,h,p)=>{for(let[Q2,x]of y)if(Q2<R.start||Q2>R.end)V.release(x.element),y.delete(Q2);let m=!1,n=B();if(n!==f)f=n,m=!0;let e=null,K2=Q();E=typeof D==="string"&&P?P():null;for(let Q2=R.start;Q2<=R.end;Q2++){let x=Q2-R.start,C=K[x];if(!C)continue;let a=b.has(C.id),q2=Q2===h,X2=W?W(C):!1,s=y.get(Q2);if(s){if(s.isGroupHeader!==X2){V.release(s.element),y.delete(Q2);let V2=X2?M(C,Q2,K2,p):v(C,Q2,a,q2,K2,p);if(y.set(Q2,V2),!e)e=document.createDocumentFragment();e.appendChild(V2.element);continue}if(X2){if(s.lastItemId!==C.id){let W2=C,D2=s.element.firstElementChild;if(D2&&_){let A2=_(W2.groupKey,W2.groupIndex);if(typeof A2==="string")D2.innerHTML=A2;else D2.replaceChildren(A2)}s.element.setAttribute("data-id",String(C.id)),s.lastItemId=C.id}let E2=L(Q2,K2,p);if(s.lastOffset!==E2)s.lastOffset=E2,s.element.style.transform=`translateY(${E2}px)`;let B2=K2.getSize(Q2);if(s.lastHeight!==B2)s.lastHeight=B2,s.element.style.height=`${B2}px`}else{let V2=s.lastItemId!==C.id,E2=s.lastSelected!==a,B2=s.lastFocused!==q2;if(V2){let A2=s.lastItemId!=null&&z(s.lastItemId),_2=z(C.id);if(!_2&&y2(b,Q2,C.id))a=!0;let G2=G.columns;for(let Z2=0;Z2<s.cells.length&&Z2<G2.length;Z2++)d(s.cells[Z2],C,G2[Z2],Q2,_2);if(J2(s.element,Q2,a,q2,_2),s.element.setAttribute("data-id",String(C.id)),O(s.element,a),A2&&!_2)s.element.classList.add(U2),setTimeout(()=>{s.element.classList.remove(U2)},300);s.lastItemId=C.id,s.lastSelected=a,s.lastFocused=q2}else if(E2||B2)J2(s.element,Q2,a,q2,z(C.id)),O(s.element,a),s.lastSelected=a,s.lastFocused=q2;let W2=L(Q2,K2,p);if(s.lastOffset!==W2)s.lastOffset=W2,s.element.style.transform=`translateY(${W2}px)`;let D2=K2.getSize(Q2);if(s.lastHeight!==D2)s.lastHeight=D2,s.element.style.height=`${D2}px`;if(m)s.element.setAttribute("aria-rowindex",String(Q2+2))}}else{if(y2(b,Q2,C.id))a=!0;let V2=X2?M(C,Q2,K2,p):v(C,Q2,a,q2,K2,p);if(y.set(Q2,V2),!e)e=document.createDocumentFragment();e.appendChild(V2.element)}}if(e)J.appendChild(e)},l=(K)=>{let R=Q();for(let[b,h]of y){let p=L(b,R,K);if(h.lastOffset!==p)h.lastOffset=p,h.element.style.transform=`translateY(${p}px)`}},S=(K,R,b,h)=>{let p=y.get(K);if(!p)return;if(p.isGroupHeader)return;let m=G.columns;for(let n=0;n<p.cells.length&&n<m.length;n++)d(p.cells[n],R,m[n],K);p.element.setAttribute("data-id",String(R.id)),p.lastItemId=R.id,J2(p.element,K,b,h),O(p.element,b),p.lastSelected=b,p.lastFocused=h},N=(K,R,b)=>{let h=y.get(K);if(!h)return;if(h.isGroupHeader)return;let p=h.lastSelected!==R,m=h.lastFocused!==b;if(p||m)J2(h.element,K,R,b),O(h.element,R),h.lastSelected=R,h.lastFocused=b},H=(K)=>{G=K;let R=K.columns;for(let[,b]of y)if(b.element.style.width=`${K.totalWidth}px`,b.cells.length>0)for(let h=0;h<b.cells.length&&h<R.length;h++){let p=b.cells[h],m=R[h];p.style.left=`${m.offset}px`,p.style.width=`${m.width}px`}},A=(K)=>{return y.get(K)?.element},k=()=>{for(let[,K]of y)V.release(K.element);y.clear(),f=-1};return{render:c,updatePositions:l,updateItem:S,updateItemClasses:N,getElement:A,updateColumnLayout:H,setGroupHeaderFn:Z,clear:k,destroy:()=>{k(),V.clear()}}};var EJ=(J)=>{let Q=Math.max(1,Math.floor(J.columns)),q=J.gap??0,$=J.containerSize,j=0,Y=[],B=()=>{let _=(Q-1)*q;j=Math.max(0,($-_)/Q),Y=Array(Q);let Z=j+q;for(let O=0;O<Q;O++)Y[O]=O*Z};B();let D=[],P=0,V=[],y=(_,Z)=>{if(_<=0)return P=0,D=[],[];let O=Array(Q).fill(0),T=Array(Q);for(let I=0;I<Q;I++)T[I]=[];let z=Array(_);for(let I=0;I<_;I++){let g=0,u=O[0];for(let i=1;i<Q;i++){let $2=O[i];if($2<u)u=$2,g=i}let Y2=Z(I),o=O[g];z[I]={index:I,x:Y[g],y:o,lane:g,size:Y2,crossSize:j},T[g].push(I),O[g]=o+Y2+q}D=T;let w=0;for(let I=0;I<Q;I++){let g=O[I],u=g>0?g-q:0;if(u>w)w=u}return P=w,z},f=(_)=>{if(_.length===0)return P;if(P)return P;let Z=Array(Q).fill(0);for(let T of _){let z=T.y+T.size,w=Z[T.lane];if(z>w)Z[T.lane]=z}let O=0;for(let T=0;T<Q;T++)if(Z[T]>O)O=Z[T];return O},G=(_,Z,O)=>{if(_.length===0||O<=Z)return V.length=0,V;if(D.length===0||D.length!==Q)return E(_,Z,O);V.length=0;for(let T=0;T<Q;T++){let z=D[T],w=z.length;if(!w)continue;let I=0,g=w;while(I<g){let u=I+g>>>1,Y2=_[z[u]];if(Y2.y+Y2.size<=Z)I=u+1;else g=u}for(let u=I;u<w;u++){let Y2=_[z[u]];if(Y2.y>=O)break;V.push(Y2)}}return V},E=(_,Z,O)=>{V.length=0;for(let T of _)if(T.y+T.size>Z&&T.y<O)V.push(T);return V};return{get columns(){return Q},get gap(){return q},get containerSize(){return $},update:(_)=>{let Z=!1;if(_.columns!==void 0){let O=Math.max(1,Math.floor(_.columns));if(O!==Q)Q=O,Z=!0}if(_.gap!==void 0&&_.gap!==q)q=_.gap,Z=!0;if(_.containerSize!==void 0&&_.containerSize!==$)$=_.containerSize,Z=!0;if(Z)B()},calculateLayout:y,getTotalSize:f,getVisibleItems:G}};var aJ=(J=200)=>{let Q=[];return{acquire:()=>{let Y=Q.pop();if(Y)return Y;let B=document.createElement("div");return B.setAttribute("role","option"),B},release:(Y)=>{if(Y.remove(),Q.length<J)Y.className="",Y.textContent="",Y.removeAttribute("style"),Y.removeAttribute("data-index"),Y.removeAttribute("data-id"),Y.removeAttribute("data-lane"),Q.push(Y)},clear:()=>{Q.length=0}}},sJ=1,AJ=(J,Q,q,$=!1,j,Y,B,D)=>{let P=aJ(),V=new Map,y=new Set,f=0,G="",E=-1,W={selected:!1,focused:!1},_=(r,d)=>{return W.selected=r,W.focused=d,W},Z=`${q}-item ${q}-masonry-item`,O=`${q}-group-header`,T=`${q}-item--selected`,z=`${q}-item--focused`,w=(r,d)=>{if(typeof d==="string")r.innerHTML=d;else r.replaceChildren(d)},I=(r,d,J2)=>{r.classList.toggle(T,d),r.classList.toggle(z,J2)},g=(r,d)=>{if($)r.style.transform=`translate(${Math.round(d.y)}px, ${Math.round(d.x)}px)`;else r.style.transform=`translate(${Math.round(d.x)}px, ${Math.round(d.y)}px)`},u=(r,d)=>{if($)r.style.width=`${d.size}px`,r.style.height=`${d.crossSize}px`;else r.style.width=`${d.crossSize}px`,r.style.height=`${d.size}px`},Y2=(r,d,J2,L,X)=>{let U=P.acquire(),M=d.__groupHeader,v=_(L,X);if(U.className=M?O:Z,U.dataset.index=String(r),U.dataset.id=String(d.id),U.dataset.lane=String(J2.lane),M)U.setAttribute("role","presentation"),U.removeAttribute("aria-selected"),U.removeAttribute("aria-setsize"),U.removeAttribute("aria-posinset"),U.removeAttribute("id");else if(D!==!1){if(U.setAttribute("role","option"),U.ariaSelected=String(L),Y)U.id=`${Y}-item-${r}`;if(j){let l=j();if(l!==E)E=l,G=String(l);U.setAttribute("aria-setsize",G);let S=B?B(r):r+1;U.setAttribute("aria-posinset",String(S))}}else if(U.setAttribute("role","listitem"),U.removeAttribute("aria-selected"),j){let l=j();if(l!==E)E=l,G=String(l);U.setAttribute("aria-setsize",G);let S=B?B(r):r+1;U.setAttribute("aria-posinset",String(S))}u(U,J2);let c=Q(d,r,v);return w(U,c),I(U,L,X),g(U,J2),{element:U,lastItemId:d.id,lastSelected:L,lastFocused:X,lastY:J2.y,lastX:J2.x,lastSize:J2.size,lastCrossSize:J2.crossSize,lastSeenFrame:f}},o=(r,d,J2,L)=>{f++,y.clear();for(let U=0;U<d.length;U++)y.add(d[U].index);for(let[U,M]of V)if(y.has(U))M.lastSeenFrame=f;else if(f-M.lastSeenFrame>sJ)P.release(M.element),V.delete(U);let X=null;for(let U=0;U<d.length;U++){let M=d[U],v=M.index,c=r(v);if(!c)continue;let l=J2.has(c.id),S=v===L,N=V.get(v);if(N){let H=N.lastItemId!==c.id,A=N.lastSelected!==l,k=N.lastFocused!==S,F=N.lastY!==M.y||N.lastX!==M.x,K=N.lastSize!==M.size||N.lastCrossSize!==M.crossSize;if(H){let R=_(l,S),b=Q(c,v,R);if(w(N.element,b),N.element.dataset.id=String(c.id),N.lastItemId=c.id,!c.__groupHeader){let p=B?B(v):v+1;N.element.setAttribute("aria-posinset",String(p))}}if(H||A||k)I(N.element,l,S),N.element.ariaSelected=String(l),N.lastSelected=l,N.lastFocused=S;if(K)u(N.element,M),N.lastSize=M.size,N.lastCrossSize=M.crossSize;if(F)g(N.element,M),N.lastY=M.y,N.lastX=M.x}else{let H=Y2(v,c,M,l,S);if(!X)X=document.createDocumentFragment();X.appendChild(H.element),V.set(v,H)}}if(X)J.appendChild(X)},i=()=>{for(let r of V.values())P.release(r.element);V.clear(),J.innerHTML=""};return{render:o,getElement:(r)=>V.get(r)?.element,updateItemClasses:(r,d,J2)=>{let L=V.get(r);if(!L)return;let X=L.lastSelected!==d,U=L.lastFocused!==J2;if(X||U)I(L.element,d,J2),L.lastSelected=d,L.lastFocused=J2},sortDOM:()=>{C2(J,V.keys(),(r)=>V.get(r)?.element)},clear:i,destroy:()=>{i(),P.clear()}}};var FJ=(J,Q)=>{let q=new Map,$=(Y)=>q.get(Y)??J,j=z2($,Q);return{getOffset(Y){return j.getOffset(Y)},getSize(Y){return $(Y)},indexAtOffset(Y){return j.indexAtOffset(Y)},getTotalSize(){return j.getTotalSize()},getTotal(){return j.getTotal()},rebuild(Y){if(Y<j.getTotal()){for(let B of q.keys())if(B>=Y)q.delete(B)}j=z2($,Y)},isVariable(){return!0},setMeasuredSize(Y,B){q.set(Y,B)},isMeasured(Y){return q.has(Y)},getEstimatedSize(){return J},measuredCount(){return q.size}}};var LJ=(J,Q,q,$,j,Y)=>{if($===0||Q===0)return Y.start=0,Y.end=-1,Y;let B=q.indexAtOffset(J),D=q.indexAtOffset(J+Q);if(D<$-1)D++;return Y.start=Math.max(0,B),Y.end=Math.min($-1,Math.max(0,D)),Y},HJ=(J,Q,q,$)=>{if(q===0)return $.start=0,$.end=-1,$;return $.start=Math.max(0,J.start-Q),$.end=Math.min(q-1,J.end+Q),$},bJ=(J,Q,q,$,j,Y)=>{if($===0)return 0;let B=Math.max(0,Math.min(J,$-1)),D=Q.getOffset(B),P=Q.getSize(B),V=Q.getTotalSize(),y=Math.max(0,V-q),f;switch(Y){case"center":f=D-q/2+P/2;break;case"end":f=D-q+P;break;case"start":default:f=D;break}return Math.max(0,Math.min(f,y))},RJ=(J,Q,q)=>{if(q&&q.isCompressed)return q.virtualSize;return Q.getTotalSize()},TJ=(J,Q)=>{return Q.getTotalSize()},yJ=(J,Q)=>{return Q.getOffset(J)},PJ=(J,Q,q)=>{let $=Math.max(0,Q-q);return Math.max(0,Math.min(J,$))};var kJ=(J,Q,q,$,j="start",Y,B=bJ)=>{return B(J,Q,q,$,Y,j)},zJ=(J,Q)=>{return J.start===Q.start&&J.end===Q.end},wJ=(J,Q)=>{return J>=Q.start&&J<=Q.end},vJ=(J)=>{if(J.end<J.start)return 0;return J.end-J.start+1};var CJ=(J,Q)=>{let q=[],$=[];for(let j=J.start;j<=J.end;j++)if(j<Q.start||j>Q.end)$.push(j);for(let j=Q.start;j<=Q.end;j++)if(j<J.start||j>J.end)q.push(j);return{add:q,remove:$}};var fJ=()=>{let J={},Q=(Y,B)=>{if(!J[Y])J[Y]=new Set;return J[Y].add(B),()=>q(Y,B)},q=(Y,B)=>{J[Y]?.delete(B)};return{on:Q,off:q,emit:(Y,B)=>{J[Y]?.forEach((D)=>{try{D(B)}catch(P){console.error(`[vlist] Error in event handler for "${String(Y)}":`,P)}})},clear:(Y)=>{if(Y)delete J[Y];else for(let B in J)delete J[B]}}};var f2=(J={})=>{let{chunkSize:Q=100,maxCachedItems:q=5000,evictionBuffer:$=200,onEvict:j}=J,Y=new Map,B=0,D=0,P=(L)=>{let X=Y.get(L);if(!X)X={items:Array(Q),count:0,lastAccess:Date.now()},Y.set(L,X);else X.lastAccess=Date.now();return X},V=(L)=>{return Math.floor(L/Q)},y=(L)=>{return L%Q},f=()=>B,G=(L)=>{B=L},E=(L)=>{if(L<0||L>=B)return;let X=V(L),U=Y.get(X);if(!U)return;return U.items[y(L)]},W=(L)=>{if(L<0||L>=B)return!1;let X=V(L),U=Y.get(X);if(!U)return!1;return U.items[y(L)]!==void 0},_=(L,X)=>{let U=V(L),M=P(U),v=y(L),c=M.items[v]===void 0;if(M.items[v]=X,c)M.count++,D++;if(L>=B)B=L+1},Z=(L,X)=>{for(let U=0;U<X.length;U++){let M=X[U];if(M!==void 0)_(L+U,M)}},O=(L,X)=>{if(L<0||L>B)return;let U=V(L),M=Array.from(Y.keys()).filter((N)=>N>=U).sort((N,H)=>N-H),v=[];for(let N of M){let H=Y.get(N),A=N*Q;for(let k=0;k<Q;k++){if(H.items[k]===void 0)continue;let F=A+k;if(F<L)continue;v.push({oldIndex:F,item:H.items[k]})}}for(let{oldIndex:N}of v){let H=V(N),A=Y.get(H);if(!A)continue;let k=y(N);if(A.items[k]!==void 0){if(A.items[k]=void 0,A.count--,D--,A.count===0)Y.delete(H)}}B++;for(let{oldIndex:N,item:H}of v){let A=N+1,k=V(A),F=P(k),K=y(A);F.items[K]=H,F.count++,D++}let c=V(L),l=P(c),S=y(L);l.items[S]=X,l.count++,D++},T=(L)=>{if(L<0||L>=B)return!1;let X=V(L),U=Y.get(X),M=y(L);if(!(U!==void 0&&U.items[M]!==void 0))return!1;let c=X,l=Array.from(Y.keys()).filter((N)=>N>=c).sort((N,H)=>N-H),S=[];for(let N of l){let H=Y.get(N),A=N*Q;for(let k=0;k<Q;k++){if(H.items[k]===void 0)continue;let F=A+k;if(F<=L)continue;S.push({oldIndex:F,item:H.items[k]})}}if(U.items[M]=void 0,U.count--,D--,U.count===0)Y.delete(X);for(let{oldIndex:N}of S){let H=V(N),A=Y.get(H);if(!A)continue;let k=y(N);if(A.items[k]!==void 0){if(A.items[k]=void 0,A.count--,D--,A.count===0)Y.delete(H)}}for(let{oldIndex:N,item:H}of S){let A=N-1,k=V(A),F=P(k),K=y(A);F.items[K]=H,F.count++,D++}return B--,!0},z=(L,X)=>{let U=[];for(let M=L;M<=X&&M<B;M++)U.push(E(M));return U},w=(L,X)=>{for(let U=L;U<=X&&U<B;U++)if(!W(U))return!1;return!0},I=()=>{let L=[],X=null,U=Array.from(Y.keys()).sort((M,v)=>M-v);for(let M of U){let v=Y.get(M);if(!v)continue;let c=M*Q;for(let l=0;l<Q;l++){let S=c+l;if(S>=B)break;if(v.items[l]!==void 0)if(X===null)X={start:S,end:S};else if(S===X.end+1)X.end=S;else L.push(X),X={start:S,end:S};else if(X!==null)L.push(X),X=null}}if(X!==null)L.push(X);return L},g=(L,X)=>{let U=[],M=null;for(let v=L;v<=X&&v<B;v++)if(!W(v))if(M===null)M={start:v,end:v};else M.end=v;else if(M!==null)U.push(M),M=null;if(M!==null)U.push(M);return U},u=(L)=>{return Y.has(L)},Y2=(L)=>{let X=Y.get(L);if(!X)return!1;let U=L*Q,M=Math.min(Q,B-U);return X.count>=M},o=(L)=>{let X=Y.get(L);if(X)X.lastAccess=Date.now()},i=(L,X)=>{if(L>X||Y.size===0)return;let U=Date.now(),M=V(Math.max(0,L)),v=V(Math.min(B-1,X));for(let c=M;c<=v;c++){let l=Y.get(c);if(l)l.lastAccess=U}},$2=(L,X)=>{if(D<=q)return 0;let U=Math.max(0,L-$),M=Math.min(B-1,X+$),v=V(U),c=V(M),l=0,S=[];for(let[N,H]of Y)if(N<v||N>c)l+=H.count,S.push(N),D-=H.count,Y.delete(N);if(l>0&&j)j(l,S);return l},U2=()=>{if(D<=q)return 0;let L=Array.from(Y.entries()).sort(([,M],[,v])=>M.lastAccess-v.lastAccess),X=0,U=[];for(let[M,v]of L){if(D<=q)break;X+=v.count,D-=v.count,U.push(M),Y.delete(M)}if(X>0&&j)j(X,U);return X},j2=()=>{return{totalItems:B,cachedItems:D,cachedChunks:Y.size,chunkSize:Q,maxCachedItems:q,memoryEfficiency:B>0?1-D/B:1}},r=()=>D,d=()=>{Y.clear(),D=0};return{chunkSize:Q,maxCachedItems:q,getTotal:f,setTotal:G,get:E,has:W,set:_,setRange:Z,insert:O,delete:T,getRange:z,isRangeLoaded:w,getLoadedRanges:I,findUnloadedRanges:g,getChunkIndex:V,isChunkLoaded:u,isChunkFullyLoaded:Y2,touchChunk:o,touchChunksForRange:i,evictDistant:$2,evictToLimit:U2,getStats:j2,getCachedCount:r,clear:d,reset:()=>{d(),B=0}}},S2=(J)=>{if(J.length===0)return[];let Q=[...J].sort(($,j)=>$.start-j.start),q=[{...Q[0]}];for(let $=1;$<Q.length;$++){let j=Q[$],Y=q[q.length-1];if(j.start<=Y.end+1)Y.end=Math.max(Y.end,j.end);else q.push({...j})}return q},r2=(J,Q,q)=>{let $=Math.floor(J.start/q)*q,j=Math.ceil((J.end+1)/q)*q-1,Y={start:$,end:j};if(Q.length===0)return[Y];let B=[],D=S2(Q),P=Y.start;for(let V of D){if(V.end<P)continue;if(V.start>Y.end)break;if(V.start>P)B.push({start:P,end:Math.min(V.start-1,Y.end)});if(P=V.end+1,P>Y.end)break}if(P<=Y.end)B.push({start:P,end:Y.end});return B};var I2=(J={})=>{let{maskCharacter:Q=JJ,maxSampleSize:q=QJ}=J,$=[],j=!1,Y=(y)=>{if(j||y.length===0)return;let f=Math.min(y.length,q);for(let G=0;G<f;G++){let E=y[G];if(!E||typeof E!=="object")continue;let W={},_=!1;for(let[Z,O]of Object.entries(E)){if(Z.startsWith("_")||Z==="id")continue;W[Z]=String(O??"").length,_=!0}if(_)$.push(W)}j=!0},B=()=>j,D=(y)=>{let f={id:`${R2}${y}`,[g2]:!0,_index:y};if($.length===0)return f.label=Q.repeat(12),f;let G=$[y%$.length];for(let[E,W]of Object.entries(G))f[E]=Q.repeat(Math.max(1,W));return f};return{analyzeStructure:Y,hasAnalyzedStructure:B,generate:D,generateRange:(y,f)=>{let G=[];for(let E=y;E<=f;E++)G.push(D(E));return G},clear:()=>{$=[],j=!1}}},T2=(J)=>{if(!J||typeof J!=="object")return!1;return J[g2]===!0},l2=(J)=>{return J.filter((Q)=>!T2(Q))};var oJ=50,SJ=(J={})=>{let{adapter:Q,initialItems:q,initialTotal:$,storage:j,placeholder:Y,pageSize:B=oJ,maxConcurrent:D=0,onStateChange:P,onDataChange:V,onItemsLoaded:y,onItemsEvicted:f}=J,G=f2({...j,onEvict:(x,C)=>{f?.(x),i(),o()}}),E=null,W=()=>{if(!E)E=I2(Y);return E},_=new Map,Z=!1,O,T=!0,z,w,I=[],g=0,u=new Map,Y2=()=>{for(let x of u.values())x[1].abort();u.clear()},o=()=>{P?.(U())},i=()=>{V?.()},$2=()=>{_.clear();let x=G.getLoadedRanges();for(let C of x)for(let a=C.start;a<=C.end;a++){let q2=G.get(a);if(q2&&!T2(q2))_.set(q2.id,a)}},U2=(x,C)=>{if(!T2(C))_.set(C.id,x)},j2=(x)=>{_.delete(x)},r=(x,C)=>{return`${x}-${C}`},d=()=>G.getTotal(),J2=()=>G.getCachedCount(),L=()=>Z,X=()=>T,U=()=>({total:G.getTotal(),cached:G.getCachedCount(),isLoading:Z,pendingRanges:I,error:O,hasMore:T,cursor:z}),M=()=>G,v=()=>W(),c=(x)=>{let C=G.get(x);if(C!==void 0)return C;if(x>=0&&x<G.getTotal())return W().generate(x);return},l=(x)=>{let C=_.get(x);if(C===void 0)return;return G.get(C)},S=(x)=>{return _.get(x)??-1},N=(x)=>{let C=G.get(x);return C!==void 0&&!T2(C)},H=(x,C)=>{let a=[],q2=G.getTotal();G.touchChunksForRange(x,Math.min(C,q2-1));for(let X2=x;X2<=C&&X2<q2;X2++){let s=G.get(X2);if(s!==void 0)a.push(s);else a.push(W().generate(X2))}return a},A=(x)=>{G.setTotal(x),T=G.getCachedCount()<x,i(),o()},k=(x,C=0,a)=>{if(Q&&x.length>0){let q2=W();if(!q2.hasAnalyzedStructure())q2.analyzeStructure(x)}for(let q2=0;q2<x.length;q2++){let X2=x[q2];if(X2!==void 0){let s=C+q2;G.set(s,X2),U2(s,X2)}}if(a!==void 0)G.setTotal(a);else if(C+x.length>G.getTotal())G.setTotal(C+x.length);if(G.getCachedCount()>=G.getTotal()&&G.getTotal()>0)T=!1;i(),o(),y?.(x,C,G.getTotal())},F=(x,C)=>{let a=G.get(x);if(!a)return!1;let q2=a.id,X2={...a,...C};if(G.set(x,X2),C.id!==void 0&&C.id!==q2)j2(q2);return U2(x,X2),i(),o(),!0},K=(x,C)=>{G.insert(C,x),$2(),Y2(),i(),o()},R=(x)=>{let C=_.get(x);if(C===void 0)return!1;if(!G.delete(C))return!1;return $2(),Y2(),i(),o(),!0},b=async(x,C)=>{if(!Q)return;let a=G.chunkSize,q2=Math.floor(x/a),X2=Math.floor(C/a),s=a*2;for(let[B2,W2]of u){let D2=B2.indexOf("-"),A2=parseInt(B2.slice(0,D2),10);if(Math.abs(A2-x)>s)W2[1].abort(),u.delete(B2)}let V2=[],E2=[];for(let B2=q2;B2<=X2;B2++){let W2=B2*a,D2=W2+a-1,A2=r(W2,D2);if(G.isChunkFullyLoaded(B2))continue;let G2=u.get(A2);if(G2)E2.push(G2[0]);else V2.push({start:W2,end:D2})}if(V2.length===0){if(E2.length>0)await Promise.all(E2);return}if(D>0){let B2=u.size+V2.length;if(B2>D){let W2=(x+C)/2,D2=Math.min(B2-D,u.size);while(D2>0){let _2=null,G2=-1,Z2=null;for(let[F2,t]of u){let N2=F2.indexOf("-"),M2=parseInt(F2.slice(0,N2),10),O2=parseInt(F2.slice(N2+1),10),L2=Math.abs((M2+O2)/2-W2);if(L2>G2)G2=L2,_2=F2,Z2=t[1]}if(_2)Z2.abort(),u.delete(_2);D2--}let A2=D-u.size;if(V2.length>A2)V2.sort((_2,G2)=>{let Z2=Math.abs((_2.start+_2.end)/2-W2),F2=Math.abs((G2.start+G2.end)/2-W2);return Z2-F2}),V2.length=Math.max(0,A2)}}if(V2.length===0){if(E2.length>0)await Promise.all(E2);return}for(let B2 of V2){let W2=r(B2.start,B2.end),D2=new AbortController,A2=(async()=>{I.push(B2),Z=!0,O=void 0,o();try{let _2=B2.end-B2.start+1,G2={offset:B2.start,limit:_2,cursor:B2.start===w?z:void 0,signal:D2.signal},Z2=await Q.read(G2);if(k(Z2.items,B2.start,Z2.total),Z2.cursor)z=Z2.cursor,w=B2.start+Z2.items.length;let F2=B2.start+Z2.items.length;if(F2>=g){if(g=F2,Z2.hasMore!==void 0)T=Z2.hasMore;else if(Z2.total!==void 0)T=F2<Z2.total}}catch(_2){if(_2?.name==="AbortError")return;O=_2 instanceof Error?_2:Error(String(_2))}finally{u.delete(W2);let _2=I.findIndex((G2)=>G2.start===B2.start&&G2.end===B2.end);if(_2>=0)I.splice(_2,1);Z=u.size>0,o()}})();u.set(W2,[A2,D2]),E2.push(A2)}await Promise.all(E2)},h=async(x,C)=>{if(G.isRangeLoaded(x,C))return;await b(x,C)},p=async()=>{if(!Q)return;await b(0,B-1)},m=async()=>{if(!Q||Z||!T)return!1;let x=G.getCachedCount(),C=G.getTotal(),a=x,q2=Math.min(a+B-1,C>0?C-1:a+B-1);if(a>=C&&C>0)return T=!1,!1;return await b(a,q2),G.getCachedCount()>x},n=async()=>{if(G.clear(),G.setTotal(0),_.clear(),E)E.clear();Y2(),I=[],Z=!1,z=void 0,w=void 0,T=!0,g=0,O=void 0,i(),o()},e=(x,C)=>{if(G.evictDistant(x,C)>0)$2()},K2=()=>{G.clear(),_.clear(),z=void 0,w=void 0,O=void 0,I=[],Z=!1,i(),o()},Q2=()=>{if(G.reset(),_.clear(),E)E.clear();z=void 0,w=void 0,T=!0,g=0,O=void 0,I=[],Z=!1,i(),o()};if(q&&q.length>0)k(q,0,$??q.length);else if($!==void 0)G.setTotal($),i(),o();return{getState:U,getTotal:d,getCached:J2,getIsLoading:L,getHasMore:X,getStorage:M,getPlaceholders:v,getItem:c,getItemById:l,getIndexById:S,isItemLoaded:N,getItemsInRange:H,setTotal:A,setItems:k,updateItem:F,insertItem:K,removeItem:R,loadRange:b,ensureRange:h,loadInitial:p,loadMore:m,reload:n,evictDistant:e,clear:K2,reset:Q2}};var iJ=(J)=>{if(typeof J!=="object"){let Q=J??2;return{top:Q,right:Q,bottom:Q,left:Q}}return{top:J.top??2,right:J.right??2,bottom:J.bottom??2,left:J.left??2}},IJ=(J,Q,q={},$="vlist",j=!1,Y)=>{let{autoHide:B=!0,autoHideDelay:D=1000,minThumbSize:P=15,showOnHover:V=!0,showOnViewportEnter:y=!0,clickBehavior:f="scroll"}=q,G=f==="page"?"scroll":f,E=Y??J,W=iJ(q.padding),_=j?W.left:W.top,Z=j?W.right:W.bottom,O=j?W.bottom:W.right,T=q.hoverZoneWidth??O+16,z=0,w=0,I=0,g=0,u=!1,Y2=!1,o=0,i=0,$2=0,U2=null,j2=!1,r=null,d=0,J2=0,L=null,X=null,U=null,M=j?"width":"height",v=j?"translateX":"translateY",c=j?(t)=>t.clientX:(t)=>t.clientY,l=j?"left":"top",S=document.createElement("div"),N=document.createElement("div"),H=document.createElement("div"),A=j?"--vlist-custom-scrollbar-padding-left":"--vlist-custom-scrollbar-padding-top",k=()=>{if(E===J)return;let t=J.offsetTop;S.style[j?"left":"top"]=t?`calc(var(${A}) + ${t}px)`:`var(${A})`,H.style[j?"left":"top"]=`${t}px`},F=()=>{if(S.className=`${$}-scrollbar`,N.className=`${$}-scrollbar__thumb`,j)S.classList.add(`${$}-scrollbar--horizontal`);if(q.padding!==void 0)E.style.setProperty("--vlist-custom-scrollbar-padding-top",`${W.top}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-right",`${W.right}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-bottom",`${W.bottom}px`),E.style.setProperty("--vlist-custom-scrollbar-padding-left",`${W.left}px`);if(q.minThumbSize!==void 0)S.style.setProperty("--vlist-custom-scrollbar-min-thumb-size",`${P}px`);if(S.appendChild(N),E.appendChild(S),H.className=`${$}-scrollbar__hover`,j)H.classList.add(`${$}-scrollbar__hover--horizontal`),H.style.height=`${T}px`;else H.style.width=`${T}px`;if(E.appendChild(H),E!==J)k()},K=()=>{if(U2)clearTimeout(U2),U2=null},R=()=>{if(!B)return;K(),U2=setTimeout(h,D)},b=()=>{if(z<=w)return;if(K(),!j2)S.classList.add(`${$}-scrollbar--visible`),j2=!0;if(B&&!u&&!Y2)R()},h=()=>{if(u||Y2)return;S.classList.remove(`${$}-scrollbar--visible`),j2=!1},p=(t,N2)=>{if(z=t,w=N2,k(),z<=w){S.style.display="none",h();return}S.style.display="";let M2=Math.max(0,w-_-Z),O2=w/z;if(I=Math.max(P,O2*M2),N.style[M]=`${I}px`,g=M2-I,m($2),!B)b()},m=(t)=>{if($2=t,z<=w||g<=0)return;let N2=z-w,M2=Math.min(1,Math.max(0,t/N2));N.style.transform=`${v}(${M2*g}px)`},n=(t)=>{if(t.target===N||G!=="jump"||g<=0)return;let N2=z-w,M2=S.getBoundingClientRect(),O2=c(t)-M2[l],L2=Math.max(0,Math.min(O2-I/2,g));Q(L2/g*N2),b()},e=()=>{if(L!==null)clearTimeout(L),L=null;if(X!==null)cancelAnimationFrame(X),X=null;U=null},K2=(t)=>{let N2=g>0?J2/t*g:0;if(d<N2)return-1;if(d>=N2+I)return 1;return 0},Q2=()=>{let t=z-w,N2=K2(t);if(N2===0){e();return}if(N2===-1){if(J2<=0){e();return}let M2=Math.max(0,J2-w);J2=M2,Q(M2)}else{if(J2>=t){e();return}let M2=Math.min(t,J2+w);J2=M2,Q(M2)}b()},x=(t)=>{if(U===null){U=t,X=requestAnimationFrame(x);return}let N2=z-w,M2=t-U;U=t;let O2=K2(N2);if(O2===0){e();return}let L2=12*w/1000,b2=Math.min(L2*M2,w);if(O2===-1){if(J2<=0){e();return}let k2=Math.max(0,J2-b2);J2=k2,Q(k2)}else{if(J2>=N2){e();return}let k2=Math.min(N2,J2+b2);J2=k2,Q(k2)}K(),X=requestAnimationFrame(x)},C=()=>{e(),R(),document.removeEventListener("mouseup",C)},a=(t)=>{if(t.target===N||G!=="scroll")return;t.preventDefault();let N2=S.getBoundingClientRect();d=c(t)-N2[l],J2=$2,Q2(),L=setTimeout(()=>{X=requestAnimationFrame(x)},350),document.addEventListener("mouseup",C)},q2=(t)=>{t.preventDefault(),t.stopPropagation(),u=!0,o=c(t),i=$2,K(),S.classList.add(`${$}-scrollbar--dragging`),document.addEventListener("mousemove",X2),document.addEventListener("mouseup",s)},X2=(t)=>{if(!u)return;let N2=c(t)-o,M2=g>0?N2/g:0,O2=z-w,L2=M2*O2,b2=Math.max(0,Math.min(i+L2,O2));N.style.transform=`${v}(${b2/O2*g}px)`,Q(b2)},s=()=>{if(u=!1,S.classList.remove(`${$}-scrollbar--dragging`),B&&!Y2)R();document.removeEventListener("mousemove",X2),document.removeEventListener("mouseup",s)},V2=j?(t)=>t.touches[0].clientX:(t)=>t.touches[0].clientY,E2=(t)=>{t.stopPropagation(),u=!0,o=V2(t),i=$2,K(),S.classList.add(`${$}-scrollbar--dragging`)},B2=(t)=>{if(!u)return;t.preventDefault();let N2=V2(t)-o,M2=g>0?N2/g:0,O2=z-w,L2=M2*O2,b2=Math.max(0,Math.min(i+L2,O2));N.style.transform=`${v}(${b2/O2*g}px)`,Q(b2)},W2=()=>{if(u=!1,S.classList.remove(`${$}-scrollbar--dragging`),B)R()},D2=(t)=>{if(t.target===N)return;if(g<=0)return;let N2=t.touches[0],M2=S.getBoundingClientRect(),O2=(j?N2.clientX:N2.clientY)-M2[l];if(G==="jump"){let L2=z-w,b2=Math.max(0,Math.min(O2-I/2,g));Q(b2/g*L2)}else d=O2,J2=$2,Q2();b()},A2=()=>{if(y)b()},_2=()=>{if(!u){if(Y2=!1,B)R()}},G2=()=>{Y2=!0,K(),b()},Z2=()=>{if(Y2=!1,!u&&B)R()},F2=()=>{if(K(),e(),r!==null)cancelAnimationFrame(r),r=null;S.removeEventListener("click",n),S.removeEventListener("mousedown",a),S.removeEventListener("mouseenter",G2),document.removeEventListener("mouseup",C),S.removeEventListener("mouseleave",Z2),S.removeEventListener("touchstart",D2),N.removeEventListener("mousedown",q2),N.removeEventListener("touchstart",E2),N.removeEventListener("touchmove",B2),N.removeEventListener("touchend",W2),J.removeEventListener("mouseenter",A2),J.removeEventListener("mouseleave",_2),document.removeEventListener("mousemove",X2),document.removeEventListener("mouseup",s),H.removeEventListener("click",n),H.removeEventListener("mousedown",a),H.removeEventListener("mouseenter",G2),H.removeEventListener("mouseleave",Z2),H.remove(),E.style.removeProperty("--vlist-custom-scrollbar-padding-top"),E.style.removeProperty("--vlist-custom-scrollbar-padding-right"),E.style.removeProperty("--vlist-custom-scrollbar-padding-bottom"),E.style.removeProperty("--vlist-custom-scrollbar-padding-left"),S.remove()};if(F(),S.addEventListener("click",n),S.addEventListener("mousedown",a),S.addEventListener("mouseenter",G2),S.addEventListener("mouseleave",Z2),S.addEventListener("touchstart",D2,{passive:!0}),N.addEventListener("mousedown",q2),N.addEventListener("touchstart",E2,{passive:!0}),N.addEventListener("touchmove",B2,{passive:!1}),N.addEventListener("touchend",W2,{passive:!0}),J.addEventListener("mouseenter",A2),J.addEventListener("mouseleave",_2),H.addEventListener("click",n),H.addEventListener("mousedown",a),V)H.addEventListener("mouseenter",G2),H.addEventListener("mouseleave",Z2);return{show:b,hide:h,updateBounds:p,updatePosition:m,isVisible:()=>j2,destroy:F2}};var pJ=(J=0)=>{let Q=[,,,,,,,,];for(let q=0;q<8;q++)Q[q]={position:0,time:0};return{velocity:0,lastPosition:J,lastTime:performance.now(),samples:Q,sampleIndex:0,sampleCount:0}},p2=(J,Q)=>{let q=performance.now(),$=q-J.lastTime;if($===0)return J;if($>100){J.sampleCount=0,J.sampleIndex=0,J.velocity=0;let Y=J.samples[0];return Y.position=Q,Y.time=q,J.sampleIndex=1,J.sampleCount=1,J.lastPosition=Q,J.lastTime=q,J}let j=J.samples[J.sampleIndex];if(j.position=Q,j.time=q,J.sampleIndex=(J.sampleIndex+1)%8,J.sampleCount=Math.min(J.sampleCount+1,8),J.sampleCount>=2){let Y=(J.sampleIndex-J.sampleCount+8)%8,B=J.samples[Y],D=Q-B.position,P=q-B.time;J.velocity=P>0?D/P:0}return J.lastPosition=Q,J.lastTime=q,J},tJ=(J)=>J.sampleCount>=3,xJ=(J,Q={})=>{let{wheel:q=!0,sensitivity:$=1,smoothing:j=!1,idleTimeout:Y=150,onScroll:B,onIdle:D,scrollElement:P,horizontal:V=!1}=Q,y=!!P,f=0,G=0,E=y?V?window.innerWidth:window.innerHeight:V?J.clientWidth:J.clientHeight,W=Q.compressed??!1,_=Q.compression,Z=pJ(),O=!1,T=null,w=x2(()=>{let A=V?J.scrollLeft:J.scrollTop,k=A>=f?"down":"up";if(Z=p2(Z,A),f=A,B)B({scrollTop:f,direction:k,velocity:Z.velocity});i()}),g=x2(()=>{let A=J.getBoundingClientRect(),k=V?Math.max(0,-A.left):Math.max(0,-A.top),F=k>=f?"down":"up";if(Z=p2(Z,k),f=k,!O)O=!0;if(B)B({scrollTop:f,direction:F,velocity:Z.velocity});i()}),u=(A)=>{A.preventDefault()},Y2=(A)=>{if(A.deltaX)return;A.preventDefault(),J.scrollLeft+=A.deltaY},o=(A)=>{if(!W)return;A.preventDefault();let k=(V?A.deltaX||A.deltaY:A.deltaY)*$,F=f+k;if(j)F=f+k*0.3;if(F=Math.max(0,Math.min(F,G)),F!==f){let R=F>=f?"down":"up";if(Z=p2(Z,F),f=F,!O)O=!0;if(B)B({scrollTop:f,direction:R,velocity:Z.velocity});i()}},i=()=>{if(T)clearTimeout(T);T=setTimeout(()=>{if(O=!1,Z=pJ(f),D)D()},Y)},$2=(A)=>{if(W)return;if(W=!0,_=A,G=A.virtualSize-E,y)return;if(w.cancel(),J.removeEventListener("scroll",w),!q)J.removeEventListener("wheel",u);else if(V)J.removeEventListener("wheel",Y2);if(V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",o,{passive:!1});let k=V?J.scrollLeft:J.scrollTop;if(k>0){let F=V?_?.actualSize??J.scrollWidth:_?.actualSize??J.scrollHeight;f=k/F*G}if(V)J.scrollLeft=0;else J.scrollTop=0},U2=()=>{if(!W)return;if(W=!1,y){_=void 0;return}if(J.removeEventListener("wheel",o),V)J.style.overflowX="auto";else J.style.overflow="auto";if(J.addEventListener("scroll",w,{passive:!0}),!q)J.addEventListener("wheel",u,{passive:!1});else if(V)J.addEventListener("wheel",Y2,{passive:!1});if(_&&f>0){let k=f/G*(_.actualSize-E);if(V)J.scrollLeft=k;else J.scrollTop=k}_=void 0},j2=()=>{if(y||W)return f;return V?J.scrollLeft:J.scrollTop},r=(A,k=!1)=>{let F=Math.max(0,Math.min(A,G||1/0));if(y){let K=J.getBoundingClientRect();if(V){let R=K.left+window.scrollX;window.scrollTo({left:R+F,behavior:k?"smooth":"auto"})}else{let R=K.top+window.scrollY;window.scrollTo({top:R+F,behavior:k?"smooth":"auto"})}}else if(W){if(F===f)return;let R=F>=f?"down":"up";if(Z=p2(Z,F),f=F,!O)O=!0;if(B)B({scrollTop:f,direction:R,velocity:Z.velocity});i()}else if(V)J.scrollTo({left:F,behavior:k?"smooth":"auto"});else J.scrollTo({top:F,behavior:k?"smooth":"auto"})},d=(A)=>{r(j2()+A)},J2=()=>{return j2()<=0},L=(A=0)=>{let k=j2(),F=y||W?G:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;return k>=F-A},X=()=>{let A=j2(),k=y||W?G:V?J.scrollWidth-J.clientWidth:J.scrollHeight-J.clientHeight;if(k<=0)return 0;return Math.min(1,Math.max(0,A/k))},U=(A)=>{if(A.compression)_=A.compression,G=_.virtualSize-E},M=()=>W,v=()=>Math.abs(Z.velocity),c=()=>tJ(Z),l=()=>O,S=()=>y,N=(A)=>{if(E=A,_)G=_.virtualSize-E},H=()=>{if(T)clearTimeout(T);if(y)g.cancel(),window.removeEventListener("scroll",g);else w.cancel(),J.removeEventListener("scroll",w),J.removeEventListener("wheel",o),J.removeEventListener("wheel",u),J.removeEventListener("wheel",Y2)};if(y){if(W&&_)G=_.virtualSize-E;window.addEventListener("scroll",g,{passive:!0})}else if(W&&_){if(G=_.virtualSize-E,V)J.style.overflowX="hidden";else J.style.overflow="hidden";if(q)J.addEventListener("wheel",o,{passive:!1})}else{if(V)J.style.overflowX="auto",J.style.overflowY="hidden";else J.style.overflow="auto";if(J.addEventListener("scroll",w,{passive:!0}),!q)J.addEventListener("wheel",u,{passive:!1});else if(V)J.addEventListener("wheel",Y2,{passive:!1})}return{getScrollTop:j2,scrollTo:r,scrollBy:d,isAtTop:J2,isAtBottom:L,getScrollPercentage:X,getVelocity:v,isTracking:c,isScrolling:l,updateConfig:U,enableCompression:$2,disableCompression:U2,isCompressed:M,isWindowMode:S,updateContainerHeight:N,destroy:H}},x2=(J)=>{let Q=null,q=null,$=(...j)=>{if(q=j,Q===null)Q=requestAnimationFrame(()=>{if(Q=null,q)J(...q)})};return $.cancel=()=>{if(Q!==null)cancelAnimationFrame(Q),Q=null},$};var eJ=50,JQ=0.1;function QQ(J){let Q=0,q=0,$=0;function j(){return $>0?q/$:0}function Y(P){if(Q=P,P>JQ&&P<eJ)q+=P,$++}function B(){let P=J.getTotal();if(P===0)return 0;let V=J.getItemSize();if(V<=0)return 0;let y=J.getContainerSize();if(y<=0)return 0;let f=J.getScrollPosition(),G=typeof J.getColumns==="function"?J.getColumns():1,W=Math.ceil(P/G)*V,Z=Math.min(W,H2)-y,O=W-y,T=Z>0?O/Z:1,z=f*T,w=Math.ceil((z+y)/V);return Math.min(w*G,P)}function D(){let P=J.getTotal(),V=B();return{progress:P>0?Math.min(100,Math.max(0,V/P*100)):0,velocity:Q,velocityAvg:j(),itemCount:V,total:P}}return{getState:D,onVelocity:Y}}export{qJ as toggleSelection,LJ as simpleVisibleRange,u2 as selectItems,YJ as selectAll,zJ as rangesEqual,x2 as rafThrottle,WJ as needsScaling,S2 as mergeRanges,BJ as isSelected,T2 as isPlaceholderItem,wJ as isInRange,v2 as isGroupHeader,UJ as getSelectedItems,XJ as getSelectedIds,w2 as getScaleState,MJ as getScaleInfo,w2 as getScale,vJ as getRangeCount,VJ as getMaxItemsWithoutScaling,l2 as filterPlaceholders,CJ as diffRanges,m2 as deselectItems,OJ as createTableRenderer,DJ as createTableLayout,GJ as createTableHeader,t2 as createStickyHeader,QQ as createStats,f2 as createSparseStorage,z2 as createSizeCache,$J as createSelectionState,IJ as createScrollbar,xJ as createScrollController,I2 as createPlaceholderManager,FJ as createMeasuredSizeCache,AJ as createMasonryRenderer,EJ as createMasonryLayout,o2 as createGroupedSizeFn,i2 as createGroupLayout,cJ as createGridRenderer,e2 as createGridLayout,fJ as createEmitter,SJ as createAsyncManager,jJ as clearSelection,PJ as clampScrollPosition,RJ as calculateTotalSize,kJ as calculateScrollToIndex,NJ as calculateScaledVisibleRange,ZJ as calculateScaledScrollToIndex,KJ as calculateScaledRenderRange,P2 as calculateScaledItemPosition,HJ as calculateRenderRange,r2 as calculateMissingRanges,yJ as calculateItemOffset,_J as calculateIndexFromScrollPosition,TJ as calculateActualSize,n2 as buildLayoutItems,H2 as MAX_VIRTUAL_SIZE};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vlist",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Lightweight, high-performance virtual list with zero dependencies",
5
5
  "author": {
6
6
  "name": "Floor IO",