@aiquants/virtualscroll 3.11.1 → 3.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/README.md +15 -5
- package/dist/ScrollBar.d.ts.map +1 -1
- package/dist/ScrollPane.d.ts.map +1 -1
- package/dist/TapScrollCircle.d.ts.map +1 -1
- package/dist/VirtualGrid.d.ts.map +1 -1
- package/dist/VirtualScroll.d.cts +5 -0
- package/dist/VirtualScroll.d.ts +5 -0
- package/dist/VirtualScroll.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +2367 -2197
- package/dist/residualQuantizer.d.ts.map +1 -1
- package/dist/useGridTapScroll.d.ts.map +1 -1
- package/dist/useWheelBridge.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/ScrollBar.tsx +61 -34
- package/src/ScrollPane.tsx +16 -0
- package/src/TapScrollCircle.tsx +8 -0
- package/src/VirtualGrid.tsx +70 -0
- package/src/VirtualScroll.tsx +197 -47
- package/src/residualQuantizer.ts +14 -0
- package/src/useGridTapScroll.ts +35 -9
- package/src/useWheelBridge.ts +14 -0
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("react/jsx-runtime"),t=require("react"),At=require("tailwind-merge"),Kn=1e-6,An=(r,e,n)=>{if(!(Number.isFinite(e)&&e>0))throw new RangeError(`[VirtualScroll] devicePixelRatio must be a finite number > 0, received ${e}`);const s=r*e,i=Math.round(s);return n==="none"||Math.abs(s-i)<=Kn?i/e:(n==="end"?Math.floor(s):Math.ceil(s))/e},Zn=(r,e)=>{const n=r.ownerDocument.defaultView;if(n===null)throw new Error(`${e} belongs to a document without a window, so it has no device-pixel ratio`);return n},Ln=()=>{},Qn=()=>null,Jn=()=>typeof window>"u"?null:window,gn=new WeakMap,es=(r,e)=>{let n=r.matchMedia(`(resolution: ${r.devicePixelRatio}dppx)`);const s=()=>{n.removeEventListener("change",s),n=r.matchMedia(`(resolution: ${r.devicePixelRatio}dppx)`),n.addEventListener("change",s);for(const o of[...e])o()};return n.addEventListener("change",s),()=>{n.removeEventListener("change",s)}},ts=(r,e)=>{if(typeof r.matchMedia!="function")return Ln;const n=gn.get(r),s=n===void 0?{subscribers:new Set,disarm:null}:n;return n===void 0&&gn.set(r,s),s.subscribers.add(e),s.disarm===null&&(s.disarm=es(r,s.subscribers)),()=>{s.subscribers.delete(e),s.subscribers.size===0&&s.disarm!==null&&(s.disarm(),s.disarm=null)}},Vn=r=>{const[e,n]=t.useState(Jn),s=t.useCallback(u=>e===null?Ln:ts(e,u),[e]),i=t.useCallback(()=>e===null?null:e.devicePixelRatio,[e]),o=t.useSyncExternalStore(s,i,Qn),l=t.useCallback(u=>{if(u===null)return;const f=Zn(u,r);f!==e&&n(f)},[e,r]);return{ratio:o,attach:l}},cn=["en","ja"],Yr=["scrollUp","scrollDown","scrollLeft","scrollRight","verticalScrollBar","horizontalScrollBar","verticalScrollThumb","horizontalScrollThumb","scrollToTop","scrollToBottom","noItems"],Dn=Object.freeze({en:Object.freeze({scrollUp:"Scroll up",scrollDown:"Scroll down",scrollLeft:"Scroll left",scrollRight:"Scroll right",verticalScrollBar:"Vertical",horizontalScrollBar:"Horizontal",verticalScrollThumb:"Vertical scroll position",horizontalScrollThumb:"Horizontal scroll position",scrollToTop:"Top",scrollToBottom:"Bottom",noItems:"No items"}),ja:Object.freeze({scrollUp:"上へスクロール",scrollDown:"下へスクロール",scrollLeft:"左へスクロール",scrollRight:"右へスクロール",verticalScrollBar:"縦方向",horizontalScrollBar:"横方向",verticalScrollThumb:"縦スクロール位置",horizontalScrollThumb:"横スクロール位置",scrollToTop:"先頭へ",scrollToBottom:"末尾へ",noItems:"項目がありません"})}),rs=r=>cn.includes(r),tn=r=>typeof r=="string"?JSON.stringify(r):r===null?"null":typeof r,un=r=>{if(r===void 0)return"en";if(rs(r))return r;const e=cn.map(n=>JSON.stringify(n)).join(", ");throw new RangeError(`[virtualscroll] locale must be one of ${e}; got ${tn(r)}`)},ns=r=>Yr.includes(r),dn=(r,e)=>{const n=Dn[un(r)];if(e===void 0)return n;if(e===null||typeof e!="object")throw new RangeError(`[virtualscroll] labels must be an object; got ${tn(e)}`);const s=Object.getPrototypeOf(e);if(s!==Object.prototype&&s!==null)throw new RangeError(`[virtualscroll] labels must be a plain object (prototype Object.prototype or null); got ${Array.isArray(e)?"an array":"an object with a non-plain prototype"}`);const i=new Set(Object.keys(e));for(const l of i)if(!ns(l))throw new RangeError(`[virtualscroll] labels.${l} is not a known label key; expected one of ${Yr.join(", ")}`);const o={...n};for(const l of Yr){const u=i.has(l)?e[l]:void 0;if(u!==void 0){if(typeof u!="string"||u.trim()==="")throw new RangeError(`[virtualscroll] labels.${l} must be a non-blank string; got ${tn(u)}`);o[l]=u}}return Object.freeze(o)};class O{level;prefix;impl;constructor(e=2,n="[virtualscroll]",s=console){this.level=e,this.prefix=n,this.impl=s}static instance=new O(2,"[virtualscroll]");static setLevel(e){O.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){O.instance.setImplementation(e)}setImplementation(e){this.impl=e}static isEnabled(e){return O.instance.isEnabled(e)}isEnabled(e){return this.level<=e}static resolveLazy(e){if(typeof e!="function")return e;try{return e()}catch{return e}}formatMessage(e){return typeof e=="string"?[`${this.prefix} ${e}`]:[this.prefix,e]}static debug(e,...n){O.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(O.resolveLazy(e)),...n.map(O.resolveLazy))}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(O.resolveLazy(e)),...n.map(O.resolveLazy))}static warn(e,...n){O.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(O.resolveLazy(e)),...n.map(O.resolveLazy))}static error(e,...n){O.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(O.resolveLazy(e)),...n.map(O.resolveLazy))}}const zn=r=>typeof r.setPointerCapture=="function"&&typeof r.releasePointerCapture=="function"&&typeof r.hasPointerCapture=="function",_n=(r,e)=>zn(r)&&r.hasPointerCapture(e),kr=(r,e)=>{if(!zn(r))return"unsupported";try{return r.setPointerCapture(e),"captured"}catch(n){return(typeof n=="object"&&n!==null&&"name"in n?n.name:void 0)==="NotFoundError"?"inactive-pointer":"rejected"}},ir=(r,e)=>{_n(r,e)&&r.releasePointerCapture(e)},bn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Hr=6,ss=8,is=({dragState:r,normalizedDistance:e})=>{const n=1+e*.18,s=.16+e*.24,i=.38+e*.28,o=r.active?"80ms ease-out":"220ms ease";return D.jsxs(D.Fragment,{children:[D.jsx("div",{className:"aqvs-tap-scroll-circle-visual-outer",style:{background:"linear-gradient(140deg, rgba(255,255,255,0.62), rgba(72,72,72,0.48))",boxShadow:`0 0 0 1px rgba(255,255,255,0.28), 0 10px 22px rgba(0,0,0,${s})`,transform:`scale(${n})`,transition:`${o}, ${r.active?"80ms":"260ms"} box-shadow ease`}}),D.jsx("div",{className:"aqvs-tap-scroll-circle-inner",style:{background:"linear-gradient(140deg, rgba(255,255,255,0.72), rgba(28,28,28,0.58))",boxShadow:"inset 0 4px 10px rgba(0,0,0,0.24), inset 0 0 2px rgba(255,255,255,0.55)",opacity:i,transition:r.active?"120ms opacity ease-out":"220ms opacity ease"}})]})},fn=t.memo(t.forwardRef(({onDragChange:r,className:e,maxVisualDistance:n=160,size:s=40,style:i,opacity:o=1,renderVisual:l,axis:u="y"},f)=>{const[g,p]=t.useState(bn),R=t.useRef(null),C=t.useRef(null),S=t.useRef({x:0,y:0}),V=t.useRef(null),$=t.useRef(0),G=t.useCallback(P=>{p(P),r(P)},[r]),ie=t.useCallback((P,Y,ne=!1)=>{const{x:ze,y:oe}=S.current,Te=P-ze,vt=Y-oe;let ee,et;if(u==="xy")ee=Math.hypot(Te,vt),et=ee<Hr?0:1;else{const Ce=u==="x"?Te:vt;ee=Math.abs(Ce),et=ee<Hr?0:Ce<0?-1:1}const mt=$.current;let ge=et;const Ye=Hr+ss;et===0?mt!==0&&ee<Ye?ge=mt:(ge=0,ne||($.current=0)):et!==mt&&mt!==0&&ee<Ye?ge=mt:$.current=et,G({active:ne||ee>=Hr,offsetX:Te,offsetY:vt,distance:ee,direction:ge,pointerId:R.current})},[G,u]),ke=t.useCallback(P=>{if(P===null)return;const Y=V.current;Y!==null&&ir(Y,P)},[]),w=t.useCallback((P=!1)=>{P&&ke(R.current),R.current=null,C.current=null,$.current=0,G(bn)},[G,ke]),N=t.useCallback(P=>{if(R.current!==null&&R.current!==P.pointerId){C.current={pointerId:P.pointerId,clientX:P.clientX,clientY:P.clientY},P.preventDefault(),P.stopPropagation();return}P.preventDefault(),P.stopPropagation();const Y=V.current??P.currentTarget,{left:ne,top:ze,width:oe,height:Te}=Y.getBoundingClientRect();S.current={x:ne+oe/2,y:ze+Te/2},R.current=P.pointerId,kr(Y,P.pointerId),ie(P.clientX,P.clientY,!0)},[ie]),E=t.useCallback(P=>{if(R.current!==P.pointerId){C.current!==null&&C.current.pointerId===P.pointerId&&(C.current={pointerId:P.pointerId,clientX:P.clientX,clientY:P.clientY});return}P.preventDefault(),ie(P.clientX,P.clientY)},[ie]),K=t.useCallback(P=>{if(R.current!==P.pointerId){C.current!==null&&C.current.pointerId===P.pointerId&&(C.current=null);return}P.preventDefault(),P.stopPropagation();const Y=C.current;if(C.current=null,Y!==null){ke(P.pointerId);const ne=V.current;if(ne===null||kr(ne,Y.pointerId)!=="inactive-pointer"){R.current=Y.pointerId,ie(Y.clientX,Y.clientY,!0);return}}w(!0)},[w,ke,ie]),X=t.useCallback(P=>{P.target===P.currentTarget&&R.current===P.pointerId&&w(!1)},[w]);t.useImperativeHandle(f,()=>({reset:()=>{w(!0)},getElement:()=>V.current}),[w]);const z=Math.min(Math.max(o,0),1),de=s/64,te=Math.min(g.distance,n)/n,re=g.direction*te*10*de;let Se;if(u==="xy"){const P=g.distance,Y=P===0?0:re*g.offsetX/P,ne=P===0?0:re*g.offsetY/P;Se=`translate(${Y}px, ${ne}px)`}else u==="x"?Se=`translateX(${re}px)`:Se=`translateY(${re}px)`;const pe=l??is,Ne={dragState:g,normalizedDistance:te,sizeScale:de,size:s,opacity:z},xt={...i,width:s,height:s,transform:Se};return xt.opacity=z,D.jsx("div",{ref:V,"data-testid":"virtual-scroll-tap-circle",className:At.twMerge("aqvs-tap-scroll-circle",e),style:xt,tabIndex:-1,onPointerDown:N,onPointerMove:E,onPointerUp:K,onPointerCancel:K,onLostPointerCapture:X,role:"presentation",children:pe(Ne)})}));fn.displayName="TapScrollCircle";const Q=(r,e,n)=>Math.max(e,Math.min(n,r)),jr=(r,e)=>{const n=e==="x",s=r.getBoundingClientRect(),i=n?s.width:s.height,o=p=>{const R=Number.parseFloat(p);return Number.isFinite(R)?R:0},l=window.getComputedStyle(r),u=o(n?l.width:l.height),f=u>0?u+o(n?l.paddingLeft:l.paddingTop)+o(n?l.paddingRight:l.paddingBottom)+o(n?l.borderLeftWidth:l.borderTopWidth)+o(n?l.borderRightWidth:l.borderBottomWidth):0,g=f>0?f:n?r.offsetWidth:r.offsetHeight;return g<=0||i<=0?1:i/g},On=r=>{r.preventDefault()},Nr="virtualscroll:tap-scroll-cancel",xn=20,vn=.01,os=(r,e)=>e<=0||r<=0?0:r>=e?1:Q(r/e,vn,1-vn),as=250,ls=60,cs=20,us=20,hn={maxDistance:240,minSpeedMultiplier:.2},ds=hn.maxDistance,Sn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Kr=2.2,fs=8,hs=120,Fn=1/10,Yt={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:ds,minSpeedMultiplier:hn.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},ms=(r,e)=>e?{bar:r.horizontalScrollBar,thumb:r.horizontalScrollThumb,arrows:[r.scrollLeft,r.scrollRight]}:{bar:r.verticalScrollBar,thumb:r.verticalScrollThumb,arrows:[r.scrollUp,r.scrollDown]},ps=r=>r?{mainSizeKey:"width",crossSizeKey:"height",thumbTranslateFunction:"translateX",selectDelta:(e,n)=>e,getPointerCoordinate:({clientX:e})=>e,arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",thumbTranslateFunction:"translateY",selectDelta:(e,n)=>n,getPointerCoordinate:({clientY:e})=>e,arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},rn=(r,e)=>{const n=r?.maxSpeedMultiplier,s=typeof n=="number"?n:Hn(e);return{enabled:r?.enabled??Yt.enabled,size:r?.size??Yt.size,offsetX:r?.offsetX??Yt.offsetX,offsetY:r?.offsetY??Yt.offsetY,className:r?.className??Yt.className,maxVisualDistance:r?.maxVisualDistance??Yt.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(r?.minSpeedMultiplier??Yt.minSpeedMultiplier,0),opacity:Q(r?.opacity??Yt.opacity,0,1),renderVisual:r?.renderVisual??Yt.renderVisual,maxSpeedCurve:r?.maxSpeedCurve??Yt.maxSpeedCurve}},gs=({isDragging:r,isThumbHovered:e,enableThumbDrag:n})=>t.useMemo(()=>n?r?"dragging":e?"hover":"idle":"disabled",[n,r,e]),bs=({canUseArrowButtons:r,enableArrowButtons:e,keyboardOperable:n,resetTapScroll:s,scrollByStep:i})=>{const o=t.useRef(null),l=t.useRef(null),u=t.useRef(null),f=t.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null),l.current!==null&&(window.clearTimeout(l.current),l.current=null),u.current!==null&&(window.removeEventListener("pointerup",u.current),window.removeEventListener("pointercancel",u.current),window.removeEventListener("blur",u.current),u.current=null)},[]),g=t.useCallback(()=>{f()},[f]),p=t.useCallback(C=>S=>{if(!r)return;S.cancelable&&S.preventDefault(),S.stopPropagation(),s(),f(),i(C),l.current=window.setTimeout(()=>{o.current=window.setInterval(()=>{i(C)},ls)},as);const V=()=>f();u.current=V,window.addEventListener("pointerup",V),window.addEventListener("pointercancel",V),window.addEventListener("blur",V)},[r,f,s,i]),R=t.useCallback(C=>S=>{e&&n&&(S.key==="Enter"||S.key===" "||S.key==="Spacebar")&&(S.preventDefault(),i(C))},[e,n,i]);return t.useEffect(()=>{r||f()},[r,f]),t.useEffect(()=>()=>{f()},[f]),{handleArrowPointerDown:p,handleArrowPointerUp:g,handleArrowKeyDown:R}},xs=700,sr=(r,e)=>typeof r=="number"&&Number.isFinite(r)?r:e,Wr=({distance:r,maxDistance:e,viewportSize:n,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:o,curve:l})=>{const u=Math.max(sr(r,0),0),f=sr(e,0),g=f>0?Math.min(u,f)/f:1,p=Math.max(sr(n,0),0),R=Math.max(sr(s,0),0),C=Math.max(sr(i,0),0),S=Math.max(p*R,40),V=o?S:1200,$=Math.max(p*C,V),G=l?Math.max(sr(l.exponentialScale,C),0):0,ie=l?Math.min($,Math.max(p*G,S)):$,ke=Math.max(ie,S);let w=g**1.1;if(l){const E=Math.min(Math.max(sr(l.exponentialSteepness,0),0),xs);if(E===0)w=g;else{const K=Math.expm1(E)||1;w=Math.min(Math.max(Math.expm1(E*g)/K,0),1)}}const N=Math.min(Math.max(sr(l?.easedOffset,0),0),1);return S+(ke-S)*(N+(1-N)*w)},Hn=r=>{if(!r||r<=0)return Kr;const e=Math.max(1,r),n=Math.log10(e),s=Kr+n*fs;return Q(s,Kr,hs)},mn=({contentSize:r,viewportSize:e,scrollPosition:n,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:o=!0,enableArrowButtons:l=!0,enableArrowButtonTabStops:u=!0,horizontal:f=!1,enableHorizontalTapCircle:g=!1,stretchMainSize:p=!1,scrollBarWidth:R=12,className:C,ariaControls:S,tapScrollCircleOptions:V,itemCount:$,renderThumbOverlay:G,visibleStartIndex:ie,visibleEndIndex:ke,locale:w,labels:N})=>{const[E,K]=t.useState(!1),[X,z]=t.useState(!1),[de,te]=t.useState(!1),re=t.useRef(null),Se=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),pe=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),Ne=t.useRef(n),xt=t.useRef(s),P=t.useRef(Sn),Y=t.useRef(null),ne=t.useRef(null),ze=t.useRef(null),oe=t.useRef(0),Te=t.useRef(0),vt=t.useMemo(()=>rn(V,$),[$,V]),ee=t.useMemo(()=>ps(f),[f]),et=t.useMemo(()=>dn(w,N),[w,N]),mt=ms(et,f),ge=t.useMemo(()=>new Intl.NumberFormat(un(w),{style:"percent",maximumFractionDigits:0}),[w]),Ye=!u,{enabled:Ce,size:je,offsetX:We,offsetY:Et,className:be,maxVisualDistance:St,maxSpeedMultiplier:_e,minSpeedMultiplier:L,opacity:tt,renderVisual:A,maxSpeedCurve:ot}=vt,_=t.useRef({viewportSize:e,maxScrollPosition:Math.max(r-e,0),scrollBarVisible:r>e,effectiveTapMaxDistance:Math.max(St,1),tapCircleMaxSpeedMultiplier:_e,tapCircleMinSpeedMultiplier:L,tapCircleMaxSpeedCurve:ot,tapScrollCircleOptions:V,effectiveTrackLength:0,onScroll:s,scrollPosition:n}),{mainSizeKey:ye,crossSizeKey:at,thumbTranslateFunction:H,selectDelta:lt,getPointerCoordinate:It,arrowIcons:T,directionClass:zt,orientation:ct}=ee,Oe=Math.max(St,1),pt=e/r,_t=Math.max(e-R*2,0),x=pt*_t,q=Math.min(Math.max(xn,x||0),_t||xn),J=Math.max(r-e,0),ae=Ye?void 0:ge.format(os(n,J)),se=Math.max(_t-q,0),Ee=J<=0||se<=0?0:Q(n/J*se,0,se),Re=Ee+q/2,{ratio:xe,attach:rt}=Vn("[ScrollBar] the thumb"),Fe=xe===null?Ee:An(Ee,xe,"none"),j=r>e||E,ut=j&&l;t.useLayoutEffect(()=>{_.current={viewportSize:e,maxScrollPosition:J,scrollBarVisible:j,effectiveTapMaxDistance:Oe,tapCircleMaxSpeedMultiplier:_e,tapCircleMinSpeedMultiplier:L,tapCircleMaxSpeedCurve:ot,tapScrollCircleOptions:V,effectiveTrackLength:se,onScroll:s,scrollPosition:n}}),t.useLayoutEffect(()=>{Ne.current=n},[n]),t.useLayoutEffect(()=>{xt.current=s},[s]),t.useEffect(()=>{i||z(!1)},[i]);const me=gs({isDragging:E,isThumbHovered:X,enableThumbDrag:i}),we=t.useCallback((d,I)=>{const F=_.current,le=I??Ne.current;if(xt.current){const Ve=xt.current(d,le);if(typeof Ve=="number"&&Number.isFinite(Ve))return Ne.current=Ve,Ve}const Pe=typeof d=="function"?d(le):d,Ke=Math.max(F.maxScrollPosition,0),ce=F.scrollBarVisible?Q(Pe,0,Ke):0;return Ne.current=ce,ce},[]),Ae=t.useCallback(d=>{const I=_.current,F=Ne.current;if(!I.scrollBarVisible||I.maxScrollPosition<=0){const qt=we(0,F),Rt=qt-F;return{nextPosition:qt,actualDelta:Rt,reachedBoundary:!0}}if(d===0)return{nextPosition:F,actualDelta:0,reachedBoundary:!1};const Pe=we(qt=>Q(qt+d,0,I.maxScrollPosition),F),Ke=Pe-F,ce=d<0&&F+d<=0,Ve=d>0&&F+d>=I.maxScrollPosition,ft=d<0&&(Pe<=0||ce&&Ke===0)||d>0&&(Pe>=I.maxScrollPosition||Ve&&Ke===0);return{nextPosition:Pe,actualDelta:Ke,reachedBoundary:ft}},[we]),Mt=t.useCallback((d,I)=>{d.current+=I;const F=Math.max(_.current.maxScrollPosition,0);F>0&&(d.current=Q(d.current,-F,F));const le=Ae(d.current);return d.current-=le.actualDelta,le.reachedBoundary&&(d.current=0),le},[Ae]),$e=t.useCallback(()=>{ne.current!==null&&(window.cancelAnimationFrame(ne.current),ne.current=null),ze.current=null,oe.current=0,Te.current=0},[]),He=t.useCallback(()=>{P.current={...Sn},te(!1),Y.current?.reset(),$e()},[$e]),Ue=t.useCallback(d=>{const I=P.current,F=_.current;if(!I.active||I.direction===0){$e();return}if(!F.scrollBarVisible||F.maxScrollPosition<=0){$e();return}const le=ze.current??d,Pe=Math.max((d-le)/1e3,0),Ke=Math.min(Pe,Fn);if(ze.current=d,Ke<=0){ne.current=window.requestAnimationFrame(Ue);return}const ce=Wr({distance:I.distance,maxDistance:F.effectiveTapMaxDistance,viewportSize:F.viewportSize,minSpeedMultiplier:F.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:F.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof F.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:F.tapCircleMaxSpeedCurve});Te.current!==I.direction&&(Te.current=I.direction,oe.current=0);const{reachedBoundary:Ve}=Mt(oe,I.direction*ce*Ke);if(Ve){$e();return}ne.current=window.requestAnimationFrame(Ue)},[Mt,$e]),v=t.useCallback(()=>{ne.current===null&&(ze.current=null,oe.current=0,ne.current=window.requestAnimationFrame(Ue))},[Ue]);t.useEffect(()=>{const d=P.current;!d.active||d.direction===0||v()},[r,e,v]),t.useEffect(()=>()=>{$e()},[$e]);const y=t.useCallback(d=>{P.current=d,te(d.active),d.active&&d.direction!==0?v():$e()},[v,$e]);t.useEffect(()=>{Ce||He()},[He,Ce]),t.useEffect(()=>{const d=I=>{const le=I.detail?.paneId;le&&S&&le!==S||He()};return window.addEventListener(Nr,d),()=>{window.removeEventListener(Nr,d)}},[S,He]),t.useEffect(()=>{if(!Ce)return;const d=I=>{if(!P.current.active||P.current.pointerId===I.pointerId)return;const F=I.target;if(!(F instanceof Node)){He();return}Y.current?.getElement()?.contains(F)||He()};return document.addEventListener("pointerdown",d,!0),()=>{document.removeEventListener("pointerdown",d,!0)}},[He,Ce]);const Xe=d=>{if(!j||se<=0||J<=0)return 0;const I=Q(d,0,se);return Q(I/se*J,0,J)},Me=t.useCallback(d=>{const{scrollBarVisible:I,effectiveTrackLength:F,maxScrollPosition:le}=_.current;if(O.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:d,trackLen:F,maxScroll:le})),F<=0||le<=0)return null;const Pe=Q(d,0,F);return Q(Pe/F*le,0,le)},[]),Be=t.useCallback(d=>jr(d,f?"x":"y"),[f]),Ge=t.useCallback(d=>{const I=Se.current;if(I.pointerId!==d.pointerId)return;const F=d.clientX-I.startClientX,le=d.clientY-I.startClientY,Pe=lt(F,le)/(I.scale||1);O.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:Pe,startThumbPosition:I.startThumbPosition,clientY:d.clientY,startClientY:I.startClientY,metrics:_.current}));const Ke=Me(I.startThumbPosition+Pe);Ke!==null&&we(Ke),d.cancelable&&d.preventDefault()},[lt,Me,we]),Le=t.useCallback(d=>{const I=Se.current;if(I.pointerId===d.pointerId)if(document.removeEventListener("pointermove",Ge),document.removeEventListener("pointerup",Le),document.removeEventListener("pointercancel",Le),I.captureTarget!==null&&ir(I.captureTarget,d.pointerId),Se.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},K(!1),re.current){const F=re.current.getBoundingClientRect();d.clientX>=F.left&&d.clientX<=F.right&&d.clientY>=F.top&&d.clientY<=F.bottom||z(!1)}else z(!1)},[Ge]);t.useEffect(()=>()=>{document.removeEventListener("pointermove",Ge),document.removeEventListener("pointerup",Le),document.removeEventListener("pointercancel",Le)},[Ge,Le]);const he=t.useRef(0),dt=t.useRef(0),Wt=t.useCallback(d=>{const I=Math.max(Math.round(_.current.viewportSize/us),cs);dt.current!==d&&(dt.current=d,he.current=0),Mt(he,d*I)},[Mt]),{handleArrowPointerDown:ar,handleArrowPointerUp:Lt,handleArrowKeyDown:gt}=bs({canUseArrowButtons:ut,enableArrowButtons:l,keyboardOperable:!Ye,resetTapScroll:He,scrollByStep:Wt}),Ct=d=>{if(!j)return;if(!i){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;He();const I=d.currentTarget,F=Be(I),le=kr(I,d.pointerId)==="captured"?I:null;Se.current={pointerId:d.pointerId,startThumbPosition:Ee,startClientX:d.clientX,startClientY:d.clientY,scale:F,captureTarget:le},document.addEventListener("pointermove",Ge),document.addEventListener("pointerup",Le),document.addEventListener("pointercancel",Le),K(!0),z(!0),d.preventDefault(),d.stopPropagation()},Bt=d=>{if(!j)return;if(!o){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;const I=d.currentTarget,F=I.getBoundingClientRect(),le=It(d),Pe=Be(I),Ke=(le-(f?F.left:F.top))/Pe;He();const ce=Ke-q/2,Ve=Xe(ce);we(Ve),kr(I,d.pointerId),pe.current={pointerId:d.pointerId,startThumbPosition:ce,startClientX:d.clientX,startClientY:d.clientY,scale:Pe},d.preventDefault(),d.stopPropagation()},Pt=()=>{pe.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},er=d=>{const I=pe.current;if(I.pointerId!==d.pointerId)return;if(d.pointerType==="mouse"&&d.buttons===0){Pt();return}const F=d.clientX-I.startClientX,le=d.clientY-I.startClientY,Pe=lt(F,le)/(I.scale||1),Ke=Xe(I.startThumbPosition+Pe);we(Ke),d.cancelable&&d.preventDefault()},Rr=d=>{pe.current.pointerId===d.pointerId&&(ir(d.currentTarget,d.pointerId),Pt(),d.preventDefault(),d.stopPropagation())},Vt=d=>{pe.current.pointerId===d.pointerId&&(ir(d.currentTarget,d.pointerId),Pt())},fr=d=>{d.target===d.currentTarget&&pe.current.pointerId===d.pointerId&&Pt()},tr=t.useMemo(()=>Q((de?1:.8)*tt,0,1),[de,tt]),kt=t.useMemo(()=>{const I=`calc(50% - ${je/2}px + ${Et}px)`;return{left:We,top:I}},[We,Et,je]),rr=(d,I,F,le)=>D.jsx("button",{type:"button",tabIndex:Ye?-1:0,className:"aqvs-scrollbar-arrow-button",style:{[ye]:R,[at]:R},"aria-label":I,onPointerDown:ar(d),onPointerUp:Lt,onPointerLeave:Lt,onPointerCancel:Lt,onKeyDown:gt(d),"aria-disabled":!l,disabled:!ut,children:D.jsx("span",{"aria-hidden":"true",children:F})},le),Ot=G&&j?{orientation:ct,scrollPosition:n,maxScrollPosition:J,contentSize:r,viewportSize:e,thumbSize:q,thumbPosition:Ee,thumbCenter:Re,trackSize:_t,isDragging:E,isTapScrollActive:de,visibleStartIndex:ie,visibleEndIndex:ke}:null;return D.jsxs("div",{className:At.twMerge("aqvs-scrollbar",zt,C),style:{...p&&!f?{}:{[ye]:e},[at]:R},"data-visible":j?"true":"false",role:"scrollbar","aria-label":mt.bar,"aria-hidden":Ye?!0:void 0,tabIndex:Ye?void 0:-1,onPointerDown:Ye?On:void 0,"aria-controls":S,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":J,"aria-valuetext":ae,"aria-orientation":f?"horizontal":"vertical",children:[(!f||g)&&j&&Ce&&D.jsx(fn,{axis:f?"x":"y",ref:Y,className:At.twMerge("aqvs-scrollbar-tap-circle-wrapper",be),size:je,maxVisualDistance:Oe,style:kt,opacity:tr,renderVisual:A,onDragChange:y},"tap-circle"),rr(-1,mt.arrows[0],T[0],"arrow-start"),D.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:R/2},onPointerDown:Bt,onPointerMove:er,onPointerUp:Rr,onPointerCancel:Vt,onLostPointerCapture:fr,"aria-disabled":!o,children:[Ot&&D.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:G?.(Ot)},"overlay"),D.jsx("div",{ref:rt,className:"aqvs-scrollbar-thumb-wrapper",style:{[ye]:q,top:0,left:0,...f?{bottom:0}:{right:0},transform:`${H}(${Fe}px)`},"data-visible":j||E?"true":"false",onPointerDown:Ct,role:"slider","aria-label":mt.thumb,"aria-orientation":f?"horizontal":"vertical","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":J,"aria-valuetext":ae,"aria-disabled":!i,tabIndex:Ye?void 0:-1,children:D.jsx("div",{ref:re,className:At.twMerge("aqvs-scrollbar-thumb",f?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":me,style:{borderRadius:R-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&z(!0)},onMouseLeave:()=>{i&&z(!1)}},"thumb")},"thumb-wrapper")]},"track"),rr(1,mt.arrows[1],T[1],"arrow-end")]})},Xn=({offsetX:r,offsetY:e,maxDistance:n,x:s,y:i})=>{const o=Number.isFinite(r)?r:0,l=Number.isFinite(e)?e:0,u=Math.hypot(o,l);if(u===0)return{x:0,y:0};const f=Wr({distance:u,maxDistance:n,viewportSize:s.viewportSize,minSpeedMultiplier:s.minSpeedMultiplier,maxSpeedMultiplier:s.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:s.hasCustomMaxSpeedMultiplier,curve:s.curve}),g=Wr({distance:u,maxDistance:n,viewportSize:i.viewportSize,minSpeedMultiplier:i.minSpeedMultiplier,maxSpeedMultiplier:i.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:i.hasCustomMaxSpeedMultiplier,curve:i.curve});return{x:f*o/u,y:g*l/u}},vs=r=>{const{quantum:e,resetOnDirectionChange:n=!0}=r;if(!(Number.isFinite(e)&&e>0))throw new TypeError(`[createResidualQuantizer] quantum must be a finite positive number, received ${e}`);let s=0;return{push:i=>{if(!Number.isFinite(i)||Math.abs(i)>Number.MAX_SAFE_INTEGER)return 0;n&&s!==0&&i!==0&&Math.sign(i)!==Math.sign(s)&&(s=0),s+=i;const o=Math.trunc(s/e)*e+0;return s-=o,o},peekResidue:()=>s,reset:()=>{s=0}}},Ss=16,Rn=(r,e,n)=>e===1?r*Ss:e===2?r*n:r,Rs=(r,e)=>{const n=r.shiftKey&&r.deltaX===0,s=n?r.deltaY:r.deltaX,i=n?0:r.deltaY,o=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:r.ctrlKey,isHorizontalDominant:o,horizontalDelta:Rn(s,r.deltaMode,e),verticalDelta:Rn(i,r.deltaMode,e)}},$n=new WeakSet,wn=r=>{$n.add(r)},ws=r=>$n.has(r),Ms=["mouse","pen","touch"],Zr=(r,e)=>!(r==="mouse"||r==="pen"||r==="touch")||e.includes(r),Ts=r=>r==="mouse"||r==="pen",Cr={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},Xr=(r,e,n)=>{for(const[s,i,o]of e)n==="add"?r.addEventListener(s,i,o):r.removeEventListener(s,i,o)},Bn=t.forwardRef(({children:r,contentSize:e,viewportSize:n,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:o=!0,enableTrackClick:l=!0,enableArrowButtons:u=!0,enableArrowButtonTabStops:f=!0,enablePointerDrag:g=!0,pointerDragInputs:p=Ms,onScroll:R,className:C,testId:S,style:V,background:$,tapScrollCircleOptions:G,inertiaOptions:ie,itemCount:ke,renderThumbOverlay:w,wheelSpeedMultiplier:N=1,overscrollBehavior:E="auto",onWheelHorizontal:K,onPanHorizontal:X,contentInsets:z,visibleStartIndex:de,visibleEndIndex:te,renderOverlay:re,initialScrollPosition:Se=0,contentProps:pe,locale:Ne,labels:xt},P)=>{const Y=t.useRef(Number.isFinite(Se)?Math.max(0,Se):0),ne=t.useRef(null),ze=t.useRef(null),oe=n===void 0,[Te,vt]=t.useState(0),ee=n??Te,et=t.useRef(null),mt=t.useRef(e),ge=t.useRef(!1),Ye=t.useCallback(()=>{!ge.current||mt.current<=0||et.current==="zero"||(et.current="zero",O.warn("[ScrollPane] The self-measured viewport is 0px. Give the scroll pane's host element a definite height (e.g. h-full, flex-1 + min-h-0, an explicit px height), or pass viewportSize explicitly."))},[]);t.useLayoutEffect(()=>{mt.current=e,Ye()},[e,Ye]),t.useLayoutEffect(()=>{if(!oe)return;const x=ze.current;if(!x)return;const q=()=>{const ae=x.offsetHeight;if(ae>0){ge.current=!1,vt(se=>se===ae?se:ae);return}ge.current=x.offsetParent!==null,Ye()};q();const J=typeof ResizeObserver=="function"?new ResizeObserver(q):null;return J?.observe(x),()=>{J?.disconnect(),ge.current=!1}},[oe,Ye]),t.useLayoutEffect(()=>{oe&&s?.(Te)},[oe,Te,s]),t.useLayoutEffect(()=>{if(oe)return;const x=ne.current;if(!x)return;const q=()=>{const ae=x.clientHeight;if(ae<=0||Math.abs(ae-ee)<=1)return;const se=`${ee}/${ae}`;et.current!==se&&(et.current=se,O.warn(`[ScrollPane] viewportSize=${ee} but the host band is ${ae}px. The clip window, max scroll position, thumb mapping, rendered row count and scrollability all derive from viewportSize, so they are now wrong. Omit viewportSize to let the pane measure itself.`))};if(q(),typeof ResizeObserver!="function")return;const J=new ResizeObserver(q);return J.observe(x),()=>{J.disconnect()}},[oe,ee]);const Ce=t.useRef(K);t.useEffect(()=>{Ce.current=K},[K]);const je=t.useRef(X);t.useEffect(()=>{je.current=X},[X]);const We=t.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),Et=t.useMemo(()=>({maxVelocity:ie?.maxVelocity??Cr.maxVelocity,minVelocity:ie?.minVelocity??Cr.minVelocity,deceleration:ie?.deceleration??Cr.deceleration,velocitySampleWindow:ie?.velocitySampleWindow??Cr.velocitySampleWindow,startVelocityThreshold:ie?.startVelocityThreshold??Cr.startVelocityThreshold}),[ie]),be=t.useMemo(()=>({top:Math.max(0,z?.top??0),bottom:Math.max(0,z?.bottom??0)}),[z]);O.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:ee,scrollBarWidth:i,className:C,style:V,tapScrollCircleOptions:G,inertiaOptions:ie,enablePointerDrag:g,contentInsets:be}));const St=t.useRef({contentSize:e,viewportSize:ee}),_e=t.useMemo(()=>e>ee,[e,ee]),L=t.useCallback((x,q)=>{let J=q??St.current;q&&!(Number.isFinite(q.contentSize)&&Number.isFinite(q.viewportSize))&&(O.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:q}),J=St.current);const{contentSize:ae,viewportSize:se}=J,Ee=ae>se,Re=Y.current;if(O.debug("[ScrollPane] scrollTo called",()=>({newPosition:x,contentSize:ae,viewportSize:se,currentIsScrollable:Ee,prevPosition:Re})),!Ee)return Y.current!==0&&(Y.current=0,R?.(0,Re)),Y.current;const xe=typeof x=="function"?x(Y.current):x;if(!Number.isFinite(xe))return O.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:xe}),Y.current;const rt=Math.max(ae-se,0),Fe=Q(xe,0,rt);return Y.current!==Fe&&(Y.current=Fe,R?.(Fe,Re)),Y.current},[R]),tt=t.useRef(L);t.useEffect(()=>{tt.current=L},[L]);const A=t.useCallback(()=>{const x=We.current;x.generation+=1,x.frame!==null&&cancelAnimationFrame(x.frame),x.frame=null,x.velocity=0,x.lastTimestamp=null},[]),ot=t.useRef(A);t.useEffect(()=>{ot.current=A},[A]),t.useEffect(()=>()=>{ot.current()},[]);const _=t.useCallback(x=>{if(!_e)return;const{maxVelocity:q,minVelocity:J,deceleration:ae,startVelocityThreshold:se}=Et,Ee=Q(x,-q,q);if(Math.abs(Ee)<se)return;A(),We.current.velocity=Ee,We.current.lastTimestamp=null;const Re=We.current.generation,xe=rt=>{const Fe=We.current;if(Fe.generation!==Re)return;if(Fe.lastTimestamp===null){Fe.lastTimestamp=rt,Fe.frame=requestAnimationFrame(xe);return}const j=rt-Fe.lastTimestamp;if(Fe.lastTimestamp=rt,j<=0){Fe.frame=requestAnimationFrame(xe);return}const ut=Fe.velocity;let me=ut;const we=ae*j;ut>0?me=Math.max(0,ut-we):ut<0&&(me=Math.min(0,ut+we));const Mt=(ut+me)/2*j,$e=Y.current;if(Mt!==0&&tt.current(Me=>Me+Mt),We.current.generation!==Re)return;const He=Y.current,{contentSize:Ue,viewportSize:v}=St.current,y=Math.max(Ue-v,0);Fe.velocity=me;const Xe=He===$e||He<=0&&me<=0||He>=y&&me>=0;if(Math.abs(me)<J||Xe){A();return}Fe.frame=requestAnimationFrame(xe)};We.current.frame=requestAnimationFrame(xe)},[_e,Et,A]),ye=t.useRef(_);t.useEffect(()=>{ye.current=_},[_]),t.useLayoutEffect(()=>{St.current={contentSize:e,viewportSize:ee}},[e,ee]),t.useLayoutEffect(()=>{const x=ze.current;if(!x)return;const q=()=>{x.scrollTop!==0&&(O.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:x.scrollTop})),x.scrollTop=0),x.scrollLeft!==0&&(x.scrollLeft=0)};return x.addEventListener("scroll",q),()=>x.removeEventListener("scroll",q)},[]),t.useLayoutEffect(()=>{if(_e){O.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:ee,scrollPosition:Y.current}));const x=Q(e-ee,0,e);Y.current>x&&L(x)}else L(0)},[_e,L,e,ee]);const at=t.useRef({isScrollable:_e,viewportSize:ee,wheelSpeedMultiplier:N,overscrollBehavior:E});t.useLayoutEffect(()=>{at.current={isScrollable:_e,viewportSize:ee,wheelSpeedMultiplier:N,overscrollBehavior:E}},[_e,ee,N,E]);const H=t.useCallback(x=>{if(ws(x))return!1;const{isScrollable:q,viewportSize:J,wheelSpeedMultiplier:ae,overscrollBehavior:se}=at.current,Ee=Rs(x,J);if(Ee.isZoomGesture)return!1;if(Ee.isHorizontalDominant)return Ce.current?(wn(x),x.preventDefault(),A(),Ce.current(Ee.horizontalDelta),!0):!1;if(!q||Ee.verticalDelta===0)return!1;let Re=Ee.verticalDelta;if(ae!==1&&(Re*=ae),se!=="contain"){const xe=Y.current,rt=Math.max(St.current.contentSize-J,0);if(Re>0&&xe>=rt||Re<0&&xe<=0)return!1}return wn(x),x.preventDefault(),A(),O.debug("[ScrollPane] wheel event",()=>({deltaY:Re,scrollPosition:Y.current,wheelSpeedMultiplier:ae,deltaMode:x.deltaMode,scrollTop:ze.current?.scrollTop})),L(xe=>xe+Re),!0},[L,A]);t.useEffect(()=>{const x=ae=>{H(ae)},q=()=>{A()},J=ne.current;return J&&(J.addEventListener("wheel",x,{passive:!1}),J.addEventListener("pointerdown",q,{capture:!0,passive:!0})),()=>{J&&(J.removeEventListener("wheel",x),J.removeEventListener("pointerdown",q,{capture:!0}))}},[H,A]),t.useImperativeHandle(P,()=>({scrollTo:(x,q)=>(A(),L(x,q)),getScrollPosition:()=>Y.current,getContentSize:()=>e,getViewportSize:()=>ee,applyWheel:H}),[L,e,ee,A,H]);const lt=t.useId(),It=pe?.id??lt,T=t.useRef({pointerType:"",pointerId:null,startClientY:0,startClientX:0,lastPanClientX:0,startScroll:0,isDragging:!1,shouldCancelNextClick:!1,clickResetTimer:null,velocitySamples:[],scale:1,scaleX:1}),zt=t.useRef(g),ct=t.useRef(p);t.useEffect(()=>{zt.current=g},[g]),t.useEffect(()=>{ct.current=p},[p]);const Oe=t.useRef(_e);t.useEffect(()=>{Oe.current=_e},[_e]);const pt=t.useRef(Et);t.useEffect(()=>{pt.current=Et},[Et]),t.useEffect(()=>{const x=T.current;if(g&&_e&&(x.pointerId===null||Zr(x.pointerType,p))||x.pointerId===null)return;const q=ze.current;x.clickResetTimer!==null&&(window.clearTimeout(x.clickResetTimer),x.clickResetTimer=null);const J=x.isDragging&&x.shouldCancelNextClick,ae=x.pointerId;x.pointerId=null,x.pointerType="",x.startClientY=0,x.startScroll=0,x.isDragging=!1,x.shouldCancelNextClick=J,x.velocitySamples=[],x.scale=1,q!==null&&ir(q,ae)},[g,p,_e]),t.useEffect(()=>{const x=ze.current;if(!x)return;const q=6,J=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),ae=()=>{const v=T.current;v.pointerId=null,v.pointerType="",v.startClientY=0,v.startScroll=0,v.isDragging=!1,v.velocitySamples=[],v.scale=1},se=()=>{const v=T.current;v.clickResetTimer!==null&&(window.clearTimeout(v.clickResetTimer),v.clickResetTimer=null)},Ee=v=>{const y=T.current,Xe=J();y.velocitySamples.push({clientY:v,time:Xe});const Me=pt.current.velocitySampleWindow;y.velocitySamples=y.velocitySamples.filter(Be=>Xe-Be.time<=Me)},Re=v=>v instanceof HTMLElement&&v.closest("[data-scrollpane-ignore-drag='true']")!==null,xe=v=>{const y=T.current;y.shouldCancelNextClick&&(v.preventDefault(),v.stopPropagation(),y.shouldCancelNextClick=!1)},rt=v=>{const y=T.current;y.isDragging||(y.isDragging=!0,y.shouldCancelNextClick=!0,_n(x,v.pointerId)||kr(x,v.pointerId),Ee(v.clientY))},Fe=v=>v.isTrusted||v.target===x,j=v=>{const y=T.current;ir(x,v),y.shouldCancelNextClick=!1,se(),ae()},ut=v=>{const y=T.current;if(y.pointerId!==v.pointerId)return;if(v.buttons===0&&Ts(v.pointerType)){j(v.pointerId);return}if(!(zt.current&&Oe.current)||!Zr(v.pointerType,ct.current))return;if(!y.isDragging){const Ge=Math.abs(v.clientY-y.startClientY),Le=je.current?Math.abs(v.clientX-y.startClientX):0;if(Math.max(Ge,Le)<q||(rt(v),!y.isDragging))return}Ee(v.clientY);const Xe=(v.clientY-y.startClientY)/(y.scale||1),Me=y.startScroll-Xe;tt.current(Me);const Be=je.current;if(Be){const Ge=v.clientX-y.lastPanClientX;y.lastPanClientX=v.clientX,Ge!==0&&Be(-Ge/(y.scaleX||1))}v.cancelable&&v.preventDefault()},me=()=>{const v=T.current;return v.pointerId!==null||!v.shouldCancelNextClick?!1:(se(),v.clickResetTimer=window.setTimeout(()=>{const y=T.current;y.shouldCancelNextClick=!1,y.clickResetTimer=null},0),!0)},we=v=>{const y=T.current;if(y.pointerId!==v.pointerId){me();return}y.isDragging&&y.shouldCancelNextClick&&v.cancelable&&(v.preventDefault(),v.stopPropagation()),y.isDragging&&Ee(v.clientY);let Xe=0;if(y.isDragging&&y.velocitySamples.length>=2){const Be=y.velocitySamples,Ge=pt.current.velocitySampleWindow,Le=Be[Be.length-1],he=Be.find(dt=>Le.time-dt.time<=Ge)??Be[0];if(Le&&he&&Le.time!==he.time){const dt=Le.clientY-he.clientY,Wt=Le.time-he.time;Xe=-(dt/Wt)/(y.scale||1)}}se(),y.shouldCancelNextClick&&(y.clickResetTimer=window.setTimeout(()=>{const Be=T.current;Be.shouldCancelNextClick=!1,Be.clickResetTimer=null},0));const Me=pt.current.startVelocityThreshold;ae(),ir(x,v.pointerId),Math.abs(Xe)>=Me&&ye.current?.(Xe)},Ae=v=>{if(T.current.pointerId!==null){if(!v.isPrimary||v.pointerType!==T.current.pointerType)return;j(T.current.pointerId)}if(T.current.shouldCancelNextClick&&(se(),T.current.shouldCancelNextClick=!1),!(zt.current&&Oe.current)||!Zr(v.pointerType,ct.current)||v.button!==0&&v.pointerType==="mouse"||v.ctrlKey||v.metaKey||v.altKey||Re(v.target))return;window.dispatchEvent(new CustomEvent(Nr,{detail:{paneId:lt}})),ot.current?.();const y=T.current;se(),y.pointerId=v.pointerId,y.pointerType=v.pointerType,y.startClientY=v.clientY,y.startClientX=v.clientX,y.lastPanClientX=v.clientX,y.startScroll=Y.current,y.scale=jr(x,"y"),y.scaleX=je.current?jr(x,"x"):1,y.isDragging=!1,y.shouldCancelNextClick=!1,y.velocitySamples=[]},Mt=v=>{if(T.current.pointerId!==v.pointerId){me();return}Fe(v)&&j(v.pointerId)},He=[["click",xe,!0],["pointerdown",Ae,{passive:!1}],["lostpointercapture",v=>{v.target!==x||T.current.pointerId!==v.pointerId||j(v.pointerId)},void 0]],Ue=[["pointermove",ut,{passive:!1}],["pointerup",we,void 0],["pointercancel",Mt,void 0]];return Xr(x,He,"add"),Xr(window,Ue,"add"),()=>{Xr(x,He,"remove"),Xr(window,Ue,"remove");const v=T.current;v.pointerId!==null&&ir(x,v.pointerId),se(),ae()}},[lt]);const _t=t.useCallback(x=>(A(),L(x)),[L,A]);return D.jsxs("div",{ref:ne,"data-testid":S,"data-self-measured":oe?"true":void 0,className:At.twMerge("aqvs-scroll-pane",C),style:V,children:[D.jsxs("div",{ref:ze,className:At.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:oe?void 0:ee,paddingTop:be.top,paddingBottom:be.bottom,...g&&_e&&p.some(x=>x==="touch"||x==="pen")?{touchAction:"none"}:{}},...pe,id:It,children:[$,r(Y.current)]}),D.jsx(mn,{contentSize:e,viewportSize:ee,stretchMainSize:oe,scrollPosition:Y.current,onScroll:_t,enableThumbDrag:o,enableTrackClick:l,enableArrowButtons:u,enableArrowButtonTabStops:f,scrollBarWidth:i,ariaControls:It,tapScrollCircleOptions:G,itemCount:ke,renderThumbOverlay:w,visibleStartIndex:de,visibleEndIndex:te,locale:Ne,labels:xt},"scrollbar"),re?.()]})}),Mn=(r,e,n)=>Math.min(Math.max(r,e),n),ys=({dragState:r,normalizedDistance:e,sizeScale:n,size:s})=>{const i=Math.max(s/2,1),o=1+e*.65,l=Math.max(.65,1-e*.25),u=r.direction*e*26*n,f=.8+e*.18,g=3*n,p=6*n,R=22*n,C=Math.abs(u)+p,S=u>0?g:-Math.abs(u)-g,V=Math.max(2.5,3*n),$=Mn(r.offsetX,-i,i),G=Mn(r.offsetY,-i,i),ie=i*.35,ke=$/i*ie,w=G/i*ie,N=ke*.45,E=w*.45,K=Math.max(R*.38,6),X=.65+e*.2,z=r.active;return D.jsxs(D.Fragment,{children:[D.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${l}, ${o})`,transition:z?"40ms transform ease-out":"200ms ease transform"}}),D.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:R,height:R,transform:`translate(calc(-50% + ${ke}px), calc(-50% + ${w}px)) scale(${l}, ${f*o})`,transition:z?"70ms transform ease-out":"200ms ease transform"}}),D.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:K,height:K,transform:`translate(calc(-50% + ${N}px), calc(-50% + ${E}px)) scale(${l}, ${o})`,opacity:X,boxShadow:"0 0 8px rgba(255,255,255,0.45)",transition:z?"120ms opacity 150ms, 120ms transform ease-out ease-out":"220ms ease transform, 240ms opacity ease"}}),D.jsx("div",{className:"aqvs-sample-visual-rod",style:{width:V,height:C,transform:`translate(-50%, ${S}px)`,opacity:e,transition:z?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},xr=100,Je=Object.freeze({materializeOption:Object.freeze({materialize:!1})}),Qr=(r,e)=>{if(!Number.isFinite(r))throw new Error(`valueFn returned a non-finite value at index ${e}: ${r}`);return r},vr=r=>{const e=Math.trunc(r);if(e<=2147483647)return e&-e;const n=BigInt(e)&-BigInt(e);return Number(n)};class jt{tree;deltas;size;baseValue;valueFn;total;revisionCount=0;constructor(e,n,s){this.reset(e,n,s)}reset(e,n,s){const i=Number.isFinite(e)&&e>0?Math.trunc(e):0;if(typeof n!="function"){this.size=i,this.tree=new Map,this.deltas=new Map,this.valueFn=void 0,this.baseValue=n,this.total=this.baseValue*this.size,this.revisionCount+=1;return}let o=0,l;const u=s?.baseValue;if(u!==void 0&&!(Number.isFinite(u)&&u>=0))throw new RangeError(`[FenwickMapTree] options.baseValue must be a finite number >= 0, received ${u}.`);if(i>0&&u!==void 0){if(o=u,s?.materialize){const f=s?.sampleRange??{from:0,to:Math.min(xr-1,i-1)};let g=Math.max(0,Math.trunc(f.from)),p=Math.min(Math.trunc(f.to),i-1);g>p&&(g=0,p=Math.min(xr-1,i-1)),l={from:g,values:jt._collectValidatedValues(n,g,p)}}}else if(i>0){const f=s?.sampleRange??{from:0,to:Math.min(xr-1,i-1)};let g=Math.max(0,Math.trunc(f.from)),p=Math.min(Math.trunc(f.to),i-1);if(g>p&&(g=0,p=Math.min(xr-1,i-1)),i>xr)o=jt._sampleBaseValueStrided(n,i,xr),s?.materialize&&(l={from:g,values:jt._collectValidatedValues(n,g,p)});else{const R=jt._collectValidatedValues(n,g,p);o=jt._modeOrMedian([...R]),s?.materialize&&(l={from:g,values:R})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=n,this.baseValue=o,l)for(let f=0;f<l.values.length;f++){const g=l.from+f,p=l.values[f]-this.baseValue;p!==0&&(this.deltas.set(g,p),this._updateTree(g,p))}this.total=this.getTotal(),this.revisionCount+=1}setValueFn(e,n){if(n?.reset){this.reset(this.size,e);return}typeof e=="function"?this.valueFn=e:(this.valueFn=void 0,this.baseValue=e,this.total=this._computeTreeTotal(),this.revisionCount+=1)}static _collectValidatedValues(e,n,s){const i=[];for(let o=n;o<=s;o++)i.push(Qr(e(o),o));return i}static _modeOrMedian(e){e.sort((l,u)=>l-u);const n=Math.floor(e.length/2);let s;e.length%2===0?s=Math.floor((e[n-1]+e[n])/2):s=e[n];const i=new Map;let o=0;for(const l of e){const u=(i.get(l)??0)+1;i.set(l,u),u>o&&(o=u)}if(o>e.length*.2){const l=[];for(const[f,g]of i.entries())g===o&&l.push(f);const u=l.reduce((f,g)=>f+g,0);s=Math.floor(u/l.length)}return s}static _sampleBaseValueStrided(e,n,s){let i=Math.max(1,Math.ceil(n/s));i%2===0&&(i+=1);const o=[];for(let l=0;l<n&&o.length<s;l+=i)o.push(Qr(e(l),l));return jt._modeOrMedian(o)}update(e,n){return this.updates([{index:e,value:n}])}updates(e){const n=this._buildDeltaUpdates(e);return n.length>0?this.updateDeltas(n):this.total}updateDelta(e,n){return this.updateDeltas([{index:e,change:n}])}updateDeltas(e){const n=new Map;for(const{index:s,change:i}of e){if(s<0||s>=this.size)throw new Error(`Index ${s} out of bounds`);if(!Number.isInteger(s))throw new Error(`Index must be an integer: ${s}`);if(!Number.isFinite(i))throw new Error(`Change must be a finite number: ${i}`);const l=(n.get(s)??this.deltas.get(s)??0)+i;if(l+this.baseValue<-1e-9)throw new Error(`Change would make the value at index ${s} negative: ${l+this.baseValue}`);n.set(s,l)}for(const{index:s,change:i}of e){const l=(this.deltas.get(s)??0)+i;l===0?this.deltas.delete(s):this.deltas.set(s,l),this._updateTree(s,i)}return this.total}_updateTree(e,n){if(n===0)return;this.revisionCount+=1;let s=e+1;for(;s<=this.size;)this.tree.set(s,(this.tree.get(s)??0)+n),s+=vr(s);this.total!==void 0&&(this.total+=n)}_buildDeltaUpdates(e){const n=[],s=new Map;for(const{index:i,value:o}of e){if(i<0||i>=this.size)throw new Error(`Index ${i} out of bounds`);if(!Number.isInteger(i))throw new Error(`Index must be an integer: ${i}`);if(!Number.isFinite(o))throw new Error(`Value must be a finite number: ${o}`);if(o<0)throw new Error("Value cannot be negative.");const l=s.get(i),u=l===void 0?this.deltas.get(i)??0:l,f=u+this.baseValue,g=o-f;g!==0&&n.push({index:i,change:g}),s.set(i,u+g)}return n}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,n=this.size;for(;n>0;)e+=this.tree.get(n)??0,n-=vr(n);return e+this.baseValue*this.size}_materialize(e,n=!0){if(this.valueFn){const s=this.deltas.get(e)??0,o=Qr(this.valueFn(e),e)-this.baseValue;if(o!==s&&(o===0?this.deltas.delete(e):this.deltas.set(e,o),n)){const l=o-s;this._updateTree(e,l)}}}_materializeRanges(e,n,s=!1){if(!(e?.materialize&&this.valueFn))return;const i=e.ranges;if(i&&i.length>0){for(const u of i){const f=Math.max(0,Math.trunc(u.from)),g=Math.min(Math.trunc(u.to),this.size-1);for(let p=f;p<=g;p++)this._materialize(p)}if(n===void 0)return;if(s){this._materialize(n);return}const o=i[0].from,l=i[i.length-1].to;n>=o&&n<=l&&this._materialize(n);return}n!==void 0&&this._materialize(n)}_findIndex(e,n={},s){if(this.size>=1073741824)return this._findIndexLarge(e,n,s);if(this.size===0)return{index:-1,total:this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const i=n.materializeOption?.materialize===!0;let o;for(;;){if(o=this._descend(e,s),o<0||o>=this.size)return{index:-1,total:this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const u=this.deltas.get(o)??0;if(this._materialize(o),(this.deltas.get(o)??0)===u)break}const l=this.prefixSum(o);return{index:o,total:this.getTotal(),cumulative:l.cumulative,currentValue:l.currentValue,safeIndex:l.safeIndex}}_descend(e,n){let s=0,i=0,o=1;for(;o<<1<=this.size;)o<<=1;for(;o>0;o>>=1){const l=s+o;if(l<=this.size){const f=(this.tree.get(l)??0)+this.baseValue*o;(n?i+f<e:i+f<=e)&&(s=l,i+=f)}}return n?s:s-1}_findIndexLarge(e,n,s){const i=BigInt(this.size);this._materializeRanges(n.materializeOption);const o=n.materializeOption?.materialize===!0;for(;;){let l=0n,u=i-1n,f,g,p=this.total;for(;l<=u;){const S=l+u>>1n,V=Number(S),$=this.prefixSum(V);if(p=$.total,s?$.cumulative>=e:$.cumulative<=e)if(f=S,g=$,s){if(S===0n)break;u=S-1n}else l=S+1n;else if(s)l=S+1n;else{if(S===0n)break;u=S-1n}}const R=g,C=f!==void 0?Number(f):-1;if(o&&C>=0){const S=this.deltas.get(C)??0;if(this._materialize(C),(this.deltas.get(C)??0)!==S)continue}return{index:C,total:p,cumulative:R?.cumulative,currentValue:R?.currentValue,safeIndex:R?.safeIndex}}}prefixSum(e,n){if(e<0||Number.isNaN(e))return{cumulative:0,total:this.total,currentValue:0,safeIndex:0};if(this.size===0)return{cumulative:0,total:this.getTotal(),currentValue:0,safeIndex:0};const s=Q(Math.trunc(e),0,this.size-1),i=n?.materializeOption;this._materializeRanges(i,s,!0);let o=0,l=s+1;for(;l>0;){const f=this.tree.get(l)??0;o+=f,l-=vr(l)}const u=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:o+this.baseValue*(s+1),total:this.total,currentValue:u,safeIndex:s}}get(e,n){if(this.size===0)return 0;if(!Number.isInteger(e)||e<0||e>=this.size)throw new Error("Index out of bounds");const s=n?.materializeOption;return this._materializeRanges(s,e),(this.deltas.get(e)??0)+this.baseValue}getTotal(e){const n=e?.materializeOption;return this._materializeRanges(n),this.total===void 0&&(this.size===0?this.total=0:this.total=this._computeTreeTotal()),this.total}rebuildTree(e){if(e?.materialize&&this.valueFn){const s=this.valueFn;this.reset(this.size,i=>s(i),{materialize:!0});return}const n=new Map;for(const[s,i]of this.deltas.entries()){let o=s+1;for(;o<=this.size;)n.set(o,(n.get(o)??0)+i),o+=vr(o)}this.tree=n,this.total=this._computeTreeTotal(),this.revisionCount+=1}calculateAccumulatedError(){let e=this.baseValue*this.size;for(const[n,s]of this.deltas)n<this.size&&(e+=s);return this.getTotal()-e}changeSize(e){if(!Number.isFinite(e))throw new Error(`Size must be a finite number: ${e}`);const n=Math.max(0,Math.trunc(e)),s=this.size;if(n!==s){if(n>s)if(s===0&&this.deltas.size>0){for(const i of this.deltas.keys())i>=n&&this.deltas.delete(i);this.size=n,this.rebuildTree()}else this._growSize(s,n);else{if(n>0)for(const i of this.deltas.keys())i>=n&&this.deltas.delete(i);this.size=n,this.rebuildTree()}this.revisionCount+=1}}static _minCoveredLowBound(e,n){let s=1;for(;;){const i=s*2;if(Math.floor(n/i)*i<=e)break;s=i}return s*Math.floor(e/s)}_propagateDeltaToGrownNodes(e,n,s,i){let o=e+1;for(;o<=s;)o+=vr(o);for(;o<=i;)this.tree.set(o,(this.tree.get(o)??0)+n),o+=vr(o)}_growSize(e,n){if(this.size=n,this.deltas.size>0){const s=jt._minCoveredLowBound(e,n);if(e-s<this.deltas.size)for(let o=s;o<e;o++){const l=this.deltas.get(o);l===void 0||l===0||this._propagateDeltaToGrownNodes(o,l,e,n)}else for(const[o,l]of this.deltas.entries())l===0||o<s||this._propagateDeltaToGrownNodes(o,l,e,n)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}get revision(){return this.revisionCount}findIndexAtOrAfter(e,n){return this._findIndex(e,n??{},!0)}findIndexAtOrBefore(e,n){return this._findIndex(e,n??{},!1)}}const Es=(r,e)=>{const n=r?.sampleRange,s=e?.sampleRange;return n===s?!1:n&&s?n.from!==s.from||n.to!==s.to:!0},pn=(r,e,n)=>{const s=Number.isFinite(r)&&r>0?Math.trunc(r):0,i=t.useRef(null),o=t.useRef({size:s,valueOrFn:e,options:n});i.current===null&&(i.current=new jt(s,e,n));const l=i.current,u=o.current,f=u.size!==s,g=u.valueOrFn!==e,p=Es(u.options,n)||u.options?.baseValue!==n?.baseValue,R=u.size===0&&s>0&&(!i.current||i.current.base===0);if(g||p){const C=n?.resetOnValueFnChange??!0;p||g&&C||R?(n?.debug&&O.debug("[useFenwickMapTree] reset",{valueOrFnChanged:g,optionsChanged:p}),l.reset(s,e,n)):(f&&(n?.debug&&O.debug("[useFenwickMapTree] resize (with valueFn change)",{from:u.size,to:s}),l.changeSize(s)),n?.debug&&O.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:g}),l.setValueFn(e,{reset:!1})),o.current={size:s,valueOrFn:e,options:n}}else f&&(n?.debug&&O.debug("[useFenwickMapTree] resize",{from:u.size,to:s}),R?l.reset(s,e,n):l.changeSize(s),o.current={size:s,valueOrFn:e,options:n});return l},Is=r=>r+1,qn=r=>{const[e,n]=t.useReducer(Is,0),s=t.useCallback(i=>{const o=r.revision,l=i();return r.revision!==o&&n(),l},[r]);return{revision:e,change:s}};class Cs{key;value;prev=null;next=null;constructor(e,n){this.key=e,this.value=n}}class Jr{head=null;tail=null;addToTail(e){this.tail?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=null,e.next=null}peekHead(){return this.head}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function Yn(r){const e=t.useRef(new Map),n=t.useRef(new Jr),s=Math.floor(r),i=t.useRef(s);t.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){O.warn(`useLruCache: invalid capacity ${r}; the cache will not store any entries.`),e.current.clear(),n.current=new Jr;return}if(Number.isFinite(s))for(let p=n.current.peekHead();p!==null&&e.current.size>s;p=n.current.peekHead())n.current.remove(p),e.current.delete(p.key)},[r,s]);const o=t.useCallback(p=>{const R=e.current.get(p);if(R)return n.current.moveToTail(R),R.value},[]),l=t.useCallback((p,R)=>{const C=i.current;if(Number.isNaN(C)||C<=0)return;let S=e.current.get(p);if(S)S.value=R,n.current.moveToTail(S);else{if(e.current.size>=C){const V=n.current.removeHead();V&&e.current.delete(V.key)}S=new Cs(p,R),e.current.set(p,S),n.current.addToTail(S)}},[]),u=t.useCallback(p=>e.current.has(p),[]),f=t.useCallback(p=>{const R=e.current.get(p);R&&(n.current.remove(R),e.current.delete(p))},[]),g=t.useCallback(()=>{e.current.clear(),n.current=new Jr},[]);return t.useMemo(()=>({get:o,set:l,has:u,remove:f,clear:g}),[o,l,u,f,g])}const Ps=1e4,ks=()=>{const{get:r,set:e,has:n,clear:s}=Yn(Ps);return t.useMemo(()=>({get:r,set:e,has:n,clear:s}),[r,e,n,s])},Ns=(r,e)=>{const n=t.useRef(e),s=t.useRef(r);t.useLayoutEffect(()=>{n.current=e,s.current=r},[e,r]);const i=t.useRef(new WeakMap);return t.useCallback(o=>{if(!o||i.current.has(o))return;const l=u=>{n.current?.enableBridge!==!1&&s.current.current?.applyWheel(u)};return o.addEventListener("wheel",l,{passive:!1}),i.current.set(o,l),()=>{i.current.get(o)===l&&(o.removeEventListener("wheel",l),i.current.delete(o))}},[])},Tn=-200,yn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},As=r=>{const e=t.useRef(r);e.current=r;const n=t.useRef(yn),s=t.useRef(null),[i,o]=t.useState(!1),l=t.useRef(null),u=t.useRef(null),f=t.useRef({residual:0,direction:0}),g=t.useRef({residual:0,direction:0}),p=t.useCallback(()=>{l.current!==null&&(window.cancelAnimationFrame(l.current),l.current=null),u.current=null,f.current={residual:0,direction:0},g.current={residual:0,direction:0}},[]),R=t.useCallback((w,N,E,K,X,z)=>{const de=N>0?1:N<0?-1:0;de!==0&&de!==w.direction&&(w.direction=de,w.residual=0),w.residual+=N*E;const te=Math.max(X(),0);te>0&&(w.residual=Q(w.residual,-te,te));const re=w.residual;if(re===0)return{actualDelta:0,atBoundary:!1};const Se=K(),pe=z(re),Ne=pe-Se;w.residual-=Ne;const xt=re<0&&Se+re<=0,P=re>0&&Se+re>=te,Y=re<0&&(pe<=0||xt&&Ne===0)||re>0&&(pe>=te||P&&Ne===0);return Y&&(w.residual=0),{actualDelta:Ne,atBoundary:Y}},[]),C=t.useCallback(w=>{const N=e.current,E=n.current;if(!E.active||E.direction===0){p();return}const K=u.current??w,X=Math.max((w-K)/1e3,0),z=Math.min(X,Fn);if(u.current=w,z<=0){l.current=window.requestAnimationFrame(C);return}const de=Xn({offsetX:E.offsetX,offsetY:E.offsetY,maxDistance:N.maxDistance,x:N.xSpeedParams,y:N.ySpeedParams}),te=R(f.current,de.x,z,N.getHx,N.getMaxHx,Ne=>N.applyHxRef.current(N.getHx()+Ne));te.actualDelta!==0&&(N.pendingColAnchorRef.current=null);const re=R(g.current,de.y,z,N.getVy,N.getMaxVy,N.applyVy),Se=N.getMaxHx()<=0||te.atBoundary||E.offsetX===0,pe=N.getMaxVy()<=0||re.atBoundary||E.offsetY===0;if(Se&&pe){p();return}l.current=window.requestAnimationFrame(C)},[p,R]),S=t.useCallback(()=>{l.current===null&&(u.current=null,f.current={residual:0,direction:0},g.current={residual:0,direction:0},l.current=window.requestAnimationFrame(C))},[C]),V=t.useCallback(()=>{n.current={...yn},o(!1),s.current?.reset(),p()},[p]),$=t.useCallback(w=>{n.current=w,o(w.active),w.active&&w.direction!==0?S():p()},[S,p]),{enabled:G,xExtentFreshness:ie,yExtentFreshness:ke}=r;return t.useEffect(()=>{const w=n.current;!w.active||w.direction===0||S()},[ie,ke,S]),t.useEffect(()=>{const w=()=>{V()};return window.addEventListener(Nr,w),()=>{window.removeEventListener(Nr,w)}},[V]),t.useEffect(()=>{if(!G)return;const w=N=>{if(!n.current.active||n.current.pointerId===N.pointerId)return;const E=N.target;if(!(E instanceof Node)){V();return}s.current?.getElement()?.contains(E)||V()};return document.addEventListener("pointerdown",w,!0),()=>{document.removeEventListener("pointerdown",w,!0)}},[G,V]),t.useEffect(()=>{G||V()},[G,V]),t.useEffect(()=>()=>{p()},[p]),{isTapActive:i,handleTapCircleDragChange:$,tapCircleHandleRef:s}},nt=(r,e)=>e<=0?0:Q(r,0,e-1),En=r=>({top:Math.max(0,r?.top??0),bottom:Math.max(0,r?.bottom??0)}),bt=(r,e)=>r<=e?0:r-e,dr=(r,e)=>r<=0?0:r+e,Ar=1e3,nn=2e3,jn=1048576,or=2**-10,In=r=>r==="center"?null:r==="bottom"?"end":"start",Cn=r=>r!==null&&r.panePosition<=0?null:r,Ls=Object.freeze({top:0,bottom:0}),Vs=(r,e,n,s)=>{const i=e+s.top,o=e+n-s.bottom;return r.top>=i-or&&r.bottom<=o+or?null:r.top<i||r.bottom-r.top>o-i?{align:"top",offset:s.top}:{align:"bottom",offset:-s.bottom}},Ds=(r,e,n)=>r<=or?"start":r>=e-or?"end":n!==null&&Math.abs(r-n.panePosition)<=or?n.edge:"none",zs=({translateY:r,snapEdge:e,children:n,boundaryRef:s})=>{const{ratio:i,attach:o}=Vn("[VirtualScroll] the items wrapper"),l=i===null?r:An(r,i,e);return D.jsx("div",{ref:s,className:"aqvs-items-boundary",children:D.jsx("div",{ref:o,className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${l}px)`,willChange:"transform"},children:n})})},_s=40,$r=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},Pr=(r,e,n)=>{const s=n-1,i=r.findIndexAtOrAfter(e,Je);if(i.index===-1||i.index>s||i.cumulative===void 0||i.currentValue===void 0){const o=r.prefixSum(s,Je);return{index:s,top:o.cumulative-o.currentValue}}return i.cumulative===e&&i.index<s?{index:i.index+1,top:i.cumulative}:{index:i.index,top:i.cumulative-i.currentValue}},Os=(r,e,n,s,i,o)=>{const l=$r(s);if(l===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const u=w=>w<0n?0n:w>=l?l-1n:w,f=Pr(o,r,s);let g=u($r(f.index));const p=f.top-r,R=w=>{const N=Number(w);if(!Number.isSafeInteger(N))return null;const{cumulative:E}=o.prefixSum(N,Je);if(!Number.isFinite(E))return null;const{index:K}=o.findIndexAtOrAfter(E+.5,Je);if(K===-1)return null;const X=$r(K);return X>w?X:null},C=(w,N)=>{let E=N,K=w,X=w,z=0;for(;K<l&&E<e;){const de=Number(K),te=i(de);if(E+=te,X=K,K+=1n,!Number.isFinite(te)||te<0)break;if(te===0){if(z+=1,z>Ar){const re=R(X);if(re!==null&&re>K)K=re,z=0;else if(re!==null&&re===K&&i(Number(K))>0)z=0;else break}}else z=0}return{height:E,end:X}};let{height:S,end:V}=C(g,p);if(S<e&&g>0n){let w=g,N=S+Math.abs(Math.min(0,p)),E=0;for(;w>0n&&N<e;){w-=1n;const X=Number(w),z=i(X);if(N+=z,!Number.isFinite(z)||z<0)break;if(z===0){if(E+=1,E>Ar){if(!Number.isSafeInteger(X))break;const{cumulative:de}=o.prefixSum(X,Je);if(!Number.isFinite(de))break;const{index:te}=o.findIndexAtOrAfter(de-.5,Je),re=te===-1?-1n:$r(te);if(re>=0n&&re<w)w=re+1n,E=0;else if(re===w&&w>=1n&&i(Number(w-1n))>0)E=0;else break}}else E=0}g=u(w);const K=C(g,0);S=K.height,V=K.end}const $=u(g),G=u(V),ie=u($-BigInt(Math.max(0,n))),ke=u(G+BigInt(Math.max(0,n)));return{renderingStartIndex:nt(Number(ie),s),renderingEndIndex:nt(Number(ke),s),visibleStartIndex:nt(Number($),s),visibleEndIndex:nt(Number(G),s)}},Wn=(r,e,n,s,i,o,l)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const f=Number.isFinite(l)?Math.min(Math.max(0,r),l):Math.max(0,r);if(s>=Number.MAX_SAFE_INTEGER)return Os(f,e,n,s,i,o);const g=Pr(o,f,s);let p=g.index,R=g.top-f;const C=R,S=(w,N)=>{let E=w,K=N,X=0;for(;E<s&&K<e;){const z=i(E);if(K+=z,E++,!Number.isFinite(z)||z<0)break;if(z===0){if(X++,X>Ar){const{cumulative:de}=o.prefixSum(E-1,Je),{index:te}=Number.isFinite(de)?o.findIndexAtOrAfter(de+.5,Je):{index:-1};if(te>E)E=te,X=0;else if(te===E&&i(E)>0)X=0;else break}}else X=0}return{cursor:E,height:K}},V=S(p,R);let $=V.cursor;if(R=V.height,R<e&&p>0){let w=R+Math.abs(Math.min(0,C)),N=p-1,E=0;for(;N>=0&&w<e;){const X=i(N);if(w+=X,!Number.isFinite(X)||X<0){N--;break}if(X===0){if(E++,E>Ar){const{cumulative:z}=o.prefixSum(N,Je),{index:de}=Number.isFinite(z)?o.findIndexAtOrAfter(z-.5,Je):{index:-1};if(de!==-1&&de<N){N=de,E=0;continue}if(de===N&&N>=1&&i(N-1)>0)E=0;else{N--;break}}}else E=0;N--}p=nt(N+1,s);const K=S(p,0);$=K.cursor,R=K.height}const G=nt(p-n,s),ie=nt(Math.max($-1,p),s),ke=nt(ie+n,s);return{renderingStartIndex:G,renderingEndIndex:ke,visibleStartIndex:p,visibleEndIndex:ie}},Pn=(r,e,n)=>{const s=Math.max(0,e??0),i=t.useRef({last:0,id:null,arg:null}).current;return t.useEffect(()=>()=>{if(i.id!==null&&(cancelAnimationFrame(i.id),i.id=null),i.arg!==null&&r.current){try{n(r.current,i.arg)}catch(o){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",o)}i.arg=null}},[i,r,n]),t.useCallback(o=>{if(i.arg=o,i.id!==null)return;const l=u=>{if(i.id=null,i.arg===null)return;const f=u-i.last;if(s===0||i.last===0||f>=s){if(r.current)try{n(r.current,i.arg)}catch(g){console.error("[useThrottledInvoker] Error invoking callback",g)}i.arg=null,i.last=u}i.arg!==null&&(i.id=requestAnimationFrame(l))};i.id=requestAnimationFrame(l)},[s,n,r,i])},Fs=t.memo(({index:r,top:e,height:n,item:s,children:i,clipItemHeight:o,enableKeyboardNavigation:l,onKeyDown:u,onEscapeKeyDown:f,onFocus:g,registerItemRef:p})=>{const R=t.useCallback(G=>p(r,G),[r,p]),C=t.useCallback(G=>u(G,r),[r,u]),S=t.useCallback(G=>f?.(G,r),[r,f]),V=t.useCallback(()=>g(r),[r,g]),$=t.useCallback(G=>{G.currentTarget.focus({preventScroll:!0})},[]);return D.jsx("div",{ref:R,"data-index":r,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:n,overflow:o?"hidden":void 0},tabIndex:l?-1:void 0,onPointerDown:l?$:void 0,onKeyDownCapture:l?C:void 0,onKeyDown:l&&f?S:void 0,onFocusCapture:l?V:void 0,children:i(s,r)})}),Hs=({itemCount:r,getItem:e,getItemKey:n,getItemHeight:s,viewportSize:i,overscanCount:o=15,className:l,testId:u,onScroll:f,onRangeChange:g,onScrollAdjust:p,children:R,background:C,initialScrollIndex:S,initialScrollOffset:V,initialScrollAnchor:$,callbackThrottleMs:G=5,contentInsets:ie,onItemFocus:ke,scrollBarOptions:w,behaviorOptions:N,onWheelHorizontal:E,onPanHorizontal:K,horizontalKeyInputs:X,horizontalKeyStep:z=_s,contentProps:de,liveRegion:te,locale:re,labels:Se},pe)=>{const{width:Ne,enableThumbDrag:xt,enableTrackClick:P,enableArrowButtons:Y,enableArrowButtonTabStops:ne,enableScrollToTopBottomButtons:ze,renderThumbOverlay:oe,tapScrollCircleOptions:Te}=w??{},vt=ne===!1,ee=t.useMemo(()=>dn(re,Se),[re,Se]),{enablePointerDrag:et,pointerDragInputs:mt,enableKeyboardNavigation:ge=!0,enableEscapeRowReturn:Ye=!1,wheelSpeedMultiplier:Ce,inertiaOptions:je,overscrollBehavior:We,clipItemHeight:Et=!1,resetOnGetItemHeightChange:be=!1}=N??{},[St,_e]=t.useState(0),L=i??St,tt=t.useCallback(c=>{_e(h=>h===c?h:c)},[]),A=t.useRef(null),ot=t.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),_=t.useRef($&&r>0?{index:Q(Math.trunc($.index),0,r-1),align:"top",offset:-Math.max(0,$.offsetPx??0)}:null),ye=t.useRef(!1),at=t.useRef(!0);t.useEffect(()=>{if(at.current){at.current=!1;return}be&&(_.current=null)},[be,s]);const H=t.useMemo(()=>En(ie),[ie]),[lt]=t.useState(()=>{const h=$?.index??S,m=typeof h=="number"&&Number.isFinite(h)?Math.max(0,Math.trunc(h)):0;return{from:Math.max(0,m-50),to:m+50}}),It=t.useMemo(()=>({sampleRange:lt,resetOnValueFnChange:be,materialize:!0}),[be,lt]),T=pn(r,s,It),{revision:zt,change:ct}=qn(T),[Oe]=t.useState(()=>{let c=0,h=0;if($&&r>0){const m=Q(Math.trunc($.index),0,r-1),k=Math.max(0,$.offsetPx??0),B=Q(m-o*2,0,r-1),W=Q(m+o*2,0,r-1),U=m>0||k>0?{materializeOption:{materialize:!0,ranges:[{from:B,to:W}]}}:void 0,{cumulative:ue,total:De,currentValue:qe}=T.prefixSum(m,U),ve=Math.max(ue-qe+k,0);c=dr(ve,H.top),h=De??T.getTotal()}else if(typeof S=="number"){const m=Q(S,0,r-1),k=Q(m-o*2,0,r-1),B=Q(m+o*2,0,r-1),W=S>0?{materializeOption:{materialize:!0,ranges:[{from:k,to:B}]}}:void 0,{cumulative:U,total:ue,currentValue:De}=T.prefixSum(S,W),qe=Math.max(U-De,0);c=dr(qe,H.top),h=ue??T.getTotal()}else typeof V=="number"&&(c=dr(Math.max(V,0),H.top)),h=T.getTotal();return{position:c,total:h}}),[pt,_t]=t.useState(Oe.position),[x,q]=t.useState(Oe.total),[J,ae]=t.useState(()=>$&&r>0||typeof S=="number"?Cn({edge:"start",panePosition:Oe.position}):null),se=t.useRef(J),Ee=t.useRef(x),Re=t.useCallback(c=>{Ee.current!==c&&(Ee.current=c,q(c))},[]),xe=t.useCallback(c=>{const h=se.current,m=Cn(c);h===m||h!==null&&m!==null&&h.edge===m.edge&&h.panePosition===m.panePosition||(se.current=m,ae(m))},[]),rt=t.useCallback((c,h)=>{const m=se.current;m===null||Math.abs(m.panePosition-c)>or||xe({edge:m.edge,panePosition:h})},[xe]),Fe=t.useCallback(()=>{se.current!==null&&xe(null)},[xe]),j=t.useRef(Oe.position),ut=t.useRef(H.top),me=t.useRef(f??void 0),we=t.useRef(g??void 0),Ae=t.useRef(p),Mt=t.useRef(E),$e=(X?.length??0)>0,He=!!E;t.useEffect(()=>{$e&&(ge||O.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),He||O.warn("[VirtualScroll] horizontalKeyInputs is set but onWheelHorizontal is missing; horizontal keyboard scrolling is disabled because the package does not own the horizontal axis."),Number.isFinite(z)&&z>0||O.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${z}. Horizontal arrow keys are left untouched.`))},[$e,He,ge,z]);const Ue=t.useRef(new Map),v=t.useRef(null),y=t.useRef(null),[Xe,Me]=t.useState(null),[Be,Ge]=t.useState(!1),Le=t.useRef(null),he=t.useRef(null),dt=t.useRef(null),Wt=t.useRef(null),ar=t.useCallback(()=>{const c=he.current,h=dt.current,m=Wt.current;if(c===null||h===null||m===null||c.dataset.visible!=="true")return Ls;const k=jr(c,"y"),B=m.getBoundingClientRect().top,W=h.getBoundingClientRect(),U=(W.top-B)/k,ue=(W.bottom-B)/k;return U+ue<L?{top:Q(ue,0,L),bottom:0}:{top:0,bottom:Q(L-U,0,L)}},[L]),Lt=t.useRef(!1),gt=t.useRef(0),Ct=t.useRef(!1),Bt=t.useRef(!1),Pt=t.useRef(r);Pt.current!==r&&(Pt.current=r,Bt.current=!0),t.useLayoutEffect(()=>{me.current=f??void 0,we.current=g??void 0,Ae.current=p,Mt.current=E},[g,f,p,E]);const er=t.useCallback(c=>{if(ge&&c&&typeof c.focus=="function")try{c.focus({preventScroll:!0})}catch{c.focus()}},[ge]),Rr=t.useCallback((c,{position:h,totalHeight:m})=>{c(h,m)},[]),Vt=Pn(me,G,Rr),fr=t.useCallback((c,h)=>{c(h)},[]),tr=Pn(we,G,fr),kt=t.useRef(H.top);kt.current=H.top;const rr=t.useRef(Vt);rr.current=Vt,t.useEffect(()=>(ye.current=!1,()=>{ye.current=!0,Le.current&&(clearTimeout(Le.current),Le.current=null)}),[]),t.useEffect(()=>{ge||(Ue.current.clear(),v.current=null,y.current=null)},[ge]);const Ot=t.useCallback((c,h)=>{if(!h){Ue.current.delete(c);return}ge&&(Ue.current.set(c,h),v.current===c&&(v.current=null,y.current=c,er(h)))},[ge,er]),d=.01,I=t.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:Oe.position}),F=t.useCallback(()=>{const c=I.current;c.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(c.rafId),c.rafId=null,c.loopActive=!1,c.idleFrames=0},[]);t.useEffect(()=>()=>{F()},[F]);const le=t.useRef(()=>{}),Pe=t.useCallback(()=>{const c=I.current;c.rafId=null;const h=j.current,m=bt(h,kt.current),k=T.getTotal();if(_t(W=>Math.abs(W-h)<d?W:h),Math.abs(c.lastRenderedPosition-h)>=d?(rr.current({position:m,totalHeight:k}),c.lastRenderedPosition=h,c.idleFrames=0):c.idleFrames+=1,c.idleFrames>=2){F();return}if(typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(W=>le.current(W));return}c.loopActive=!1},[T,F]);le.current=Pe;const Ke=t.useCallback(()=>{const c=I.current;if(c.idleFrames=0,!c.loopActive){if(c.loopActive=!0,typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(Pe);return}c.loopActive=!1}},[Pe]),ce=t.useCallback((c,h)=>{const m=h?.immediate??!1,k=bt(c,H.top);if(j.current=c,m){I.current.lastRenderedPosition=c,I.current.idleFrames=0,_t(c),Vt({position:k,totalHeight:T.getTotal()});return}Ke()},[Ke,T,H.top,Vt]),Ve=t.useCallback((c,h=0)=>{const m=A.current;if(!m)return c;const k=m.getScrollPosition();gt.current+=1;const B=m.getContentSize()+h,W=m.getViewportSize(),U=m.scrollTo(c,{contentSize:B,viewportSize:W});return U===k&&(gt.current=Math.max(0,gt.current-1)),Math.abs(U-c)>.5&&(Ct.current=!0),U},[]),ft=t.useCallback((c,h)=>{const m=A.current;if(m===null){h();return}const k=m.getScrollPosition();h();const B=Ae.current;if(B===void 0)return;const W=bt(m.getScrollPosition(),kt.current),U=W-bt(k,kt.current);U!==0&&B({position:W,delta:U,cause:c})},[]),qt=t.useRef(!1);t.useEffect(()=>{if(!qt.current)if(qt.current=!0,$==null&&typeof S!="number"&&typeof V=="number"){const c=dr(Math.max(V,0),H.top),h=Math.abs(c-j.current)>.5;ce(c,{immediate:!0}),h&&A.current?.scrollTo(c)}else ce(j.current,{immediate:!0})},[$,S,V,H.top,ce]),t.useEffect(()=>{const c=T.getTotal();if(x!==c){Re(c);return}if(Ct.current){Ct.current=!1;const h=A.current;h&&Math.abs(h.getScrollPosition()-j.current)>.5&&ft("re-issue",()=>{const m=Ve(j.current);Ct.current=!1,ce(m,{immediate:!0})})}},[T,x,r,ft,Ve,ce]),t.useEffect(()=>{if(_.current!==null){const{index:c,align:h,offset:m}=_.current,k=nt(c,r),{cumulative:B,currentValue:W}=T.prefixSum(k,Je);if(B!==void 0&&W!==void 0){const U=Math.max(B-W,0);let ue=U;h==="bottom"?ue=B-L:h==="center"&&(ue=U+W/2-L/2),m&&(ue-=m),ue=Math.max(0,ue);const De=Math.max(0,x+H.top+H.bottom-L),qe=Math.min(dr(ue,H.top),De);Math.abs(qe-j.current)>or&&(O.debug("[VirtualScroll] Drift correction",{from:j.current,to:qe,targetIndex:k}),ft("drift",()=>{gt.current===0&&(gt.current+=1),A.current?.scrollTo(qe),ce(qe,{immediate:!0});const ve=In(h);xe(ve===null?null:{edge:ve,panePosition:qe})}))}}Bt.current=!1},[x,T,r,H.top,ft,xe,ce,L,H.bottom,Re]),t.useEffect(()=>{const c=ut.current;if(c===H.top||(ut.current=H.top,_.current))return;const h=bt(j.current,c),m=dr(h,H.top);j.current=m,A.current?.scrollTo(m),ce(m,{immediate:!0})},[H.top,ce]);const Rt=t.useCallback((c,h)=>{if(r===0)return;const m=nt(c,r),k=T.get(m),B=h-k,W=ct(()=>T.update(m,h));W!==void 0&&Re(W),O.debug("[VirtualScroll] Updated item size manually",{index:m,size:h,total:W});let U=_.current?_.current.index:null;if(U===null){const ue=j.current,De=En(ie).top,qe=bt(ue,De);U=Pr(T,qe,r).index}if(m<U&&B!==0){const ue=j.current,De=ue+B;ft("item-resize",()=>{Ve(De,B),ce(De,{immediate:!0}),rt(ue,De)}),O.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:ue,to:De,causedByIndex:m,delta:B,activeVisibleStartIndex:U})}},[T,r,ft,rt,ct,Ve,ce,ie,Re]),Ze=t.useCallback((c,h)=>{if(!A.current||r===0)return;const m=nt(c,r);let k;if(h?.align==="nearest"){const Fr=h.offset;if(Fr!==void 0)throw new RangeError(`[VirtualScroll] scrollToIndex: align "nearest" takes no offset (it lands the row at the edge of the band a visible scroll-to-edge pill leaves); received an offset of type ${typeof Fr}.`);const a=T.prefixSum(m,Je),b=Vs({top:a.cumulative-a.currentValue,bottom:a.cumulative},bt(j.current,H.top),L,ar());if(b===null)return;k=b}else k=h;const B=nt(m-o*2,r),W=nt(m+o*2,r),{cumulative:U,total:ue,currentValue:De}=ct(()=>T.prefixSum(m,{materializeOption:{materialize:!0,ranges:[{from:B,to:W}]}}));if(O.debug("[VirtualScroll] Scrolling to index:",m,"ItemBottom:",U,"Total height:",ue,"ItemHeight:",De,"safeIndexFrom:",B,"safeIndexTo:",W),!ue)return;const qe=Math.max(U-De,0);let ve=qe;k?.align==="bottom"?ve=U-L:k?.align==="center"&&(ve=qe+De/2-L/2),k?.offset&&(ve-=k.offset),ve=Math.max(0,ve);const Dt=dr(ve,H.top),ht=A.current?.getContentSize()??ue+H.top+H.bottom,it=Math.max(0,ht-L),Nt=Math.min(Dt,it);_.current={index:m,align:k?.align,offset:k?.offset};const Jt=In(k?.align);xe(Jt===null?null:{edge:Jt,panePosition:Nt});const gr=!I.current.loopActive&&j.current===Nt,_r=A.current?.getScrollPosition()??-1,Or=Math.abs(_r-Nt)>or;Lt.current=!1,gt.current=0,Or&&(Lt.current=!0,gt.current+=1,A.current?.scrollTo(Nt)),Re(ue),gr||ce(Nt,{immediate:!0}),O.debug("[VirtualScroll] Setting scroll position to:",Nt,{original:Dt,max:it})},[T,o,r,H.top,H.bottom,L,ct,ar,xe,ce,Re]),Ut=t.useRef($&&r===0?$:null);t.useEffect(()=>{const c=Ut.current;!c||r===0||(Ut.current=null,Ze(Q(Math.trunc(c.index),0,r-1),{align:"top",offset:-Math.max(0,c.offsetPx??0)}))},[r,Ze]);const Ft=t.useCallback(c=>{if(!A.current||r===0)return;const h=T.getTotal(),m=Q(Math.floor(c),0,h),k=Pr(T,m,r);Ze(k.index,{offset:k.top-m})},[T,r,Ze]),Gt=t.useCallback(()=>{if(r===0)return null;const c=bt(j.current,H.top),h=Pr(T,c,r);return{index:h.index,offsetPx:Math.max(0,c-h.top)}},[T,r,H.top]),nr=t.useCallback(c=>{const h=bt(j.current,H.top),m=typeof c=="function"?c(h):c;Ft(m);const k=A.current?.getScrollPosition(),B=typeof k=="number"?k:j.current;return ce(B),bt(B,kt.current)},[H.top,Ft,ce]),Kt=t.useCallback(c=>{const h=A.current;if(!h)return bt(j.current,kt.current);const m=h.scrollTo(k=>k+c);return bt(m,kt.current)},[]),Tt=t.useCallback(c=>A.current?.applyWheel(c)??!1,[]),lr=t.useCallback((c,h)=>{O.debug("[VirtualScroll] Scroll position changed:",c);const m=Lt.current;m&&(Lt.current=!1);const k=gt.current>0;k&&(gt.current=0);const B=Bt.current&&Pt.current===r;if(m||k||B||(_.current=null,Fe()),ce(c),ze){if(m||k)return;const W=c-h;if(O.debug("[VirtualScroll] Scroll diff:",W,"New:",c,"Prev:",h),Math.abs(W)>1){const U=W>0?"down":"up";Me(U),Ge(!0),O.debug("[VirtualScroll] Showing scroll buttons. Direction:",U),Le.current&&clearTimeout(Le.current),Le.current=setTimeout(()=>{Ge(!1),O.debug("[VirtualScroll] Hiding scroll buttons")},2e3)}}},[ce,Fe,ze,r]),yt=t.useMemo(()=>bt(pt,H.top),[H.top,pt]),st=t.useMemo(()=>{const c=T.getTotal(),h=Wn(yt,L,o,r,s,T,c);return O.debug("[VirtualScroll] Calculated rendering range:",()=>({...h,scrollPosition:yt,renderingContentSize:c,overscanCount:o,viewportSize:L})),h},[yt,L,o,r,s,T,zt]),{renderingStartIndex:Zt,renderingEndIndex:wt,visibleStartIndex:Ht,visibleEndIndex:Xt}=st,Ie=t.useCallback((c,h)=>{if(!ge||r===0)return;const m=nt(c,r),k=h?.ensureVisible??!0;k&&Ze(m,{align:"nearest"});const B=Ue.current.get(m);if(B){v.current=null,y.current=m,er(B);return}k&&(v.current=m)},[ge,r,Ze,er]),hr=t.useCallback((c,h)=>{if(!(!ge||c.defaultPrevented)&&!(c.altKey||c.metaKey||c.ctrlKey)&&c.target===c.currentTarget&&!c.currentTarget.isContentEditable){if(c.key==="ArrowLeft"||c.key==="ArrowRight"){const m=Mt.current;if(!m||c.shiftKey||!X?.includes("arrow")||!(Number.isFinite(z)&&z>0))return;c.preventDefault(),m(c.key==="ArrowLeft"?-z:z);return}if(c.key==="ArrowDown"){h<r-1&&(c.preventDefault(),Ie(h+1));return}if(c.key==="ArrowUp"){h>0&&(c.preventDefault(),Ie(h-1));return}if(c.key==="PageDown"){if(h<r-1){c.preventDefault();const{visibleStartIndex:m,visibleEndIndex:k}=ot.current,B=Math.max(k-m+1,1),W=Math.max(B,1),U=nt(Math.min(h+W,r-1),r);Ie(U)}return}if(c.key==="PageUp"&&h>0){c.preventDefault();const{visibleStartIndex:m,visibleEndIndex:k}=ot.current,B=Math.max(k-m+1,1),W=Math.max(B,1),U=nt(h-W,r);Ie(U)}}},[ge,r,Ie,X,z]),wr=t.useCallback((c,h)=>{if(c.key!=="Escape"||c.defaultPrevented||c.nativeEvent.isComposing||c.target===c.currentTarget)return;const m=c.target;m instanceof HTMLInputElement||m instanceof HTMLTextAreaElement||m instanceof HTMLSelectElement||m.isContentEditable||(c.preventDefault(),Ie(h))},[Ie]),Mr=t.useCallback(c=>{if(!ge)return;const h=nt(c,r);v.current=null,y.current=h,ke?.(h)},[ge,r,ke]);t.useEffect(()=>{const c=A.current?.getScrollPosition()??0,h=j.current,m=bt(h,H.top);O.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:Zt,renderingEndIndex:wt,visibleStartIndex:Ht,visibleEndIndex:Xt,scrollPositionState:pt,paneScrollPosition:h,logicalScrollPosition:m,contentSize:x,scrollPaneScrollPosition:c})),tr({renderingStartIndex:Zt,renderingEndIndex:wt,visibleStartIndex:Ht,visibleEndIndex:Xt,scrollPosition:m,totalHeight:x})},[x,wt,Zt,H.top,tr,pt,Xt,Ht]);const Ur=t.useCallback(()=>{if(!ze)return null;const c=Be&&Xe!==null,h=Xe==="up",m=c&&!vt?0:-1;return D.jsx("div",{ref:he,className:"aqvs-scroll-to-edge-overlay","data-visible":c,inert:!c,"aria-hidden":vt?!0:void 0,onPointerDown:vt?On:void 0,children:h?D.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:D.jsx("button",{ref:dt,type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:m,onClick:k=>{k.stopPropagation(),Lt.current=!0,Ze(0),Ge(!1)},children:ee.scrollToTop})}):D.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:D.jsx("button",{ref:dt,type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:m,onClick:k=>{k.stopPropagation(),Lt.current=!0,Ze(r-1),Ge(!1)},children:ee.scrollToBottom})})})},[ze,vt,Be,Xe,Ze,r,ee]),Tr=t.useRef(0),{visibleItems:yr,renderAnchor:cr}=t.useMemo(()=>{if(r===0)return{visibleItems:D.jsx("div",{className:"aqvs-no-items-container",children:D.jsx("div",{className:"aqvs-no-items-text",children:ee.noItems})}),renderAnchor:0};const c=nt(Zt,r),h=nt(wt,r),{cumulative:m,currentValue:k}=T.prefixSum(c,Je),B=m-k;Number.isFinite(B)&&Math.abs(B-Tr.current)>jn&&(Tr.current=B);const W=Tr.current,U=[],ue=[];let De=0,qe=B;for(let ve=c;ve<=h;ve++){if(ue.length>=nn){O.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:nn,safeRenderingStartIndex:c,safeRenderingEndIndex:h});break}const Dt=s(ve),ht=T.get(ve),it=Dt-ht;it!==0&&U.push({index:ve,value:Dt});const Nt=qe+De,Jt=n?n(ve):ve;ue.push(D.jsx(Fs,{index:ve,top:Nt-W,height:Dt,item:e(ve),clipItemHeight:Et,enableKeyboardNavigation:ge,onKeyDown:hr,onEscapeKeyDown:Ye?wr:void 0,onFocus:Mr,registerItemRef:Ot,children:R},Jt)),De+=it,qe+=ht}return U.length>0&&Promise.resolve().then(()=>{if(ye.current)return;let ve=0;for(const it of U)if(it.index<Ht){const Nt=T.get(it.index);ve+=it.value-Nt}const Dt=ct(()=>T.updates(U));if(ye.current||typeof Dt!="number")return;Re(Dt),O.debug("[VirtualScroll] Updated heights for items",U,"New total height:",Dt);const ht=A.current?.getScrollPosition()??j.current;if(ve!==0){const it=ht+ve;ft("reconciliation",()=>{Ve(it,ve),ce(it,{immediate:!0}),rt(ht,it)}),O.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:ht,to:it,shiftAmount:ve})}else ht!==j.current&&ce(ht)}),{visibleItems:ue,renderAnchor:W}},[ft,rt,ct,R,Et,ge,r,T,e,n,s,Mr,hr,Ye,wr,Ve,Ot,wt,Zt,ee,zt,ce,Ht,Re]),Lr=t.useCallback(c=>{const h=(G??0)>0,m=Math.abs(c-pt),k=h&&m>.5?pt:c,B=bt(k,H.top);if(O.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:c,effectiveScrollPosition:B,renderingStartIndex:Zt,renderingEndIndex:wt,itemCount:r,viewportSize:L,callbackThrottleMs:G,diff:m,rawEffectiveScrollPosition:k})),r===0)return yr;const W=H.top+cr-k,U=T.getTotal(),ue=Ds(k,U+H.top+H.bottom-L,J),De=H.bottom>0?D.jsx("div",{className:"aqvs-bottom-inset",style:{top:U-cr,height:H.bottom}},"virtualscroll-bottom-inset"):null;return O.debug("[VirtualScroll] Rendering items",()=>({containerTop:W,snapEdge:ue,logicalScrollPosition:yt,resolvedInsets:H,effectiveScrollPosition:B})),D.jsxs(zs,{translateY:W,snapEdge:ue,boundaryRef:Wt,children:[yr,De]})},[J,G,r,T,yt,cr,wt,Zt,H,pt,L,yr]),mr=t.useMemo(()=>({renderingStartIndex:st.renderingStartIndex,renderingEndIndex:st.renderingEndIndex,visibleStartIndex:st.visibleStartIndex,visibleEndIndex:st.visibleEndIndex,scrollPosition:yt,totalHeight:T.getTotal()}),[st,yt,T,zt]);t.useEffect(()=>{ot.current=mr},[mr]);const[Vr,Dr]=t.useState(""),zr=t.useRef(te);t.useLayoutEffect(()=>{zr.current=te},[te]);const Qt=te?.debounceMs??400,pr=Number.isFinite(Qt)&&Qt>=0,ur=te!==void 0;t.useEffect(()=>{ur&&!pr&&O.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${Qt}. Announcements are disabled.`)},[ur,pr,Qt]),t.useEffect(()=>{if(!(ur&&pr)){Dr("");return}const c=setTimeout(()=>{const h=zr.current?.format;if(!h)return;const m=h({visibleStartIndex:Ht,visibleEndIndex:Xt,itemCount:r});Dr(m)},Qt);return()=>clearTimeout(c)},[ur,pr,Qt,Ht,Xt,r]),t.useImperativeHandle(pe,()=>({getScrollPosition:()=>{const c=A.current?.getScrollPosition();return typeof c=="number"?bt(c,kt.current):-1},getContentSize:()=>A.current?.getContentSize()??-1,getViewportSize:()=>A.current?.getViewportSize()??-1,scrollTo:nr,scrollBy:Kt,applyWheel:Tt,scrollToIndex:Ze,getFenwickTreeTotalHeight:()=>T.getTotal(),getFenwickSize:()=>T.getSize(),focusItemAtIndex:Ie,getRange:()=>ot.current,getScrollAnchor:Gt,updateItemSize:Rt}),[nr,Kt,Tt,Ze,T,Ie,Gt,Rt]);const Gr=T.getTotal()+H.top+H.bottom,Er=D.jsx(Bn,{ref:A,contentSize:Gr,viewportSize:i,onViewportSizeChange:tt,className:l,testId:u,onScroll:lr,background:C,tapScrollCircleOptions:Te,inertiaOptions:je,overscrollBehavior:We,itemCount:r,scrollBarWidth:Ne,enableThumbDrag:xt,enableTrackClick:P,enableArrowButtons:Y,enableArrowButtonTabStops:ne,enablePointerDrag:et,pointerDragInputs:mt,renderThumbOverlay:oe,wheelSpeedMultiplier:Ce,onWheelHorizontal:E,onPanHorizontal:K,contentInsets:H,contentProps:de,visibleStartIndex:Ht,visibleEndIndex:Xt,renderOverlay:Ur,initialScrollPosition:Oe.position,locale:re,labels:Se,children:Lr});return ur?D.jsxs(D.Fragment,{children:[Er,D.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:Vr})]}):Er},Un=t.forwardRef(Hs),Sr=262144,kn=3,Gn=32768,sn=128,on=128,an=128,ln=128,en=10,Xs=(r,e)=>Math.max(1,Math.floor((r??Gn)/Math.max(1,e))),$s=(r,e,n,s,i)=>{let o=0,l=0,u=Math.max(0,Math.min(s,n-1));for(;u<n&&o<r&&l<nn;)o+=e(u),l+=1,u+=1;return Math.max(1,l+2*i+2)},Br=(r,e,n)=>{if(!(Number.isInteger(r)&&r>=0&&r<=Sr)){const s=e==="row"?"getRowHeight":"getColWidth",i=e==="row"?"rows":"columns";throw new RangeError(`[VirtualGrid] ${s}(${n}) returned ${r} — must be an integer in [0, ${Sr}] (0 = hidden). Round fractional sizes to whole pixels and split content larger than ${Sr} px across several ${i}: a larger track could push cell positions past the 2^25 px layout-coordinate limit of browsers.`)}return r},Bs=(r,e,n,s,i,o,l,u)=>{const f=Wn(r,e,n,s,i,o,l);if(s===0)return{renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0};const g=Q(f.renderingStartIndex,0,s-1),{cumulative:p,currentValue:R}=o.prefixSum(g,Je),C=p-R,S=Number.isFinite(C)&&Math.abs(C-u)>jn?C:u;return{renderingColStart:f.renderingStartIndex,renderingColEnd:f.renderingEndIndex,visibleColStart:f.visibleStartIndex,visibleColEnd:f.visibleEndIndex,colAnchor:S}},Nn=[],qs=(r,e,n,s,i)=>{const o=[],l=[],u=s.prefixSum(r,Je);let f=u.cumulative-u.currentValue,g=0,p=r;for(;p<=e;){if(o.length>=i)return{columns:o,widthUpdates:l,truncated:e-p+1};const R=n(p),C=s.get(p);if(R!==C&&l.push({index:p,value:R}),R>0){o.push({col:p,left:f,width:R}),f+=C,g=0,p+=1;continue}if(f+=C,g+=1,p+=1,g>Ar){const S=s.findIndexAtOrAfter(f+.5,Je);if(S.index===-1||S.index<=p||!Number.isSafeInteger(S.index))break;const V=s.prefixSum(S.index,Je);f=V.cumulative-V.currentValue,p=S.index,g=0}}return{columns:o,widthUpdates:l,truncated:0}},Ys=(r,e,n)=>{const s=[],i=[];let o=0;for(let l=0;l<r;l+=1){const u=e(l),f=n.get(l);u!==f&&i.push({index:l,value:u}),u>0&&s.push({col:l,left:o,width:u}),o+=f}return{columns:s,widthUpdates:i,width:o}},js=(r,e,n,s)=>{const i=[],o=[];let l=0;for(let u=r-e;u<r;u+=1){const f=n(u),g=s.get(u);f!==g&&o.push({index:u,value:f}),f>0&&i.push({col:u,left:l,width:f}),l+=g}return{columns:i,widthUpdates:o,width:l}},qr=(r,e,n)=>Math.min(r,Math.max(0,n-e)),Ws={renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0,key:"0:0:0"},Us=({rowCount:r,colCount:e,getRowHeight:n,getColWidth:s,getCell:i,getCellKey:o,children:l,getCellProps:u,getRowProps:f,contentProps:g,background:p,contentInsets:R,onRowFocus:C,frozenLeadingCols:S=0,frozenLeadingRows:V=0,frozenTrailingCols:$=0,frozenTrailingRows:G=0,horizontalKeyInputs:ie,horizontalKeyStep:ke,onScroll:w,onRangeChange:N,onRenderTruncated:E,callbackThrottleMs:K,initialScrollAnchor:X,overscanRows:z=kn,overscanCols:de=kn,viewportSize:te,__maxRenderedCells:re,behaviorOptions:Se,scrollBarOptions:pe,liveRegion:Ne,locale:xt,labels:P,className:Y,testId:ne},ze)=>{const oe=t.useRef(null),Te=t.useRef(null),vt=t.useRef(n);vt.current=n;const ee=t.useRef(s);ee.current=s;const et=Se?.resetOnGetColWidthChange===!0,ge=Se?.resetOnGetItemHeightChange===!0?n:null,Ye=et?s:null,Ce=t.useCallback(a=>Br(vt.current(a),"row",a),[ge]),je=t.useCallback(a=>Br(ee.current(a),"col",a),[Ye]),We=Se?.defaultColWidth,Et=t.useMemo(()=>{if(We!==void 0&&!(Number.isInteger(We)&&We>=0&&We<=Sr))throw new RangeError(`[VirtualGrid] behaviorOptions.defaultColWidth must be an integer in [0, ${Sr}], received ${We}.`);return{resetOnValueFnChange:et,baseValue:We}},[et,We]),be=pn(e,je,Et),{revision:St,change:_e}=qn(be);if(!(Number.isInteger(S)&&S>=0&&S<=sn))throw new RangeError(`[VirtualGrid] frozenLeadingCols must be an integer in [0, ${sn}], received ${S}.`);const L=Math.min(S,e),tt=t.useRef(0);if(!(Number.isInteger($)&&$>=0&&$<=an))throw new RangeError(`[VirtualGrid] frozenTrailingCols must be an integer in [0, ${an}], received ${$}.`);const A=Math.min($,e-L),ot=t.useRef(0);if(!(Number.isInteger(V)&&V>=0&&V<=on))throw new RangeError(`[VirtualGrid] frozenLeadingRows must be an integer in [0, ${on}], received ${V}.`);const _=Math.min(V,r);if(!(Number.isInteger(G)&&G>=0&&G<=ln))throw new RangeError(`[VirtualGrid] frozenTrailingRows must be an integer in [0, ${ln}], received ${G}.`);const ye=Math.min(G,r-_),at=Math.max(0,r-_-ye),H=t.useRef(!1),lt=t.useRef(0),It=t.useRef(0),[T,zt]=t.useState(0),{frozenRows:ct,frozenHeight:Oe}=t.useMemo(()=>{if(_===0)return{frozenRows:[],frozenHeight:0};const a=[];let b=0;for(let M=0;M<_;M+=1){const Z=Ce(M);Z>0&&a.push({row:M,top:b,height:Z}),b+=Z}return{frozenRows:a,frozenHeight:b}},[_,T,Ce]);lt.current=Oe;const[pt,_t]=t.useState(0),{trailingRows:x,trailingHeight:q}=t.useMemo(()=>{if(ye===0)return{trailingRows:[],trailingHeight:0};const a=[];let b=0;for(let M=r-ye;M<r;M+=1){const Z=Ce(M);Z>0&&a.push({row:M,top:b,height:Z}),b+=Z}return{trailingRows:a,trailingHeight:b}},[ye,r,pt,Ce]);It.current=q;const J=t.useCallback(a=>Ce(a+_),[Ce,_]),ae=t.useRef(C);ae.current=C;const se=C!==void 0,Ee=t.useMemo(()=>se?a=>ae.current?.(a+_):void 0,[_,se]),Re=Oe,xe=q,[rt,Fe]=t.useState(_),j=t.useRef(null),ut=t.useRef(!1);if(rt!==_){Fe(_),ut.current=!0;const a=oe.current?.getScrollAnchor()??null;j.current=a===null?null:{row:a.index+rt,offsetPx:a.offsetPx}}const me=t.useRef(0),we=t.useRef(0),[Ae,Mt]=t.useState(Ws),$e=t.useRef(Ae);$e.current=Ae;const He=t.useRef(0),[Ue,v]=t.useState(()=>be.getTotal()),y=t.useRef(Ue);y.current=Ue;const Xe=t.useCallback(a=>{typeof a=="number"&&Number.isFinite(a)&&(y.current=a,v(a))},[]);t.useLayoutEffect(()=>{const a=be.getTotal();typeof a=="number"&&Number.isFinite(a)&&a!==y.current&&Xe(a)});const Me=pe?.width??12,Be=te===void 0?null:{width:Math.max(0,Math.round(te.width)-Me),height:Math.max(0,Math.round(te.height)-Me)},[Ge,Le]=t.useState({width:0,height:0}),he=Be??{width:Math.max(0,Ge.width-Me),height:Math.max(0,Ge.height-Me)},dt=t.useRef(he);dt.current=he;const Wt=he.height>0&&he.height-Oe-q<=0;H.current=Wt;const ar=Be!==null,Lt=t.useCallback(a=>{if(Te.current=a,ar)return()=>{Te.current=null};const b=()=>{const Z=Math.round(a.clientWidth),fe=Math.round(a.clientHeight);Le(Qe=>Qe.width===Z&&Qe.height===fe?Qe:{width:Z,height:fe})};b();const M=new ResizeObserver(b);return M.observe(a),()=>{M.disconnect(),Te.current=null}},[ar]),gt=t.useCallback(()=>{const a=Te.current;a!==null&&a.style.setProperty("--aqvs-grid-hx-residual",`${He.current-me.current}px`)},[]),Ct=t.useCallback(()=>Math.max(0,dt.current.width-tt.current-ot.current),[]),Bt=t.useCallback(()=>Math.max(0,y.current-tt.current-ot.current-Ct()),[Ct]),Pt=t.useCallback(()=>{const a=Ct(),b=Bs(tt.current+me.current,a,de,e,je,be,y.current,$e.current.colAnchor);if(L>0&&(b.renderingColStart=Math.max(b.renderingColStart,L),b.visibleColStart=Math.max(b.visibleColStart,L)),A>0){const Z=e-A-1;b.renderingColEnd=Math.min(b.renderingColEnd,Z),b.visibleColEnd=Math.min(b.visibleColEnd,Z)}(L>0||A>0)&&(a<=0||b.renderingColStart>b.renderingColEnd)&&(b.renderingColStart=e,b.renderingColEnd=e-1,b.visibleColStart=e,b.visibleColEnd=e-1);const M=`${b.renderingColStart}:${b.renderingColEnd}:${b.colAnchor}`;M!==$e.current.key&&Mt({...b,key:M})},[de,e,je,be,L,A,Ct]),[er,Rr]=t.useState(0),Vt=t.useRef(null),fr=t.useCallback(()=>{Vt.current===null&&(Vt.current=requestAnimationFrame(()=>{Vt.current=null,Rr(me.current)}))},[]);t.useEffect(()=>()=>{Vt.current!==null&&cancelAnimationFrame(Vt.current)},[]);const tr=t.useRef(w);tr.current=w;const kt=t.useRef(N);kt.current=N;const rr=t.useRef(E);rr.current=E;const Ot=t.useRef(null),[d,I]=t.useState(null),[F,le]=t.useState(he.height);F!==he.height&&(le(he.height),I(null));const Pe=X===void 0||r===0?0:Q(Math.trunc(X.row),0,r-1),Ke=t.useMemo(()=>{const a=Ot.current?.renderingStartIndex??Pe;return $s(Math.max(0,he.height-lt.current-It.current),Ce,r,a,z)},[he.height,Ce,r,Pe,z,Re,xe]),ce=d??Ke,Ve=t.useCallback(()=>{const a=Ot.current;if(a===null)return null;const b=$e.current;return{renderingRowStart:a.renderingStartIndex,renderingRowEnd:a.renderingEndIndex,visibleRowStart:a.visibleStartIndex,visibleRowEnd:a.visibleEndIndex,renderingColStart:b.renderingColStart,renderingColEnd:b.renderingColEnd,visibleColStart:b.visibleColStart,visibleColEnd:b.visibleColEnd,scrollX:me.current,scrollY:we.current,totalWidth:y.current,totalHeight:a.totalHeight+lt.current+It.current}},[]),ft=t.useCallback(()=>{const a=Ve();a!==null&&kt.current?.(a)},[Ve]),qt=t.useCallback(a=>{const b=Bt(),M=Q(a,0,b);return M!==me.current&&(me.current=M,gt(),Pt(),fr(),tr.current?.({x:M,y:we.current})),M},[gt,Pt,fr,Bt]),Rt=t.useRef(qt);Rt.current=qt,t.useLayoutEffect(()=>{He.current=Ae.colAnchor,gt(),ft()},[Ae,gt,ft]),t.useLayoutEffect(()=>{Ot.current!==null&&ft()},[Oe,q,ft]);const Ze=t.useRef(null),Ut=t.useCallback(a=>{const b=Q(a.col,0,Math.max(0,e-1)),M=be.prefixSum(b,Je),Z=M.cumulative-M.currentValue,fe=M.currentValue,Qe=Ct();return(a.alignX==="end"?Z+fe-tt.current-Qe:a.alignX==="center"?Z+fe/2-tt.current-Qe/2:Z-tt.current)+a.offsetX},[be,e,Ct]),Ft=t.useRef(null),Gt=t.useCallback(()=>{const a=Ft.current;Ft.current=null,!(a===null||a.length===0)&&Xe(_e(()=>be.updates(a)))},[be,_e,Xe]),nr=t.useRef({count:0,warned:!1}),{frozenColumns:Kt,frozenWidth:Tt}=t.useMemo(()=>{if(L===0)return nr.current.count=0,nr.current.warned=!1,{frozenColumns:Nn,frozenWidth:0};const{columns:a,widthUpdates:b,width:M}=Ys(L,je,be);if(b.length>0){const Z=nr.current;Z.count>=en?Z.warned||(Z.warned=!0,O.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values inside the frozen band; width self-heal is suspended until a converged pass re-arms it (unstable accessor).",{frozenCols:L,pendingUpdates:b.length})):(Z.count+=1,Ft.current=[...Ft.current??[],...b],Promise.resolve().then(Gt))}else nr.current.count=0,nr.current.warned=!1;return{frozenColumns:a,frozenWidth:M}},[L,St,je,be,Gt]);tt.current=Tt,t.useLayoutEffect(()=>{L>0?Te.current?.style.setProperty("--aqvs-grid-frozen-width",`${Tt}px`):Te.current?.style.removeProperty("--aqvs-grid-frozen-width")},[Tt,L]);const lr=t.useRef({count:0,warned:!1}),{trailingColumns:yt,trailingWidth:st}=t.useMemo(()=>{if(A===0)return lr.current.count=0,lr.current.warned=!1,{trailingColumns:Nn,trailingWidth:0};const{columns:a,widthUpdates:b,width:M}=js(e,A,je,be);if(b.length>0){const Z=lr.current;Z.count>=en?Z.warned||(Z.warned=!0,O.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values inside the trailing band; width self-heal is suspended until a converged pass re-arms it (unstable accessor).",{trailingCols:A,pendingUpdates:b.length})):(Z.count+=1,Ft.current=[...Ft.current??[],...b],Promise.resolve().then(Gt))}else lr.current.count=0,lr.current.warned=!1;return{trailingColumns:a,trailingWidth:M}},[A,e,St,je,be,Gt]);ot.current=st,t.useLayoutEffect(()=>{A>0?Te.current?.style.setProperty("--aqvs-grid-trailing-width",`${st}px`):Te.current?.style.removeProperty("--aqvs-grid-trailing-width")},[st,A]);const Zt=t.useMemo(()=>({...pe,tapScrollCircleOptions:{...pe?.tapScrollCircleOptions,enabled:!1}}),[pe]),wt=pe?.tapScrollCircleOptions,Ht=typeof wt?.maxSpeedMultiplier=="number",Xt=t.useMemo(()=>({...wt,offsetX:wt?.offsetX===void 0?Tn:wt.offsetX,offsetY:wt?.offsetY===void 0?Tn:wt.offsetY}),[wt]),Ie=t.useMemo(()=>rn(Xt,Math.max(0,e-L-A)),[Xt,e,L,A]),hr=t.useMemo(()=>rn(Xt,at),[Xt,at]),wr=Ie.enabled,Mr=Math.max(Ie.maxVisualDistance,1),Ur={viewportSize:Math.max(0,he.width-Tt-st),minSpeedMultiplier:Ie.minSpeedMultiplier,maxSpeedMultiplier:Ie.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:Ht,curve:Ie.maxSpeedCurve},Tr={viewportSize:Math.max(0,he.height-Oe-q),minSpeedMultiplier:hr.minSpeedMultiplier,maxSpeedMultiplier:hr.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:Ht,curve:hr.maxSpeedCurve},yr=t.useCallback(()=>me.current,[]),cr=t.useCallback(()=>{const a=oe.current;return a===null?we.current:a.getScrollPosition()},[]),Lr=t.useCallback(()=>{const a=oe.current;return a===null?0:Math.max(0,Math.max(0,a.getContentSize())-Math.max(0,a.getViewportSize()))},[]),mr=t.useCallback(a=>{const b=oe.current;if(b===null)return we.current;const M=b.scrollBy(a);return we.current=M,M},[]),Vr=Bt()>0||Lr()>0,Dr=`${Ue}:${Tt}:${st}:${he.width}:${Ae.key}`,zr=`${r}:${d??-1}:${Oe}:${q}:${he.height}`,{isTapActive:Qt,handleTapCircleDragChange:pr,tapCircleHandleRef:ur}=As({enabled:wr&&Vr,maxDistance:Mr,xSpeedParams:Ur,ySpeedParams:Tr,applyHxRef:Rt,getHx:yr,getMaxHx:Bt,applyVy:mr,getVy:cr,getMaxVy:Lr,pendingColAnchorRef:Ze,xExtentFreshness:Dr,yExtentFreshness:zr}),Gr=t.useMemo(()=>Q((Qt?1:.8)*Ie.opacity,0,1),[Qt,Ie.opacity]);t.useLayoutEffect(()=>{const a=Ze.current;a===null?Rt.current(me.current):Rt.current(Ut(a)),Pt()},[he.width,Ue,St,Tt,st,Pt,Ut]);const Er=t.useRef(!1);t.useLayoutEffect(()=>{if(Er.current||X===void 0||e===0)return;Er.current=!0;const a=Q(Math.trunc(X.col),0,e-1);if(a<L||a>=e-A)return;const b={col:a,alignX:"start",offsetX:Math.max(0,X.offsetX)};Ze.current=b,Rt.current(Ut(b))},[X,e,Ut,L,A]);const c=t.useCallback(a=>{we.current=a,tr.current?.({x:me.current,y:a})},[]),h=t.useCallback(a=>{if(at===0||H.current)Ot.current={renderingStartIndex:r,renderingEndIndex:r-1,visibleStartIndex:r,visibleEndIndex:r-1,scrollPosition:0,totalHeight:at===0?0:a.totalHeight},we.current=0;else{const b=_;Ot.current={renderingStartIndex:a.renderingStartIndex+b,renderingEndIndex:a.renderingEndIndex+b,visibleStartIndex:a.visibleStartIndex+b,visibleEndIndex:a.visibleEndIndex+b,scrollPosition:a.scrollPosition,totalHeight:a.totalHeight},we.current=a.scrollPosition}I(b=>{const M=Math.max(1,a.renderingEndIndex-a.renderingStartIndex+1);return M===b?b:M}),ft()},[ft,_,at,r]),m=t.useCallback(a=>{Ze.current=null,Rt.current(me.current+a)},[]),k=Xs(re,ce+ct.length+x.length),B=t.useRef({count:0,warned:!1}),{placedColumns:W,truncatedCols:U}=t.useMemo(()=>{const a=Math.max(0,he.width-Tt-st);if(e===0||a<=0)return{placedColumns:[],truncatedCols:0};if(Ae.renderingColStart>Ae.renderingColEnd)return{placedColumns:[],truncatedCols:0};const b=Math.max(1,k-Kt.length-yt.length),{columns:M,widthUpdates:Z,truncated:fe}=qs(Q(Ae.renderingColStart,0,e-1),Q(Ae.renderingColEnd,0,e-1),je,be,b);if(Z.length>0){const Qe=B.current;Qe.count>=en?Qe.warned||(Qe.warned=!0,O.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values; width self-heal is suspended until a converged (zero-deviation) pass re-arms it (unstable accessor — the accessor must be index-stable while the ordering is unchanged).",{window:Ae.key,pendingUpdates:Z.length})):(Qe.count+=1,Ft.current=[...Ft.current??[],...Z],Promise.resolve().then(Gt))}else B.current.count=0,B.current.warned=!1;return{placedColumns:M,truncatedCols:fe}},[Ae,e,he.width,Tt,st,Kt.length,yt.length,St,je,be,k,Gt]),ue=t.useRef("");t.useEffect(()=>{if(U>0){const a=`${Ae.key}:${U}`;a!==ue.current&&(ue.current=a,rr.current?.({renderedCells:(W.length+Kt.length+yt.length)*(ce+ct.length+x.length),droppedCols:U}))}},[U,Ae.key,W.length,Kt.length,yt.length,ce,ct.length,x.length]);const De=Ae.colAnchor,qe=t.useCallback(a=>{const b=f?.(a),M=Ce(a)===0,Z=M?null:W.map(({col:fe,left:Qe,width:br})=>{const $t=u?.(a,fe),Ir={...$t?.style,left:Qe-De,width:br};return t.createElement("div",{...$t,key:o?o(a,fe):fe,className:At.twMerge("aqvs-grid-cell",$t?.className),style:Ir},l(i(a,fe),a,fe))});return L===0&&A===0?D.jsx("div",{...b,className:At.twMerge("aqvs-grid-row",b?.className),style:b?.style,children:Z}):D.jsxs("div",{...b,"data-aqvs-frozen-row":L>0?"":void 0,className:At.twMerge("aqvs-grid-row aqvs-grid-row-frozen-host",b?.className),style:b?.style,children:[M?null:Kt.map(({col:fe,left:Qe,width:br})=>{const $t=u?.(a,fe),Ir={...$t?.style,left:Qe,width:br};return t.createElement("div",{...$t,"data-aqvs-frozen-cell":"",key:o?o(a,fe):fe,className:At.twMerge("aqvs-grid-cell",$t?.className),style:Ir},l(i(a,fe),a,fe))}),M?null:D.jsx("div",{className:"aqvs-grid-row-scroll",children:D.jsx("div",{className:"aqvs-grid-row-scroll-inner",children:Z})}),M||A===0?null:D.jsx("div",{className:"aqvs-grid-row-trailing",children:D.jsx("div",{className:"aqvs-grid-row-trailing-inner",children:yt.map(({col:fe,left:Qe,width:br})=>{const $t=u?.(a,fe),Ir={...$t?.style,left:Qe,width:br};return t.createElement("div",{...$t,"data-aqvs-trailing-cell":"",key:o?o(a,fe):fe,className:At.twMerge("aqvs-grid-cell",$t?.className),style:Ir},l(i(a,fe),a,fe))})})})]})},[W,Kt,yt,L,A,De,f,u,o,i,l,Ce]),[ve,Dt]=t.useState(""),ht=t.useRef(null),it=t.useRef(!1),Nt=t.useRef(Ne);Nt.current=Ne;const Jt=t.useCallback(()=>{const a=Nt.current;if(a===void 0||it.current)return;const b=a.debounceMs??400;Number.isFinite(b)&&b>=0&&(ht.current!==null&&window.clearTimeout(ht.current),ht.current=window.setTimeout(()=>{ht.current=null;const M=Ve();M!==null&&Dt(a.buildMessage(M))},b))},[Ve]),gr=Ne?.debounceMs??400,_r=Number.isFinite(gr)&&gr>=0,Or=Ne!==void 0;t.useEffect(()=>{Or&&!_r&&O.warn(`[VirtualGrid] liveRegion.debounceMs must be a finite number >= 0, received ${gr}. Announcements are disabled.`)},[Or,_r,gr]),t.useEffect(()=>(it.current=!1,()=>{it.current=!0,ht.current!==null&&window.clearTimeout(ht.current)}),[]),t.useEffect(()=>{Jt()},[Ae,Jt]);const Fr=t.useCallback(a=>{h(a),Jt()},[h,Jt]);return t.useImperativeHandle(ze,()=>({scrollTo:a=>{const b=oe.current;let M=we.current;a.y!==void 0&&b!==null&&(b.scrollTo(a.y),M=b.getScrollPosition(),we.current=M);let Z=me.current;return a.x!==void 0&&(Ze.current=null,Z=Rt.current(a.x)),{x:Z,y:M}},scrollBy:a=>{const b=a.y!==void 0&&a.y!==0?mr(a.y):we.current;let M=me.current;return a.x!==void 0&&a.x!==0&&(Ze.current=null,M=Rt.current(me.current+a.x)),{x:M,y:b}},scrollToCell:(a,b,M)=>{const Z=oe.current;if(Z!==null&&r>0){const fe=Q(Math.trunc(a),0,r-1);fe>=_&&fe<r-ye&&Z.scrollToIndex(fe-_,{align:M?.alignY??"top",offset:M?.offsetY})}if(e>0){const fe=Q(Math.trunc(b),0,e-1);if(fe>=L&&fe<e-A){const Qe={col:fe,alignX:M?.alignX??"start",offsetX:M?.offsetX??0};Ze.current=Qe,Rt.current(Ut(Qe))}}},getScrollPosition:()=>({x:me.current,y:cr()}),getScrollAnchor:()=>{if(r===0||e===0)return null;const a=oe.current?.getScrollAnchor()??null;if(a===null)return null;const b=tt.current+me.current,M=be.findIndexAtOrAfter(b,Je);if(M.index===-1)return{row:a.index+_,col:e-1,offsetX:0,offsetY:a.offsetPx};if(M.cumulative===b)return{row:a.index+_,col:Q(M.index+1,0,e-1),offsetX:0,offsetY:a.offsetPx};const Z=be.prefixSum(M.index,Je);return{row:a.index+_,col:M.index,offsetX:Math.max(0,b-(Z.cumulative-Z.currentValue)),offsetY:a.offsetPx}},getViewportSize:()=>({width:dt.current.width,height:dt.current.height}),getContentSize:()=>({width:y.current,height:oe.current===null?0:lt.current+It.current+Math.max(0,oe.current.getContentSize())}),getRange:Ve,updateRowSize:(a,b)=>{Br(b,"row",a),Math.trunc(a)<_?zt(M=>M+1):ye>0&&Math.trunc(a)>=r-ye?_t(M=>M+1):oe.current?.updateItemSize(Math.trunc(a)-_,b)},updateColSize:(a,b)=>{Br(b,"col",a),Xe(_e(()=>be.update(Q(Math.trunc(a),0,Math.max(0,e-1)),b)))},getFrozenSize:()=>({cols:L,width:tt.current,rows:_,height:lt.current,trailingCols:A,trailingRows:ye,trailingWidth:ot.current,trailingHeight:It.current,trailingVisibleWidth:qr(ot.current,tt.current,dt.current.width),trailingVisibleHeight:qr(It.current,lt.current,dt.current.height)}),applyWheel:a=>oe.current?.applyWheel(a)??!1,focusRowAtIndex:(a,b)=>{const M=Math.trunc(a);M<_?Te.current?.querySelector(`[data-aqvs-frozen-band-row="${M}"]`)?.focus():ye>0&&M>=r-ye?Te.current?.querySelector(`[data-aqvs-trailing-band-row="${M}"]`)?.focus():oe.current?.focusItemAtIndex(M-_,b)}}),[r,e,be,_e,Ve,Xe,Ut,cr,mr,L,_,A,ye]),D.jsxs("div",{ref:Lt,className:At.twMerge("aqvs-grid",_>0?"aqvs-grid-has-frozen-rows":"",ye>0?"aqvs-grid-has-trailing-rows":"",Y),"data-testid":ne,children:[_>0?D.jsx("div",{className:"aqvs-grid-frozen-rows",style:{height:Oe},"data-testid":ne?`${ne}-frozen-rows`:void 0,children:ct.map(({row:a,top:b,height:M})=>D.jsx("div",{"data-aqvs-frozen-band-row":a,className:"aqvs-grid-frozen-band-row",style:{top:b,height:M,right:Me},tabIndex:-1,onFocus:()=>C?.(a),children:qe(a)},a))}):null,D.jsx("div",{className:"aqvs-grid-main","data-testid":ne?`${ne}-main`:void 0,children:D.jsx(Un,{ref:oe,itemCount:Wt?0:at,getItem:a=>a+_,getItemKey:a=>a+_,getItemHeight:J,overscanCount:z,viewportSize:he.height>0?Math.max(0,he.height-Oe-q):void 0,callbackThrottleMs:K,behaviorOptions:Se,scrollBarOptions:Zt,contentProps:g,background:p,contentInsets:R,onItemFocus:Ee,horizontalKeyInputs:ie,horizontalKeyStep:ke,initialScrollAnchor:ut.current?j.current!==null&&j.current.row>=_&&at>0?{index:j.current.row-_,offsetPx:j.current.offsetPx}:void 0:X!==void 0&&at>0&&Math.trunc(X.row)>=_&&Math.trunc(X.row)<r-ye?{index:Math.trunc(X.row)-_,offsetPx:X.offsetY}:void 0,onScroll:c,onRangeChange:Fr,onWheelHorizontal:m,onPanHorizontal:m,locale:xt,labels:P,testId:ne?`${ne}-rows`:void 0,children:qe},_)}),ye>0?D.jsx("div",{className:"aqvs-grid-trailing-rows",style:{height:qr(q,Oe,he.height)},"data-testid":ne?`${ne}-trailing-rows`:void 0,children:D.jsx("div",{className:"aqvs-grid-trailing-rows-inner",style:{height:q},children:x.map(({row:a,top:b,height:M})=>D.jsx("div",{"data-aqvs-trailing-band-row":a,className:"aqvs-grid-trailing-band-row",style:{top:b,height:M,right:Me},tabIndex:-1,onFocus:()=>C?.(a),children:qe(a)},a))})}):null,D.jsx("div",{className:"aqvs-grid-hbar-strip",style:{height:Me,paddingRight:A>0?Me+qr(st,Tt,he.width):Me},"data-testid":ne?`${ne}-hbar`:void 0,children:D.jsx(mn,{horizontal:!0,contentSize:Math.max(0,Ue-Tt-st),viewportSize:Math.max(0,he.width-Tt-st),scrollPosition:er,itemCount:Math.max(0,e-L-A),tapScrollCircleOptions:pe?.tapScrollCircleOptions,onScroll:(a,b)=>(Ze.current=null,Rt.current(typeof a=="function"?a(b):a)),enableThumbDrag:pe?.enableThumbDrag,enableTrackClick:pe?.enableTrackClick,enableArrowButtons:pe?.enableArrowButtons,enableArrowButtonTabStops:pe?.enableArrowButtonTabStops,scrollBarWidth:Me,locale:xt,labels:P})}),wr&&Vr&&D.jsx("div",{className:"aqvs-grid-tap-circle-wrapper","data-aqvs-grid-tap-circle":"",style:{left:`min(calc(100% - ${Me+Ie.size}px), max(calc(100% - ${Me}px + ${Ie.offsetX}px), calc(75% - ${Ie.size/2}px)))`,top:`min(calc(100% - ${Me+Ie.size}px), max(calc(100% - ${Me}px + ${Ie.offsetY}px), calc(75% - ${Ie.size/2}px)))`},children:D.jsx(fn,{axis:"xy",ref:ur,className:At.twMerge("aqvs-grid-tap-circle",Ie.className),size:Ie.size,maxVisualDistance:Mr,opacity:Gr,renderVisual:Ie.renderVisual,onDragChange:pr})}),Ne!==void 0?D.jsx("div",{className:"aqvs-grid-live-region","aria-live":"polite","data-testid":ne?`${ne}-live`:void 0,children:ve}):null]})},Gs=t.forwardRef(Us);exports.FenwickMapTree=jt;exports.MAX_FROZEN_LEADING_COLS=sn;exports.MAX_FROZEN_LEADING_ROWS=on;exports.MAX_FROZEN_TRAILING_COLS=an;exports.MAX_FROZEN_TRAILING_ROWS=ln;exports.MAX_RENDERED_CELLS=Gn;exports.MAX_TRACK_SIZE=Sr;exports.ScrollBar=mn;exports.ScrollPane=Bn;exports.TAP_SCROLL_SPEED_DEFAULTS=hn;exports.VIRTUAL_SCROLL_LABEL_CATALOGS=Dn;exports.VIRTUAL_SCROLL_LABEL_KEYS=Yr;exports.VIRTUAL_SCROLL_LOCALES=cn;exports.VirtualGrid=Gs;exports.VirtualScroll=Un;exports.computeAutoTapScrollMaxSpeedMultiplier=Hn;exports.computeTapScrollSpeed=Wr;exports.computeTapScrollVelocity=Xn;exports.createResidualQuantizer=vs;exports.minmax=Q;exports.resolveVirtualScrollLabels=dn;exports.resolveVirtualScrollLocale=un;exports.tapScrollCircleSampleVisual=ys;exports.useFenwickMapTree=pn;exports.useHeightCache=ks;exports.useLruCache=Yn;exports.useWheelBridge=Ns;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react/jsx-runtime"),t=require("react"),Nt=require("tailwind-merge"),Zn=1e-6,An=(r,e,n)=>{if(!(Number.isFinite(e)&&e>0))throw new RangeError(`[VirtualScroll] devicePixelRatio must be a finite number > 0, received ${e}`);const s=r*e,i=Math.round(s);return n==="none"||Math.abs(s-i)<=Zn?i/e:(n==="end"?Math.floor(s):Math.ceil(s))/e},Qn=(r,e)=>{const n=r.ownerDocument.defaultView;if(n===null)throw new Error(`${e} belongs to a document without a window, so it has no device-pixel ratio`);return n},Vn=()=>{},Jn=()=>null,es=()=>typeof window>"u"?null:window,bn=new WeakMap,ts=(r,e)=>{let n=r.matchMedia(`(resolution: ${r.devicePixelRatio}dppx)`);const s=()=>{n.removeEventListener("change",s),n=r.matchMedia(`(resolution: ${r.devicePixelRatio}dppx)`),n.addEventListener("change",s);for(const o of[...e])o()};return n.addEventListener("change",s),()=>{n.removeEventListener("change",s)}},rs=(r,e)=>{if(typeof r.matchMedia!="function")return Vn;const n=bn.get(r),s=n===void 0?{subscribers:new Set,disarm:null}:n;return n===void 0&&bn.set(r,s),s.subscribers.add(e),s.disarm===null&&(s.disarm=ts(r,s.subscribers)),()=>{s.subscribers.delete(e),s.subscribers.size===0&&s.disarm!==null&&(s.disarm(),s.disarm=null)}},Dn=r=>{const[e,n]=t.useState(es),s=t.useCallback(u=>e===null?Vn:rs(e,u),[e]),i=t.useCallback(()=>e===null?null:e.devicePixelRatio,[e]),o=t.useSyncExternalStore(s,i,Jn),a=t.useCallback(u=>{if(u===null)return;const f=Qn(u,r);f!==e&&n(f)},[e,r]);return{ratio:o,attach:a}},un=["en","ja"],Yr=["scrollUp","scrollDown","scrollLeft","scrollRight","verticalScrollBar","horizontalScrollBar","verticalScrollThumb","horizontalScrollThumb","scrollToTop","scrollToBottom","noItems"],zn=Object.freeze({en:Object.freeze({scrollUp:"Scroll up",scrollDown:"Scroll down",scrollLeft:"Scroll left",scrollRight:"Scroll right",verticalScrollBar:"Vertical",horizontalScrollBar:"Horizontal",verticalScrollThumb:"Vertical scroll position",horizontalScrollThumb:"Horizontal scroll position",scrollToTop:"Top",scrollToBottom:"Bottom",noItems:"No items"}),ja:Object.freeze({scrollUp:"上へスクロール",scrollDown:"下へスクロール",scrollLeft:"左へスクロール",scrollRight:"右へスクロール",verticalScrollBar:"縦方向",horizontalScrollBar:"横方向",verticalScrollThumb:"縦スクロール位置",horizontalScrollThumb:"横スクロール位置",scrollToTop:"先頭へ",scrollToBottom:"末尾へ",noItems:"項目がありません"})}),ns=r=>un.includes(r),rn=r=>typeof r=="string"?JSON.stringify(r):r===null?"null":typeof r,dn=r=>{if(r===void 0)return"en";if(ns(r))return r;const e=un.map(n=>JSON.stringify(n)).join(", ");throw new RangeError(`[virtualscroll] locale must be one of ${e}; got ${rn(r)}`)},ss=r=>Yr.includes(r),fn=(r,e)=>{const n=zn[dn(r)];if(e===void 0)return n;if(e===null||typeof e!="object")throw new RangeError(`[virtualscroll] labels must be an object; got ${rn(e)}`);const s=Object.getPrototypeOf(e);if(s!==Object.prototype&&s!==null)throw new RangeError(`[virtualscroll] labels must be a plain object (prototype Object.prototype or null); got ${Array.isArray(e)?"an array":"an object with a non-plain prototype"}`);const i=new Set(Object.keys(e));for(const a of i)if(!ss(a))throw new RangeError(`[virtualscroll] labels.${a} is not a known label key; expected one of ${Yr.join(", ")}`);const o={...n};for(const a of Yr){const u=i.has(a)?e[a]:void 0;if(u!==void 0){if(typeof u!="string"||u.trim()==="")throw new RangeError(`[virtualscroll] labels.${a} must be a non-blank string; got ${rn(u)}`);o[a]=u}}return Object.freeze(o)};class _{level;prefix;impl;constructor(e=2,n="[virtualscroll]",s=console){this.level=e,this.prefix=n,this.impl=s}static instance=new _(2,"[virtualscroll]");static setLevel(e){_.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){_.instance.setImplementation(e)}setImplementation(e){this.impl=e}static isEnabled(e){return _.instance.isEnabled(e)}isEnabled(e){return this.level<=e}static resolveLazy(e){if(typeof e!="function")return e;try{return e()}catch{return e}}formatMessage(e){return typeof e=="string"?[`${this.prefix} ${e}`]:[this.prefix,e]}static debug(e,...n){_.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(_.resolveLazy(e)),...n.map(_.resolveLazy))}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(_.resolveLazy(e)),...n.map(_.resolveLazy))}static warn(e,...n){_.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(_.resolveLazy(e)),...n.map(_.resolveLazy))}static error(e,...n){_.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(_.resolveLazy(e)),...n.map(_.resolveLazy))}}const _n=r=>typeof r.setPointerCapture=="function"&&typeof r.releasePointerCapture=="function"&&typeof r.hasPointerCapture=="function",On=(r,e)=>_n(r)&&r.hasPointerCapture(e),kr=(r,e)=>{if(!_n(r))return"unsupported";try{return r.setPointerCapture(e),"captured"}catch(n){return(typeof n=="object"&&n!==null&&"name"in n?n.name:void 0)==="NotFoundError"?"inactive-pointer":"rejected"}},ar=(r,e)=>{On(r,e)&&r.releasePointerCapture(e)},xn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Hr=6,is=8,os=({dragState:r,normalizedDistance:e})=>{const n=1+e*.18,s=.16+e*.24,i=.38+e*.28,o=r.active?"80ms ease-out":"220ms ease";return V.jsxs(V.Fragment,{children:[V.jsx("div",{className:"aqvs-tap-scroll-circle-visual-outer",style:{background:"linear-gradient(140deg, rgba(255,255,255,0.62), rgba(72,72,72,0.48))",boxShadow:`0 0 0 1px rgba(255,255,255,0.28), 0 10px 22px rgba(0,0,0,${s})`,transform:`scale(${n})`,transition:`${o}, ${r.active?"80ms":"260ms"} box-shadow ease`}}),V.jsx("div",{className:"aqvs-tap-scroll-circle-inner",style:{background:"linear-gradient(140deg, rgba(255,255,255,0.72), rgba(28,28,28,0.58))",boxShadow:"inset 0 4px 10px rgba(0,0,0,0.24), inset 0 0 2px rgba(255,255,255,0.55)",opacity:i,transition:r.active?"120ms opacity ease-out":"220ms opacity ease"}})]})},hn=t.memo(t.forwardRef(({onDragChange:r,className:e,maxVisualDistance:n=160,size:s=40,style:i,opacity:o=1,renderVisual:a,axis:u="y"},f)=>{const[p,x]=t.useState(xn),R=t.useRef(null),I=t.useRef(null),S=t.useRef({x:0,y:0}),z=t.useRef(null),O=t.useRef(0),Z=t.useCallback(C=>{x(C),r(C)},[r]),ne=t.useCallback((C,U,J=!1)=>{const{x:Ve,y:ce}=S.current,ye=C-Ve,vt=U-ce;let te,Je;if(u==="xy")te=Math.hypot(ye,vt),Je=te<Hr?0:1;else{const Ce=u==="x"?ye:vt;te=Math.abs(Ce),Je=te<Hr?0:Ce<0?-1:1}const pt=O.current;let be=Je;const Ue=Hr+is;Je===0?pt!==0&&te<Ue?be=pt:(be=0,J||(O.current=0)):Je!==pt&&pt!==0&&te<Ue?be=pt:O.current=Je,Z({active:J||te>=Hr,offsetX:ye,offsetY:vt,distance:te,direction:be,pointerId:R.current})},[Z,u]),ke=t.useCallback(C=>{if(C===null)return;const U=z.current;U!==null&&ar(U,C)},[]),X=t.useCallback((C=!1)=>{C&&ke(R.current),R.current=null,I.current=null,O.current=0,Z(xn)},[Z,ke]),E=t.useCallback(C=>{if(R.current!==null&&R.current!==C.pointerId){I.current={pointerId:C.pointerId,clientX:C.clientX,clientY:C.clientY},C.preventDefault(),C.stopPropagation();return}C.preventDefault(),C.stopPropagation();const U=z.current??C.currentTarget,{left:J,top:Ve,width:ce,height:ye}=U.getBoundingClientRect();S.current={x:J+ce/2,y:Ve+ye/2},R.current=C.pointerId,kr(U,C.pointerId),ne(C.clientX,C.clientY,!0)},[ne]),M=t.useCallback(C=>{if(R.current!==C.pointerId){I.current!==null&&I.current.pointerId===C.pointerId&&(I.current={pointerId:C.pointerId,clientX:C.clientX,clientY:C.clientY});return}C.preventDefault(),ne(C.clientX,C.clientY)},[ne]),$=t.useCallback(C=>{if(R.current!==C.pointerId){I.current!==null&&I.current.pointerId===C.pointerId&&(I.current=null);return}C.preventDefault(),C.stopPropagation();const U=I.current;if(I.current=null,U!==null){ke(C.pointerId);const J=z.current;if(J===null||kr(J,U.pointerId)!=="inactive-pointer"){R.current=U.pointerId,ne(U.clientX,U.clientY,!0);return}}X(!0)},[X,ke,ne]),B=t.useCallback(C=>{C.target===C.currentTarget&&R.current===C.pointerId&&X(!1)},[X]);t.useImperativeHandle(f,()=>({reset:()=>{X(!0)},getElement:()=>z.current}),[X]);const F=Math.min(Math.max(o,0),1),me=s/64,oe=Math.min(p.distance,n)/n,ae=p.direction*oe*10*me;let fe;if(u==="xy"){const C=p.distance,U=C===0?0:ae*p.offsetX/C,J=C===0?0:ae*p.offsetY/C;fe=`translate(${U}px, ${J}px)`}else u==="x"?fe=`translateX(${ae}px)`:fe=`translateY(${ae}px)`;const ge=a??os,Ae={dragState:p,normalizedDistance:oe,sizeScale:me,size:s,opacity:F},We={...i,width:s,height:s,transform:fe};return We.opacity=F,V.jsx("div",{ref:z,"data-testid":"virtual-scroll-tap-circle",className:Nt.twMerge("aqvs-tap-scroll-circle",e),style:We,tabIndex:-1,onPointerDown:E,onPointerMove:M,onPointerUp:$,onPointerCancel:$,onLostPointerCapture:B,role:"presentation",children:ge(Ae)})}));hn.displayName="TapScrollCircle";const Q=(r,e,n)=>Math.max(e,Math.min(n,r)),jr=(r,e)=>{const n=e==="x",s=r.getBoundingClientRect(),i=n?s.width:s.height,o=x=>{const R=Number.parseFloat(x);return Number.isFinite(R)?R:0},a=window.getComputedStyle(r),u=o(n?a.width:a.height),f=u>0?u+o(n?a.paddingLeft:a.paddingTop)+o(n?a.paddingRight:a.paddingBottom)+o(n?a.borderLeftWidth:a.borderTopWidth)+o(n?a.borderRightWidth:a.borderBottomWidth):0,p=f>0?f:n?r.offsetWidth:r.offsetHeight;return p<=0||i<=0?1:i/p},Fn=r=>{r.preventDefault()},Nr="virtualscroll:tap-scroll-cancel",vn=20,Rn=.01,as=(r,e)=>e<=0||r<=0?0:r>=e?1:Q(r/e,Rn,1-Rn),ls=250,cs=60,us=20,ds=20,mn={maxDistance:240,minSpeedMultiplier:.2},fs=mn.maxDistance,Sn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Zr=2.2,hs=8,ms=120,Hn=1/10,Bt={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:fs,minSpeedMultiplier:mn.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},ps=(r,e)=>e?{bar:r.horizontalScrollBar,thumb:r.horizontalScrollThumb,arrows:[r.scrollLeft,r.scrollRight]}:{bar:r.verticalScrollBar,thumb:r.verticalScrollThumb,arrows:[r.scrollUp,r.scrollDown]},gs=r=>r?{mainSizeKey:"width",crossSizeKey:"height",thumbTranslateFunction:"translateX",selectDelta:(e,n)=>e,getPointerCoordinate:({clientX:e})=>e,arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",thumbTranslateFunction:"translateY",selectDelta:(e,n)=>n,getPointerCoordinate:({clientY:e})=>e,arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},nn=(r,e)=>{const n=r?.maxSpeedMultiplier,s=typeof n=="number"?n:Xn(e);return{enabled:r?.enabled??Bt.enabled,size:r?.size??Bt.size,offsetX:r?.offsetX??Bt.offsetX,offsetY:r?.offsetY??Bt.offsetY,className:r?.className??Bt.className,maxVisualDistance:r?.maxVisualDistance??Bt.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(r?.minSpeedMultiplier??Bt.minSpeedMultiplier,0),opacity:Q(r?.opacity??Bt.opacity,0,1),renderVisual:r?.renderVisual??Bt.renderVisual,maxSpeedCurve:r?.maxSpeedCurve??Bt.maxSpeedCurve}},bs=({isDragging:r,isThumbHovered:e,enableThumbDrag:n})=>t.useMemo(()=>n?r?"dragging":e?"hover":"idle":"disabled",[n,r,e]),xs=({canUseArrowButtons:r,enableArrowButtons:e,keyboardOperable:n,resetTapScroll:s,scrollByStep:i})=>{const o=t.useRef(null),a=t.useRef(null),u=t.useRef(null),f=t.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null),a.current!==null&&(window.clearTimeout(a.current),a.current=null),u.current!==null&&(window.removeEventListener("pointerup",u.current),window.removeEventListener("pointercancel",u.current),window.removeEventListener("blur",u.current),u.current=null)},[]),p=t.useCallback(()=>{f()},[f]),x=t.useCallback(I=>(S=>{if(!r)return;S.cancelable&&S.preventDefault(),S.stopPropagation(),s(),f(),i(I),a.current=window.setTimeout(()=>{o.current=window.setInterval(()=>{i(I)},cs)},ls);const z=()=>f();u.current=z,window.addEventListener("pointerup",z),window.addEventListener("pointercancel",z),window.addEventListener("blur",z)}),[r,f,s,i]),R=t.useCallback(I=>(S=>{e&&n&&(S.key==="Enter"||S.key===" "||S.key==="Spacebar")&&(S.preventDefault(),i(I))}),[e,n,i]);return t.useEffect(()=>{r||f()},[r,f]),t.useEffect(()=>()=>{f()},[f]),{handleArrowPointerDown:x,handleArrowPointerUp:p,handleArrowKeyDown:R}},vs=700,or=(r,e)=>typeof r=="number"&&Number.isFinite(r)?r:e,Wr=({distance:r,maxDistance:e,viewportSize:n,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:o,curve:a})=>{const u=Math.max(or(r,0),0),f=or(e,0),p=f>0?Math.min(u,f)/f:1,x=Math.max(or(n,0),0),R=Math.max(or(s,0),0),I=Math.max(or(i,0),0),S=Math.max(x*R,40),z=o?S:1200,O=Math.max(x*I,z),Z=a?Math.max(or(a.exponentialScale,I),0):0,ne=a?Math.min(O,Math.max(x*Z,S)):O,ke=Math.max(ne,S);let X=p**1.1;if(a){const M=Math.min(Math.max(or(a.exponentialSteepness,0),0),vs);if(M===0)X=p;else{const $=Math.expm1(M)||1;X=Math.min(Math.max(Math.expm1(M*p)/$,0),1)}}const E=Math.min(Math.max(or(a?.easedOffset,0),0),1);return S+(ke-S)*(E+(1-E)*X)},Xn=r=>{if(!r||r<=0)return Zr;const e=Math.max(1,r),n=Math.log10(e),s=Zr+n*hs;return Q(s,Zr,ms)},pn=({contentSize:r,viewportSize:e,scrollPosition:n,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:o=!0,enableArrowButtons:a=!0,enableArrowButtonTabStops:u=!0,horizontal:f=!1,enableHorizontalTapCircle:p=!1,stretchMainSize:x=!1,scrollBarWidth:R=12,className:I,ariaControls:S,tapScrollCircleOptions:z,itemCount:O,renderThumbOverlay:Z,visibleStartIndex:ne,visibleEndIndex:ke,locale:X,labels:E})=>{const[M,$]=t.useState(!1),[B,F]=t.useState(!1),[me,oe]=t.useState(!1),ae=t.useRef(null),fe=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),ge=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),Ae=t.useRef(n),We=t.useRef(s),C=t.useRef(Sn),U=t.useRef(null),J=t.useRef(null),Ve=t.useRef(null),ce=t.useRef(0),ye=t.useRef(0),vt=t.useMemo(()=>nn(z,O),[O,z]),te=t.useMemo(()=>gs(f),[f]),Je=t.useMemo(()=>fn(X,E),[X,E]),pt=ps(Je,f),be=t.useMemo(()=>new Intl.NumberFormat(dn(X),{style:"percent",maximumFractionDigits:0}),[X]),Ue=!u,{enabled:Ce,size:Ge,offsetX:Ke,offsetY:It,className:xe,maxVisualDistance:Rt,maxSpeedMultiplier:De,minSpeedMultiplier:P,opacity:et,renderVisual:L,maxSpeedCurve:lt}=vt,D=t.useRef({viewportSize:e,maxScrollPosition:Math.max(r-e,0),scrollBarVisible:r>e,effectiveTapMaxDistance:Math.max(Rt,1),tapCircleMaxSpeedMultiplier:De,tapCircleMinSpeedMultiplier:P,tapCircleMaxSpeedCurve:lt,tapScrollCircleOptions:z,effectiveTrackLength:0,onScroll:s,scrollPosition:n}),{mainSizeKey:Pe,crossSizeKey:ct,thumbTranslateFunction:A,selectDelta:ut,getPointerCoordinate:Ct,arrowIcons:T,directionClass:Dt,orientation:dt}=te,ze=Math.max(Rt,1),gt=e/r,zt=Math.max(e-R*2,0),b=gt*zt,q=Math.min(Math.max(vn,b||0),zt||vn),ee=Math.max(r-e,0),ue=Ue?void 0:be.format(as(n,ee)),le=Math.max(zt-q,0),Ie=ee<=0||le<=0?0:Q(n/ee*le,0,le),Me=Ie+q/2,{ratio:ve,attach:tt}=Dn("[ScrollBar] the thumb"),_e=ve===null?Ie:An(Ie,ve,"none"),Y=r>e||M,ft=Y&&a;t.useLayoutEffect(()=>{D.current={viewportSize:e,maxScrollPosition:ee,scrollBarVisible:Y,effectiveTapMaxDistance:ze,tapCircleMaxSpeedMultiplier:De,tapCircleMinSpeedMultiplier:P,tapCircleMaxSpeedCurve:lt,tapScrollCircleOptions:z,effectiveTrackLength:le,onScroll:s,scrollPosition:n}}),t.useLayoutEffect(()=>{Ae.current=n},[n]),t.useLayoutEffect(()=>{We.current=s},[s]),t.useEffect(()=>{i||F(!1)},[i]);const pe=bs({isDragging:M,isThumbHovered:B,enableThumbDrag:i}),Te=t.useCallback((d,N)=>{const H=D.current,de=N??Ae.current;if(We.current){const je=We.current(d,de);if(typeof je=="number"&&Number.isFinite(je))return Ae.current=je,je}const Re=typeof d=="function"?d(de):d,Be=Math.max(H.maxScrollPosition,0),bt=H.scrollBarVisible?Q(Re,0,Be):0;return Ae.current=bt,bt},[]),Ne=t.useCallback(d=>{const N=D.current,H=Ae.current;if(!N.scrollBarVisible||N.maxScrollPosition<=0){const Se=Te(0,H),nt=Se-H;return{nextPosition:Se,actualDelta:nt,reachedBoundary:!0}}if(d===0)return{nextPosition:H,actualDelta:0,reachedBoundary:!1};const Re=Te(Se=>Q(Se+d,0,N.maxScrollPosition),H),Be=Re-H,bt=d<0&&H+d<=0,je=d>0&&H+d>=N.maxScrollPosition,Ht=d<0&&(Re<=0||bt&&Be===0)||d>0&&(Re>=N.maxScrollPosition||je&&Be===0);return{nextPosition:Re,actualDelta:Be,reachedBoundary:Ht}},[Te]),Mt=t.useCallback((d,N)=>{d.current+=N;const H=Math.max(D.current.maxScrollPosition,0);H>0&&(d.current=Q(d.current,-H,H));const de=Ne(d.current);return d.current-=de.actualDelta,de.reachedBoundary&&(d.current=0),de},[Ne]),qe=t.useCallback(()=>{J.current!==null&&(window.cancelAnimationFrame(J.current),J.current=null),Ve.current=null,ce.current=0,ye.current=0},[]),Oe=t.useCallback(()=>{C.current={...Sn},oe(!1),U.current?.reset(),qe()},[qe]),Ze=t.useCallback(d=>{const N=C.current,H=D.current;if(!N.active||N.direction===0){qe();return}if(!H.scrollBarVisible||H.maxScrollPosition<=0){qe();return}const de=Ve.current??d,Re=Math.max((d-de)/1e3,0),Be=Math.min(Re,Hn);if(Ve.current=d,Be<=0){J.current=window.requestAnimationFrame(Ze);return}const bt=Wr({distance:N.distance,maxDistance:H.effectiveTapMaxDistance,viewportSize:H.viewportSize,minSpeedMultiplier:H.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:H.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof H.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:H.tapCircleMaxSpeedCurve});ye.current!==N.direction&&(ye.current=N.direction,ce.current=0);const{reachedBoundary:je}=Mt(ce,N.direction*bt*Be);if(je){qe();return}J.current=window.requestAnimationFrame(Ze)},[Mt,qe]),v=t.useCallback(()=>{J.current===null&&(Ve.current=null,ce.current=0,J.current=window.requestAnimationFrame(Ze))},[Ze]);t.useEffect(()=>{const d=C.current;!d.active||d.direction===0||v()},[r,e,v]),t.useEffect(()=>()=>{qe()},[qe]);const y=t.useCallback(d=>{C.current=d,oe(d.active),d.active&&d.direction!==0?v():qe()},[v,qe]);t.useEffect(()=>{Ce||Oe()},[Oe,Ce]),t.useEffect(()=>{const d=N=>{const de=N.detail?.paneId;de&&S&&de!==S||Oe()};return window.addEventListener(Nr,d),()=>{window.removeEventListener(Nr,d)}},[S,Oe]),t.useEffect(()=>{if(!Ce)return;const d=N=>{if(!C.current.active||C.current.pointerId===N.pointerId)return;const H=N.target;if(!(H instanceof Node)){Oe();return}U.current?.getElement()?.contains(H)||Oe()};return document.addEventListener("pointerdown",d,!0),()=>{document.removeEventListener("pointerdown",d,!0)}},[Oe,Ce]);const $e=d=>{if(!Y||le<=0||ee<=0)return 0;const N=Q(d,0,le);return Q(N/le*ee,0,ee)},Ee=t.useCallback(d=>{const{scrollBarVisible:N,effectiveTrackLength:H,maxScrollPosition:de}=D.current;if(_.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:d,trackLen:H,maxScroll:de})),H<=0||de<=0)return null;const Re=Q(d,0,H);return Q(Re/H*de,0,de)},[]),Ye=t.useCallback(d=>jr(d,f?"x":"y"),[f]),ot=t.useCallback(d=>{const N=fe.current;if(N.pointerId!==d.pointerId)return;const H=d.clientX-N.startClientX,de=d.clientY-N.startClientY,Re=ut(H,de)/(N.scale||1);_.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:Re,startThumbPosition:N.startThumbPosition,clientY:d.clientY,startClientY:N.startClientY,metrics:D.current}));const Be=Ee(N.startThumbPosition+Re);Be!==null&&Te(Be),d.cancelable&&d.preventDefault()},[ut,Ee,Te]),Fe=t.useCallback(d=>{const N=fe.current;if(N.pointerId===d.pointerId)if(document.removeEventListener("pointermove",ot),document.removeEventListener("pointerup",Fe),document.removeEventListener("pointercancel",Fe),N.captureTarget!==null&&ar(N.captureTarget,d.pointerId),fe.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},$(!1),ae.current){const H=ae.current.getBoundingClientRect();d.clientX>=H.left&&d.clientX<=H.right&&d.clientY>=H.top&&d.clientY<=H.bottom||F(!1)}else F(!1)},[ot]);t.useEffect(()=>()=>{document.removeEventListener("pointermove",ot),document.removeEventListener("pointerup",Fe),document.removeEventListener("pointercancel",Fe)},[ot,Fe]);const re=t.useRef(0),He=t.useRef(0),jt=t.useCallback(d=>{const N=Math.max(Math.round(D.current.viewportSize/ds),us);He.current!==d&&(He.current=d,re.current=0),Mt(re,d*N)},[Mt]),{handleArrowPointerDown:lr,handleArrowPointerUp:Wt,handleArrowKeyDown:Ut}=xs({canUseArrowButtons:ft,enableArrowButtons:a,keyboardOperable:!Ue,resetTapScroll:Oe,scrollByStep:jt}),_t=d=>{if(!Y)return;if(!i){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;Oe();const N=d.currentTarget,H=Ye(N),de=kr(N,d.pointerId)==="captured"?N:null;fe.current={pointerId:d.pointerId,startThumbPosition:Ie,startClientX:d.clientX,startClientY:d.clientY,scale:H,captureTarget:de},document.addEventListener("pointermove",ot),document.addEventListener("pointerup",Fe),document.addEventListener("pointercancel",Fe),$(!0),F(!0),d.preventDefault(),d.stopPropagation()},Pt=d=>{if(!Y)return;if(!o){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;const N=d.currentTarget,H=N.getBoundingClientRect(),de=Ct(d),Re=Ye(N),Be=(de-(f?H.left:H.top))/Re;Oe();const bt=Be-q/2,je=$e(bt);Te(je),kr(N,d.pointerId),ge.current={pointerId:d.pointerId,startThumbPosition:bt,startClientX:d.clientX,startClientY:d.clientY,scale:Re},d.preventDefault(),d.stopPropagation()},rt=()=>{ge.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},rr=d=>{const N=ge.current;if(N.pointerId!==d.pointerId)return;if(d.pointerType==="mouse"&&d.buttons===0){rt();return}const H=d.clientX-N.startClientX,de=d.clientY-N.startClientY,Re=ut(H,de)/(N.scale||1),Be=$e(N.startThumbPosition+Re);Te(Be),d.cancelable&&d.preventDefault()},cr=d=>{ge.current.pointerId===d.pointerId&&(ar(d.currentTarget,d.pointerId),rt(),d.preventDefault(),d.stopPropagation())},Ot=d=>{ge.current.pointerId===d.pointerId&&(ar(d.currentTarget,d.pointerId),rt())},Gt=d=>{d.target===d.currentTarget&&ge.current.pointerId===d.pointerId&&rt()},ur=t.useMemo(()=>Q((me?1:.8)*et,0,1),[me,et]),Kt=t.useMemo(()=>{const N=`calc(50% - ${Ge/2}px + ${It}px)`;return{left:Ke,top:N}},[Ke,It,Ge]),dr=(d,N,H,de)=>V.jsx("button",{type:"button",tabIndex:Ue?-1:0,className:"aqvs-scrollbar-arrow-button",style:{[Pe]:R,[ct]:R},"aria-label":N,onPointerDown:lr(d),onPointerUp:Wt,onPointerLeave:Wt,onPointerCancel:Wt,onKeyDown:Ut(d),"aria-disabled":!a,disabled:!ft,children:V.jsx("span",{"aria-hidden":"true",children:H})},de),Ft=Z&&Y?{orientation:dt,scrollPosition:n,maxScrollPosition:ee,contentSize:r,viewportSize:e,thumbSize:q,thumbPosition:Ie,thumbCenter:Me,trackSize:zt,isDragging:M,isTapScrollActive:me,visibleStartIndex:ne,visibleEndIndex:ke}:null;return V.jsxs("div",{className:Nt.twMerge("aqvs-scrollbar",Dt,I),style:{...x&&!f?{}:{[Pe]:e},[ct]:R},"data-visible":Y?"true":"false",role:"scrollbar","aria-label":pt.bar,"aria-hidden":Ue?!0:void 0,tabIndex:Ue?void 0:-1,onPointerDown:Ue?Fn:void 0,"aria-controls":S,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":ee,"aria-valuetext":ue,"aria-orientation":f?"horizontal":"vertical",children:[(!f||p)&&Y&&Ce&&V.jsx(hn,{axis:f?"x":"y",ref:U,className:Nt.twMerge("aqvs-scrollbar-tap-circle-wrapper",xe),size:Ge,maxVisualDistance:ze,style:Kt,opacity:ur,renderVisual:L,onDragChange:y},"tap-circle"),dr(-1,pt.arrows[0],T[0],"arrow-start"),V.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:R/2},onPointerDown:Pt,onPointerMove:rr,onPointerUp:cr,onPointerCancel:Ot,onLostPointerCapture:Gt,"aria-disabled":!o,children:[Ft&&V.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:Z?.(Ft)},"overlay"),V.jsx("div",{ref:tt,className:"aqvs-scrollbar-thumb-wrapper",style:{[Pe]:q,top:0,left:0,...f?{bottom:0}:{right:0},transform:`${A}(${_e}px)`},"data-visible":Y||M?"true":"false",onPointerDown:_t,role:"slider","aria-label":pt.thumb,"aria-orientation":f?"horizontal":"vertical","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":ee,"aria-valuetext":ue,"aria-disabled":!i,tabIndex:Ue?void 0:-1,children:V.jsx("div",{ref:ae,className:Nt.twMerge("aqvs-scrollbar-thumb",f?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":pe,style:{borderRadius:R-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&F(!0)},onMouseLeave:()=>{i&&F(!1)}},"thumb")},"thumb-wrapper")]},"track"),dr(1,pt.arrows[1],T[1],"arrow-end")]})},$n=({offsetX:r,offsetY:e,maxDistance:n,x:s,y:i})=>{const o=Number.isFinite(r)?r:0,a=Number.isFinite(e)?e:0,u=Math.hypot(o,a);if(u===0)return{x:0,y:0};const f=Wr({distance:u,maxDistance:n,viewportSize:s.viewportSize,minSpeedMultiplier:s.minSpeedMultiplier,maxSpeedMultiplier:s.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:s.hasCustomMaxSpeedMultiplier,curve:s.curve}),p=Wr({distance:u,maxDistance:n,viewportSize:i.viewportSize,minSpeedMultiplier:i.minSpeedMultiplier,maxSpeedMultiplier:i.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:i.hasCustomMaxSpeedMultiplier,curve:i.curve});return{x:f*o/u,y:p*a/u}},Rs=r=>{const{quantum:e,resetOnDirectionChange:n=!0}=r;if(!(Number.isFinite(e)&&e>0))throw new TypeError(`[createResidualQuantizer] quantum must be a finite positive number, received ${e}`);let s=0;return{push:i=>{if(!Number.isFinite(i)||Math.abs(i)>Number.MAX_SAFE_INTEGER)return 0;n&&s!==0&&i!==0&&Math.sign(i)!==Math.sign(s)&&(s=0),s+=i;const o=Math.trunc(s/e)*e+0;return s-=o,o},peekResidue:()=>s,reset:()=>{s=0}}},Ss=16,wn=(r,e,n)=>e===1?r*Ss:e===2?r*n:r,ws=(r,e)=>{const n=r.shiftKey&&r.deltaX===0,s=n?r.deltaY:r.deltaX,i=n?0:r.deltaY,o=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:r.ctrlKey,isHorizontalDominant:o,horizontalDelta:wn(s,r.deltaMode,e),verticalDelta:wn(i,r.deltaMode,e)}},Bn=new WeakSet,Mn=r=>{Bn.add(r)},Ms=r=>Bn.has(r),Ts=["mouse","pen","touch"],Qr=(r,e)=>!(r==="mouse"||r==="pen"||r==="touch")||e.includes(r),Es=r=>r==="mouse"||r==="pen",Cr={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},Xr=(r,e,n)=>{for(const[s,i,o]of e)n==="add"?r.addEventListener(s,i,o):r.removeEventListener(s,i,o)},qn=t.forwardRef(({children:r,contentSize:e,viewportSize:n,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:o=!0,enableTrackClick:a=!0,enableArrowButtons:u=!0,enableArrowButtonTabStops:f=!0,enablePointerDrag:p=!0,pointerDragInputs:x=Ts,onScroll:R,className:I,testId:S,style:z,background:O,tapScrollCircleOptions:Z,inertiaOptions:ne,itemCount:ke,renderThumbOverlay:X,wheelSpeedMultiplier:E=1,overscrollBehavior:M="auto",onWheelHorizontal:$,onPanHorizontal:B,contentInsets:F,visibleStartIndex:me,visibleEndIndex:oe,renderOverlay:ae,initialScrollPosition:fe=0,contentProps:ge,locale:Ae,labels:We},C)=>{const U=t.useRef(Number.isFinite(fe)?Math.max(0,fe):0),J=t.useRef(null),Ve=t.useRef(null),ce=n===void 0,[ye,vt]=t.useState(0),te=n??ye,Je=t.useRef(null),pt=t.useRef(e),be=t.useRef(!1),Ue=t.useCallback(()=>{!be.current||pt.current<=0||Je.current==="zero"||(Je.current="zero",_.warn("[ScrollPane] The self-measured viewport is 0px. Give the scroll pane's host element a definite height (e.g. h-full, flex-1 + min-h-0, an explicit px height), or pass viewportSize explicitly."))},[]);t.useLayoutEffect(()=>{pt.current=e,Ue()},[e,Ue]),t.useLayoutEffect(()=>{if(!ce)return;const b=Ve.current;if(!b)return;const q=()=>{const ue=b.offsetHeight;if(ue>0){be.current=!1,vt(le=>le===ue?le:ue);return}be.current=b.offsetParent!==null,Ue()};q();const ee=typeof ResizeObserver=="function"?new ResizeObserver(q):null;return ee?.observe(b),()=>{ee?.disconnect(),be.current=!1}},[ce,Ue]),t.useLayoutEffect(()=>{ce&&s?.(ye)},[ce,ye,s]),t.useLayoutEffect(()=>{if(ce)return;const b=J.current;if(!b)return;const q=()=>{const ue=b.clientHeight;if(ue<=0||Math.abs(ue-te)<=1)return;const le=`${te}/${ue}`;Je.current!==le&&(Je.current=le,_.warn(`[ScrollPane] viewportSize=${te} but the host band is ${ue}px. The clip window, max scroll position, thumb mapping, rendered row count and scrollability all derive from viewportSize, so they are now wrong. Omit viewportSize to let the pane measure itself.`))};if(q(),typeof ResizeObserver!="function")return;const ee=new ResizeObserver(q);return ee.observe(b),()=>{ee.disconnect()}},[ce,te]);const Ce=t.useRef($);t.useEffect(()=>{Ce.current=$},[$]);const Ge=t.useRef(B);t.useEffect(()=>{Ge.current=B},[B]);const Ke=t.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),It=t.useMemo(()=>({maxVelocity:ne?.maxVelocity??Cr.maxVelocity,minVelocity:ne?.minVelocity??Cr.minVelocity,deceleration:ne?.deceleration??Cr.deceleration,velocitySampleWindow:ne?.velocitySampleWindow??Cr.velocitySampleWindow,startVelocityThreshold:ne?.startVelocityThreshold??Cr.startVelocityThreshold}),[ne]),xe=t.useMemo(()=>({top:Math.max(0,F?.top??0),bottom:Math.max(0,F?.bottom??0)}),[F]);_.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:te,scrollBarWidth:i,className:I,style:z,tapScrollCircleOptions:Z,inertiaOptions:ne,enablePointerDrag:p,contentInsets:xe}));const Rt=t.useRef({contentSize:e,viewportSize:te}),De=t.useMemo(()=>e>te,[e,te]),P=t.useCallback((b,q)=>{let ee=q??Rt.current;q&&!(Number.isFinite(q.contentSize)&&Number.isFinite(q.viewportSize))&&(_.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:q}),ee=Rt.current);const{contentSize:ue,viewportSize:le}=ee,Ie=ue>le,Me=U.current;if(_.debug("[ScrollPane] scrollTo called",()=>({newPosition:b,contentSize:ue,viewportSize:le,currentIsScrollable:Ie,prevPosition:Me})),!Ie)return U.current!==0&&(U.current=0,R?.(0,Me)),U.current;const ve=typeof b=="function"?b(U.current):b;if(!Number.isFinite(ve))return _.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:ve}),U.current;const tt=Math.max(ue-le,0),_e=Q(ve,0,tt);return U.current!==_e&&(U.current=_e,R?.(_e,Me)),U.current},[R]),et=t.useRef(P);t.useEffect(()=>{et.current=P},[P]);const L=t.useCallback(()=>{const b=Ke.current;b.generation+=1,b.frame!==null&&cancelAnimationFrame(b.frame),b.frame=null,b.velocity=0,b.lastTimestamp=null},[]),lt=t.useRef(L);t.useEffect(()=>{lt.current=L},[L]),t.useEffect(()=>()=>{lt.current()},[]);const D=t.useCallback(b=>{if(!De)return;const{maxVelocity:q,minVelocity:ee,deceleration:ue,startVelocityThreshold:le}=It,Ie=Q(b,-q,q);if(Math.abs(Ie)<le)return;L(),Ke.current.velocity=Ie,Ke.current.lastTimestamp=null;const Me=Ke.current.generation,ve=tt=>{const _e=Ke.current;if(_e.generation!==Me)return;if(_e.lastTimestamp===null){_e.lastTimestamp=tt,_e.frame=requestAnimationFrame(ve);return}const Y=tt-_e.lastTimestamp;if(_e.lastTimestamp=tt,Y<=0){_e.frame=requestAnimationFrame(ve);return}const ft=_e.velocity;let pe=ft;const Te=ue*Y;ft>0?pe=Math.max(0,ft-Te):ft<0&&(pe=Math.min(0,ft+Te));const Mt=(ft+pe)/2*Y,qe=U.current;if(Mt!==0&&et.current(Ee=>Ee+Mt),Ke.current.generation!==Me)return;const Oe=U.current,{contentSize:Ze,viewportSize:v}=Rt.current,y=Math.max(Ze-v,0);_e.velocity=pe;const $e=Oe===qe||Oe<=0&&pe<=0||Oe>=y&&pe>=0;if(Math.abs(pe)<ee||$e){L();return}_e.frame=requestAnimationFrame(ve)};Ke.current.frame=requestAnimationFrame(ve)},[De,It,L]),Pe=t.useRef(D);t.useEffect(()=>{Pe.current=D},[D]),t.useLayoutEffect(()=>{Rt.current={contentSize:e,viewportSize:te}},[e,te]),t.useLayoutEffect(()=>{const b=Ve.current;if(!b)return;const q=()=>{b.scrollTop!==0&&(_.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:b.scrollTop})),b.scrollTop=0),b.scrollLeft!==0&&(b.scrollLeft=0)};return b.addEventListener("scroll",q),()=>b.removeEventListener("scroll",q)},[]),t.useLayoutEffect(()=>{if(De){_.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:te,scrollPosition:U.current}));const b=Q(e-te,0,e);U.current>b&&P(b)}else P(0)},[De,P,e,te]);const ct=t.useRef({isScrollable:De,viewportSize:te,wheelSpeedMultiplier:E,overscrollBehavior:M});t.useLayoutEffect(()=>{ct.current={isScrollable:De,viewportSize:te,wheelSpeedMultiplier:E,overscrollBehavior:M}},[De,te,E,M]);const A=t.useCallback(b=>{if(Ms(b))return!1;const{isScrollable:q,viewportSize:ee,wheelSpeedMultiplier:ue,overscrollBehavior:le}=ct.current,Ie=ws(b,ee);if(Ie.isZoomGesture)return!1;if(Ie.isHorizontalDominant)return Ce.current?(Mn(b),b.preventDefault(),L(),Ce.current(Ie.horizontalDelta),!0):!1;if(!q||Ie.verticalDelta===0)return!1;let Me=Ie.verticalDelta;if(ue!==1&&(Me*=ue),le!=="contain"){const ve=U.current,tt=Math.max(Rt.current.contentSize-ee,0);if(Me>0&&ve>=tt||Me<0&&ve<=0)return!1}return Mn(b),b.preventDefault(),L(),_.debug("[ScrollPane] wheel event",()=>({deltaY:Me,scrollPosition:U.current,wheelSpeedMultiplier:ue,deltaMode:b.deltaMode,scrollTop:Ve.current?.scrollTop})),P(ve=>ve+Me),!0},[P,L]);t.useEffect(()=>{const b=ue=>{A(ue)},q=()=>{L()},ee=J.current;return ee&&(ee.addEventListener("wheel",b,{passive:!1}),ee.addEventListener("pointerdown",q,{capture:!0,passive:!0})),()=>{ee&&(ee.removeEventListener("wheel",b),ee.removeEventListener("pointerdown",q,{capture:!0}))}},[A,L]),t.useImperativeHandle(C,()=>({scrollTo:(b,q)=>(L(),P(b,q)),getScrollPosition:()=>U.current,getContentSize:()=>e,getViewportSize:()=>te,applyWheel:A}),[P,e,te,L,A]);const ut=t.useId(),Ct=ge?.id??ut,T=t.useRef({pointerType:"",pointerId:null,startClientY:0,startClientX:0,lastPanClientX:0,startScroll:0,isDragging:!1,shouldCancelNextClick:!1,clickResetTimer:null,velocitySamples:[],scale:1,scaleX:1}),Dt=t.useRef(p),dt=t.useRef(x);t.useEffect(()=>{Dt.current=p},[p]),t.useEffect(()=>{dt.current=x},[x]);const ze=t.useRef(De);t.useEffect(()=>{ze.current=De},[De]);const gt=t.useRef(It);t.useEffect(()=>{gt.current=It},[It]),t.useEffect(()=>{const b=T.current;if(p&&De&&(b.pointerId===null||Qr(b.pointerType,x))||b.pointerId===null)return;const q=Ve.current;b.clickResetTimer!==null&&(window.clearTimeout(b.clickResetTimer),b.clickResetTimer=null);const ee=b.isDragging&&b.shouldCancelNextClick,ue=b.pointerId;b.pointerId=null,b.pointerType="",b.startClientY=0,b.startScroll=0,b.isDragging=!1,b.shouldCancelNextClick=ee,b.velocitySamples=[],b.scale=1,q!==null&&ar(q,ue)},[p,x,De]),t.useEffect(()=>{const b=Ve.current;if(!b)return;const q=6,ee=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),ue=()=>{const v=T.current;v.pointerId=null,v.pointerType="",v.startClientY=0,v.startScroll=0,v.isDragging=!1,v.velocitySamples=[],v.scale=1},le=()=>{const v=T.current;v.clickResetTimer!==null&&(window.clearTimeout(v.clickResetTimer),v.clickResetTimer=null)},Ie=v=>{const y=T.current,$e=ee();y.velocitySamples.push({clientY:v,time:$e});const Ee=gt.current.velocitySampleWindow;y.velocitySamples=y.velocitySamples.filter(Ye=>$e-Ye.time<=Ee)},Me=v=>v instanceof HTMLElement&&v.closest("[data-scrollpane-ignore-drag='true']")!==null,ve=v=>{const y=T.current;y.shouldCancelNextClick&&(v.preventDefault(),v.stopPropagation(),y.shouldCancelNextClick=!1)},tt=v=>{const y=T.current;y.isDragging||(y.isDragging=!0,y.shouldCancelNextClick=!0,On(b,v.pointerId)||kr(b,v.pointerId),Ie(v.clientY))},_e=v=>v.isTrusted||v.target===b,Y=v=>{const y=T.current;ar(b,v),y.shouldCancelNextClick=!1,le(),ue()},ft=v=>{const y=T.current;if(y.pointerId!==v.pointerId)return;if(v.buttons===0&&Es(v.pointerType)){Y(v.pointerId);return}if(!(Dt.current&&ze.current)||!Qr(v.pointerType,dt.current))return;if(!y.isDragging){const ot=Math.abs(v.clientY-y.startClientY),Fe=Ge.current?Math.abs(v.clientX-y.startClientX):0;if(Math.max(ot,Fe)<q||(tt(v),!y.isDragging))return}Ie(v.clientY);const $e=(v.clientY-y.startClientY)/(y.scale||1),Ee=y.startScroll-$e;et.current(Ee);const Ye=Ge.current;if(Ye){const ot=v.clientX-y.lastPanClientX;y.lastPanClientX=v.clientX,ot!==0&&Ye(-ot/(y.scaleX||1))}v.cancelable&&v.preventDefault()},pe=()=>{const v=T.current;return v.pointerId!==null||!v.shouldCancelNextClick?!1:(le(),v.clickResetTimer=window.setTimeout(()=>{const y=T.current;y.shouldCancelNextClick=!1,y.clickResetTimer=null},0),!0)},Te=v=>{const y=T.current;if(y.pointerId!==v.pointerId){pe();return}y.isDragging&&y.shouldCancelNextClick&&v.cancelable&&(v.preventDefault(),v.stopPropagation()),y.isDragging&&Ie(v.clientY);let $e=0;if(y.isDragging&&y.velocitySamples.length>=2){const Ye=y.velocitySamples,ot=gt.current.velocitySampleWindow,Fe=Ye[Ye.length-1],re=Ye.find(He=>Fe.time-He.time<=ot)??Ye[0];if(Fe&&re&&Fe.time!==re.time){const He=Fe.clientY-re.clientY,jt=Fe.time-re.time;$e=-(He/jt)/(y.scale||1)}}le(),y.shouldCancelNextClick&&(y.clickResetTimer=window.setTimeout(()=>{const Ye=T.current;Ye.shouldCancelNextClick=!1,Ye.clickResetTimer=null},0));const Ee=gt.current.startVelocityThreshold;ue(),ar(b,v.pointerId),Math.abs($e)>=Ee&&Pe.current?.($e)},Ne=v=>{if(T.current.pointerId!==null){if(!v.isPrimary||v.pointerType!==T.current.pointerType)return;Y(T.current.pointerId)}if(T.current.shouldCancelNextClick&&(le(),T.current.shouldCancelNextClick=!1),!(Dt.current&&ze.current)||!Qr(v.pointerType,dt.current)||v.button!==0&&v.pointerType==="mouse"||v.ctrlKey||v.metaKey||v.altKey||Me(v.target))return;window.dispatchEvent(new CustomEvent(Nr,{detail:{paneId:ut}})),lt.current?.();const y=T.current;le(),y.pointerId=v.pointerId,y.pointerType=v.pointerType,y.startClientY=v.clientY,y.startClientX=v.clientX,y.lastPanClientX=v.clientX,y.startScroll=U.current,y.scale=jr(b,"y"),y.scaleX=Ge.current?jr(b,"x"):1,y.isDragging=!1,y.shouldCancelNextClick=!1,y.velocitySamples=[]},Mt=v=>{if(T.current.pointerId!==v.pointerId){pe();return}_e(v)&&Y(v.pointerId)},Oe=[["click",ve,!0],["pointerdown",Ne,{passive:!1}],["lostpointercapture",v=>{v.target!==b||T.current.pointerId!==v.pointerId||Y(v.pointerId)},void 0]],Ze=[["pointermove",ft,{passive:!1}],["pointerup",Te,void 0],["pointercancel",Mt,void 0]];return Xr(b,Oe,"add"),Xr(window,Ze,"add"),()=>{Xr(b,Oe,"remove"),Xr(window,Ze,"remove");const v=T.current;v.pointerId!==null&&ar(b,v.pointerId),le(),ue()}},[ut]);const zt=t.useCallback(b=>(L(),P(b)),[P,L]);return V.jsxs("div",{ref:J,"data-testid":S,"data-self-measured":ce?"true":void 0,className:Nt.twMerge("aqvs-scroll-pane",I),style:z,children:[V.jsxs("div",{ref:Ve,className:Nt.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:ce?void 0:te,paddingTop:xe.top,paddingBottom:xe.bottom,...p&&De&&x.some(b=>b==="touch"||b==="pen")?{touchAction:"none"}:{}},...ge,id:Ct,children:[O,r(U.current)]}),V.jsx(pn,{contentSize:e,viewportSize:te,stretchMainSize:ce,scrollPosition:U.current,onScroll:zt,enableThumbDrag:o,enableTrackClick:a,enableArrowButtons:u,enableArrowButtonTabStops:f,scrollBarWidth:i,ariaControls:Ct,tapScrollCircleOptions:Z,itemCount:ke,renderThumbOverlay:X,visibleStartIndex:me,visibleEndIndex:oe,locale:Ae,labels:We},"scrollbar"),ae?.()]})}),Tn=(r,e,n)=>Math.min(Math.max(r,e),n),ys=({dragState:r,normalizedDistance:e,sizeScale:n,size:s})=>{const i=Math.max(s/2,1),o=1+e*.65,a=Math.max(.65,1-e*.25),u=r.direction*e*26*n,f=.8+e*.18,p=3*n,x=6*n,R=22*n,I=Math.abs(u)+x,S=u>0?p:-Math.abs(u)-p,z=Math.max(2.5,3*n),O=Tn(r.offsetX,-i,i),Z=Tn(r.offsetY,-i,i),ne=i*.35,ke=O/i*ne,X=Z/i*ne,E=ke*.45,M=X*.45,$=Math.max(R*.38,6),B=.65+e*.2,F=r.active;return V.jsxs(V.Fragment,{children:[V.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${a}, ${o})`,transition:F?"40ms transform ease-out":"200ms ease transform"}}),V.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:R,height:R,transform:`translate(calc(-50% + ${ke}px), calc(-50% + ${X}px)) scale(${a}, ${f*o})`,transition:F?"70ms transform ease-out":"200ms ease transform"}}),V.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:$,height:$,transform:`translate(calc(-50% + ${E}px), calc(-50% + ${M}px)) scale(${a}, ${o})`,opacity:B,boxShadow:"0 0 8px rgba(255,255,255,0.45)",transition:F?"120ms opacity 150ms, 120ms transform ease-out ease-out":"220ms ease transform, 240ms opacity ease"}}),V.jsx("div",{className:"aqvs-sample-visual-rod",style:{width:z,height:I,transform:`translate(-50%, ${S}px)`,opacity:e,transition:F?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},Rr=100,Qe=Object.freeze({materializeOption:Object.freeze({materialize:!1})}),Jr=(r,e)=>{if(!Number.isFinite(r))throw new Error(`valueFn returned a non-finite value at index ${e}: ${r}`);return r},Sr=r=>{const e=Math.trunc(r);if(e<=2147483647)return e&-e;const n=BigInt(e)&-BigInt(e);return Number(n)};class qt{tree;deltas;size;baseValue;valueFn;total;revisionCount=0;constructor(e,n,s){this.reset(e,n,s)}reset(e,n,s){const i=Number.isFinite(e)&&e>0?Math.trunc(e):0;if(typeof n!="function"){this.size=i,this.tree=new Map,this.deltas=new Map,this.valueFn=void 0,this.baseValue=n,this.total=this.baseValue*this.size,this.revisionCount+=1;return}let o=0,a;const u=s?.baseValue;if(u!==void 0&&!(Number.isFinite(u)&&u>=0))throw new RangeError(`[FenwickMapTree] options.baseValue must be a finite number >= 0, received ${u}.`);if(i>0&&u!==void 0){if(o=u,s?.materialize){const f=s?.sampleRange??{from:0,to:Math.min(Rr-1,i-1)};let p=Math.max(0,Math.trunc(f.from)),x=Math.min(Math.trunc(f.to),i-1);p>x&&(p=0,x=Math.min(Rr-1,i-1)),a={from:p,values:qt._collectValidatedValues(n,p,x)}}}else if(i>0){const f=s?.sampleRange??{from:0,to:Math.min(Rr-1,i-1)};let p=Math.max(0,Math.trunc(f.from)),x=Math.min(Math.trunc(f.to),i-1);if(p>x&&(p=0,x=Math.min(Rr-1,i-1)),i>Rr)o=qt._sampleBaseValueStrided(n,i,Rr),s?.materialize&&(a={from:p,values:qt._collectValidatedValues(n,p,x)});else{const R=qt._collectValidatedValues(n,p,x);o=qt._modeOrMedian([...R]),s?.materialize&&(a={from:p,values:R})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=n,this.baseValue=o,a)for(let f=0;f<a.values.length;f++){const p=a.from+f,x=a.values[f]-this.baseValue;x!==0&&(this.deltas.set(p,x),this._updateTree(p,x))}this.total=this.getTotal(),this.revisionCount+=1}setValueFn(e,n){if(n?.reset){this.reset(this.size,e);return}typeof e=="function"?this.valueFn=e:(this.valueFn=void 0,this.baseValue=e,this.total=this._computeTreeTotal(),this.revisionCount+=1)}static _collectValidatedValues(e,n,s){const i=[];for(let o=n;o<=s;o++)i.push(Jr(e(o),o));return i}static _modeOrMedian(e){e.sort((a,u)=>a-u);const n=Math.floor(e.length/2);let s;e.length%2===0?s=Math.floor((e[n-1]+e[n])/2):s=e[n];const i=new Map;let o=0;for(const a of e){const u=(i.get(a)??0)+1;i.set(a,u),u>o&&(o=u)}if(o>e.length*.2){const a=[];for(const[f,p]of i.entries())p===o&&a.push(f);const u=a.reduce((f,p)=>f+p,0);s=Math.floor(u/a.length)}return s}static _sampleBaseValueStrided(e,n,s){let i=Math.max(1,Math.ceil(n/s));i%2===0&&(i+=1);const o=[];for(let a=0;a<n&&o.length<s;a+=i)o.push(Jr(e(a),a));return qt._modeOrMedian(o)}update(e,n){return this.updates([{index:e,value:n}])}updates(e){const n=this._buildDeltaUpdates(e);return n.length>0?this.updateDeltas(n):this.total}updateDelta(e,n){return this.updateDeltas([{index:e,change:n}])}updateDeltas(e){const n=new Map;for(const{index:s,change:i}of e){if(s<0||s>=this.size)throw new Error(`Index ${s} out of bounds`);if(!Number.isInteger(s))throw new Error(`Index must be an integer: ${s}`);if(!Number.isFinite(i))throw new Error(`Change must be a finite number: ${i}`);const a=(n.get(s)??this.deltas.get(s)??0)+i;if(a+this.baseValue<-1e-9)throw new Error(`Change would make the value at index ${s} negative: ${a+this.baseValue}`);n.set(s,a)}for(const{index:s,change:i}of e){const a=(this.deltas.get(s)??0)+i;a===0?this.deltas.delete(s):this.deltas.set(s,a),this._updateTree(s,i)}return this.total}_updateTree(e,n){if(n===0)return;this.revisionCount+=1;let s=e+1;for(;s<=this.size;)this.tree.set(s,(this.tree.get(s)??0)+n),s+=Sr(s);this.total!==void 0&&(this.total+=n)}_buildDeltaUpdates(e){const n=[],s=new Map;for(const{index:i,value:o}of e){if(i<0||i>=this.size)throw new Error(`Index ${i} out of bounds`);if(!Number.isInteger(i))throw new Error(`Index must be an integer: ${i}`);if(!Number.isFinite(o))throw new Error(`Value must be a finite number: ${o}`);if(o<0)throw new Error("Value cannot be negative.");const a=s.get(i),u=a===void 0?this.deltas.get(i)??0:a,f=u+this.baseValue,p=o-f;p!==0&&n.push({index:i,change:p}),s.set(i,u+p)}return n}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,n=this.size;for(;n>0;)e+=this.tree.get(n)??0,n-=Sr(n);return e+this.baseValue*this.size}_materialize(e,n=!0){if(this.valueFn){const s=this.deltas.get(e)??0,o=Jr(this.valueFn(e),e)-this.baseValue;if(o!==s&&(o===0?this.deltas.delete(e):this.deltas.set(e,o),n)){const a=o-s;this._updateTree(e,a)}}}_materializeRanges(e,n,s=!1){if(!(e?.materialize&&this.valueFn))return;const i=e.ranges;if(i&&i.length>0){for(const u of i){const f=Math.max(0,Math.trunc(u.from)),p=Math.min(Math.trunc(u.to),this.size-1);for(let x=f;x<=p;x++)this._materialize(x)}if(n===void 0)return;if(s){this._materialize(n);return}const o=i[0].from,a=i[i.length-1].to;n>=o&&n<=a&&this._materialize(n);return}n!==void 0&&this._materialize(n)}_findIndex(e,n={},s){if(this.size>=1073741824)return this._findIndexLarge(e,n,s);if(this.size===0)return{index:-1,total:this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const i=n.materializeOption?.materialize===!0;let o;for(;;){if(o=this._descend(e,s),o<0||o>=this.size)return{index:-1,total:this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const u=this.deltas.get(o)??0;if(this._materialize(o),(this.deltas.get(o)??0)===u)break}const a=this.prefixSum(o);return{index:o,total:this.getTotal(),cumulative:a.cumulative,currentValue:a.currentValue,safeIndex:a.safeIndex}}_descend(e,n){let s=0,i=0,o=1;for(;o<<1<=this.size;)o<<=1;for(;o>0;o>>=1){const a=s+o;if(a<=this.size){const f=(this.tree.get(a)??0)+this.baseValue*o;(n?i+f<e:i+f<=e)&&(s=a,i+=f)}}return n?s:s-1}_findIndexLarge(e,n,s){const i=BigInt(this.size);this._materializeRanges(n.materializeOption);const o=n.materializeOption?.materialize===!0;for(;;){let a=0n,u=i-1n,f,p,x=this.total;for(;a<=u;){const S=a+u>>1n,z=Number(S),O=this.prefixSum(z);if(x=O.total,s?O.cumulative>=e:O.cumulative<=e)if(f=S,p=O,s){if(S===0n)break;u=S-1n}else a=S+1n;else if(s)a=S+1n;else{if(S===0n)break;u=S-1n}}const R=p,I=f!==void 0?Number(f):-1;if(o&&I>=0){const S=this.deltas.get(I)??0;if(this._materialize(I),(this.deltas.get(I)??0)!==S)continue}return{index:I,total:x,cumulative:R?.cumulative,currentValue:R?.currentValue,safeIndex:R?.safeIndex}}}prefixSum(e,n){if(e<0||Number.isNaN(e))return{cumulative:0,total:this.total,currentValue:0,safeIndex:0};if(this.size===0)return{cumulative:0,total:this.getTotal(),currentValue:0,safeIndex:0};const s=Q(Math.trunc(e),0,this.size-1),i=n?.materializeOption;this._materializeRanges(i,s,!0);let o=0,a=s+1;for(;a>0;){const f=this.tree.get(a)??0;o+=f,a-=Sr(a)}const u=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:o+this.baseValue*(s+1),total:this.total,currentValue:u,safeIndex:s}}get(e,n){if(this.size===0)return 0;if(!Number.isInteger(e)||e<0||e>=this.size)throw new Error("Index out of bounds");const s=n?.materializeOption;return this._materializeRanges(s,e),(this.deltas.get(e)??0)+this.baseValue}getTotal(e){const n=e?.materializeOption;return this._materializeRanges(n),this.total===void 0&&(this.size===0?this.total=0:this.total=this._computeTreeTotal()),this.total}rebuildTree(e){if(e?.materialize&&this.valueFn){const s=this.valueFn;this.reset(this.size,i=>s(i),{materialize:!0});return}const n=new Map;for(const[s,i]of this.deltas.entries()){let o=s+1;for(;o<=this.size;)n.set(o,(n.get(o)??0)+i),o+=Sr(o)}this.tree=n,this.total=this._computeTreeTotal(),this.revisionCount+=1}calculateAccumulatedError(){let e=this.baseValue*this.size;for(const[n,s]of this.deltas)n<this.size&&(e+=s);return this.getTotal()-e}changeSize(e){if(!Number.isFinite(e))throw new Error(`Size must be a finite number: ${e}`);const n=Math.max(0,Math.trunc(e)),s=this.size;if(n!==s){if(n>s)if(s===0&&this.deltas.size>0){for(const i of this.deltas.keys())i>=n&&this.deltas.delete(i);this.size=n,this.rebuildTree()}else this._growSize(s,n);else{if(n>0)for(const i of this.deltas.keys())i>=n&&this.deltas.delete(i);this.size=n,this.rebuildTree()}this.revisionCount+=1}}static _minCoveredLowBound(e,n){let s=1;for(;;){const i=s*2;if(Math.floor(n/i)*i<=e)break;s=i}return s*Math.floor(e/s)}_propagateDeltaToGrownNodes(e,n,s,i){let o=e+1;for(;o<=s;)o+=Sr(o);for(;o<=i;)this.tree.set(o,(this.tree.get(o)??0)+n),o+=Sr(o)}_growSize(e,n){if(this.size=n,this.deltas.size>0){const s=qt._minCoveredLowBound(e,n);if(e-s<this.deltas.size)for(let o=s;o<e;o++){const a=this.deltas.get(o);a===void 0||a===0||this._propagateDeltaToGrownNodes(o,a,e,n)}else for(const[o,a]of this.deltas.entries())a===0||o<s||this._propagateDeltaToGrownNodes(o,a,e,n)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}get revision(){return this.revisionCount}findIndexAtOrAfter(e,n){return this._findIndex(e,n??{},!0)}findIndexAtOrBefore(e,n){return this._findIndex(e,n??{},!1)}}const Is=(r,e)=>{const n=r?.sampleRange,s=e?.sampleRange;return n===s?!1:n&&s?n.from!==s.from||n.to!==s.to:!0},gn=(r,e,n)=>{const s=Number.isFinite(r)&&r>0?Math.trunc(r):0,i=t.useRef(null),o=t.useRef({size:s,valueOrFn:e,options:n});i.current===null&&(i.current=new qt(s,e,n));const a=i.current,u=o.current,f=u.size!==s,p=u.valueOrFn!==e,x=Is(u.options,n)||u.options?.baseValue!==n?.baseValue,R=u.size===0&&s>0&&(!i.current||i.current.base===0);if(p||x){const I=n?.resetOnValueFnChange??!0;x||p&&I||R?(n?.debug&&_.debug("[useFenwickMapTree] reset",{valueOrFnChanged:p,optionsChanged:x}),a.reset(s,e,n)):(f&&(n?.debug&&_.debug("[useFenwickMapTree] resize (with valueFn change)",{from:u.size,to:s}),a.changeSize(s)),n?.debug&&_.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:p}),a.setValueFn(e,{reset:!1})),o.current={size:s,valueOrFn:e,options:n}}else f&&(n?.debug&&_.debug("[useFenwickMapTree] resize",{from:u.size,to:s}),R?a.reset(s,e,n):a.changeSize(s),o.current={size:s,valueOrFn:e,options:n});return a},Cs=r=>r+1,Yn=r=>{const[e,n]=t.useReducer(Cs,0),s=t.useCallback(i=>{const o=r.revision,a=i();return r.revision!==o&&n(),a},[r]);return{revision:e,change:s}};class Ps{key;value;prev=null;next=null;constructor(e,n){this.key=e,this.value=n}}class en{head=null;tail=null;addToTail(e){this.tail?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=null,e.next=null}peekHead(){return this.head}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function jn(r){const e=t.useRef(new Map),n=t.useRef(new en),s=Math.floor(r),i=t.useRef(s);t.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){_.warn(`useLruCache: invalid capacity ${r}; the cache will not store any entries.`),e.current.clear(),n.current=new en;return}if(Number.isFinite(s))for(let x=n.current.peekHead();x!==null&&e.current.size>s;x=n.current.peekHead())n.current.remove(x),e.current.delete(x.key)},[r,s]);const o=t.useCallback(x=>{const R=e.current.get(x);if(R)return n.current.moveToTail(R),R.value},[]),a=t.useCallback((x,R)=>{const I=i.current;if(Number.isNaN(I)||I<=0)return;let S=e.current.get(x);if(S)S.value=R,n.current.moveToTail(S);else{if(e.current.size>=I){const z=n.current.removeHead();z&&e.current.delete(z.key)}S=new Ps(x,R),e.current.set(x,S),n.current.addToTail(S)}},[]),u=t.useCallback(x=>e.current.has(x),[]),f=t.useCallback(x=>{const R=e.current.get(x);R&&(n.current.remove(R),e.current.delete(x))},[]),p=t.useCallback(()=>{e.current.clear(),n.current=new en},[]);return t.useMemo(()=>({get:o,set:a,has:u,remove:f,clear:p}),[o,a,u,f,p])}const ks=1e4,Ns=()=>{const{get:r,set:e,has:n,clear:s}=jn(ks);return t.useMemo(()=>({get:r,set:e,has:n,clear:s}),[r,e,n,s])},Ls=(r,e)=>{const n=t.useRef(e),s=t.useRef(r);t.useLayoutEffect(()=>{n.current=e,s.current=r},[e,r]);const i=t.useRef(new WeakMap);return t.useCallback(o=>{if(!o||i.current.has(o))return;const a=u=>{n.current?.enableBridge!==!1&&s.current.current?.applyWheel(u)};return o.addEventListener("wheel",a,{passive:!1}),i.current.set(o,a),()=>{i.current.get(o)===a&&(o.removeEventListener("wheel",a),i.current.delete(o))}},[])},En=-200,yn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},As=r=>{const e=t.useRef(r);e.current=r;const n=t.useRef(yn),s=t.useRef(null),[i,o]=t.useState(!1),a=t.useRef(null),u=t.useRef(!1),f=t.useRef(null),p=t.useRef({residual:0,direction:0}),x=t.useRef({residual:0,direction:0}),R=t.useCallback(()=>{a.current!==null&&(window.cancelAnimationFrame(a.current),a.current=null),f.current=null,p.current={residual:0,direction:0},x.current={residual:0,direction:0}},[]),I=t.useCallback((E,M,$,B,F,me)=>{const oe=M>0?1:M<0?-1:0;oe!==0&&oe!==E.direction&&(E.direction=oe,E.residual=0),E.residual+=M*$;const ae=Math.max(F(),0);ae>0&&(E.residual=Q(E.residual,-ae,ae));const fe=E.residual;if(fe===0)return{actualDelta:0,atBoundary:!1};const ge=B(),Ae=me(fe),We=Ae-ge;E.residual-=We;const C=fe<0&&ge+fe<=0,U=fe>0&&ge+fe>=ae,J=fe<0&&(Ae<=0||C&&We===0)||fe>0&&(Ae>=ae||U&&We===0);return J&&(E.residual=0),{actualDelta:We,atBoundary:J}},[]),S=t.useCallback(E=>{const M=e.current,$=n.current;if(!u.current){R();return}if(!$.active||$.direction===0){R();return}const B=f.current??E,F=Math.max((E-B)/1e3,0),me=Math.min(F,Hn);if(f.current=E,me<=0){a.current=window.requestAnimationFrame(S);return}const oe=$n({offsetX:$.offsetX,offsetY:$.offsetY,maxDistance:M.maxDistance,x:M.xSpeedParams,y:M.ySpeedParams}),ae=I(p.current,oe.x,me,M.getHx,M.getMaxHx,We=>M.applyHxRef.current(M.getHx()+We));ae.actualDelta!==0&&(M.pendingColAnchorRef.current=null);const fe=I(x.current,oe.y,me,M.getVy,M.getMaxVy,M.applyVy),ge=M.getMaxHx()<=0||ae.atBoundary||$.offsetX===0,Ae=M.getMaxVy()<=0||fe.atBoundary||$.offsetY===0;if(ge&&Ae){R();return}a.current=window.requestAnimationFrame(S)},[R,I]),z=t.useCallback(()=>{a.current===null&&(f.current=null,p.current={residual:0,direction:0},x.current={residual:0,direction:0},a.current=window.requestAnimationFrame(S))},[S]),O=t.useCallback(()=>{n.current={...yn},o(!1),s.current?.reset(),R()},[R]),Z=t.useCallback(E=>{n.current=E,o(E.active),E.active&&E.direction!==0?z():R()},[z,R]),{enabled:ne,xExtentFreshness:ke,yExtentFreshness:X}=r;return t.useEffect(()=>{const E=n.current;!E.active||E.direction===0||z()},[ke,X,z]),t.useEffect(()=>{const E=()=>{O()};return window.addEventListener(Nr,E),()=>{window.removeEventListener(Nr,E)}},[O]),t.useEffect(()=>{if(!ne)return;const E=M=>{if(!n.current.active||n.current.pointerId===M.pointerId)return;const $=M.target;if(!($ instanceof Node)){O();return}s.current?.getElement()?.contains($)||O()};return document.addEventListener("pointerdown",E,!0),()=>{document.removeEventListener("pointerdown",E,!0)}},[ne,O]),t.useEffect(()=>{ne||O()},[ne,O]),t.useLayoutEffect(()=>(u.current=!0,()=>{u.current=!1,R()}),[R]),{isTapActive:i,handleTapCircleDragChange:Z,tapCircleHandleRef:s}},it=(r,e)=>e<=0?0:Q(r,0,e-1),In=r=>({top:Math.max(0,r?.top??0),bottom:Math.max(0,r?.bottom??0)}),xt=(r,e)=>r<=e?0:r-e,pr=(r,e)=>r<=0?0:r+e,Lr=1e3,sn=2e3,Wn=1048576,Yt=2**-10,Cn=r=>r==="center"?null:r==="bottom"?"end":"start",Pn=r=>r!==null&&r.panePosition<=0?null:r,Vs=2e3,Ur=(r,e,n)=>r==="top"?e>Yt:e<n-Yt,Ds=(r,e,n)=>{if(Ur(r,e,n))return r;const s=r==="top"?"bottom":"top";return Ur(s,e,n)?s:null},zs=Object.freeze({top:0,bottom:0}),_s=(r,e,n,s)=>{const i=e+s.top,o=e+n-s.bottom;return r.top>=i-Yt&&r.bottom<=o+Yt?null:r.top<i||r.bottom-r.top>o-i?{align:"top",offset:s.top}:{align:"bottom",offset:-s.bottom}},Os=(r,e,n)=>r<=Yt?"start":r>=e-Yt?"end":n!==null&&Math.abs(r-n.panePosition)<=Yt?n.edge:"none",Fs=({translateY:r,snapEdge:e,children:n,boundaryRef:s})=>{const{ratio:i,attach:o}=Dn("[VirtualScroll] the items wrapper"),a=i===null?r:An(r,i,e);return V.jsx("div",{ref:s,className:"aqvs-items-boundary",children:V.jsx("div",{ref:o,className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${a}px)`,willChange:"transform"},children:n})})},Hs=40,$r=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},Pr=(r,e,n)=>{const s=n-1,i=r.findIndexAtOrAfter(e,Qe);if(i.index===-1||i.index>s||i.cumulative===void 0||i.currentValue===void 0){const o=r.prefixSum(s,Qe);return{index:s,top:o.cumulative-o.currentValue}}return i.cumulative===e&&i.index<s?{index:i.index+1,top:i.cumulative}:{index:i.index,top:i.cumulative-i.currentValue}},Xs=(r,e,n,s,i,o)=>{const a=$r(s);if(a===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const u=X=>X<0n?0n:X>=a?a-1n:X,f=Pr(o,r,s);let p=u($r(f.index));const x=f.top-r,R=X=>{const E=Number(X);if(!Number.isSafeInteger(E))return null;const{cumulative:M}=o.prefixSum(E,Qe);if(!Number.isFinite(M))return null;const{index:$}=o.findIndexAtOrAfter(M+.5,Qe);if($===-1)return null;const B=$r($);return B>X?B:null},I=(X,E)=>{let M=E,$=X,B=X,F=0;for(;$<a&&M<e;){const me=Number($),oe=i(me);if(M+=oe,B=$,$+=1n,!Number.isFinite(oe)||oe<0)break;if(oe===0){if(F+=1,F>Lr){const ae=R(B);if(ae!==null&&ae>$)$=ae,F=0;else if(ae!==null&&ae===$&&i(Number($))>0)F=0;else break}}else F=0}return{height:M,end:B}};let{height:S,end:z}=I(p,x);if(S<e&&p>0n){let X=p,E=S+Math.abs(Math.min(0,x)),M=0;for(;X>0n&&E<e;){X-=1n;const B=Number(X),F=i(B);if(E+=F,!Number.isFinite(F)||F<0)break;if(F===0){if(M+=1,M>Lr){if(!Number.isSafeInteger(B))break;const{cumulative:me}=o.prefixSum(B,Qe),{index:oe}=o.findIndexAtOrAfter(me-.5,Qe),ae=oe===-1?-1n:$r(oe);if(ae>=0n&&ae<X)X=ae+1n,M=0;else if(ae===X&&X>=1n&&i(Number(X-1n))>0)M=0;else break}}else M=0}p=u(X);const $=I(p,0);S=$.height,z=$.end}const O=u(p),Z=u(z),ne=u(O-BigInt(Math.max(0,n))),ke=u(Z+BigInt(Math.max(0,n)));return{renderingStartIndex:it(Number(ne),s),renderingEndIndex:it(Number(ke),s),visibleStartIndex:it(Number(O),s),visibleEndIndex:it(Number(Z),s)}},Un=(r,e,n,s,i,o,a)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const f=Number.isFinite(a)?Math.min(Math.max(0,r),a):Math.max(0,r);if(s>=Number.MAX_SAFE_INTEGER)return Xs(f,e,n,s,i,o);const p=Pr(o,f,s);let x=p.index,R=p.top-f;const I=R,S=(X,E)=>{let M=X,$=E,B=0;for(;M<s&&$<e;){const F=i(M);if($+=F,M++,!Number.isFinite(F)||F<0)break;if(F===0){if(B++,B>Lr){const{cumulative:me}=o.prefixSum(M-1,Qe),{index:oe}=Number.isFinite(me)?o.findIndexAtOrAfter(me+.5,Qe):{index:-1};if(oe>M)M=oe,B=0;else if(oe===M&&i(M)>0)B=0;else break}}else B=0}return{cursor:M,height:$}},z=S(x,R);let O=z.cursor;if(R=z.height,R<e&&x>0){let X=R+Math.abs(Math.min(0,I)),E=x-1,M=0;for(;E>=0&&X<e;){const B=i(E);if(X+=B,!Number.isFinite(B)||B<0){E--;break}if(B===0){if(M++,M>Lr){const{cumulative:F}=o.prefixSum(E,Qe),{index:me}=o.findIndexAtOrAfter(F-.5,Qe);if(me!==-1&&me<E){E=me,M=0;continue}if(me===E&&E>=1&&i(E-1)>0)M=0;else{E--;break}}}else M=0;E--}x=it(E+1,s);const $=S(x,0);O=$.cursor,R=$.height}const Z=it(x-n,s),ne=it(Math.max(O-1,x),s),ke=it(ne+n,s);return{renderingStartIndex:Z,renderingEndIndex:ke,visibleStartIndex:x,visibleEndIndex:ne}},kn=(r,e,n)=>{const s=Math.max(0,e),i=t.useRef({last:0,id:null,arg:null}).current;return t.useEffect(()=>()=>{if(i.id!==null&&(cancelAnimationFrame(i.id),i.id=null),i.arg!==null&&r.current){try{n(r.current,i.arg)}catch(o){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",o)}i.arg=null}},[i,r,n]),t.useCallback(o=>{if(i.arg=o,i.id!==null)return;const a=u=>{if(i.id=null,i.arg===null)return;const f=u-i.last;if(s===0||i.last===0||f>=s){if(r.current)try{n(r.current,i.arg)}catch(p){console.error("[useThrottledInvoker] Error invoking callback",p)}i.arg=null,i.last=u}i.arg!==null&&(i.id=requestAnimationFrame(a))};i.id=requestAnimationFrame(a)},[s,n,r,i])},$s=t.memo(({index:r,top:e,height:n,item:s,children:i,clipItemHeight:o,enableKeyboardNavigation:a,onKeyDown:u,onEscapeKeyDown:f,onFocus:p,registerItemRef:x})=>{const R=t.useCallback(Z=>x(r,Z),[r,x]),I=t.useCallback(Z=>u(Z,r),[r,u]),S=t.useCallback(Z=>f?.(Z,r),[r,f]),z=t.useCallback(()=>p(r),[r,p]),O=t.useCallback(Z=>{Z.currentTarget.focus({preventScroll:!0})},[]);return V.jsx("div",{ref:R,"data-index":r,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:n,overflow:o?"hidden":void 0},tabIndex:a?-1:void 0,onPointerDown:a?O:void 0,onKeyDownCapture:a?I:void 0,onKeyDown:a&&f?S:void 0,onFocusCapture:a?z:void 0,children:i(s,r)})}),Bs=({itemCount:r,getItem:e,getItemKey:n,getItemHeight:s,viewportSize:i,overscanCount:o=15,className:a,testId:u,onScroll:f,onRangeChange:p,onScrollAdjust:x,children:R,background:I,initialScrollIndex:S,initialScrollOffset:z,initialScrollAnchor:O,callbackThrottleMs:Z=5,contentInsets:ne,onItemFocus:ke,scrollBarOptions:X,behaviorOptions:E,onWheelHorizontal:M,onPanHorizontal:$,horizontalKeyInputs:B,horizontalKeyStep:F=Hs,contentProps:me,liveRegion:oe,locale:ae,labels:fe},ge)=>{const{width:Ae,enableThumbDrag:We,enableTrackClick:C,enableArrowButtons:U,enableArrowButtonTabStops:J,enableScrollToTopBottomButtons:Ve,renderThumbOverlay:ce,tapScrollCircleOptions:ye}=X??{},vt=J===!1,te=t.useMemo(()=>fn(ae,fe),[ae,fe]),{enablePointerDrag:Je,pointerDragInputs:pt,enableKeyboardNavigation:be=!0,enableEscapeRowReturn:Ue=!1,wheelSpeedMultiplier:Ce,inertiaOptions:Ge,overscrollBehavior:Ke,clipItemHeight:It=!1,resetOnGetItemHeightChange:xe=!1}=E??{},[Rt,De]=t.useState(0),P=i??Rt,et=t.useCallback(c=>{De(h=>h===c?h:c)},[]),L=t.useRef(null),lt=t.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),D=t.useRef(O&&r>0?{index:Q(Math.trunc(O.index),0,r-1),align:"top",offset:-Math.max(0,O.offsetPx??0)}:null),Pe=t.useRef(!1),ct=t.useRef(!0);t.useEffect(()=>{if(ct.current){ct.current=!1;return}xe&&(D.current=null)},[xe,s]);const A=t.useMemo(()=>In(ne),[ne]),[ut]=t.useState(()=>{const h=O?.index??S,m=typeof h=="number"&&Number.isFinite(h)?Math.max(0,Math.trunc(h)):0;return{from:Math.max(0,m-50),to:m+50}}),Ct=t.useMemo(()=>({sampleRange:ut,resetOnValueFnChange:xe,materialize:!0}),[xe,ut]),T=gn(r,s,Ct),{revision:Dt,change:dt}=Yn(T),[ze]=t.useState(()=>{let c=0,h=0;if(O&&r>0){const m=Q(Math.trunc(O.index),0,r-1),k=Math.max(0,O.offsetPx??0),j=Q(m-o*2,0,r-1),G=Q(m+o*2,0,r-1),K=m>0||k>0?{materializeOption:{materialize:!0,ranges:[{from:j,to:G}]}}:void 0,{cumulative:se,currentValue:he}=T.prefixSum(m,K),st=Math.max(se-he+k,0);c=pr(st,A.top),h=T.getTotal()}else if(typeof S=="number"){const m=Q(S,0,r-1),k=Q(m-o*2,0,r-1),j=Q(m+o*2,0,r-1),G=S>0?{materializeOption:{materialize:!0,ranges:[{from:k,to:j}]}}:void 0,{cumulative:K,currentValue:se}=T.prefixSum(S,G),he=Math.max(K-se,0);c=pr(he,A.top),h=T.getTotal()}else typeof z=="number"&&(c=pr(Math.max(z,0),A.top)),h=T.getTotal();return{position:c,total:h}}),[gt,zt]=t.useState(ze.position),[b,q]=t.useState(ze.total),[ee,ue]=t.useState(()=>O&&r>0||typeof S=="number"?Pn({edge:"start",panePosition:ze.position}):null),le=t.useRef(ee),Ie=t.useRef(b),Me=t.useCallback(c=>{Ie.current!==c&&(Ie.current=c,q(c))},[]),ve=t.useCallback(c=>{const h=le.current,m=Pn(c);h===m||h!==null&&m!==null&&h.edge===m.edge&&h.panePosition===m.panePosition||(le.current=m,ue(m))},[]),tt=t.useCallback((c,h)=>{const m=le.current;m===null||Math.abs(m.panePosition-c)>Yt||ve({edge:m.edge,panePosition:h})},[ve]),_e=t.useCallback(()=>{le.current!==null&&ve(null)},[ve]),Y=t.useRef(ze.position),ft=t.useRef(A.top),pe=t.useRef(f??void 0),Te=t.useRef(p??void 0),Ne=t.useRef(x),Mt=t.useRef(M),qe=(B?.length??0)>0,Oe=!!M;t.useEffect(()=>{qe&&(be||_.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),Oe||_.warn("[VirtualScroll] horizontalKeyInputs is set but onWheelHorizontal is missing; horizontal keyboard scrolling is disabled because the package does not own the horizontal axis."),Number.isFinite(F)&&F>0||_.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${F}. Horizontal arrow keys are left untouched.`))},[qe,Oe,be,F]);const Ze=t.useRef(new Map),v=t.useRef(null),y=t.useRef(null),[$e,Ee]=t.useState(null),[Ye,ot]=t.useState(!1),Fe=t.useRef(null),re=t.useRef(null),He=t.useCallback(()=>{re.current!==null&&(clearTimeout(re.current),re.current=null),Fe.current!==null&&(Fe.current=null,ot(!1))},[]),jt=t.useCallback(c=>{Fe.current=c,Ee(c),ot(!0),re.current!==null&&clearTimeout(re.current),re.current=setTimeout(He,Vs)},[He]),lr=t.useRef(null),Wt=t.useRef(null),Ut=t.useRef(null),_t=t.useCallback(()=>{const c=lr.current,h=Wt.current,m=Ut.current;if(c===null||h===null||m===null||c.dataset.visible!=="true")return zs;const k=jr(c,"y"),j=m.getBoundingClientRect().top,G=h.getBoundingClientRect(),K=(G.top-j)/k,se=(G.bottom-j)/k;return K+se<P?{top:Q(se,0,P),bottom:0}:{top:0,bottom:Q(P-K,0,P)}},[P]),Pt=t.useRef(!1),rt=t.useRef(0),rr=t.useRef(!1),cr=t.useRef(!1),Ot=t.useRef(r);Ot.current!==r&&(Ot.current=r,cr.current=!0),t.useLayoutEffect(()=>{pe.current=f??void 0,Te.current=p??void 0,Ne.current=x,Mt.current=M},[p,f,x,M]);const Gt=t.useCallback(c=>{if(be&&c&&typeof c.focus=="function")try{c.focus({preventScroll:!0})}catch{c.focus()}},[be]),ur=t.useCallback((c,{position:h,totalHeight:m})=>{c(h,m)},[]),Kt=kn(pe,Z,ur),dr=t.useCallback((c,h)=>{c(h)},[]),Ft=kn(Te,Z,dr),d=t.useRef(A.top);d.current=A.top;const N=t.useRef(Kt);N.current=Kt,t.useEffect(()=>(Pe.current=!1,()=>{Pe.current=!0,re.current&&(clearTimeout(re.current),re.current=null)}),[]),t.useEffect(()=>{be||(Ze.current.clear(),v.current=null,y.current=null)},[be]);const H=t.useCallback((c,h)=>{if(!h){Ze.current.delete(c);return}be&&(Ze.current.set(c,h),v.current===c&&(v.current=null,y.current=c,Gt(h)))},[be,Gt]),de=.01,Re=t.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:ze.position}),Be=t.useCallback(()=>{const c=Re.current;c.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(c.rafId),c.rafId=null,c.loopActive=!1,c.idleFrames=0},[]);t.useEffect(()=>()=>{Be()},[Be]);const bt=t.useRef(()=>{}),je=t.useCallback(()=>{const c=Re.current;c.rafId=null;const h=Y.current,m=xt(h,d.current),k=T.getTotal();if(zt(G=>Math.abs(G-h)<de?G:h),Math.abs(c.lastRenderedPosition-h)>=de?(N.current({position:m,totalHeight:k}),c.lastRenderedPosition=h,c.idleFrames=0):c.idleFrames+=1,c.idleFrames>=2){Be();return}if(typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(G=>bt.current(G));return}c.loopActive=!1},[T,Be]);bt.current=je;const Ht=t.useCallback(()=>{const c=Re.current;if(c.idleFrames=0,!c.loopActive){if(c.loopActive=!0,typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(je);return}c.loopActive=!1}},[je]),Se=t.useCallback((c,h)=>{const m=h?.immediate??!1,k=xt(c,A.top);if(Y.current=c,m){Re.current.lastRenderedPosition=c,Re.current.idleFrames=0,zt(c),Kt({position:k,totalHeight:T.getTotal()});return}Ht()},[Ht,T,A.top,Kt]),nt=t.useCallback((c,h=0)=>{const m=L.current;if(!m)return c;const k=m.getScrollPosition();rt.current+=1;const j=m.getContentSize()+h,G=m.getViewportSize(),K=m.scrollTo(c,{contentSize:j,viewportSize:G});return K===k&&(rt.current=Math.max(0,rt.current-1)),Math.abs(K-c)>.5&&(rr.current=!0),K},[]),ht=t.useCallback((c,h)=>{const m=L.current;if(m===null){h();return}const k=m.getScrollPosition();h();const j=Ne.current;if(j===void 0)return;const G=xt(m.getScrollPosition(),d.current),K=G-xt(k,d.current);K!==0&&j({position:G,delta:K,cause:c})},[]),Zt=t.useRef(!1);t.useEffect(()=>{if(!Zt.current)if(Zt.current=!0,O==null&&typeof S!="number"&&typeof z=="number"){const c=pr(Math.max(z,0),A.top),h=Math.abs(c-Y.current)>.5;Se(c,{immediate:!0}),h&&L.current?.scrollTo(c)}else Se(Y.current,{immediate:!0})},[O,S,z,A.top,Se]),t.useEffect(()=>{const c=T.getTotal();if(b!==c){Me(c);return}if(rr.current){rr.current=!1;const h=L.current;h&&Math.abs(h.getScrollPosition()-Y.current)>.5&&ht("re-issue",()=>{const m=nt(Y.current);rr.current=!1,Se(m,{immediate:!0})})}},[T,b,r,ht,nt,Se]),t.useEffect(()=>{if(D.current!==null){const{index:c,align:h,offset:m}=D.current,k=it(c,r),{cumulative:j,currentValue:G}=T.prefixSum(k,Qe);if(j!==void 0&&G!==void 0){const K=Math.max(j-G,0);let se=K;h==="bottom"?se=j-P:h==="center"&&(se=K+G/2-P/2),m&&(se-=m),se=Math.max(0,se);const he=Math.max(0,b+A.top+A.bottom-P),st=Math.min(pr(se,A.top),he);Math.abs(st-Y.current)>Yt&&(_.debug("[VirtualScroll] Drift correction",{from:Y.current,to:st,targetIndex:k}),ht("drift",()=>{rt.current===0&&(rt.current+=1),L.current?.scrollTo(st),Se(st,{immediate:!0});const we=Cn(h);ve(we===null?null:{edge:we,panePosition:st})}))}}cr.current=!1},[b,T,r,A.top,ht,ve,Se,P,A.bottom,Me]),t.useEffect(()=>{const c=ft.current;if(c===A.top||(ft.current=A.top,D.current))return;const h=xt(Y.current,c),m=pr(h,A.top);Y.current=m,L.current?.scrollTo(m),Se(m,{immediate:!0})},[A.top,Se]);const Xt=t.useCallback((c,h)=>{if(r===0)return;const m=it(c,r),k=T.get(m),j=h-k,G=dt(()=>T.update(m,h));G!==void 0&&Me(G),_.debug("[VirtualScroll] Updated item size manually",{index:m,size:h,total:G});let K=D.current?D.current.index:null;if(K===null){const se=Y.current,he=In(ne).top,st=xt(se,he);K=Pr(T,st,r).index}if(m<K&&j!==0){const se=Y.current,he=se+j;ht("item-resize",()=>{nt(he,j),Se(he,{immediate:!0}),tt(se,he)}),_.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:se,to:he,causedByIndex:m,delta:j,activeVisibleStartIndex:K})}},[T,r,ht,tt,dt,nt,Se,ne,Me]),at=t.useCallback((c,h)=>{if(!L.current||r===0)return;const m=it(c,r);let k;if(h?.align==="nearest"){const W=h.offset;if(W!==void 0)throw new RangeError(`[VirtualScroll] scrollToIndex: align "nearest" takes no offset (it lands the row at the edge of the band a visible scroll-to-edge pill leaves); received an offset of type ${typeof W}.`);const ie=T.prefixSum(m,Qe),Xe=_s({top:ie.cumulative-ie.currentValue,bottom:ie.cumulative},xt(Y.current,A.top),P,_t());if(Xe===null)return;k=Xe}else k=h;const j=it(m-o*2,r),G=it(m+o*2,r),{cumulative:K,total:se,currentValue:he}=dt(()=>T.prefixSum(m,{materializeOption:{materialize:!0,ranges:[{from:j,to:G}]}}));if(_.debug("[VirtualScroll] Scrolling to index:",m,"ItemBottom:",K,"Total height:",se,"ItemHeight:",he,"safeIndexFrom:",j,"safeIndexTo:",G),!se)return;const st=Math.max(K-he,0);let we=st;k?.align==="bottom"?we=K-P:k?.align==="center"&&(we=st+he/2-P/2),k?.offset&&(we-=k.offset),we=Math.max(0,we);const yt=pr(we,A.top),wt=L.current?.getContentSize()??se+A.top+A.bottom,mt=Math.max(0,wt-P),kt=Math.min(yt,mt);D.current={index:m,align:k?.align,offset:k?.offset};const xr=Cn(k?.align);ve(xr===null?null:{edge:xr,panePosition:kt});const l=!Re.current.loopActive&&Y.current===kt,g=L.current?.getScrollPosition()??-1,w=Math.abs(g-kt)>Yt;Pt.current=!1,rt.current=0,w&&(Pt.current=!0,rt.current+=1,L.current?.scrollTo(kt)),Me(se),l||Se(kt,{immediate:!0}),_.debug("[VirtualScroll] Setting scroll position to:",kt,{original:yt,max:mt})},[T,o,r,A.top,A.bottom,P,dt,_t,ve,Se,Me]),nr=t.useRef(O&&r===0?O:null);t.useEffect(()=>{const c=nr.current;!c||r===0||(nr.current=null,at(Q(Math.trunc(c.index),0,r-1),{align:"top",offset:-Math.max(0,c.offsetPx??0)}))},[r,at]);const Qt=t.useCallback(c=>{if(!L.current||r===0)return;const h=T.getTotal(),m=Q(Math.floor(c),0,h),k=Pr(T,m,r);at(k.index,{offset:k.top-m})},[T,r,at]),Tt=t.useCallback(()=>{if(r===0)return null;const c=xt(Y.current,A.top),h=Pr(T,c,r);return{index:h.index,offsetPx:Math.max(0,c-h.top)}},[T,r,A.top]),sr=t.useCallback(c=>{const h=xt(Y.current,A.top),m=typeof c=="function"?c(h):c;Qt(m);const k=L.current?.getScrollPosition(),j=typeof k=="number"?k:Y.current;return Se(j),xt(j,d.current)},[A.top,Qt,Se]),Jt=t.useCallback(c=>{const h=L.current;if(!h)return xt(Y.current,d.current);const m=h.scrollTo(k=>k+c);return xt(m,d.current)},[]),Et=t.useCallback(c=>L.current?.applyWheel(c)??!1,[]),Gr=t.useCallback((c,h)=>{_.debug("[VirtualScroll] Scroll position changed:",c);const m=Pt.current;m&&(Pt.current=!1);const k=rt.current>0;k&&(rt.current=0);const j=cr.current&&Ot.current===r;if(m||k||j||(D.current=null,_e()),Se(c),!Ve)return;const G=Math.max(0,T.getTotal()+A.top+A.bottom-P),K=Fe.current;if(K!==null&&!Ur(K,c,G)&&He(),m||k)return;const se=c-h;if(_.debug("[VirtualScroll] Scroll diff:",se,"New:",c,"Prev:",h),Math.abs(se)>1){const he=Ds(se>0?"bottom":"top",c,G);he!==null&&(jt(he),_.debug("[VirtualScroll] Showing scroll-to-edge pill:",he))}},[Se,_e,Ve,r,T,A.top,A.bottom,P,He,jt]),St=t.useMemo(()=>xt(gt,A.top),[A.top,gt]),er=t.useMemo(()=>{const c=T.getTotal(),h=Un(St,P,o,r,s,T,c);return _.debug("[VirtualScroll] Calculated rendering range:",()=>({...h,scrollPosition:St,renderingContentSize:c,overscanCount:o,viewportSize:P})),h},[St,P,o,r,s,T,Dt]),{renderingStartIndex:Lt,renderingEndIndex:Le,visibleStartIndex:At,visibleEndIndex:tr}=er,Vt=t.useCallback((c,h)=>{if(!be||r===0)return;const m=it(c,r),k=h?.ensureVisible??!0;k&&at(m,{align:"nearest"});const j=Ze.current.get(m);if(j){v.current=null,y.current=m,Gt(j);return}k&&(v.current=m)},[be,r,at,Gt]),Ar=t.useCallback((c,h)=>{if(!(!be||c.defaultPrevented)&&!(c.altKey||c.metaKey||c.ctrlKey)&&c.target===c.currentTarget&&!c.currentTarget.isContentEditable){if(c.key==="ArrowLeft"||c.key==="ArrowRight"){const m=Mt.current;if(!m||c.shiftKey||!B?.includes("arrow")||!(Number.isFinite(F)&&F>0))return;c.preventDefault(),m(c.key==="ArrowLeft"?-F:F);return}if(c.key==="ArrowDown"){h<r-1&&(c.preventDefault(),Vt(h+1));return}if(c.key==="ArrowUp"){h>0&&(c.preventDefault(),Vt(h-1));return}if(c.key==="PageDown"){if(h<r-1){c.preventDefault();const{visibleStartIndex:m,visibleEndIndex:k}=lt.current,j=Math.max(k-m+1,1),G=Math.max(j,1),K=it(Math.min(h+G,r-1),r);Vt(K)}return}if(c.key==="PageUp"&&h>0){c.preventDefault();const{visibleStartIndex:m,visibleEndIndex:k}=lt.current,j=Math.max(k-m+1,1),G=Math.max(j,1),K=it(h-G,r);Vt(K)}}},[be,r,Vt,B,F]),Vr=t.useCallback((c,h)=>{if(c.key!=="Escape"||c.defaultPrevented||c.nativeEvent.isComposing||c.target===c.currentTarget)return;const m=c.target;m instanceof HTMLInputElement||m instanceof HTMLTextAreaElement||m instanceof HTMLSelectElement||m.isContentEditable||(c.preventDefault(),Vt(h))},[Vt]),Dr=t.useCallback(c=>{if(!be)return;const h=it(c,r);v.current=null,y.current=h,ke?.(h)},[be,r,ke]);t.useEffect(()=>{const c=L.current?.getScrollPosition()??0,h=Y.current,m=xt(h,A.top);_.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:Lt,renderingEndIndex:Le,visibleStartIndex:At,visibleEndIndex:tr,scrollPositionState:gt,paneScrollPosition:h,logicalScrollPosition:m,contentSize:b,scrollPaneScrollPosition:c})),Ft({renderingStartIndex:Lt,renderingEndIndex:Le,visibleStartIndex:At,visibleEndIndex:tr,scrollPosition:m,totalHeight:b})},[b,Le,Lt,A.top,Ft,gt,tr,At]);const Mr=t.useCallback(()=>{if(!Ve)return null;const c=Ye,h=$e==="top",m=c&&!vt?0:-1;return V.jsx("div",{ref:lr,className:"aqvs-scroll-to-edge-overlay","data-visible":c,inert:!c,"aria-hidden":vt?!0:void 0,onPointerDown:vt?Fn:void 0,children:h?V.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:V.jsx("button",{ref:Wt,type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:m,onClick:k=>{k.stopPropagation(),Pt.current=!0,at(0),He()},children:te.scrollToTop})}):V.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:V.jsx("button",{ref:Wt,type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:m,onClick:k=>{k.stopPropagation(),Pt.current=!0,at(r-1),He()},children:te.scrollToBottom})})})},[Ve,vt,Ye,$e,at,He,r,te]),gr=t.useRef(0),{visibleItems:fr,renderAnchor:br}=t.useMemo(()=>{if(r===0)return{visibleItems:V.jsx("div",{className:"aqvs-no-items-container",children:V.jsx("div",{className:"aqvs-no-items-text",children:te.noItems})}),renderAnchor:0};const c=it(Lt,r),h=it(Le,r),{cumulative:m,currentValue:k}=T.prefixSum(c,Qe),j=m-k;Number.isFinite(j)&&Math.abs(j-gr.current)>Wn&&(gr.current=j);const G=gr.current,K=[],se=[];let he=0,st=j;for(let we=c;we<=h;we++){if(se.length>=sn){_.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:sn,safeRenderingStartIndex:c,safeRenderingEndIndex:h});break}const yt=s(we),wt=T.get(we),mt=yt-wt;mt!==0&&K.push({index:we,value:yt});const kt=st+he,xr=n?n(we):we;se.push(V.jsx($s,{index:we,top:kt-G,height:yt,item:e(we),clipItemHeight:It,enableKeyboardNavigation:be,onKeyDown:Ar,onEscapeKeyDown:Ue?Vr:void 0,onFocus:Dr,registerItemRef:H,children:R},xr)),he+=mt,st+=wt}return K.length>0&&Promise.resolve().then(()=>{if(Pe.current)return;let we=0;for(const mt of K)if(mt.index<At){const kt=T.get(mt.index);we+=mt.value-kt}dt(()=>T.updates(K));const yt=T.getTotal();Me(yt),_.debug("[VirtualScroll] Updated heights for items",K,"New total height:",yt);const wt=L.current?.getScrollPosition()??Y.current;if(we!==0){const mt=wt+we;ht("reconciliation",()=>{nt(mt,we),Se(mt,{immediate:!0}),tt(wt,mt)}),_.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:wt,to:mt,shiftAmount:we})}else wt!==Y.current&&Se(wt)}),{visibleItems:se,renderAnchor:G}},[ht,tt,dt,R,It,be,r,T,e,n,s,Dr,Ar,Ue,Vr,nt,H,Le,Lt,te,Dt,Se,At,Me]),Kr=t.useCallback(c=>{const h=Z>0,m=Math.abs(c-gt),k=h&&m>.5?gt:c,j=xt(k,A.top);if(_.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:c,effectiveScrollPosition:j,renderingStartIndex:Lt,renderingEndIndex:Le,itemCount:r,viewportSize:P,callbackThrottleMs:Z,diff:m,rawEffectiveScrollPosition:k})),r===0)return fr;const G=A.top+br-k,K=T.getTotal(),se=Os(k,K+A.top+A.bottom-P,ee),he=A.bottom>0?V.jsx("div",{className:"aqvs-bottom-inset",style:{top:K-br,height:A.bottom}},"virtualscroll-bottom-inset"):null;return _.debug("[VirtualScroll] Rendering items",()=>({containerTop:G,snapEdge:se,logicalScrollPosition:St,resolvedInsets:A,effectiveScrollPosition:j})),V.jsxs(Fs,{translateY:G,snapEdge:se,boundaryRef:Ut,children:[fr,he]})},[ee,Z,r,T,St,br,Le,Lt,A,gt,P,fr]),zr=t.useMemo(()=>({renderingStartIndex:er.renderingStartIndex,renderingEndIndex:er.renderingEndIndex,visibleStartIndex:er.visibleStartIndex,visibleEndIndex:er.visibleEndIndex,scrollPosition:St,totalHeight:T.getTotal()}),[er,St,T,Dt]);t.useEffect(()=>{lt.current=zr},[zr]);const[_r,Or]=t.useState(""),Fr=t.useRef(oe);t.useLayoutEffect(()=>{Fr.current=oe},[oe]);const ir=oe?.debounceMs??400,hr=Number.isFinite(ir)&&ir>=0,mr=oe!==void 0;t.useEffect(()=>{mr&&!hr&&_.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${ir}. Announcements are disabled.`)},[mr,hr,ir]),t.useEffect(()=>{if(!(mr&&hr)){Or("");return}const c=setTimeout(()=>{const h=Fr.current?.format;if(!h)return;const m=h({visibleStartIndex:At,visibleEndIndex:tr,itemCount:r});Or(m)},ir);return()=>clearTimeout(c)},[mr,hr,ir,At,tr,r]),t.useImperativeHandle(ge,()=>({getScrollPosition:()=>{const c=L.current?.getScrollPosition();return typeof c=="number"?xt(c,d.current):-1},getContentSize:()=>L.current?.getContentSize()??-1,getViewportSize:()=>L.current?.getViewportSize()??-1,scrollTo:sr,scrollBy:Jt,applyWheel:Et,scrollToIndex:at,getFenwickTreeTotalHeight:()=>T.getTotal(),getFenwickSize:()=>T.getSize(),focusItemAtIndex:Vt,getRange:()=>lt.current,getScrollAnchor:Tt,updateItemSize:Xt}),[sr,Jt,Et,at,T,Vt,Tt,Xt]);const Tr=T.getTotal()+A.top+A.bottom,Er=Math.max(0,Tr-P);t.useLayoutEffect(()=>{const c=Fe.current;c!==null&&!Ur(c,Y.current,Er)&&He()},[Er,He]);const yr=V.jsx(qn,{ref:L,contentSize:Tr,viewportSize:i,onViewportSizeChange:et,className:a,testId:u,onScroll:Gr,background:I,tapScrollCircleOptions:ye,inertiaOptions:Ge,overscrollBehavior:Ke,itemCount:r,scrollBarWidth:Ae,enableThumbDrag:We,enableTrackClick:C,enableArrowButtons:U,enableArrowButtonTabStops:J,enablePointerDrag:Je,pointerDragInputs:pt,renderThumbOverlay:ce,wheelSpeedMultiplier:Ce,onWheelHorizontal:M,onPanHorizontal:$,contentInsets:A,contentProps:me,visibleStartIndex:At,visibleEndIndex:tr,renderOverlay:Mr,initialScrollPosition:ze.position,locale:ae,labels:fe,children:Kr});return mr?V.jsxs(V.Fragment,{children:[yr,V.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:_r})]}):yr},Gn=t.forwardRef(Bs),wr=262144,Nn=3,Kn=32768,on=128,an=128,ln=128,cn=128,tn=10,qs=(r,e)=>Math.max(1,Math.floor((r??Kn)/Math.max(1,e))),Ys=(r,e,n,s,i)=>{let o=0,a=0,u=Math.max(0,Math.min(s,n-1));for(;u<n&&o<r&&a<sn;)o+=e(u),a+=1,u+=1;return Math.max(1,a+2*i+2)},Br=(r,e,n)=>{if(!(Number.isInteger(r)&&r>=0&&r<=wr)){const s=e==="row"?"getRowHeight":"getColWidth",i=e==="row"?"rows":"columns";throw new RangeError(`[VirtualGrid] ${s}(${n}) returned ${r} — must be an integer in [0, ${wr}] (0 = hidden). Round fractional sizes to whole pixels and split content larger than ${wr} px across several ${i}: a larger track could push cell positions past the 2^25 px layout-coordinate limit of browsers.`)}return r},js=(r,e,n,s,i,o,a,u)=>{const f=Un(r,e,n,s,i,o,a);if(s===0)return{renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0};const p=Q(f.renderingStartIndex,0,s-1),{cumulative:x,currentValue:R}=o.prefixSum(p,Qe),I=x-R,S=Number.isFinite(I)&&Math.abs(I-u)>Wn?I:u;return{renderingColStart:f.renderingStartIndex,renderingColEnd:f.renderingEndIndex,visibleColStart:f.visibleStartIndex,visibleColEnd:f.visibleEndIndex,colAnchor:S}},Ln=[],Ws=(r,e,n,s,i)=>{const o=[],a=[],u=s.prefixSum(r,Qe);let f=u.cumulative-u.currentValue,p=0,x=r;for(;x<=e;){if(o.length>=i)return{columns:o,widthUpdates:a,truncated:e-x+1};const R=n(x),I=s.get(x);if(R!==I&&a.push({index:x,value:R}),R>0){o.push({col:x,left:f,width:R}),f+=I,p=0,x+=1;continue}if(f+=I,p+=1,x+=1,p>Lr){const S=s.findIndexAtOrAfter(f+.5,Qe);if(S.index===-1||S.index<=x||!Number.isSafeInteger(S.index))break;const z=s.prefixSum(S.index,Qe);f=z.cumulative-z.currentValue,x=S.index,p=0}}return{columns:o,widthUpdates:a,truncated:0}},Us=(r,e,n)=>{const s=[],i=[];let o=0;for(let a=0;a<r;a+=1){const u=e(a),f=n.get(a);u!==f&&i.push({index:a,value:u}),u>0&&s.push({col:a,left:o,width:u}),o+=f}return{columns:s,widthUpdates:i,width:o}},Gs=(r,e,n,s)=>{const i=[],o=[];let a=0;for(let u=r-e;u<r;u+=1){const f=n(u),p=s.get(u);f!==p&&o.push({index:u,value:f}),f>0&&i.push({col:u,left:a,width:f}),a+=p}return{columns:i,widthUpdates:o,width:a}},qr=(r,e,n)=>Math.min(r,Math.max(0,n-e)),Ks={renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0,key:"0:0:0"},Zs=({rowCount:r,colCount:e,getRowHeight:n,getColWidth:s,getCell:i,getCellKey:o,children:a,getCellProps:u,getRowProps:f,contentProps:p,background:x,contentInsets:R,onRowFocus:I,frozenLeadingCols:S=0,frozenLeadingRows:z=0,frozenTrailingCols:O=0,frozenTrailingRows:Z=0,horizontalKeyInputs:ne,horizontalKeyStep:ke,onScroll:X,onRangeChange:E,onRenderTruncated:M,callbackThrottleMs:$,initialScrollAnchor:B,overscanRows:F=Nn,overscanCols:me=Nn,viewportSize:oe,__maxRenderedCells:ae,behaviorOptions:fe,scrollBarOptions:ge,liveRegion:Ae,locale:We,labels:C,className:U,testId:J},Ve)=>{const ce=t.useRef(null),ye=t.useRef(null),vt=t.useRef(n);vt.current=n;const te=t.useRef(s);te.current=s;const Je=fe?.resetOnGetColWidthChange===!0,be=fe?.resetOnGetItemHeightChange===!0?n:null,Ue=Je?s:null,Ce=t.useCallback(l=>Br(vt.current(l),"row",l),[be]),Ge=t.useCallback(l=>Br(te.current(l),"col",l),[Ue]),Ke=fe?.defaultColWidth,It=t.useMemo(()=>{if(Ke!==void 0&&!(Number.isInteger(Ke)&&Ke>=0&&Ke<=wr))throw new RangeError(`[VirtualGrid] behaviorOptions.defaultColWidth must be an integer in [0, ${wr}], received ${Ke}.`);return{resetOnValueFnChange:Je,baseValue:Ke}},[Je,Ke]),xe=gn(e,Ge,It),{revision:Rt,change:De}=Yn(xe);if(!(Number.isInteger(S)&&S>=0&&S<=on))throw new RangeError(`[VirtualGrid] frozenLeadingCols must be an integer in [0, ${on}], received ${S}.`);const P=Math.min(S,e),et=t.useRef(0);if(!(Number.isInteger(O)&&O>=0&&O<=ln))throw new RangeError(`[VirtualGrid] frozenTrailingCols must be an integer in [0, ${ln}], received ${O}.`);const L=Math.min(O,e-P),lt=t.useRef(0);if(!(Number.isInteger(z)&&z>=0&&z<=an))throw new RangeError(`[VirtualGrid] frozenLeadingRows must be an integer in [0, ${an}], received ${z}.`);const D=Math.min(z,r);if(!(Number.isInteger(Z)&&Z>=0&&Z<=cn))throw new RangeError(`[VirtualGrid] frozenTrailingRows must be an integer in [0, ${cn}], received ${Z}.`);const Pe=Math.min(Z,r-D),ct=Math.max(0,r-D-Pe),A=t.useRef(!1),ut=t.useRef(0),Ct=t.useRef(0),[T,Dt]=t.useState(0),{frozenRows:dt,frozenHeight:ze}=t.useMemo(()=>{if(D===0)return{frozenRows:[],frozenHeight:0};const l=[];let g=0;for(let w=0;w<D;w+=1){const W=Ce(w);W>0&&l.push({row:w,top:g,height:W}),g+=W}return{frozenRows:l,frozenHeight:g}},[D,T,Ce]);ut.current=ze;const[gt,zt]=t.useState(0),{trailingRows:b,trailingHeight:q}=t.useMemo(()=>{if(Pe===0)return{trailingRows:[],trailingHeight:0};const l=[];let g=0;for(let w=r-Pe;w<r;w+=1){const W=Ce(w);W>0&&l.push({row:w,top:g,height:W}),g+=W}return{trailingRows:l,trailingHeight:g}},[Pe,r,gt,Ce]);Ct.current=q;const ee=t.useCallback(l=>Ce(l+D),[Ce,D]),ue=t.useRef(I);ue.current=I;const le=I!==void 0,Ie=t.useMemo(()=>le?l=>ue.current?.(l+D):void 0,[D,le]),Me=ze,ve=q,[tt,_e]=t.useState(D),Y=t.useRef(null),ft=t.useRef(!1);if(tt!==D){_e(D),ft.current=!0;const l=ce.current?.getScrollAnchor()??null;Y.current=l===null?null:{row:l.index+tt,offsetPx:l.offsetPx}}const pe=t.useRef(0),Te=t.useRef(0),[Ne,Mt]=t.useState(Ks),qe=t.useRef(Ne);qe.current=Ne;const Oe=t.useRef(0),[Ze,v]=t.useState(()=>xe.getTotal()),y=t.useRef(Ze);y.current=Ze;const $e=t.useCallback(l=>{typeof l=="number"&&Number.isFinite(l)&&(y.current=l,v(l))},[]);t.useLayoutEffect(()=>{const l=xe.getTotal();typeof l=="number"&&Number.isFinite(l)&&l!==y.current&&$e(l)});const Ee=ge?.width??12,Ye=oe===void 0?null:{width:Math.max(0,Math.round(oe.width)-Ee),height:Math.max(0,Math.round(oe.height)-Ee)},[ot,Fe]=t.useState({width:0,height:0}),re=Ye??{width:Math.max(0,ot.width-Ee),height:Math.max(0,ot.height-Ee)},He=t.useRef(re);He.current=re;const jt=re.height>0&&re.height-ze-q<=0;A.current=jt;const lr=Ye!==null,Wt=t.useCallback(l=>{if(ye.current=l,lr)return()=>{ye.current=null};const g=()=>{const W=Math.round(l.clientWidth),ie=Math.round(l.clientHeight);Fe(Xe=>Xe.width===W&&Xe.height===ie?Xe:{width:W,height:ie})};g();const w=new ResizeObserver(g);return w.observe(l),()=>{w.disconnect(),ye.current=null}},[lr]),Ut=t.useCallback(()=>{const l=ye.current;l!==null&&l.style.setProperty("--aqvs-grid-hx-residual",`${Oe.current-pe.current}px`)},[]),_t=t.useCallback(()=>Math.max(0,He.current.width-et.current-lt.current),[]),Pt=t.useCallback(()=>Math.max(0,y.current-et.current-lt.current-_t()),[_t]),rt=t.useCallback(()=>{const l=_t(),g=js(et.current+pe.current,l,me,e,Ge,xe,y.current,qe.current.colAnchor);if(P>0&&(g.renderingColStart=Math.max(g.renderingColStart,P),g.visibleColStart=Math.max(g.visibleColStart,P)),L>0){const W=e-L-1;g.renderingColEnd=Math.min(g.renderingColEnd,W),g.visibleColEnd=Math.min(g.visibleColEnd,W)}(P>0||L>0)&&(l<=0||g.renderingColStart>g.renderingColEnd)&&(g.renderingColStart=e,g.renderingColEnd=e-1,g.visibleColStart=e,g.visibleColEnd=e-1);const w=`${g.renderingColStart}:${g.renderingColEnd}:${g.colAnchor}`;w!==qe.current.key&&Mt({...g,key:w})},[me,e,Ge,xe,P,L,_t]),[rr,cr]=t.useState(0),Ot=t.useRef(null),Gt=t.useCallback(()=>{Ot.current===null&&(Ot.current=requestAnimationFrame(()=>{Ot.current=null,cr(pe.current)}))},[]);t.useEffect(()=>()=>{Ot.current!==null&&cancelAnimationFrame(Ot.current)},[]);const ur=t.useRef(X);ur.current=X;const Kt=t.useRef(E);Kt.current=E;const dr=t.useRef(M);dr.current=M;const Ft=t.useRef(null),[d,N]=t.useState(null),[H,de]=t.useState(re.height);H!==re.height&&(de(re.height),N(null));const Re=B===void 0||r===0?0:Q(Math.trunc(B.row),0,r-1),Be=t.useMemo(()=>{const l=Ft.current?.renderingStartIndex??Re;return Ys(Math.max(0,re.height-ut.current-Ct.current),Ce,r,l,F)},[re.height,Ce,r,Re,F,Me,ve]),bt=d??Be,je=t.useCallback(()=>{const l=Ft.current;if(l===null)return null;const g=qe.current;return{renderingRowStart:l.renderingStartIndex,renderingRowEnd:l.renderingEndIndex,visibleRowStart:l.visibleStartIndex,visibleRowEnd:l.visibleEndIndex,renderingColStart:g.renderingColStart,renderingColEnd:g.renderingColEnd,visibleColStart:g.visibleColStart,visibleColEnd:g.visibleColEnd,scrollX:pe.current,scrollY:Te.current,totalWidth:y.current,totalHeight:l.totalHeight+ut.current+Ct.current}},[]),Ht=t.useCallback(()=>{const l=je();l!==null&&Kt.current?.(l)},[je]),Se=t.useCallback(l=>{const g=Pt(),w=Q(l,0,g);return w!==pe.current&&(pe.current=w,Ut(),rt(),Gt(),ur.current?.({x:w,y:Te.current})),w},[Ut,rt,Gt,Pt]),nt=t.useRef(Se);nt.current=Se,t.useLayoutEffect(()=>{Oe.current=Ne.colAnchor,Ut(),Ht()},[Ne,Ut,Ht]),t.useLayoutEffect(()=>{Ft.current!==null&&Ht()},[ze,q,Ht]);const ht=t.useRef(null),Zt=t.useCallback(l=>{const g=Q(l.col,0,Math.max(0,e-1)),w=xe.prefixSum(g,Qe),W=w.cumulative-w.currentValue,ie=w.currentValue,Xe=_t();return(l.alignX==="end"?W+ie-et.current-Xe:l.alignX==="center"?W+ie/2-et.current-Xe/2:W-et.current)+l.offsetX},[xe,e,_t]),Xt=t.useRef(null),at=t.useCallback(()=>{const l=Xt.current;Xt.current=null,!(l===null||l.length===0)&&$e(De(()=>xe.updates(l)))},[xe,De,$e]),nr=t.useRef({count:0,warned:!1}),{frozenColumns:Qt,frozenWidth:Tt}=t.useMemo(()=>{if(P===0)return nr.current.count=0,nr.current.warned=!1,{frozenColumns:Ln,frozenWidth:0};const{columns:l,widthUpdates:g,width:w}=Us(P,Ge,xe);if(g.length>0){const W=nr.current;W.count>=tn?W.warned||(W.warned=!0,_.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values inside the frozen band; width self-heal is suspended until a converged pass re-arms it (unstable accessor).",{frozenCols:P,pendingUpdates:g.length})):(W.count+=1,Xt.current=[...Xt.current??[],...g],Promise.resolve().then(at))}else nr.current.count=0,nr.current.warned=!1;return{frozenColumns:l,frozenWidth:w}},[P,Rt,Ge,xe,at]);et.current=Tt,t.useLayoutEffect(()=>{P>0?ye.current?.style.setProperty("--aqvs-grid-frozen-width",`${Tt}px`):ye.current?.style.removeProperty("--aqvs-grid-frozen-width")},[Tt,P]);const sr=t.useRef({count:0,warned:!1}),{trailingColumns:Jt,trailingWidth:Et}=t.useMemo(()=>{if(L===0)return sr.current.count=0,sr.current.warned=!1,{trailingColumns:Ln,trailingWidth:0};const{columns:l,widthUpdates:g,width:w}=Gs(e,L,Ge,xe);if(g.length>0){const W=sr.current;W.count>=tn?W.warned||(W.warned=!0,_.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values inside the trailing band; width self-heal is suspended until a converged pass re-arms it (unstable accessor).",{trailingCols:L,pendingUpdates:g.length})):(W.count+=1,Xt.current=[...Xt.current??[],...g],Promise.resolve().then(at))}else sr.current.count=0,sr.current.warned=!1;return{trailingColumns:l,trailingWidth:w}},[L,e,Rt,Ge,xe,at]);lt.current=Et,t.useLayoutEffect(()=>{L>0?ye.current?.style.setProperty("--aqvs-grid-trailing-width",`${Et}px`):ye.current?.style.removeProperty("--aqvs-grid-trailing-width")},[Et,L]);const Gr=t.useMemo(()=>({...ge,tapScrollCircleOptions:{...ge?.tapScrollCircleOptions,enabled:!1}}),[ge]),St=ge?.tapScrollCircleOptions,er=typeof St?.maxSpeedMultiplier=="number",Lt=t.useMemo(()=>({...St,offsetX:St?.offsetX===void 0?En:St.offsetX,offsetY:St?.offsetY===void 0?En:St.offsetY}),[St]),Le=t.useMemo(()=>nn(Lt,Math.max(0,e-P-L)),[Lt,e,P,L]),At=t.useMemo(()=>nn(Lt,ct),[Lt,ct]),tr=Le.enabled,Vt=Math.max(Le.maxVisualDistance,1),Ar={viewportSize:Math.max(0,re.width-Tt-Et),minSpeedMultiplier:Le.minSpeedMultiplier,maxSpeedMultiplier:Le.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:er,curve:Le.maxSpeedCurve},Vr={viewportSize:Math.max(0,re.height-ze-q),minSpeedMultiplier:At.minSpeedMultiplier,maxSpeedMultiplier:At.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:er,curve:At.maxSpeedCurve},Dr=t.useCallback(()=>pe.current,[]),Mr=t.useCallback(()=>{const l=ce.current;return l===null?Te.current:l.getScrollPosition()},[]),gr=t.useCallback(()=>{const l=ce.current;return l===null?0:Math.max(0,Math.max(0,l.getContentSize())-Math.max(0,l.getViewportSize()))},[]),fr=t.useCallback(l=>{const g=ce.current;if(g===null)return Te.current;const w=g.scrollBy(l);return Te.current=w,w},[]),br=Pt()>0||gr()>0,Kr=`${Ze}:${Tt}:${Et}:${re.width}:${Ne.key}`,zr=`${r}:${d??-1}:${ze}:${q}:${re.height}`,{isTapActive:_r,handleTapCircleDragChange:Or,tapCircleHandleRef:Fr}=As({enabled:tr&&br,maxDistance:Vt,xSpeedParams:Ar,ySpeedParams:Vr,applyHxRef:nt,getHx:Dr,getMaxHx:Pt,applyVy:fr,getVy:Mr,getMaxVy:gr,pendingColAnchorRef:ht,xExtentFreshness:Kr,yExtentFreshness:zr}),ir=t.useMemo(()=>Q((_r?1:.8)*Le.opacity,0,1),[_r,Le.opacity]);t.useLayoutEffect(()=>{const l=ht.current;l===null?nt.current(pe.current):nt.current(Zt(l)),rt()},[re.width,Ze,Rt,Tt,Et,rt,Zt]);const hr=t.useRef(!1);t.useLayoutEffect(()=>{if(hr.current||B===void 0||e===0)return;hr.current=!0;const l=Q(Math.trunc(B.col),0,e-1);if(l<P||l>=e-L)return;const g={col:l,alignX:"start",offsetX:Math.max(0,B.offsetX)};ht.current=g,nt.current(Zt(g))},[B,e,Zt,P,L]);const mr=t.useCallback(l=>{Te.current=l,ur.current?.({x:pe.current,y:l})},[]),Tr=t.useCallback(l=>{if(ct===0||A.current)Ft.current={renderingStartIndex:r,renderingEndIndex:r-1,visibleStartIndex:r,visibleEndIndex:r-1,scrollPosition:0,totalHeight:ct===0?0:l.totalHeight},Te.current=0;else{const g=D;Ft.current={renderingStartIndex:l.renderingStartIndex+g,renderingEndIndex:l.renderingEndIndex+g,visibleStartIndex:l.visibleStartIndex+g,visibleEndIndex:l.visibleEndIndex+g,scrollPosition:l.scrollPosition,totalHeight:l.totalHeight},Te.current=l.scrollPosition}N(g=>{const w=Math.max(1,l.renderingEndIndex-l.renderingStartIndex+1);return w===g?g:w}),Ht()},[Ht,D,ct,r]),Er=t.useCallback(l=>{ht.current=null,nt.current(pe.current+l)},[]),yr=qs(ae,bt+dt.length+b.length),c=t.useRef({count:0,warned:!1}),{placedColumns:h,truncatedCols:m}=t.useMemo(()=>{const l=Math.max(0,re.width-Tt-Et);if(e===0||l<=0)return{placedColumns:[],truncatedCols:0};if(Ne.renderingColStart>Ne.renderingColEnd)return{placedColumns:[],truncatedCols:0};const g=Math.max(1,yr-Qt.length-Jt.length),{columns:w,widthUpdates:W,truncated:ie}=Ws(Q(Ne.renderingColStart,0,e-1),Q(Ne.renderingColEnd,0,e-1),Ge,xe,g);if(W.length>0){const Xe=c.current;Xe.count>=tn?Xe.warned||(Xe.warned=!0,_.warn("[VirtualGrid] getColWidth keeps disagreeing with its own previous values; width self-heal is suspended until a converged (zero-deviation) pass re-arms it (unstable accessor — the accessor must be index-stable while the ordering is unchanged).",{window:Ne.key,pendingUpdates:W.length})):(Xe.count+=1,Xt.current=[...Xt.current??[],...W],Promise.resolve().then(at))}else c.current.count=0,c.current.warned=!1;return{placedColumns:w,truncatedCols:ie}},[Ne,e,re.width,Tt,Et,Qt.length,Jt.length,Rt,Ge,xe,yr,at]),k=t.useRef("");t.useEffect(()=>{if(m>0){const l=`${Ne.key}:${m}`;l!==k.current&&(k.current=l,dr.current?.({renderedCells:(h.length+Qt.length+Jt.length)*(bt+dt.length+b.length),droppedCols:m}))}},[m,Ne.key,h.length,Qt.length,Jt.length,bt,dt.length,b.length]);const j=Ne.colAnchor,G=t.useCallback(l=>{const g=f?.(l),w=Ce(l)===0,W=w?null:h.map(({col:ie,left:Xe,width:vr})=>{const $t=u?.(l,ie),Ir={...$t?.style,left:Xe-j,width:vr};return t.createElement("div",{...$t,key:o?o(l,ie):ie,className:Nt.twMerge("aqvs-grid-cell",$t?.className),style:Ir},a(i(l,ie),l,ie))});return P===0&&L===0?V.jsx("div",{...g,className:Nt.twMerge("aqvs-grid-row",g?.className),style:g?.style,children:W}):V.jsxs("div",{...g,"data-aqvs-frozen-row":P>0?"":void 0,className:Nt.twMerge("aqvs-grid-row aqvs-grid-row-frozen-host",g?.className),style:g?.style,children:[w?null:Qt.map(({col:ie,left:Xe,width:vr})=>{const $t=u?.(l,ie),Ir={...$t?.style,left:Xe,width:vr};return t.createElement("div",{...$t,"data-aqvs-frozen-cell":"",key:o?o(l,ie):ie,className:Nt.twMerge("aqvs-grid-cell",$t?.className),style:Ir},a(i(l,ie),l,ie))}),w?null:V.jsx("div",{className:"aqvs-grid-row-scroll",children:V.jsx("div",{className:"aqvs-grid-row-scroll-inner",children:W})}),w||L===0?null:V.jsx("div",{className:"aqvs-grid-row-trailing",children:V.jsx("div",{className:"aqvs-grid-row-trailing-inner",children:Jt.map(({col:ie,left:Xe,width:vr})=>{const $t=u?.(l,ie),Ir={...$t?.style,left:Xe,width:vr};return t.createElement("div",{...$t,"data-aqvs-trailing-cell":"",key:o?o(l,ie):ie,className:Nt.twMerge("aqvs-grid-cell",$t?.className),style:Ir},a(i(l,ie),l,ie))})})})]})},[h,Qt,Jt,P,L,j,f,u,o,i,a,Ce]),[K,se]=t.useState(""),he=t.useRef(null),st=t.useRef(!1),we=t.useRef(Ae);we.current=Ae;const yt=t.useCallback(()=>{const l=we.current;if(l===void 0||st.current)return;const g=l.debounceMs??400;Number.isFinite(g)&&g>=0&&(he.current!==null&&window.clearTimeout(he.current),he.current=window.setTimeout(()=>{he.current=null;const w=je();w!==null&&se(l.buildMessage(w))},g))},[je]),wt=Ae?.debounceMs??400,mt=Number.isFinite(wt)&&wt>=0,kt=Ae!==void 0;t.useEffect(()=>{kt&&!mt&&_.warn(`[VirtualGrid] liveRegion.debounceMs must be a finite number >= 0, received ${wt}. Announcements are disabled.`)},[kt,mt,wt]),t.useEffect(()=>(st.current=!1,()=>{st.current=!0,he.current!==null&&window.clearTimeout(he.current)}),[]),t.useEffect(()=>{yt()},[Ne,yt]);const xr=t.useCallback(l=>{Tr(l),yt()},[Tr,yt]);return t.useImperativeHandle(Ve,()=>({scrollTo:l=>{const g=ce.current;let w=Te.current;l.y!==void 0&&g!==null&&(g.scrollTo(l.y),w=g.getScrollPosition(),Te.current=w);let W=pe.current;return l.x!==void 0&&(ht.current=null,W=nt.current(l.x)),{x:W,y:w}},scrollBy:l=>{const g=l.y!==void 0&&l.y!==0?fr(l.y):Te.current;let w=pe.current;return l.x!==void 0&&l.x!==0&&(ht.current=null,w=nt.current(pe.current+l.x)),{x:w,y:g}},scrollToCell:(l,g,w)=>{const W=ce.current;if(W!==null&&r>0){const ie=Q(Math.trunc(l),0,r-1);ie>=D&&ie<r-Pe&&W.scrollToIndex(ie-D,{align:w?.alignY??"top",offset:w?.offsetY})}if(e>0){const ie=Q(Math.trunc(g),0,e-1);if(ie>=P&&ie<e-L){const Xe={col:ie,alignX:w?.alignX??"start",offsetX:w?.offsetX??0};ht.current=Xe,nt.current(Zt(Xe))}}},getScrollPosition:()=>({x:pe.current,y:Mr()}),getScrollAnchor:()=>{if(r===0||e===0)return null;const l=ce.current?.getScrollAnchor()??null;if(l===null)return null;const g=et.current+pe.current,w=xe.findIndexAtOrAfter(g,Qe);if(w.index===-1)return{row:l.index+D,col:e-1,offsetX:0,offsetY:l.offsetPx};if(w.cumulative===g)return{row:l.index+D,col:Q(w.index+1,0,e-1),offsetX:0,offsetY:l.offsetPx};const W=xe.prefixSum(w.index,Qe);return{row:l.index+D,col:w.index,offsetX:Math.max(0,g-(W.cumulative-W.currentValue)),offsetY:l.offsetPx}},getViewportSize:()=>({width:He.current.width,height:He.current.height}),getContentSize:()=>({width:y.current,height:ce.current===null?0:ut.current+Ct.current+Math.max(0,ce.current.getContentSize())}),getRange:je,updateRowSize:(l,g)=>{Br(g,"row",l),Math.trunc(l)<D?Dt(w=>w+1):Pe>0&&Math.trunc(l)>=r-Pe?zt(w=>w+1):ce.current?.updateItemSize(Math.trunc(l)-D,g)},updateColSize:(l,g)=>{Br(g,"col",l),$e(De(()=>xe.update(Q(Math.trunc(l),0,Math.max(0,e-1)),g)))},getFrozenSize:()=>({cols:P,width:et.current,rows:D,height:ut.current,trailingCols:L,trailingRows:Pe,trailingWidth:lt.current,trailingHeight:Ct.current,trailingVisibleWidth:qr(lt.current,et.current,He.current.width),trailingVisibleHeight:qr(Ct.current,ut.current,He.current.height)}),applyWheel:l=>ce.current?.applyWheel(l)??!1,focusRowAtIndex:(l,g)=>{const w=Math.trunc(l);w<D?ye.current?.querySelector(`[data-aqvs-frozen-band-row="${w}"]`)?.focus():Pe>0&&w>=r-Pe?ye.current?.querySelector(`[data-aqvs-trailing-band-row="${w}"]`)?.focus():ce.current?.focusItemAtIndex(w-D,g)}}),[r,e,xe,De,je,$e,Zt,Mr,fr,P,D,L,Pe]),V.jsxs("div",{ref:Wt,className:Nt.twMerge("aqvs-grid",D>0?"aqvs-grid-has-frozen-rows":"",Pe>0?"aqvs-grid-has-trailing-rows":"",U),"data-testid":J,children:[D>0?V.jsx("div",{className:"aqvs-grid-frozen-rows",style:{height:ze},"data-testid":J?`${J}-frozen-rows`:void 0,children:dt.map(({row:l,top:g,height:w})=>V.jsx("div",{"data-aqvs-frozen-band-row":l,className:"aqvs-grid-frozen-band-row",style:{top:g,height:w,right:Ee},tabIndex:-1,onFocus:()=>I?.(l),children:G(l)},l))}):null,V.jsx("div",{className:"aqvs-grid-main","data-testid":J?`${J}-main`:void 0,children:V.jsx(Gn,{ref:ce,itemCount:jt?0:ct,getItem:l=>l+D,getItemKey:l=>l+D,getItemHeight:ee,overscanCount:F,viewportSize:re.height>0?Math.max(0,re.height-ze-q):void 0,callbackThrottleMs:$,behaviorOptions:fe,scrollBarOptions:Gr,contentProps:p,background:x,contentInsets:R,onItemFocus:Ie,horizontalKeyInputs:ne,horizontalKeyStep:ke,initialScrollAnchor:ft.current?Y.current!==null&&Y.current.row>=D&&ct>0?{index:Y.current.row-D,offsetPx:Y.current.offsetPx}:void 0:B!==void 0&&ct>0&&Math.trunc(B.row)>=D&&Math.trunc(B.row)<r-Pe?{index:Math.trunc(B.row)-D,offsetPx:B.offsetY}:void 0,onScroll:mr,onRangeChange:xr,onWheelHorizontal:Er,onPanHorizontal:Er,locale:We,labels:C,testId:J?`${J}-rows`:void 0,children:G},D)}),Pe>0?V.jsx("div",{className:"aqvs-grid-trailing-rows",style:{height:qr(q,ze,re.height)},"data-testid":J?`${J}-trailing-rows`:void 0,children:V.jsx("div",{className:"aqvs-grid-trailing-rows-inner",style:{height:q},children:b.map(({row:l,top:g,height:w})=>V.jsx("div",{"data-aqvs-trailing-band-row":l,className:"aqvs-grid-trailing-band-row",style:{top:g,height:w,right:Ee},tabIndex:-1,onFocus:()=>I?.(l),children:G(l)},l))})}):null,V.jsx("div",{className:"aqvs-grid-hbar-strip",style:{height:Ee,paddingRight:L>0?Ee+qr(Et,Tt,re.width):Ee},"data-testid":J?`${J}-hbar`:void 0,children:V.jsx(pn,{horizontal:!0,contentSize:Math.max(0,Ze-Tt-Et),viewportSize:Math.max(0,re.width-Tt-Et),scrollPosition:rr,itemCount:Math.max(0,e-P-L),tapScrollCircleOptions:ge?.tapScrollCircleOptions,onScroll:(l,g)=>(ht.current=null,nt.current(typeof l=="function"?l(g):l)),enableThumbDrag:ge?.enableThumbDrag,enableTrackClick:ge?.enableTrackClick,enableArrowButtons:ge?.enableArrowButtons,enableArrowButtonTabStops:ge?.enableArrowButtonTabStops,scrollBarWidth:Ee,locale:We,labels:C})}),tr&&br&&V.jsx("div",{className:"aqvs-grid-tap-circle-wrapper","data-aqvs-grid-tap-circle":"",style:{left:`min(calc(100% - ${Ee+Le.size}px), max(calc(100% - ${Ee}px + ${Le.offsetX}px), calc(75% - ${Le.size/2}px)))`,top:`min(calc(100% - ${Ee+Le.size}px), max(calc(100% - ${Ee}px + ${Le.offsetY}px), calc(75% - ${Le.size/2}px)))`},children:V.jsx(hn,{axis:"xy",ref:Fr,className:Nt.twMerge("aqvs-grid-tap-circle",Le.className),size:Le.size,maxVisualDistance:Vt,opacity:ir,renderVisual:Le.renderVisual,onDragChange:Or})}),Ae!==void 0?V.jsx("div",{className:"aqvs-grid-live-region","aria-live":"polite","data-testid":J?`${J}-live`:void 0,children:K}):null]})},Qs=t.forwardRef(Zs);exports.FenwickMapTree=qt;exports.MAX_FROZEN_LEADING_COLS=on;exports.MAX_FROZEN_LEADING_ROWS=an;exports.MAX_FROZEN_TRAILING_COLS=ln;exports.MAX_FROZEN_TRAILING_ROWS=cn;exports.MAX_RENDERED_CELLS=Kn;exports.MAX_TRACK_SIZE=wr;exports.ScrollBar=pn;exports.ScrollPane=qn;exports.TAP_SCROLL_SPEED_DEFAULTS=mn;exports.VIRTUAL_SCROLL_LABEL_CATALOGS=zn;exports.VIRTUAL_SCROLL_LABEL_KEYS=Yr;exports.VIRTUAL_SCROLL_LOCALES=un;exports.VirtualGrid=Qs;exports.VirtualScroll=Gn;exports.computeAutoTapScrollMaxSpeedMultiplier=Xn;exports.computeTapScrollSpeed=Wr;exports.computeTapScrollVelocity=$n;exports.createResidualQuantizer=Rs;exports.minmax=Q;exports.resolveVirtualScrollLabels=fn;exports.resolveVirtualScrollLocale=dn;exports.tapScrollCircleSampleVisual=ys;exports.useFenwickMapTree=gn;exports.useHeightCache=Ns;exports.useLruCache=jn;exports.useWheelBridge=Ls;
|