@aiquants/virtualscroll 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/README.md +11 -1
- package/dist/ScrollBar.d.cts +24 -1
- package/dist/ScrollBar.d.ts +24 -1
- package/dist/ScrollBar.d.ts.map +1 -1
- package/dist/ScrollPane.d.ts.map +1 -1
- package/dist/TapScrollCircle.d.cts +11 -4
- package/dist/TapScrollCircle.d.ts +11 -4
- package/dist/TapScrollCircle.d.ts.map +1 -1
- package/dist/VirtualGrid.d.ts.map +1 -1
- package/dist/computeTapScrollVelocity.d.cts +120 -0
- package/dist/computeTapScrollVelocity.d.ts +121 -0
- package/dist/computeTapScrollVelocity.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2209 -2016
- package/dist/styles/virtualscroll.css +1 -1
- package/dist/styles/virtualscroll.standalone.css +1 -1
- package/dist/useGridTapScroll.d.cts +83 -0
- package/dist/useGridTapScroll.d.ts +84 -0
- package/dist/useGridTapScroll.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/ScrollBar.tsx +16 -4
- package/src/ScrollPane.tsx +1 -0
- package/src/TapScrollCircle.tsx +41 -9
- package/src/VirtualGrid.tsx +155 -8
- package/src/computeTapScrollVelocity.ts +150 -0
- package/src/index.ts +1 -0
- package/src/styles/virtualscroll.css +31 -0
- package/src/useGridTapScroll.ts +370 -0
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("react/jsx-runtime"),t=require("react"),yt=require("tailwind-merge"),Kr=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 a=Math.trunc(s/e)*e+0;return s-=a,a},peekResidue:()=>s,reset:()=>{s=0}}};class P{level;prefix;impl;constructor(e=2,n="[virtualscroll]",s=console){this.level=e,this.prefix=n,this.impl=s}static instance=new P(2,"[virtualscroll]");static setLevel(e){P.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){P.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){P.instance.setPrefix(e)}setPrefix(e){this.prefix=e}static isEnabled(e){return P.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){P.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(P.resolveLazy(e)),...n.map(P.resolveLazy))}static info(e,...n){P.instance.info(e,...n)}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(P.resolveLazy(e)),...n.map(P.resolveLazy))}static warn(e,...n){P.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(P.resolveLazy(e)),...n.map(P.resolveLazy))}static error(e,...n){P.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(P.resolveLazy(e)),...n.map(P.resolveLazy))}}const Nr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},mr=6,Qr=8,Jr=({dragState:r,normalizedDistance:e})=>{const n=1+e*.18,s=.16+e*.24,i=.38+e*.28,a=r.active?"80ms ease-out":"220ms ease";return A.jsxs(A.Fragment,{children:[A.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:`${a}, ${r.active?"80ms":"260ms"} box-shadow ease`}}),A.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"}})]})},Hr=t.memo(t.forwardRef(({onDragChange:r,className:e,maxVisualDistance:n=160,size:s=40,style:i,opacity:a=1,renderVisual:l,axis:f="y"},m)=>{const[g,w]=t.useState(Nr),M=t.useRef(null),I=t.useRef(null),v=t.useRef({x:0,y:0}),V=t.useRef(null),G=t.useRef(0),W=t.useCallback(T=>{w(T),r(T)},[r]),me=t.useCallback((T,j,ye=!1)=>{const{x:ge,y:ke}=v.current,D=T-ge,nt=j-ke,ot=f==="x"?D:nt,st=Math.abs(ot),Je=st<mr?0:ot<0?-1:1,Ke=G.current;let xe=Je;const Ve=mr+Qr;Je===0?Ke!==0&&st<Ve?xe=Ke:(xe=0,ye||(G.current=0)):Je!==Ke&&Ke!==0&&st<Ve?xe=Ke:G.current=Je,W({active:ye||st>=mr,offsetX:D,offsetY:nt,distance:st,direction:xe,pointerId:M.current})},[W,f]),Ne=t.useCallback(T=>{if(T===null)return;const j=V.current;j?.hasPointerCapture(T)&&j.releasePointerCapture(T)},[]),pe=t.useCallback((T=!1)=>{T&&Ne(M.current),M.current=null,I.current=null,G.current=0,W(Nr)},[W,Ne]),ie=t.useCallback(T=>{if(M.current!==null&&M.current!==T.pointerId){I.current={pointerId:T.pointerId,clientX:T.clientX,clientY:T.clientY},T.preventDefault(),T.stopPropagation();return}T.preventDefault(),T.stopPropagation();const j=V.current??T.currentTarget,{left:ye,top:ge,width:ke,height:D}=j.getBoundingClientRect();v.current={x:ye+ke/2,y:ge+D/2},M.current=T.pointerId;try{j.setPointerCapture(T.pointerId)}catch{}me(T.clientX,T.clientY,!0)},[me]),ze=t.useCallback(T=>{if(M.current!==T.pointerId){I.current!==null&&I.current.pointerId===T.pointerId&&(I.current={pointerId:T.pointerId,clientX:T.clientX,clientY:T.clientY});return}T.preventDefault(),me(T.clientX,T.clientY)},[me]),_=t.useCallback(T=>{if(M.current!==T.pointerId){I.current!==null&&I.current.pointerId===T.pointerId&&(I.current=null);return}T.preventDefault(),T.stopPropagation();const j=I.current;if(I.current=null,j!==null){Ne(T.pointerId);const ye=V.current;let ge=!0;if(ye!==null&&typeof ye.setPointerCapture=="function")try{ye.setPointerCapture(j.pointerId)}catch(ke){(typeof ke=="object"&&ke!==null&&"name"in ke?ke.name:void 0)==="NotFoundError"&&(ge=!1)}if(ge){M.current=j.pointerId,me(j.clientX,j.clientY,!0);return}}pe(!0)},[pe,Ne,me]),C=t.useCallback(T=>{T.target===T.currentTarget&&M.current===T.pointerId&&pe(!1)},[pe]);t.useImperativeHandle(m,()=>({reset:()=>{pe(!0)},getElement:()=>V.current}),[pe]);const z=Math.min(Math.max(a,0),1),Z=s/64,ne=Math.min(g.distance,n)/n,ae=g.direction*ne*10*Z,oe=l??Jr,Ee={dragState:g,normalizedDistance:ne,sizeScale:Z,size:s,opacity:z},H={...i,width:s,height:s,transform:`translateY(${ae}px)`};return H.opacity=z,A.jsx("div",{ref:V,"data-testid":"virtual-scroll-tap-circle",className:yt.twMerge("aqvs-tap-scroll-circle",e),style:H,tabIndex:-1,onPointerDown:ie,onPointerMove:ze,onPointerUp:_,onPointerCancel:_,onLostPointerCapture:C,role:"presentation",children:oe(Ee)})}));Hr.displayName="TapScrollCircle";const K=(r,e,n)=>Math.max(e,Math.min(n,r)),wr=(r,e)=>{const n=e==="x",s=r.getBoundingClientRect(),i=n?s.width:s.height,a=w=>{const M=Number.parseFloat(w);return Number.isFinite(M)?M:0},l=window.getComputedStyle(r),f=a(n?l.width:l.height),m=f>0?f+a(n?l.paddingLeft:l.paddingTop)+a(n?l.paddingRight:l.paddingBottom)+a(n?l.borderLeftWidth:l.borderTopWidth)+a(n?l.borderRightWidth:l.borderBottomWidth):0,g=m>0?m:n?r.offsetWidth:r.offsetHeight;return g<=0||i<=0?1:i/g},Rr="virtualscroll:tap-scroll-cancel",zr=20,en=250,tn=60,rn=20,nn=20,Tr={maxDistance:240,minSpeedMultiplier:.2},sn=Tr.maxDistance,kr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},pr=2.2,an=8,on=120,ln=1/10,Dt={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:sn,minSpeedMultiplier:Tr.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},cn=r=>r?{mainSizeKey:"width",crossSizeKey:"height",positionKey:"left",selectDelta:(e,n)=>e,getPointerCoordinate:({clientX:e})=>e,arrowLabels:["Scroll left","Scroll right"],arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",positionKey:"top",selectDelta:(e,n)=>n,getPointerCoordinate:({clientY:e})=>e,arrowLabels:["Scroll up","Scroll down"],arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},un=(r,e)=>{const n=r?.maxSpeedMultiplier,s=typeof n=="number"?n:Xr(e);return{enabled:r?.enabled??Dt.enabled,size:r?.size??Dt.size,offsetX:r?.offsetX??Dt.offsetX,offsetY:r?.offsetY??Dt.offsetY,className:r?.className??Dt.className,maxVisualDistance:r?.maxVisualDistance??Dt.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(r?.minSpeedMultiplier??Dt.minSpeedMultiplier,0),opacity:K(r?.opacity??Dt.opacity,0,1),renderVisual:r?.renderVisual??Dt.renderVisual,maxSpeedCurve:r?.maxSpeedCurve??Dt.maxSpeedCurve}},fn=({isDragging:r,isThumbHovered:e,enableThumbDrag:n})=>t.useMemo(()=>n?r?"dragging":e?"hover":"idle":"disabled",[n,r,e]),dn=({canUseArrowButtons:r,enableArrowButtons:e,resetTapScroll:n,scrollByStep:s})=>{const i=t.useRef(null),a=t.useRef(null),l=t.useRef(null),f=t.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null),a.current!==null&&(window.clearTimeout(a.current),a.current=null),l.current!==null&&(window.removeEventListener("pointerup",l.current),window.removeEventListener("pointercancel",l.current),window.removeEventListener("blur",l.current),l.current=null)},[]),m=t.useCallback(()=>{f()},[f]),g=t.useCallback(M=>I=>{if(!r)return;I.cancelable&&I.preventDefault(),I.stopPropagation(),n(),f(),s(M),a.current=window.setTimeout(()=>{i.current=window.setInterval(()=>{s(M)},tn)},en);const v=()=>f();l.current=v,window.addEventListener("pointerup",v),window.addEventListener("pointercancel",v),window.addEventListener("blur",v)},[r,f,n,s]),w=t.useCallback(M=>I=>{e&&(I.key==="Enter"||I.key===" "||I.key==="Spacebar")&&(I.preventDefault(),s(M))},[e,s]);return t.useEffect(()=>{r||f()},[r,f]),t.useEffect(()=>()=>{f()},[f]),{handleArrowPointerDown:g,handleArrowPointerUp:m,handleArrowKeyDown:w}},hn=700,Zt=(r,e)=>typeof r=="number"&&Number.isFinite(r)?r:e,qr=({distance:r,maxDistance:e,viewportSize:n,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:a,curve:l})=>{const f=Math.max(Zt(r,0),0),m=Zt(e,0),g=m>0?Math.min(f,m)/m:1,w=Math.max(Zt(n,0),0),M=Math.max(Zt(s,0),0),I=Math.max(Zt(i,0),0),v=Math.max(w*M,40),V=a?v:1200,G=Math.max(w*I,V),W=l?Math.max(Zt(l.exponentialScale,I),0):0,me=l?Math.min(G,Math.max(w*W,v)):G,Ne=Math.max(me,v);let pe=g**1.1;if(l){const ze=Math.min(Math.max(Zt(l.exponentialSteepness,0),0),hn);if(ze===0)pe=g;else{const _=Math.expm1(ze)||1;pe=Math.min(Math.max(Math.expm1(ze*g)/_,0),1)}}const ie=Math.min(Math.max(Zt(l?.easedOffset,0),0),1);return v+(Ne-v)*(ie+(1-ie)*pe)},Xr=r=>{if(!r||r<=0)return pr;const e=Math.max(1,r),n=Math.log10(e),s=pr+n*an;return K(s,pr,on)},Cr=({contentSize:r,viewportSize:e,scrollPosition:n,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:a=!0,enableArrowButtons:l=!0,horizontal:f=!1,enableHorizontalTapCircle:m=!1,scrollBarWidth:g=12,className:w,ariaControls:M,tapScrollCircleOptions:I,itemCount:v,renderThumbOverlay:V,visibleStartIndex:G,visibleEndIndex:W})=>{const[me,Ne]=t.useState(!1),[pe,ie]=t.useState(!1),[ze,_]=t.useState(!1),C=t.useRef(null),z=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),Z=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),ne=t.useRef(n),ae=t.useRef(s),oe=t.useRef(kr),Ee=t.useRef(null),H=t.useRef(null),T=t.useRef(null),j=t.useRef(0),ye=t.useRef(0),ge=t.useMemo(()=>un(I,v),[v,I]),ke=t.useMemo(()=>cn(f),[f]),{enabled:D,size:nt,offsetX:ot,offsetY:st,className:Je,maxVisualDistance:Ke,maxSpeedMultiplier:xe,minSpeedMultiplier:Ve,opacity:Re,renderVisual:se,maxSpeedCurve:Se}=ge,F=t.useRef({viewportSize:e,maxScrollPosition:Math.max(r-e,0),scrollBarVisible:r>e,effectiveTapMaxDistance:Math.max(Ke,1),tapCircleMaxSpeedMultiplier:xe,tapCircleMinSpeedMultiplier:Ve,tapCircleMaxSpeedCurve:Se,tapScrollCircleOptions:I,effectiveTrackLength:0,onScroll:s,scrollPosition:n}),{mainSizeKey:lt,crossSizeKey:Q,positionKey:Ye,selectDelta:fe,getPointerCoordinate:N,arrowLabels:B,arrowIcons:Le,directionClass:R,orientation:dt}=ke,Fe=Math.max(Ke,1),ct=e/r,He=Math.max(e-g*2,0),Vt=ct*He,d=Math.min(Math.max(zr,Vt||0),He||zr),O=Math.max(r-e,0),J=Math.max(He-d,0),ee=O<=0||J<=0?0:K(n/O*J,0,J),de=ee+d/2,te=r>e||me,De=te&&l;t.useLayoutEffect(()=>{F.current={viewportSize:e,maxScrollPosition:O,scrollBarVisible:te,effectiveTapMaxDistance:Fe,tapCircleMaxSpeedMultiplier:xe,tapCircleMinSpeedMultiplier:Ve,tapCircleMaxSpeedCurve:Se,tapScrollCircleOptions:I,effectiveTrackLength:J,onScroll:s,scrollPosition:n}}),t.useLayoutEffect(()=>{ne.current=n},[n]),t.useLayoutEffect(()=>{ae.current=s},[s]),t.useEffect(()=>{i||ie(!1)},[i]);const ve=fn({isDragging:me,isThumbHovered:pe,enableThumbDrag:i}),he=t.useCallback((u,y)=>{const k=F.current,U=y??ne.current;if(ae.current){const tt=ae.current(u,U);if(typeof tt=="number"&&Number.isFinite(tt))return ne.current=tt,tt}const Ie=typeof u=="function"?u(U):u,Xe=Math.max(k.maxScrollPosition,0),ft=k.scrollBarVisible?K(Ie,0,Xe):0;return ne.current=ft,ft},[]),be=t.useCallback(u=>{const y=F.current,k=ne.current;if(!y.scrollBarVisible||y.maxScrollPosition<=0){const mt=he(0,k),Ct=mt-k;return{nextPosition:mt,actualDelta:Ct,reachedBoundary:!0}}if(u===0)return{nextPosition:k,actualDelta:0,reachedBoundary:!1};const Ie=he(mt=>K(mt+u,0,y.maxScrollPosition),k),Xe=Ie-k,ft=u<0&&k+u<=0,tt=u>0&&k+u>=y.maxScrollPosition,Tt=u<0&&(Ie<=0||ft&&Xe===0)||u>0&&(Ie>=y.maxScrollPosition||tt&&Xe===0);return{nextPosition:Ie,actualDelta:Xe,reachedBoundary:Tt}},[he]),Qe=t.useCallback((u,y)=>{u.current+=y;const k=Math.max(F.current.maxScrollPosition,0);k>0&&(u.current=K(u.current,-k,k));const U=be(u.current);return u.current-=U.actualDelta,U.reachedBoundary&&(u.current=0),U},[be]),Ae=t.useCallback(()=>{H.current!==null&&(window.cancelAnimationFrame(H.current),H.current=null),T.current=null,j.current=0,ye.current=0},[]),we=t.useCallback(()=>{oe.current={...kr},_(!1),Ee.current?.reset(),Ae()},[Ae]),it=t.useCallback(u=>{const y=oe.current,k=F.current;if(!y.active||y.direction===0){Ae();return}if(!k.scrollBarVisible||k.maxScrollPosition<=0){Ae();return}const U=T.current??u,Ie=Math.max((u-U)/1e3,0),Xe=Math.min(Ie,ln);if(T.current=u,Xe<=0){H.current=window.requestAnimationFrame(it);return}const ft=qr({distance:y.distance,maxDistance:k.effectiveTapMaxDistance,viewportSize:k.viewportSize,minSpeedMultiplier:k.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:k.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof k.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:k.tapCircleMaxSpeedCurve});ye.current!==y.direction&&(ye.current=y.direction,j.current=0);const{reachedBoundary:tt}=Qe(j,y.direction*ft*Xe);if(tt){Ae();return}H.current=window.requestAnimationFrame(it)},[Qe,Ae]),$e=t.useCallback(()=>{H.current===null&&(T.current=null,j.current=0,H.current=window.requestAnimationFrame(it))},[it]);t.useEffect(()=>{const u=oe.current;!u.active||u.direction===0||$e()},[r,e,$e]),t.useEffect(()=>()=>{Ae()},[Ae]);const at=t.useCallback(u=>{oe.current=u,_(u.active),u.active&&u.direction!==0?$e():Ae()},[$e,Ae]);t.useEffect(()=>{D||we()},[we,D]),t.useEffect(()=>{const u=y=>{const U=y.detail?.paneId;U&&M&&U!==M||we()};return window.addEventListener(Rr,u),()=>{window.removeEventListener(Rr,u)}},[M,we]),t.useEffect(()=>{if(!D)return;const u=y=>{if(!oe.current.active||oe.current.pointerId===y.pointerId)return;const k=y.target;if(!(k instanceof Node)){we();return}Ee.current?.getElement()?.contains(k)||we()};return document.addEventListener("pointerdown",u,!0),()=>{document.removeEventListener("pointerdown",u,!0)}},[we,D]);const le=u=>{if(!te||J<=0||O<=0)return 0;const y=K(u,0,J);return K(y/J*O,0,O)},Te=t.useCallback(u=>{const{scrollBarVisible:y,effectiveTrackLength:k,maxScrollPosition:U}=F.current;if(P.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:u,trackLen:k,maxScroll:U})),k<=0||U<=0)return null;const Ie=K(u,0,k);return K(Ie/k*U,0,U)},[]),ht=t.useCallback(u=>wr(u,f?"x":"y"),[f]),h=t.useCallback(u=>{const y=z.current;if(y.pointerId!==u.pointerId)return;const k=u.clientX-y.startClientX,U=u.clientY-y.startClientY,Ie=fe(k,U)/(y.scale||1);P.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:Ie,startThumbPosition:y.startThumbPosition,clientY:u.clientY,startClientY:y.startClientY,metrics:F.current}));const Xe=Te(y.startThumbPosition+Ie);Xe!==null&&he(Xe),u.cancelable&&u.preventDefault()},[fe,Te,he]),E=t.useCallback(u=>{const y=z.current;if(y.pointerId!==u.pointerId)return;document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",E),document.removeEventListener("pointercancel",E);const k=y.captureTarget;if(k?.hasPointerCapture?.(u.pointerId)&&k.releasePointerCapture(u.pointerId),z.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},Ne(!1),C.current){const U=C.current.getBoundingClientRect();u.clientX>=U.left&&u.clientX<=U.right&&u.clientY>=U.top&&u.clientY<=U.bottom||ie(!1)}else ie(!1)},[h]);t.useEffect(()=>()=>{document.removeEventListener("pointermove",h),document.removeEventListener("pointerup",E),document.removeEventListener("pointercancel",E)},[h,E]);const je=t.useRef(0),et=t.useRef(0),qe=t.useCallback(u=>{const y=Math.max(Math.round(F.current.viewportSize/nn),rn);et.current!==u&&(et.current=u,je.current=0),Qe(je,u*y)},[Qe]),{handleArrowPointerDown:bt,handleArrowPointerUp:Me,handleArrowKeyDown:ut}=dn({canUseArrowButtons:De,enableArrowButtons:l,resetTapScroll:we,scrollByStep:qe}),Ue=u=>{if(!te)return;if(!i){u.preventDefault(),u.stopPropagation();return}if(u.pointerType==="mouse"&&u.button!==0||u.ctrlKey)return;we();const y=u.currentTarget,k=ht(y);let U=null;if(y.setPointerCapture)try{y.setPointerCapture(u.pointerId),U=y}catch{U=null}z.current={pointerId:u.pointerId,startThumbPosition:ee,startClientX:u.clientX,startClientY:u.clientY,scale:k,captureTarget:U},document.addEventListener("pointermove",h),document.addEventListener("pointerup",E),document.addEventListener("pointercancel",E),Ne(!0),ie(!0),u.preventDefault(),u.stopPropagation()},Ot=u=>{if(!te)return;if(!a){u.preventDefault(),u.stopPropagation();return}if(u.pointerType==="mouse"&&u.button!==0||u.ctrlKey)return;const y=u.currentTarget,k=y.getBoundingClientRect(),U=N(u),Ie=ht(y),Xe=(U-(f?k.left:k.top))/Ie;we();const ft=Xe-d/2,tt=le(ft);if(he(tt),y.setPointerCapture)try{y.setPointerCapture(u.pointerId)}catch{}Z.current={pointerId:u.pointerId,startThumbPosition:ft,startClientX:u.clientX,startClientY:u.clientY,scale:Ie},u.preventDefault(),u.stopPropagation()},Rt=()=>{Z.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},Xt=u=>{const y=Z.current;if(y.pointerId!==u.pointerId)return;if(u.pointerType==="mouse"&&u.buttons===0){Rt();return}const k=u.clientX-y.startClientX,U=u.clientY-y.startClientY,Ie=fe(k,U)/(y.scale||1),Xe=le(y.startThumbPosition+Ie);he(Xe),u.cancelable&&u.preventDefault()},_e=u=>{if(Z.current.pointerId!==u.pointerId)return;const y=u.currentTarget;y.hasPointerCapture?.(u.pointerId)&&y.releasePointerCapture(u.pointerId),Rt(),u.preventDefault(),u.stopPropagation()},St=u=>{if(Z.current.pointerId!==u.pointerId)return;const y=u.currentTarget;y.hasPointerCapture?.(u.pointerId)&&y.releasePointerCapture(u.pointerId),Rt()},Kt=u=>{u.target===u.currentTarget&&Z.current.pointerId===u.pointerId&&Rt()},Ce=t.useMemo(()=>K((ze?1:.8)*Re,0,1),[ze,Re]),xt=t.useMemo(()=>{const y=`calc(50% - ${nt/2}px + ${st}px)`;return{left:ot,top:y}},[ot,st,nt]),Mt=(u,y,k,U)=>A.jsx("button",{type:"button",tabIndex:0,className:"aqvs-scrollbar-arrow-button",style:{[lt]:g,[Q]:g},"aria-label":y,onPointerDown:bt(u),onPointerUp:Me,onPointerLeave:Me,onPointerCancel:Me,onKeyDown:ut(u),"aria-disabled":!l,disabled:!De,children:A.jsx("span",{"aria-hidden":"true",children:k})},U),At=V&&te?{orientation:dt,scrollPosition:n,maxScrollPosition:O,contentSize:r,viewportSize:e,thumbSize:d,thumbPosition:ee,thumbCenter:de,trackSize:He,isDragging:me,isTapScrollActive:ze,visibleStartIndex:G,visibleEndIndex:W}:null;return A.jsxs("div",{className:yt.twMerge("aqvs-scrollbar",R,w),style:{[lt]:e,[Q]:g},"data-visible":te?"true":"false",role:"scrollbar",tabIndex:-1,"aria-controls":M,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":O,"aria-orientation":f?"horizontal":"vertical",children:[(!f||m)&&te&&D&&A.jsx(Hr,{axis:f?"x":"y",ref:Ee,className:yt.twMerge("aqvs-scrollbar-tap-circle-wrapper",Je),size:nt,maxVisualDistance:Fe,style:xt,opacity:Ce,renderVisual:se,onDragChange:at},"tap-circle"),Mt(-1,B[0],Le[0],"arrow-start"),A.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:g/2},onPointerDown:Ot,onPointerMove:Xt,onPointerUp:_e,onPointerCancel:St,onLostPointerCapture:Kt,"aria-disabled":!a,children:[At&&A.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:V?.(At)},"overlay"),A.jsx("div",{className:"aqvs-scrollbar-thumb-wrapper",style:{[lt]:d,[Ye]:ee,...f?{top:0,bottom:0}:{left:0,right:0}},"data-visible":te||me?"true":"false",onPointerDown:Ue,role:"slider","aria-orientation":f?"horizontal":"vertical","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":O,"aria-disabled":!i,tabIndex:-1,children:A.jsx("div",{ref:C,className:yt.twMerge("aqvs-scrollbar-thumb",f?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":ve,style:{borderRadius:g-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&ie(!0)},onMouseLeave:()=>{i&&ie(!1)}},"thumb")},"thumb-wrapper")]},"track"),Mt(1,B[1],Le[1],"arrow-end")]})},mn=16,Vr=(r,e,n)=>e===1?r*mn:e===2?r*n:r,pn=(r,e)=>{const n=r.shiftKey&&r.deltaX===0,s=n?r.deltaY:r.deltaX,i=n?0:r.deltaY,a=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:r.ctrlKey,isHorizontalDominant:a,horizontalDelta:Vr(s,r.deltaMode,e),verticalDelta:Vr(i,r.deltaMode,e)}},Wr=new WeakSet,Ar=r=>{Wr.add(r)},gn=r=>Wr.has(r),bn=["mouse","pen","touch"],gr=(r,e)=>!(r==="mouse"||r==="pen"||r==="touch")||e.includes(r),xn=r=>r==="mouse"||r==="pen",ar={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},ur=(r,e,n)=>{for(const[s,i,a]of e)n==="add"?r.addEventListener(s,i,a):r.removeEventListener(s,i,a)},Br=t.forwardRef(({children:r,contentSize:e,viewportSize:n,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:a=!0,enableTrackClick:l=!0,enableArrowButtons:f=!0,enablePointerDrag:m=!0,pointerDragInputs:g=bn,onScroll:w,className:M,testId:I,style:v,background:V,tapScrollCircleOptions:G,inertiaOptions:W,itemCount:me,renderThumbOverlay:Ne,wheelSpeedMultiplier:pe=1,overscrollBehavior:ie="auto",onWheelHorizontal:ze,onPanHorizontal:_,contentInsets:C,visibleStartIndex:z,visibleEndIndex:Z,renderOverlay:ne,initialScrollPosition:ae=0,contentProps:oe},Ee)=>{const H=t.useRef(Number.isFinite(ae)?Math.max(0,ae):0),T=t.useRef(null),j=t.useRef(null),ye=n===void 0,[ge,ke]=t.useState(0),D=n??ge,nt=t.useRef(null);t.useLayoutEffect(()=>{if(!ye)return;const d=j.current;if(!d)return;const O=()=>{const ee=d.offsetHeight;if(ee>0){ke(de=>de===ee?de:ee);return}d.offsetParent!==null&&e>0&&nt.current!=="zero"&&(nt.current="zero",P.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."))};if(O(),typeof ResizeObserver!="function")return;const J=new ResizeObserver(O);return J.observe(d),()=>{J.disconnect()}},[e,ye]),t.useLayoutEffect(()=>{ye&&s?.(ge)},[ye,ge,s]),t.useLayoutEffect(()=>{if(ye)return;const d=T.current;if(!d)return;const O=()=>{const ee=d.clientHeight;if(ee<=0||Math.abs(ee-D)<=1)return;const de=`${D}/${ee}`;nt.current!==de&&(nt.current=de,P.warn(`[ScrollPane] viewportSize=${D} but the host band is ${ee}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(O(),typeof ResizeObserver!="function")return;const J=new ResizeObserver(O);return J.observe(d),()=>{J.disconnect()}},[ye,D]);const ot=t.useRef(ze);t.useEffect(()=>{ot.current=ze},[ze]);const st=t.useRef(_);t.useEffect(()=>{st.current=_},[_]);const Je=t.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),Ke=t.useMemo(()=>({maxVelocity:W?.maxVelocity??ar.maxVelocity,minVelocity:W?.minVelocity??ar.minVelocity,deceleration:W?.deceleration??ar.deceleration,velocitySampleWindow:W?.velocitySampleWindow??ar.velocitySampleWindow,startVelocityThreshold:W?.startVelocityThreshold??ar.startVelocityThreshold}),[W]),xe=t.useMemo(()=>({top:Math.max(0,C?.top??0),bottom:Math.max(0,C?.bottom??0)}),[C]);P.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:D,scrollBarWidth:i,className:M,style:v,tapScrollCircleOptions:G,inertiaOptions:W,enablePointerDrag:m,contentInsets:xe}));const Ve=t.useRef({contentSize:e,viewportSize:D}),Re=t.useMemo(()=>e>D,[e,D]),se=t.useCallback((d,O)=>{let J=O??Ve.current;O&&!(Number.isFinite(O.contentSize)&&Number.isFinite(O.viewportSize))&&(P.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:O}),J=Ve.current);const{contentSize:ee,viewportSize:de}=J,te=ee>de,De=H.current;if(P.debug("[ScrollPane] scrollTo called",()=>({newPosition:d,contentSize:ee,viewportSize:de,currentIsScrollable:te,prevPosition:De})),!te)return H.current!==0&&(H.current=0,w?.(0,De)),H.current;const ve=typeof d=="function"?d(H.current):d;if(!Number.isFinite(ve))return P.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:ve}),H.current;const he=Math.max(ee-de,0),be=K(ve,0,he);return H.current!==be&&(H.current=be,w?.(be,De)),H.current},[w]),Se=t.useRef(se);t.useEffect(()=>{Se.current=se},[se]);const F=t.useCallback(()=>{const d=Je.current;d.generation+=1,d.frame!==null&&cancelAnimationFrame(d.frame),d.frame=null,d.velocity=0,d.lastTimestamp=null},[]),lt=t.useRef(F);t.useEffect(()=>{lt.current=F},[F]),t.useEffect(()=>()=>{lt.current()},[]);const Q=t.useCallback(d=>{if(!Re)return;const{maxVelocity:O,minVelocity:J,deceleration:ee,startVelocityThreshold:de}=Ke,te=K(d,-O,O);if(Math.abs(te)<de)return;F(),Je.current.velocity=te,Je.current.lastTimestamp=null;const De=Je.current.generation,ve=he=>{const be=Je.current;if(be.generation!==De)return;if(be.lastTimestamp===null){be.lastTimestamp=he,be.frame=requestAnimationFrame(ve);return}const Qe=he-be.lastTimestamp;if(be.lastTimestamp=he,Qe<=0){be.frame=requestAnimationFrame(ve);return}const Ae=be.velocity;let we=Ae;const it=ee*Qe;Ae>0?we=Math.max(0,Ae-it):Ae<0&&(we=Math.min(0,Ae+it));const at=(Ae+we)/2*Qe,le=H.current;if(at!==0&&Se.current(et=>et+at),Je.current.generation!==De)return;const Te=H.current,{contentSize:ht,viewportSize:h}=Ve.current,E=Math.max(ht-h,0);be.velocity=we;const je=Te===le||Te<=0&&we<=0||Te>=E&&we>=0;if(Math.abs(we)<J||je){F();return}be.frame=requestAnimationFrame(ve)};Je.current.frame=requestAnimationFrame(ve)},[Re,Ke,F]),Ye=t.useRef(Q);t.useEffect(()=>{Ye.current=Q},[Q]),t.useLayoutEffect(()=>{Ve.current={contentSize:e,viewportSize:D}},[e,D]),t.useLayoutEffect(()=>{const d=j.current;if(!d)return;const O=()=>{d.scrollTop!==0&&(P.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:d.scrollTop})),d.scrollTop=0),d.scrollLeft!==0&&(d.scrollLeft=0)};return d.addEventListener("scroll",O),()=>d.removeEventListener("scroll",O)},[]),t.useLayoutEffect(()=>{if(Re){P.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:D,scrollPosition:H.current}));const d=K(e-D,0,e);H.current>d&&se(d)}else se(0)},[Re,se,e,D]);const fe=t.useRef({isScrollable:Re,viewportSize:D,wheelSpeedMultiplier:pe,overscrollBehavior:ie});t.useLayoutEffect(()=>{fe.current={isScrollable:Re,viewportSize:D,wheelSpeedMultiplier:pe,overscrollBehavior:ie}},[Re,D,pe,ie]);const N=t.useCallback(d=>{if(gn(d))return!1;const{isScrollable:O,viewportSize:J,wheelSpeedMultiplier:ee,overscrollBehavior:de}=fe.current,te=pn(d,J);if(te.isZoomGesture)return!1;if(te.isHorizontalDominant)return ot.current?(Ar(d),d.preventDefault(),F(),ot.current(te.horizontalDelta),!0):!1;if(!O||te.verticalDelta===0)return!1;let De=te.verticalDelta;if(ee!==1&&(De*=ee),de!=="contain"){const ve=H.current,he=Math.max(Ve.current.contentSize-J,0);if(De>0&&ve>=he||De<0&&ve<=0)return!1}return Ar(d),d.preventDefault(),F(),P.debug("[ScrollPane] wheel event",()=>({deltaY:De,scrollPosition:H.current,wheelSpeedMultiplier:ee,deltaMode:d.deltaMode,scrollTop:j.current?.scrollTop})),se(ve=>ve+De),!0},[se,F]);t.useEffect(()=>{const d=ee=>{N(ee)},O=()=>{F()},J=T.current;return J&&(J.addEventListener("wheel",d,{passive:!1}),J.addEventListener("pointerdown",O,{capture:!0,passive:!0})),()=>{J&&(J.removeEventListener("wheel",d),J.removeEventListener("pointerdown",O,{capture:!0}))}},[N,F]),t.useImperativeHandle(Ee,()=>({scrollTo:(d,O)=>(F(),se(d,O)),getScrollPosition:()=>H.current,getContentSize:()=>e,getViewportSize:()=>D,applyWheel:N}),[se,e,D,F,N]);const B=t.useId(),Le=oe?.id??B,R=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(m),Fe=t.useRef(g);t.useEffect(()=>{dt.current=m},[m]),t.useEffect(()=>{Fe.current=g},[g]);const ct=t.useRef(Re);t.useEffect(()=>{ct.current=Re},[Re]);const He=t.useRef(Ke);t.useEffect(()=>{He.current=Ke},[Ke]),t.useEffect(()=>{const d=R.current;if(m&&Re&&(d.pointerId===null||gr(d.pointerType,g))||d.pointerId===null)return;const O=j.current;d.clickResetTimer!==null&&(window.clearTimeout(d.clickResetTimer),d.clickResetTimer=null);const J=d.isDragging&&d.shouldCancelNextClick,ee=d.pointerId;d.pointerId=null,d.pointerType="",d.startClientY=0,d.startScroll=0,d.isDragging=!1,d.shouldCancelNextClick=J,d.velocitySamples=[],d.scale=1,O?.hasPointerCapture(ee)&&O.releasePointerCapture(ee)},[m,g,Re]),t.useEffect(()=>{const d=j.current;if(!d)return;const O=6,J=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),ee=()=>{const h=R.current;h.pointerId=null,h.pointerType="",h.startClientY=0,h.startScroll=0,h.isDragging=!1,h.velocitySamples=[],h.scale=1},de=()=>{const h=R.current;h.clickResetTimer!==null&&(window.clearTimeout(h.clickResetTimer),h.clickResetTimer=null)},te=h=>{const E=R.current,je=J();E.velocitySamples.push({clientY:h,time:je});const et=He.current.velocitySampleWindow;E.velocitySamples=E.velocitySamples.filter(qe=>je-qe.time<=et)},De=h=>h instanceof HTMLElement&&h.closest("[data-scrollpane-ignore-drag='true']")!==null,ve=h=>{const E=R.current;E.shouldCancelNextClick&&(h.preventDefault(),h.stopPropagation(),E.shouldCancelNextClick=!1)},he=h=>{const E=R.current;if(!E.isDragging){if(E.isDragging=!0,E.shouldCancelNextClick=!0,!d.hasPointerCapture(h.pointerId))try{d.setPointerCapture(h.pointerId)}catch{}te(h.clientY)}},be=h=>h.isTrusted||h.target===d,Qe=h=>{const E=R.current;d.hasPointerCapture(h)&&d.releasePointerCapture(h),E.shouldCancelNextClick=!1,de(),ee()},Ae=h=>{const E=R.current;if(E.pointerId!==h.pointerId)return;if(h.buttons===0&&xn(h.pointerType)){Qe(h.pointerId);return}if(!(dt.current&&ct.current)||!gr(h.pointerType,Fe.current))return;if(!E.isDragging){const bt=Math.abs(h.clientY-E.startClientY),Me=st.current?Math.abs(h.clientX-E.startClientX):0;if(Math.max(bt,Me)<O||(he(h),!E.isDragging))return}te(h.clientY);const je=(h.clientY-E.startClientY)/(E.scale||1),et=E.startScroll-je;Se.current(et);const qe=st.current;if(qe){const bt=h.clientX-E.lastPanClientX;E.lastPanClientX=h.clientX,bt!==0&&qe(-bt/(E.scaleX||1))}h.cancelable&&h.preventDefault()},we=()=>{const h=R.current;return h.pointerId!==null||!h.shouldCancelNextClick?!1:(de(),h.clickResetTimer=window.setTimeout(()=>{const E=R.current;E.shouldCancelNextClick=!1,E.clickResetTimer=null},0),!0)},it=h=>{const E=R.current;if(E.pointerId!==h.pointerId){we();return}E.isDragging&&E.shouldCancelNextClick&&h.cancelable&&(h.preventDefault(),h.stopPropagation()),E.isDragging&&te(h.clientY);let je=0;if(E.isDragging&&E.velocitySamples.length>=2){const qe=E.velocitySamples,bt=He.current.velocitySampleWindow,Me=qe[qe.length-1],ut=qe.find(Ue=>Me.time-Ue.time<=bt)??qe[0];if(Me&&ut&&Me.time!==ut.time){const Ue=Me.clientY-ut.clientY,Ot=Me.time-ut.time;je=-(Ue/Ot)/(E.scale||1)}}de(),E.shouldCancelNextClick&&(E.clickResetTimer=window.setTimeout(()=>{const qe=R.current;qe.shouldCancelNextClick=!1,qe.clickResetTimer=null},0));const et=He.current.startVelocityThreshold;ee(),d.hasPointerCapture(h.pointerId)&&d.releasePointerCapture(h.pointerId),Math.abs(je)>=et&&Ye.current?.(je)},$e=h=>{if(R.current.pointerId!==null){if(!h.isPrimary||h.pointerType!==R.current.pointerType)return;Qe(R.current.pointerId)}if(R.current.shouldCancelNextClick&&(de(),R.current.shouldCancelNextClick=!1),!(dt.current&&ct.current)||!gr(h.pointerType,Fe.current)||h.button!==0&&h.pointerType==="mouse"||h.ctrlKey||h.metaKey||h.altKey||De(h.target))return;window.dispatchEvent(new CustomEvent(Rr,{detail:{paneId:B}})),lt.current?.();const E=R.current;de(),E.pointerId=h.pointerId,E.pointerType=h.pointerType,E.startClientY=h.clientY,E.startClientX=h.clientX,E.lastPanClientX=h.clientX,E.startScroll=H.current,E.scale=wr(d,"y"),E.scaleX=st.current?wr(d,"x"):1,E.isDragging=!1,E.shouldCancelNextClick=!1,E.velocitySamples=[]},at=h=>{if(R.current.pointerId!==h.pointerId){we();return}be(h)&&Qe(h.pointerId)},Te=[["click",ve,!0],["pointerdown",$e,{passive:!1}],["lostpointercapture",h=>{h.target!==d||R.current.pointerId!==h.pointerId||Qe(h.pointerId)},void 0]],ht=[["pointermove",Ae,{passive:!1}],["pointerup",it,void 0],["pointercancel",at,void 0]];return ur(d,Te,"add"),ur(window,ht,"add"),()=>{ur(d,Te,"remove"),ur(window,ht,"remove");const h=R.current;h.pointerId!==null&&d.hasPointerCapture(h.pointerId)&&d.releasePointerCapture(h.pointerId),de(),ee()}},[B]);const Vt=t.useCallback(d=>(F(),se(d)),[se,F]);return A.jsxs("div",{ref:T,"data-testid":I,"data-self-measured":ye?"true":void 0,className:yt.twMerge("aqvs-scroll-pane",M),style:v,children:[A.jsxs("div",{ref:j,className:yt.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:ye?void 0:D,paddingTop:xe.top,paddingBottom:xe.bottom,...m&&Re&&g.some(d=>d==="touch"||d==="pen")?{touchAction:"none"}:{}},...oe,id:Le,children:[V,r(H.current)]}),A.jsx(Cr,{contentSize:e,viewportSize:D,scrollPosition:H.current,onScroll:Vt,enableThumbDrag:a,enableTrackClick:l,enableArrowButtons:f,scrollBarWidth:i,ariaControls:Le,tapScrollCircleOptions:G,itemCount:me,renderThumbOverlay:Ne,visibleStartIndex:z,visibleEndIndex:Z},"scrollbar"),ne?.()]})}),Lr=(r,e,n)=>Math.min(Math.max(r,e),n),vn=({dragState:r,normalizedDistance:e,sizeScale:n,size:s})=>{const i=Math.max(s/2,1),a=1+e*.65,l=Math.max(.65,1-e*.25),f=r.direction*e*26*n,m=.8+e*.18,g=3*n,w=6*n,M=22*n,I=Math.abs(f)+w,v=f>0?g:-Math.abs(f)-g,V=Math.max(2.5,3*n),G=Lr(r.offsetX,-i,i),W=Lr(r.offsetY,-i,i),me=i*.35,Ne=G/i*me,pe=W/i*me,ie=Ne*.45,ze=pe*.45,_=Math.max(M*.38,6),C=.65+e*.2,z=r.active;return A.jsxs(A.Fragment,{children:[A.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${l}, ${a})`,transition:z?"40ms transform ease-out":"200ms ease transform"}}),A.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:M,height:M,transform:`translate(calc(-50% + ${Ne}px), calc(-50% + ${pe}px)) scale(${l}, ${m*a})`,transition:z?"70ms transform ease-out":"200ms ease transform"}}),A.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:_,height:_,transform:`translate(calc(-50% + ${ie}px), calc(-50% + ${ze}px)) scale(${l}, ${a})`,opacity:C,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"}}),A.jsx("div",{className:"aqvs-sample-visual-rod",style:{width:V,height:I,transform:`translate(-50%, ${v}px)`,opacity:e,transition:z?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},tr=100,wn=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},br=(r,e)=>{if(!Number.isFinite(r))throw new Error(`valueFn returned a non-finite value at index ${e}: ${r}`);return r},rr=r=>{if(r<=0||!Number.isFinite(r))return 0;const e=Math.trunc(r);if(e<=2147483647)return e&-e;const n=BigInt(e)&-BigInt(e);return Number(n)};class _t{tree;deltas;size;baseValue;valueFn;total;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;return}let a=0,l;const f=s?.baseValue;if(f!==void 0&&!(Number.isFinite(f)&&f>=0))throw new RangeError(`[FenwickMapTree] options.baseValue must be a finite number >= 0, received ${f}.`);if(i>0&&f!==void 0){if(a=f,s?.materialize){const m=s?.sampleRange??{from:0,to:Math.min(tr-1,i-1)};let g=Math.max(0,Math.trunc(m.from)),w=Math.min(Math.trunc(m.to),i-1);g>w&&(g=0,w=Math.min(tr-1,i-1)),l={from:g,values:_t._collectValidatedValues(n,g,w)}}}else if(i>0){const m=s?.sampleRange??{from:0,to:Math.min(tr-1,i-1)};let g=Math.max(0,Math.trunc(m.from)),w=Math.min(Math.trunc(m.to),i-1);if(g>w&&(g=0,w=Math.min(tr-1,i-1)),i>tr)a=_t._sampleBaseValueStrided(n,i,tr),s?.materialize&&(l={from:g,values:_t._collectValidatedValues(n,g,w)});else{const M=_t._collectValidatedValues(n,g,w);a=_t._modeOrMedian([...M]),s?.materialize&&(l={from:g,values:M})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=n,this.baseValue=a,l)for(let m=0;m<l.values.length;m++){const g=l.from+m;if(g>=this.size)break;const w=l.values[m]-this.baseValue;w!==0&&(this.deltas.set(g,w),this._updateTree(g,w))}this.total=this.getTotal()}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())}static _collectValidatedValues(e,n,s){const i=[];for(let a=n;a<=s;a++)i.push(br(e(a),a));return i}static _modeOrMedian(e){if(e.length===0)return 0;e.sort((l,f)=>l-f);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 a=0;for(const l of e){const f=(i.get(l)??0)+1;i.set(l,f),f>a&&(a=f)}if(a>e.length*.2){const l=[];for(const[m,g]of i.entries())g===a&&l.push(m);const f=l.reduce((m,g)=>m+g,0);s=Math.floor(f/l.length)}return s}static _sampleBaseValueStrided(e,n,s){if(n<=0)return 0;let i=Math.max(1,Math.ceil(n/s));i%2===0&&(i+=1);const a=[];for(let l=0;l<n&&a.length<s;l+=i)a.push(br(e(l),l));return _t._modeOrMedian(a)}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;let s=e+1;for(;s<=this.size;){this.tree.set(s,(this.tree.get(s)??0)+n);const i=rr(s);if(i===0)break;s+=i}this.total!==void 0&&(this.total+=n)}_buildDeltaUpdates(e){const n=[],s=new Map;for(const{index:i,value:a}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(a))throw new Error(`Value must be a finite number: ${a}`);if(a<0)throw new Error("Value cannot be negative.");const l=s.has(i)?s.get(i)??0:this.deltas.get(i)??0,f=l+this.baseValue,m=a-f;m!==0&&n.push({index:i,change:m}),s.set(i,l+m)}return n}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,n=this.size;for(;n>0;){e+=this.tree.get(n)??0;const s=rr(n);if(s===0)break;n-=s}return e+this.baseValue*this.size}_materialize(e,n=!0){if(this.valueFn){const s=this.deltas.get(e)??0,a=br(this.valueFn(e),e)-this.baseValue;if(a!==s&&(a===0?this.deltas.delete(e):this.deltas.set(e,a),n)){const l=a-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 f of i){const m=Math.max(0,Math.trunc(f.from)),g=Math.min(Math.trunc(f.to),this.size-1);for(let w=m;w<=g;w++)this._materialize(w)}if(n===void 0)return;if(s){this._materialize(n);return}const a=i[0].from,l=i[i.length-1].to;n>=a&&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.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const i=n.materializeOption?.materialize===!0;let a;for(;;){if(a=this._descend(e,s),a<0||a>=this.size)return{index:-1,total:this.total??this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const f=this.deltas.get(a)??0;if(this._materialize(a),(this.deltas.get(a)??0)===f)break}const l=this.prefixSum(a);return{index:a,total:this.total??l.total,cumulative:l.cumulative,currentValue:l.currentValue,safeIndex:l.safeIndex}}_descend(e,n){let s=0,i=0,a=1;for(;a<<1<=this.size;)a<<=1;for(;a>0;a>>=1){const l=s+a;if(l<=this.size){const m=(this.tree.get(l)??0)+this.baseValue*a;(n?i+m<e:i+m<=e)&&(s=l,i+=m)}}return n?s:s-1}_findIndexLarge(e,n,s){if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};const i=wn(this.size);if(i===0n)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const a=n.materializeOption?.materialize===!0;for(;;){let l=0n,f=i-1n,m,g,w=this.total;for(;l<=f;){const v=l+f>>1n,V=Number(v),G=this.prefixSum(V);if(w=G.total,s?G.cumulative>=e:G.cumulative<=e)if(m=v,g=G,s){if(v===0n)break;f=v-1n}else l=v+1n;else if(s)l=v+1n;else{if(v===0n)break;f=v-1n}}const M=g,I=m!==void 0?Number(m):-1;if(a&&I>=0){const v=this.deltas.get(I)??0;if(this._materialize(I),(this.deltas.get(I)??0)!==v)continue}return{index:I,total:w,cumulative:M?.cumulative,currentValue:M?.currentValue,safeIndex:M?.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.total??0,currentValue:0,safeIndex:0};const s=K(Math.trunc(e),0,this.size-1),i=n?.materializeOption;this._materializeRanges(i,s,!0);let a=0,l=s+1;for(;l>0;){const m=this.tree.get(l)??0;a+=m;const g=rr(l);if(g===0)break;l-=g}const f=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:a+this.baseValue*(s+1),total:this.total,currentValue:f,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;if(this._materializeRanges(n),this.total===void 0)if(this.size===0)this.total=0;else{this.total=this._computeTreeTotal();const s=this.prefixSum(this.getSize()-1);s.cumulative!==s.total&&P.error("Inconsistent Fenwick Tree state")}return 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()){if(i===0)continue;let a=s+1;for(;a<=this.size;){n.set(a,(n.get(a)??0)+i);const l=rr(a);if(l===0)break;a+=l}}this.tree=n,this.total=this._computeTreeTotal()}calculateAccumulatedError(){if(this.total===void 0)return 0;let e=this.baseValue*this.size;for(const[n,s]of this.deltas)n<this.size&&(e+=s);return this.total-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)return;if(n>s)if(s===0&&this.deltas.size>0){for(const a of this.deltas.keys())a>=n&&this.deltas.delete(a);this.size=n,this.rebuildTree()}else this._growSize(s,n);else{if(n>0)for(const a of this.deltas.keys())a>=n&&this.deltas.delete(a);this.size=n,this.rebuildTree()}const i=this.prefixSum(this.getSize()-1);i.cumulative!==i.total&&P.error("Inconsistent Fenwick Tree state")}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 a=e+1;for(;a<=s;){const l=rr(a);if(l===0)break;a+=l}for(;a<=i;){this.tree.set(a,(this.tree.get(a)??0)+n);const l=rr(a);if(l===0)break;a+=l}}_growSize(e,n){if(this.size=n,this.deltas.size>0){const s=_t._minCoveredLowBound(e,n);if(e-s<this.deltas.size)for(let a=s;a<e;a++){const l=this.deltas.get(a);l===void 0||l===0||this._propagateDeltaToGrownNodes(a,l,e,n)}else for(const[a,l]of this.deltas.entries())l===0||a<s||this._propagateDeltaToGrownNodes(a,l,e,n)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}findIndexAtOrAfter(e,n){return this._findIndex(e,n??{},!0)}findIndexAtOrBefore(e,n){return this._findIndex(e,n??{},!1)}}const Rn=(r,e)=>{const n=r?.sampleRange,s=e?.sampleRange;return n===s?!1:n&&s?n.from!==s.from||n.to!==s.to:!0},Pr=(r,e,n)=>{const s=Number.isFinite(r)&&r>0?Math.trunc(r):0,i=t.useRef(null),a=t.useRef({size:s,valueOrFn:e,options:n});i.current===null&&(i.current=new _t(s,e,n));const l=i.current,f=a.current,m=f.size!==s,g=f.valueOrFn!==e,w=Rn(f.options,n)||f.options?.baseValue!==n?.baseValue,M=f.size===0&&s>0&&(!i.current||i.current.base===0);if(g||w){const I=n?.resetOnValueFnChange??!0;w||g&&I||M?(n?.debug&&P.debug("[useFenwickMapTree] reset",{valueOrFnChanged:g,optionsChanged:w}),l.reset(s,e,n)):(m&&(n?.debug&&P.debug("[useFenwickMapTree] resize (with valueFn change)",{from:f.size,to:s}),l.changeSize(s)),n?.debug&&P.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:g}),l.setValueFn(e,{reset:!1})),a.current={size:s,valueOrFn:e,options:n}}else m&&(n?.debug&&P.debug("[useFenwickMapTree] resize",{from:f.size,to:s}),M?l.reset(s,e,n):l.changeSize(s),a.current={size:s,valueOrFn:e,options:n});return l};class Sn{key;value;prev=null;next=null;constructor(e,n){this.key=e,this.value=n}}class xr{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}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function Yr(r){const e=t.useRef(new Map),n=t.useRef(new xr),s=Math.floor(r),i=t.useRef(s);t.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){P.warn(`useLruCache: invalid capacity ${r}; the cache will not store any entries.`),e.current.clear(),n.current=new xr;return}if(Number.isFinite(s))for(;e.current.size>s;){const w=n.current.removeHead();if(w)e.current.delete(w.key);else break}},[r,s]);const a=t.useCallback(w=>{const M=e.current.get(w);if(M)return n.current.moveToTail(M),M.value},[]),l=t.useCallback((w,M)=>{const I=i.current;if(Number.isNaN(I)||I<=0)return;let v=e.current.get(w);if(v)v.value=M,n.current.moveToTail(v);else{if(e.current.size>=I){const V=n.current.removeHead();V&&e.current.delete(V.key)}v=new Sn(w,M),e.current.set(w,v),n.current.addToTail(v)}},[]),f=t.useCallback(w=>e.current.has(w),[]),m=t.useCallback(w=>{const M=e.current.get(w);M&&(n.current.remove(M),e.current.delete(w))},[]),g=t.useCallback(()=>{e.current.clear(),n.current=new xr},[]);return t.useMemo(()=>({get:a,set:l,has:f,remove:m,clear:g}),[a,l,f,m,g])}const Mn=1e4,In=()=>{const{get:r,set:e,has:n,clear:s}=Yr(Mn);return t.useMemo(()=>({get:r,set:e,has:n,clear:s}),[r,e,n,s])},En=(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(a=>{if(!a||i.current.has(a))return;const l=f=>{n.current?.enableBridge!==!1&&s.current.current?.applyWheel(f)};return a.addEventListener("wheel",l,{passive:!1}),i.current.set(a,l),()=>{i.current.get(a)===l&&(a.removeEventListener("wheel",l),i.current.delete(a))}},[])},Be=(r,e)=>e<=0?0:K(r,0,e-1),Dr=r=>({top:Math.max(0,r?.top??0),bottom:Math.max(0,r?.bottom??0)}),gt=(r,e)=>r<=e?0:r-e,Qt=(r,e)=>r<=0?0:r+e,lr=1e3,Sr=2e3,$r=1048576,yn=40,or=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},Tn=(r,e,n,s,i,a,l,f)=>{const m=or(s);if(m===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const g=_=>_<0n?0n:_>=m?m-1n:_,w={materializeOption:{materialize:!1}},{index:M,cumulative:I}=a.findIndexAtOrAfter(r,w);let v;M===-1?v=m-1n:(I===r?v=or(M+1):v=or(M),v>=m&&(v=m-1n)),r<=0&&(v=0n),f&&r>=l&&(v=m-1n);const V=_=>{const C=Number(_);if(!Number.isSafeInteger(C))return null;const{cumulative:z}=a.prefixSum(C,{materializeOption:{materialize:!1}});if(!Number.isFinite(z))return null;const{index:Z}=a.findIndexAtOrAfter(z+.5,{materializeOption:{materialize:!1}});if(Z===-1)return null;const ne=or(Z);return ne>_?ne:null},G=_=>{let C=0,z=_,Z=_,ne=0n,ae=0;for(;z<m&&C<e;){const oe=Number(z),Ee=i(oe);if(C+=Ee,Z=z,z+=1n,ne+=1n,!Number.isFinite(Ee)||Ee<0)break;if(Ee===0){if(ae+=1,ae>lr){const H=V(Z);if(H!==null&&H>z)z=H,ae=0;else if(H!==null&&H===z&&i(Number(z))>0)ae=0;else break}}else ae=0}return ne===0n&&(Z=_),{height:C,end:Z}};let{height:W,end:me}=G(v);if(W<e&&v>0n){let _=v,C=W,z=0;for(;_>0n&&C<e;){_-=1n;const ne=Number(_),ae=i(ne);if(C+=ae,!Number.isFinite(ae)||ae<0)break;if(ae===0){if(z+=1,z>lr){const oe=Number(_);if(!Number.isSafeInteger(oe))break;const{cumulative:Ee}=a.prefixSum(oe,{materializeOption:{materialize:!1}});if(!Number.isFinite(Ee))break;const{index:H}=a.findIndexAtOrAfter(Ee-.5,{materializeOption:{materialize:!1}}),T=H===-1?-1n:or(H);if(T>=0n&&T<_)_=T+1n,z=0;else if(T===_&&_>=1n&&i(Number(_-1n))>0)z=0;else break}}else z=0}v=g(_);const Z=G(v);W=Z.height,me=Z.end}const Ne=g(v),pe=g(me),ie=g(Ne-BigInt(Math.max(0,n))),ze=g(pe+BigInt(Math.max(0,n)));return{renderingStartIndex:Be(Number(ie),s),renderingEndIndex:Be(Number(ze),s),visibleStartIndex:Be(Number(Ne),s),visibleEndIndex:Be(Number(pe),s)}},jr=(r,e,n,s,i,a,l)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const f=Number.isFinite(l),m=f?Math.min(Math.max(0,r),l):Math.max(0,r);if(s>=Number.MAX_SAFE_INTEGER)return Tn(m,e,n,s,i,a,l,f);const{index:g,cumulative:w,currentValue:M}=a.findIndexAtOrAfter(m,{materializeOption:{materialize:!1}}),I=g===-1?e<=0||(w??0)<m+(M??0)?s-1:0:g;let v=Be(I,s),V=0;if(g!==-1&&w===m)v=Be(g+1,s),V=0;else if(v===g&&w!==void 0&&M!==void 0)V=w-M-m;else{const{cumulative:_,currentValue:C}=a.prefixSum(v,{materializeOption:{materialize:!1}});V=(_??0)-(C??0)-m}const G=V,W=(_,C)=>{let z=_,Z=C,ne=0;for(;z<s&&Z<e;){const ae=i(z);if(Z+=ae,z++,!Number.isFinite(ae)||ae<0)break;if(ae===0){if(ne++,ne>lr){const{cumulative:oe}=a.prefixSum(z-1,{materializeOption:{materialize:!1}}),{index:Ee}=Number.isFinite(oe)?a.findIndexAtOrAfter(oe+.5,{materializeOption:{materialize:!1}}):{index:-1};if(Ee>z)z=Ee,ne=0;else if(Ee===z&&i(z)>0)ne=0;else break}}else ne=0}return{cursor:z,height:Z}},me=W(v,V);let Ne=me.cursor;if(V=me.height,V<e&&v>0){let _=V+Math.abs(Math.min(0,G)),C=v-1,z=0;for(;C>=0&&_<e;){const ne=i(C);if(_+=ne,!Number.isFinite(ne)||ne<0){C--;break}if(ne===0){if(z++,z>lr){const{cumulative:ae}=a.prefixSum(C,{materializeOption:{materialize:!1}}),{index:oe}=Number.isFinite(ae)?a.findIndexAtOrAfter(ae-.5,{materializeOption:{materialize:!1}}):{index:-1};if(oe!==-1&&oe<C){C=oe,z=0;continue}if(oe===C&&C>=1&&i(C-1)>0)z=0;else{C--;break}}}else z=0;C--}v=Be(C+1,s);const Z=W(v,0);Ne=Z.cursor,V=Z.height}const pe=Be(v-n,s),ie=Be(Math.max(Ne-1,v),s),ze=Be(ie+n,s);return{renderingStartIndex:pe,renderingEndIndex:ze,visibleStartIndex:v,visibleEndIndex:ie}},_r=(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(a){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",a)}i.arg=null}},[i,r,n]),t.useCallback(a=>{if(i.arg=a,i.id!==null)return;const l=f=>{if(i.id=null,i.arg===null)return;const m=f-i.last;if(s===0||i.last===0||m>=s){if(r.current)try{n(r.current,i.arg)}catch(g){console.error("[useThrottledInvoker] Error invoking callback",g)}i.arg=null,i.last=f}i.arg!==null&&(i.id=requestAnimationFrame(l))};i.id=requestAnimationFrame(l)},[s,n,r,i])},Cn=t.memo(({index:r,top:e,height:n,item:s,children:i,clipItemHeight:a,enableKeyboardNavigation:l,onKeyDown:f,onEscapeKeyDown:m,onFocus:g,registerItemRef:w})=>{const M=t.useCallback(W=>w(r,W),[r,w]),I=t.useCallback(W=>f(W,r),[r,f]),v=t.useCallback(W=>m?.(W,r),[r,m]),V=t.useCallback(()=>g(r),[r,g]),G=t.useCallback(W=>{W.currentTarget.focus({preventScroll:!0})},[]);return A.jsx("div",{ref:M,"data-index":r,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:n,overflow:a?"hidden":void 0},tabIndex:l?-1:void 0,onPointerDown:l?G:void 0,onKeyDownCapture:l?I:void 0,onKeyDown:l&&m?v:void 0,onFocusCapture:l?V:void 0,children:i(s,r)})}),Pn=({itemCount:r,getItem:e,getItemKey:n,getItemHeight:s,viewportSize:i,overscanCount:a=15,className:l,testId:f,onScroll:m,onRangeChange:g,children:w,background:M,initialScrollIndex:I,initialScrollOffset:v,initialScrollAnchor:V,callbackThrottleMs:G=5,contentInsets:W,onItemFocus:me,scrollBarOptions:Ne,behaviorOptions:pe,onWheelHorizontal:ie,onPanHorizontal:ze,horizontalKeyInputs:_,horizontalKeyStep:C=yn,contentProps:z,liveRegion:Z},ne)=>{const{width:ae,enableThumbDrag:oe,enableTrackClick:Ee,enableArrowButtons:H,enableScrollToTopBottomButtons:T,renderThumbOverlay:j,tapScrollCircleOptions:ye}=Ne??{},{enablePointerDrag:ge,pointerDragInputs:ke,enableKeyboardNavigation:D=!0,enableEscapeRowReturn:nt=!1,wheelSpeedMultiplier:ot,inertiaOptions:st,overscrollBehavior:Je,clipItemHeight:Ke=!1,resetOnGetItemHeightChange:xe=!1}=pe??{},[Ve,Re]=t.useState(0),se=i??Ve,Se=t.useCallback(c=>{Re(p=>p===c?p:c)},[]),F=t.useRef(null),lt=t.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),Q=t.useRef(V&&r>0?{index:K(Math.trunc(V.index),0,r-1),align:"top",offset:-Math.max(0,V.offsetPx??0)}:null),Ye=t.useRef(!1),fe=t.useRef(!0);t.useEffect(()=>{if(fe.current){fe.current=!1;return}xe&&(Q.current=null)},[xe,s]);const N=t.useMemo(()=>Dr(W),[W]),[B]=t.useState(()=>{const p=V?.index??I,x=typeof p=="number"&&Number.isFinite(p)?Math.max(0,Math.trunc(p)):0;return{from:Math.max(0,x-50),to:x+50}}),Le=t.useMemo(()=>({sampleRange:B,resetOnValueFnChange:xe,materialize:!0}),[xe,B]),R=Pr(r,s,Le),[dt]=t.useState(()=>{let c=0,p=0;if(V&&r>0){const x=K(Math.trunc(V.index),0,r-1),q=Math.max(0,V.offsetPx??0),X=K(x-a*2,0,r-1),Y=K(x+a*2,0,r-1),$=x>0||q>0?{materializeOption:{materialize:!0,ranges:[{from:X,to:Y}]}}:void 0,{cumulative:ce,total:Oe,currentValue:Pe}=R.prefixSum(x,$),ue=Math.max(ce-Pe+q,0);c=Qt(ue,N.top),p=Oe??R.getTotal()}else if(typeof I=="number"){const x=K(I,0,r-1),q=K(x-a*2,0,r-1),X=K(x+a*2,0,r-1),Y=I>0?{materializeOption:{materialize:!0,ranges:[{from:q,to:X}]}}:void 0,{cumulative:$,total:ce,currentValue:Oe}=R.prefixSum(I,Y),Pe=Math.max($-Oe,0);c=Qt(Pe,N.top),p=ce??R.getTotal()}else typeof v=="number"&&(c=Qt(Math.max(v,0),N.top)),p=R.getTotal();return{position:c,total:p}}),[Fe,ct]=t.useState(dt.position),[He,Vt]=t.useState(dt.total),d=t.useRef(dt.position),O=t.useRef(N.top),J=t.useRef(m??void 0),ee=t.useRef(g??void 0),de=t.useRef(ie),te=(_?.length??0)>0,De=!!ie;t.useEffect(()=>{te&&(D||P.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),De||P.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(C)&&C>0||P.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${C}. Horizontal arrow keys are left untouched.`))},[te,De,D,C]);const ve=t.useRef(new Map),he=t.useRef(null),be=t.useRef(null),[Qe,Ae]=t.useState(null),[we,it]=t.useState(!1),$e=t.useRef(null),at=t.useRef(!1),le=t.useRef(0),Te=t.useRef(!1),ht=t.useRef(!1),h=t.useRef(r);h.current!==r&&(h.current=r,ht.current=!0),t.useLayoutEffect(()=>{J.current=m??void 0,ee.current=g??void 0,de.current=ie},[g,m,ie]);const E=t.useCallback(c=>{if(D&&c&&typeof c.focus=="function")try{c.focus({preventScroll:!0})}catch{c.focus()}},[D]),je=t.useCallback((c,{position:p,totalHeight:x})=>{c(p,x)},[]),et=_r(J,G,je),qe=t.useCallback((c,p)=>{c(p)},[]),bt=_r(ee,G,qe),Me=t.useRef(N.top);Me.current=N.top;const ut=t.useRef(et);ut.current=et,t.useEffect(()=>(Ye.current=!1,()=>{Ye.current=!0,$e.current&&(clearTimeout($e.current),$e.current=null)}),[]),t.useEffect(()=>{D||(ve.current.clear(),he.current=null,be.current=null)},[D]);const Ue=t.useCallback((c,p)=>{if(!p){ve.current.delete(c);return}D&&(ve.current.set(c,p),he.current===c&&(he.current=null,be.current=c,E(p)))},[D,E]),Ot=.01,Rt=t.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:dt.position}),Xt=t.useCallback(()=>{const c=Rt.current;c.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(c.rafId),c.rafId=null,c.loopActive=!1,c.idleFrames=0},[]);t.useEffect(()=>()=>{Xt()},[Xt]);const _e=t.useRef(()=>{}),St=t.useCallback(()=>{const c=Rt.current;c.rafId=null;const p=d.current,x=gt(p,Me.current),q=R.getTotal();if(ct(Y=>Math.abs(Y-p)<Ot?Y:p),Math.abs(c.lastRenderedPosition-p)>=Ot?(ut.current({position:x,totalHeight:q}),c.lastRenderedPosition=p,c.idleFrames=0):c.idleFrames+=1,c.idleFrames>=2){Xt();return}if(typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(Y=>_e.current(Y));return}c.loopActive=!1},[R,Xt]);_e.current=St;const Kt=t.useCallback(()=>{const c=Rt.current;if(c.idleFrames=0,!c.loopActive){if(c.loopActive=!0,typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(St);return}c.loopActive=!1}},[St]),Ce=t.useCallback((c,p)=>{const x=p?.immediate??!1,q=gt(c,N.top);if(d.current=c,x){Rt.current.lastRenderedPosition=c,Rt.current.idleFrames=0,ct(c),et({position:q,totalHeight:R.getTotal()});return}Kt()},[Kt,R,N.top,et]),xt=t.useCallback((c,p=0)=>{const x=F.current;if(!x)return c;const q=x.getScrollPosition();le.current+=1;const X=x.getContentSize()+p,Y=x.getViewportSize(),$=x.scrollTo(c,{contentSize:X,viewportSize:Y});return $===q&&(le.current=Math.max(0,le.current-1)),Math.abs($-c)>.5&&(Te.current=!0),$},[]),Mt=t.useRef(!1);t.useEffect(()=>{if(!Mt.current)if(Mt.current=!0,V==null&&typeof I!="number"&&typeof v=="number"){const c=Qt(Math.max(v,0),N.top),p=Math.abs(c-d.current)>.5;Ce(c,{immediate:!0}),p&&F.current?.scrollTo(c)}else Ce(d.current,{immediate:!0})},[V,I,v,N.top,Ce]),t.useEffect(()=>{const c=R.getTotal();if(He!==c){Vt(c);return}if(Te.current){Te.current=!1;const p=F.current;if(p&&Math.abs(p.getScrollPosition()-d.current)>.5){const x=xt(d.current);Te.current=!1,Ce(x,{immediate:!0})}}},[R,He,r,xt,Ce]),t.useEffect(()=>{if(Q.current!==null){const{index:c,align:p,offset:x}=Q.current,q=Be(c,r),{cumulative:X,currentValue:Y}=R.prefixSum(q,{materializeOption:{materialize:!1}});if(X!==void 0&&Y!==void 0){const $=Math.max(X-Y,0);let ce=$;p==="bottom"?ce=X-se:p==="center"&&(ce=$+Y/2-se/2),x&&(ce-=x),ce=Math.max(0,ce);const Oe=Math.max(0,He+N.top+N.bottom-se),Pe=Math.min(Qt(ce,N.top),Oe);Math.abs(Pe-d.current)>1&&(P.debug("[VirtualScroll] Drift correction",{from:d.current,to:Pe,targetIndex:q}),le.current===0&&(le.current+=1),F.current?.scrollTo(Pe),Ce(Pe,{immediate:!0}))}}ht.current=!1},[He,R,r,N.top,Ce,se,N.bottom]),t.useEffect(()=>{const c=O.current;if(c===N.top||(O.current=N.top,Q.current))return;const p=gt(d.current,c),x=Qt(p,N.top);d.current=x,F.current?.scrollTo(x),Ce(x,{immediate:!0})},[N.top,Ce]);const At=t.useCallback((c,p)=>{if(r===0)return;const x=Be(c,r),q=R.get(x),X=p-q,Y=R.update(x,p);Y!==void 0&&Vt(Y),P.debug("[VirtualScroll] Updated item size manually",{index:x,size:p,total:Y});let $=Q.current?Q.current.index:null;if($===null){const ce=d.current,Oe=Dr(W).top,Pe=gt(ce,Oe),{index:ue,cumulative:rt}=R.findIndexAtOrAfter(Pe,{materializeOption:{materialize:!1}});$=rt!==void 0&&rt===Pe?ue+1:ue}if($!==-1&&x<$&&X!==0){const ce=d.current,Oe=ce+X;xt(Oe,X),Ce(Oe,{immediate:!0}),P.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:ce,to:Oe,causedByIndex:x,delta:X,activeVisibleStartIndex:$})}},[R,r,xt,Ce,W]),u=t.useCallback((c,p)=>{if(!F.current||r===0)return;const x=Be(c,r),q=Be(x-a*2,r),X=Be(x+a*2,r),{cumulative:Y,total:$,currentValue:ce}=R.prefixSum(x,{materializeOption:{materialize:!0,ranges:[{from:q,to:X}]}});if(P.debug("[VirtualScroll] Scrolling to index:",x,"ItemBottom:",Y,"Total height:",$,"ItemHeight:",ce,"safeIndexFrom:",q,"safeIndexTo:",X),!$)return;const Oe=Math.max(Y-ce,0);let Pe=Oe;p?.align==="bottom"?Pe=Y-se:p?.align==="center"&&(Pe=Oe+ce/2-se/2),p?.offset&&(Pe-=p.offset),Pe=Math.max(0,Pe);const ue=Qt(Pe,N.top),rt=F.current?.getContentSize()??$+N.top+N.bottom,We=Math.max(0,rt-se),Ge=Math.min(ue,We);Q.current={index:x,align:p?.align,offset:p?.offset};const Gt=F.current?.getScrollPosition()??-1,Jt=Math.abs(Gt-Ge)>.5;at.current=!1,le.current=0,Jt&&(at.current=!0,le.current+=1,F.current?.scrollTo(Ge)),Vt($),Ce(Ge,{immediate:!0}),P.debug("[VirtualScroll] Setting scroll position to:",Ge,{original:ue,max:We})},[R,a,r,N.top,N.bottom,se,Ce]),y=t.useRef(V&&r===0?V:null);t.useEffect(()=>{const c=y.current;!c||r===0||(y.current=null,u(K(Math.trunc(c.index),0,r-1),{align:"top",offset:-Math.max(0,c.offsetPx??0)}))},[r,u]);const k=t.useCallback(c=>{if(!F.current||r===0)return;const p=R.getTotal(),x=K(Math.floor(c),0,p),{index:q,cumulative:X,currentValue:Y}=R.findIndexAtOrAfter(x,{materializeOption:{materialize:!1}}),ce=(X??0)-(Y??0)-x;u(q,{offset:ce})},[R,r,u]),U=t.useCallback(()=>{if(r===0)return null;const c=gt(d.current,N.top),{index:p,cumulative:x,currentValue:q}=R.findIndexAtOrAfter(c,{materializeOption:{materialize:!1}});if(p===-1)return{index:r-1,offsetPx:0};if(x===c)return{index:K(p+1,0,r-1),offsetPx:0};const X=(x??0)-(q??0);return{index:p,offsetPx:Math.max(0,c-X)}},[R,r,N.top]),Ie=t.useCallback(c=>{const p=gt(d.current,N.top),x=typeof c=="function"?c(p):c;k(x);const q=F.current?.getScrollPosition(),X=typeof q=="number"?q:d.current;return Ce(X),gt(X,Me.current)},[N.top,k,Ce]),Xe=t.useCallback(c=>{const p=F.current;if(!p)return gt(d.current,Me.current);const x=p.scrollTo(q=>q+c);return gt(x,Me.current)},[]),ft=t.useCallback(c=>F.current?.applyWheel(c)??!1,[]),tt=t.useCallback((c,p)=>{P.debug("[VirtualScroll] Scroll position changed:",c);const x=at.current;x&&(at.current=!1);const q=le.current>0;q&&(le.current=0);const X=ht.current&&h.current===r;if(x||q||X||(Q.current=null),Ce(c),T){if(x||q)return;const Y=c-p;if(P.debug("[VirtualScroll] Scroll diff:",Y,"New:",c,"Prev:",p),Math.abs(Y)>1){const $=Y>0?"down":"up";Ae($),it(!0),P.debug("[VirtualScroll] Showing scroll buttons. Direction:",$),$e.current&&clearTimeout($e.current),$e.current=setTimeout(()=>{it(!1),P.debug("[VirtualScroll] Hiding scroll buttons")},2e3)}}},[Ce,T,r]),Tt=t.useMemo(()=>gt(Fe,N.top),[N.top,Fe]),mt=t.useMemo(()=>{const c=R.getTotal(),p=jr(Tt,se,a,r,s,R,c);return P.debug("[VirtualScroll] Calculated rendering range:",()=>({...p,scrollPosition:Tt,renderingContentSize:c,overscanCount:a,viewportSize:se})),p},[Tt,se,a,r,s,R]),{renderingStartIndex:Ct,renderingEndIndex:Ft,visibleStartIndex:Pt,visibleEndIndex:Wt}=mt,vt=t.useCallback((c,p)=>{if(!D||r===0)return;const x=Be(c,r);if(!(p?.ensureVisible??!0)){const We=ve.current.get(x);We&&(he.current=null,be.current=x,E(We));return}const X=R.prefixSum(x,{materializeOption:{materialize:!1}}),Y=X.currentValue,$=Math.max(X.cumulative-Y,0),ce=$+Y,Oe=gt(d.current,N.top),Pe=Oe+se;if($<Oe||ce>Pe){u(x);const We=ve.current.get(x);We?(he.current=null,be.current=x,E(We)):he.current=x;return}const rt=ve.current.get(x);if(rt){he.current=null,be.current=x,E(rt);return}he.current=x},[D,r,R,N.top,u,E,se]),Ht=t.useCallback((c,p)=>{if(!(!D||c.defaultPrevented)&&!(c.altKey||c.metaKey||c.ctrlKey)&&c.target===c.currentTarget&&!c.currentTarget.isContentEditable){if(c.key==="ArrowLeft"||c.key==="ArrowRight"){const x=de.current;if(!x||c.shiftKey||!_?.includes("arrow")||!(Number.isFinite(C)&&C>0))return;c.preventDefault(),x(c.key==="ArrowLeft"?-C:C);return}if(c.key==="ArrowDown"){p<r-1&&(c.preventDefault(),vt(p+1));return}if(c.key==="ArrowUp"){p>0&&(c.preventDefault(),vt(p-1));return}if(c.key==="PageDown"){if(p<r-1){c.preventDefault();const{visibleStartIndex:x,visibleEndIndex:q}=lt.current,X=Math.max(q-x+1,1),Y=Math.max(X,1),$=Be(Math.min(p+Y,r-1),r);vt($)}return}if(c.key==="PageUp"&&p>0){c.preventDefault();const{visibleStartIndex:x,visibleEndIndex:q}=lt.current,X=Math.max(q-x+1,1),Y=Math.max(X,1),$=Be(p-Y,r);vt($)}}},[D,r,vt,_,C]),qt=t.useCallback((c,p)=>{if(c.key!=="Escape"||c.defaultPrevented||c.nativeEvent.isComposing||c.target===c.currentTarget)return;const x=c.target;x instanceof HTMLInputElement||x instanceof HTMLTextAreaElement||x instanceof HTMLSelectElement||x.isContentEditable||(c.preventDefault(),vt(p))},[vt]),nr=t.useCallback(c=>{if(!D)return;const p=Be(c,r);he.current=null,be.current=p,me?.(p)},[D,r,me]);t.useEffect(()=>{const c=F.current?.getScrollPosition()??0,p=d.current,x=gt(p,N.top);P.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:Ct,renderingEndIndex:Ft,visibleStartIndex:Pt,visibleEndIndex:Wt,scrollPositionState:Fe,paneScrollPosition:p,logicalScrollPosition:x,contentSize:He,scrollPaneScrollPosition:c})),bt({renderingStartIndex:Ct,renderingEndIndex:Ft,visibleStartIndex:Pt,visibleEndIndex:Wt,scrollPosition:x,totalHeight:He})},[He,Ft,Ct,N.top,bt,Fe,Wt,Pt]);const Nt=t.useCallback(()=>{if(!T)return null;const c=we&&Qe!==null,p=Qe==="up";return A.jsx("div",{className:"aqvs-scroll-to-edge-overlay","data-visible":c,inert:!c,children:p?A.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:A.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:c?0:-1,onClick:x=>{x.stopPropagation(),at.current=!0,u(0),it(!1)},children:"Top"})}):A.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:A.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:c?0:-1,onClick:x=>{x.stopPropagation(),at.current=!0,u(r-1),it(!1)},children:"Bottom"})})})},[T,we,Qe,u,r]),zt=t.useRef(0),{visibleItems:Lt,renderAnchor:It}=t.useMemo(()=>{if(r===0)return{visibleItems:A.jsx("div",{className:"aqvs-no-items-container",children:A.jsx("div",{className:"aqvs-no-items-text",children:"No items"})}),renderAnchor:0};const c=Be(Ct,r),p=Be(Ft,r),{cumulative:x,currentValue:q}=R.prefixSum(c,{materializeOption:{materialize:!1}}),X=x-q;Number.isFinite(X)&&Math.abs(X-zt.current)>$r&&(zt.current=X);const Y=zt.current,$=[],ce=[];let Oe=0,Pe=X;for(let ue=c;ue<=p;ue++){if(ce.length>=Sr){P.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:Sr,safeRenderingStartIndex:c,safeRenderingEndIndex:p});break}const rt=s(ue),We=R.get(ue),Ge=rt-We;Ge!==0&&$.push({index:ue,value:rt});const Gt=Pe+Oe,Jt=n?n(ue):ue;ce.push(A.jsx(Cn,{index:ue,top:Gt-Y,height:rt,item:e(ue),clipItemHeight:Ke,enableKeyboardNavigation:D,onKeyDown:Ht,onEscapeKeyDown:nt?qt:void 0,onFocus:nr,registerItemRef:Ue,children:w},Jt)),Oe+=Ge,Pe+=We}return $.length>0&&Promise.resolve().then(()=>{if(Ye.current)return;let ue=0;for(const Ge of $)if(Ge.index<Pt){const Gt=R.get(Ge.index);ue+=Ge.value-Gt}const rt=R.updates($);if(Ye.current||typeof rt!="number")return;Vt(rt),P.debug("[VirtualScroll] Updated heights for items",$,"New total height:",rt);const We=F.current?.getScrollPosition()??d.current;if(ue!==0){const Ge=We+ue;xt(Ge,ue),Ce(Ge,{immediate:!0}),P.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:We,to:Ge,shiftAmount:ue})}else We!==d.current&&Ce(We)}),{visibleItems:ce,renderAnchor:Y}},[w,Ke,He,D,r,R,e,n,s,nr,Ht,nt,qt,xt,Ue,Ft,Ct,Ce,Pt]),Bt=t.useCallback(c=>{const p=(G??0)>0,x=Math.abs(c-Fe),q=p&&x>.5?Fe:c,X=gt(q,N.top);if(P.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:c,effectiveScrollPosition:X,renderingStartIndex:Ct,renderingEndIndex:Ft,itemCount:r,viewportSize:se,callbackThrottleMs:G,diff:x,rawEffectiveScrollPosition:q})),r===0)return Lt;const Y=N.top+It-q,$=N.bottom>0?A.jsx("div",{className:"aqvs-bottom-inset",style:{top:R.getTotal()-It,height:N.bottom}},"virtualscroll-bottom-inset"):null;return P.debug("[VirtualScroll] Rendering items",()=>({containerTop:Y,logicalScrollPosition:Tt,resolvedInsets:N,effectiveScrollPosition:X})),A.jsxs("div",{className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${Y}px)`,willChange:"transform"},children:[Lt,$]})},[G,r,R,Tt,It,Ft,Ct,N,Fe,se,Lt]),Yt=t.useMemo(()=>({renderingStartIndex:mt.renderingStartIndex,renderingEndIndex:mt.renderingEndIndex,visibleStartIndex:mt.visibleStartIndex,visibleEndIndex:mt.visibleEndIndex,scrollPosition:Tt,totalHeight:R.getTotal()}),[mt,Tt,R,He]);t.useEffect(()=>{lt.current=Yt},[Yt]);const[$t,Et]=t.useState(""),jt=t.useRef(Z);t.useLayoutEffect(()=>{jt.current=Z},[Z]);const wt=Z?.debounceMs??400,pt=Number.isFinite(wt)&&wt>=0,Ut=Z!==void 0;t.useEffect(()=>{Ut&&!pt&&P.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${wt}. Announcements are disabled.`)},[Ut,pt,wt]),t.useEffect(()=>{if(!(Ut&&pt)){Et("");return}const c=setTimeout(()=>{const p=jt.current?.format;if(!p)return;const x=p({visibleStartIndex:Pt,visibleEndIndex:Wt,itemCount:r});Et(x)},wt);return()=>clearTimeout(c)},[Ut,pt,wt,Pt,Wt,r]),t.useImperativeHandle(ne,()=>({getScrollPosition:()=>{const c=F.current?.getScrollPosition();return typeof c=="number"?gt(c,Me.current):-1},getContentSize:()=>F.current?.getContentSize()??-1,getViewportSize:()=>F.current?.getViewportSize()??-1,scrollTo:Ie,scrollBy:Xe,applyWheel:ft,scrollToIndex:u,getFenwickTreeTotalHeight:()=>R.getTotal(),getFenwickSize:()=>R.getSize(),focusItemAtIndex:vt,getRange:()=>lt.current,getScrollAnchor:U,updateItemSize:At}),[Ie,Xe,ft,u,R,vt,U,At]);const hr=R.getTotal()+N.top+N.bottom,sr=A.jsx(Br,{ref:F,contentSize:hr,viewportSize:i,onViewportSizeChange:Se,className:l,testId:f,onScroll:tt,background:M,tapScrollCircleOptions:ye,inertiaOptions:st,overscrollBehavior:Je,itemCount:r,scrollBarWidth:ae,enableThumbDrag:oe,enableTrackClick:Ee,enableArrowButtons:H,enablePointerDrag:ge,pointerDragInputs:ke,renderThumbOverlay:j,wheelSpeedMultiplier:ot,onWheelHorizontal:ie,onPanHorizontal:ze,contentInsets:N,contentProps:z,visibleStartIndex:Pt,visibleEndIndex:Wt,renderOverlay:Nt,initialScrollPosition:dt.position,children:Bt});return Ut?A.jsxs(A.Fragment,{children:[sr,A.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:$t})]}):sr},Ur=t.forwardRef(Pn),cr=262144,Or=3,Gr=32768,Mr=128,Ir=128,Er=128,yr=128,vr=10,Nn=(r,e)=>Math.max(1,Math.floor((r??Gr)/Math.max(1,e))),zn=(r,e,n,s,i)=>{let a=0,l=0,f=Math.max(0,Math.min(s,n-1));for(;f<n&&a<r&&l<Sr;)a+=e(f),l+=1,f+=1;return Math.max(1,l+2*i+2)},fr=(r,e,n)=>{if(!(Number.isInteger(r)&&r>=0&&r<=cr))throw new RangeError(`[VirtualGrid] ${e==="row"?"getRowHeight":"getColWidth"}(${n}) returned ${r} — must be an integer in [0, ${cr}] (0 = hidden). Oversized tracks would pierce the browser layout-coordinate wall (see the design plan §3.1/§6).`);return r},kn=(r,e,n,s,i,a,l,f)=>{const m=jr(r,e,n,s,i,a,l);if(s===0)return{renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0};const g=K(m.renderingStartIndex,0,s-1),{cumulative:w,currentValue:M}=a.prefixSum(g,{materializeOption:{materialize:!1}}),I=w-M,v=Number.isFinite(I)&&Math.abs(I-f)>$r?I:f;return{renderingColStart:m.renderingStartIndex,renderingColEnd:m.renderingEndIndex,visibleColStart:m.visibleStartIndex,visibleColEnd:m.visibleEndIndex,colAnchor:v}},Fr=[],Vn=(r,e,n,s,i)=>{const a=[],l=[];if(e<r)return{columns:a,widthUpdates:l,truncated:0};const f=s.prefixSum(r,{materializeOption:{materialize:!1}});let m=f.cumulative-f.currentValue,g=0,w=r;for(;w<=e;){if(a.length>=i)return{columns:a,widthUpdates:l,truncated:e-w+1};const M=n(w),I=s.get(w);if(M!==I&&l.push({index:w,value:M}),M>0){a.push({col:w,left:m,width:M}),m+=I,g=0,w+=1;continue}if(m+=I,g+=1,w+=1,g>lr){const v=s.findIndexAtOrAfter(m+.5,{materializeOption:{materialize:!1}});if(v.index===-1||v.index<=w||!Number.isSafeInteger(v.index))break;const V=s.prefixSum(v.index,{materializeOption:{materialize:!1}});m=V.cumulative-V.currentValue,w=v.index,g=0}}return{columns:a,widthUpdates:l,truncated:0}},An=(r,e,n)=>{const s=[],i=[];let a=0;for(let l=0;l<r;l+=1){const f=e(l),m=n.get(l);f!==m&&i.push({index:l,value:f}),f>0&&s.push({col:l,left:a,width:f}),a+=m}return{columns:s,widthUpdates:i,width:a}},Ln=(r,e,n,s)=>{const i=[],a=[];let l=0;for(let f=r-e;f<r;f+=1){const m=n(f),g=s.get(f);m!==g&&a.push({index:f,value:m}),m>0&&i.push({col:f,left:l,width:m}),l+=g}return{columns:i,widthUpdates:a,width:l}},dr=(r,e,n)=>Math.min(r,Math.max(0,n-e)),Dn={renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0,key:"0:0:0"},_n=({rowCount:r,colCount:e,getRowHeight:n,getColWidth:s,getCell:i,getCellKey:a,children:l,getCellProps:f,getRowProps:m,contentProps:g,background:w,contentInsets:M,onRowFocus:I,frozenLeadingCols:v=0,frozenLeadingRows:V=0,frozenTrailingCols:G=0,frozenTrailingRows:W=0,horizontalKeyInputs:me,horizontalKeyStep:Ne,onScroll:pe,onRangeChange:ie,onRenderTruncated:ze,callbackThrottleMs:_,initialScrollAnchor:C,overscanRows:z=Or,overscanCols:Z=Or,viewportSize:ne,__maxRenderedCells:ae,behaviorOptions:oe,scrollBarOptions:Ee,liveRegion:H,className:T,testId:j},ye)=>{const ge=t.useRef(null),ke=t.useRef(null),D=t.useRef(n);D.current=n;const nt=t.useRef(s);nt.current=s;const ot=oe?.resetOnGetColWidthChange===!0,Je=oe?.resetOnGetItemHeightChange===!0?n:null,Ke=ot?s:null,xe=t.useCallback(o=>fr(D.current(o),"row",o),[Je]),Ve=t.useCallback(o=>fr(nt.current(o),"col",o),[Ke]),Re=oe?.defaultColWidth,se=t.useMemo(()=>{if(Re!==void 0&&!(Number.isInteger(Re)&&Re>=0&&Re<=cr))throw new RangeError(`[VirtualGrid] behaviorOptions.defaultColWidth must be an integer in [0, ${cr}], received ${Re}.`);return{resetOnValueFnChange:ot,baseValue:Re}},[ot,Re]),Se=Pr(e,Ve,se),[F,lt]=t.useState(0);if(!(Number.isInteger(v)&&v>=0&&v<=Mr))throw new RangeError(`[VirtualGrid] frozenLeadingCols must be an integer in [0, ${Mr}], received ${v}.`);const Q=Math.min(v,e),Ye=t.useRef(0);if(!(Number.isInteger(G)&&G>=0&&G<=Er))throw new RangeError(`[VirtualGrid] frozenTrailingCols must be an integer in [0, ${Er}], received ${G}.`);const fe=Math.min(G,e-Q),N=t.useRef(0);if(!(Number.isInteger(V)&&V>=0&&V<=Ir))throw new RangeError(`[VirtualGrid] frozenLeadingRows must be an integer in [0, ${Ir}], received ${V}.`);const B=Math.min(V,r);if(!(Number.isInteger(W)&&W>=0&&W<=yr))throw new RangeError(`[VirtualGrid] frozenTrailingRows must be an integer in [0, ${yr}], received ${W}.`);const Le=Math.min(W,r-B),R=Math.max(0,r-B-Le),dt=t.useRef(!1),Fe=t.useRef(0),ct=t.useRef(0),[He,Vt]=t.useState(0),{frozenRows:d,frozenHeight:O}=t.useMemo(()=>{if(B===0)return{frozenRows:[],frozenHeight:0};const o=[];let b=0;for(let S=0;S<B;S+=1){const L=xe(S);L>0&&o.push({row:S,top:b,height:L}),b+=L}return{frozenRows:o,frozenHeight:b}},[B,He,xe]);Fe.current=O;const[J,ee]=t.useState(0),{trailingRows:de,trailingHeight:te}=t.useMemo(()=>{if(Le===0)return{trailingRows:[],trailingHeight:0};const o=[];let b=0;for(let S=r-Le;S<r;S+=1){const L=xe(S);L>0&&o.push({row:S,top:b,height:L}),b+=L}return{trailingRows:o,trailingHeight:b}},[Le,r,J,xe]);ct.current=te;const De=t.useCallback(o=>xe(o+B),[xe,B]),ve=t.useRef(I);ve.current=I;const he=I!==void 0,be=t.useMemo(()=>he?o=>ve.current?.(o+B):void 0,[B,he]),Qe=O,Ae=te,[we,it]=t.useState(B),$e=t.useRef(null),at=t.useRef(!1);if(we!==B){it(B),at.current=!0;const o=ge.current?.getScrollAnchor()??null;$e.current=o===null?null:{row:o.index+we,offsetPx:o.offsetPx}}const le=t.useRef(0),Te=t.useRef(0),ht=t.useRef(!1),[h,E]=t.useState(Dn),je=t.useRef(h);je.current=h;const et=t.useRef(0),[qe,bt]=t.useState(()=>Se.getTotal()??0),Me=t.useRef(qe);Me.current=qe;const ut=t.useCallback(o=>{typeof o=="number"&&Number.isFinite(o)&&(Me.current=o,bt(o))},[]);t.useLayoutEffect(()=>{const o=Se.getTotal();typeof o=="number"&&Number.isFinite(o)&&o!==Me.current&&ut(o)});const Ue=Ee?.width??12,Ot=ne===void 0?null:{width:Math.max(0,Math.round(ne.width)-Ue),height:Math.max(0,Math.round(ne.height)-Ue)},[Rt,Xt]=t.useState({width:0,height:0}),_e=Ot??Rt,St=t.useRef(_e);St.current=_e;const Kt=_e.height>0&&_e.height-O-te<=0;dt.current=Kt;const Ce=Ot!==null;t.useLayoutEffect(()=>{if(Ce)return;const o=ke.current;if(o===null)return;const b=()=>{const L=Math.max(0,Math.round(o.clientWidth)-Ue),re=Math.max(0,Math.round(o.clientHeight)-Ue);Xt(Ze=>Ze.width===L&&Ze.height===re?Ze:{width:L,height:re})};b();const S=new ResizeObserver(b);return S.observe(o),()=>S.disconnect()},[Ue,Ce]);const xt=t.useCallback(()=>{const o=ke.current;o!==null&&o.style.setProperty("--aqvs-grid-hx-residual",`${et.current-le.current}px`)},[]),Mt=t.useCallback(()=>Math.max(0,St.current.width-Ye.current-N.current),[]),At=t.useCallback(()=>{const o=Mt(),b=kn(Ye.current+le.current,o,Z,e,Ve,Se,Me.current,je.current.colAnchor);if(Q>0&&(b.renderingColStart=Math.max(b.renderingColStart,Q),b.visibleColStart=Math.max(b.visibleColStart,Q)),fe>0){const L=e-fe-1;b.renderingColEnd=Math.min(b.renderingColEnd,L),b.visibleColEnd=Math.min(b.visibleColEnd,L)}(Q>0||fe>0)&&(o<=0||b.renderingColStart>b.renderingColEnd)&&(b.renderingColStart=e,b.renderingColEnd=e-1,b.visibleColStart=e,b.visibleColEnd=e-1);const S=`${b.renderingColStart}:${b.renderingColEnd}:${b.colAnchor}`;S!==je.current.key&&E({...b,key:S})},[Z,e,Ve,Se,Q,fe,Mt]),[u,y]=t.useState(0),k=t.useRef(null),U=t.useCallback(()=>{k.current===null&&(k.current=requestAnimationFrame(()=>{k.current=null,y(le.current)}))},[]);t.useEffect(()=>()=>{k.current!==null&&cancelAnimationFrame(k.current)},[]);const Ie=t.useRef(pe);Ie.current=pe;const Xe=t.useRef(ie);Xe.current=ie;const ft=t.useRef(ze);ft.current=ze;const tt=t.useRef(null),[Tt,mt]=t.useState(null),[Ct,Ft]=t.useState(_e.height);Ct!==_e.height&&(Ft(_e.height),mt(null));const Pt=C===void 0||r===0?0:K(Math.trunc(C.row),0,r-1),Wt=t.useMemo(()=>{const o=tt.current?.renderingStartIndex??Pt;return zn(Math.max(0,_e.height-Fe.current-ct.current),xe,r,o,z)},[_e.height,xe,r,Pt,z,Qe,Ae]),vt=Tt??Wt,Ht=t.useCallback(()=>{const o=tt.current;if(o===null)return null;const b=je.current;return{renderingRowStart:o.renderingStartIndex,renderingRowEnd:o.renderingEndIndex,visibleRowStart:o.visibleStartIndex,visibleRowEnd:o.visibleEndIndex,renderingColStart:b.renderingColStart,renderingColEnd:b.renderingColEnd,visibleColStart:b.visibleColStart,visibleColEnd:b.visibleColEnd,scrollX:le.current,scrollY:Te.current,totalWidth:Me.current,totalHeight:o.totalHeight+Fe.current+ct.current}},[]),qt=t.useCallback(()=>{const o=Ht();o!==null&&Xe.current?.(o)},[Ht]),nr=t.useCallback(o=>{const b=Mt(),S=Math.max(0,Me.current-Ye.current-N.current-b),L=K(o,0,S);return L!==le.current&&(le.current=L,xt(),At(),U(),Ie.current?.({x:L,y:Te.current})),L},[xt,At,U,Mt]),Nt=t.useRef(nr);Nt.current=nr,t.useLayoutEffect(()=>{et.current=h.colAnchor,xt(),qt()},[h,xt,qt]),t.useLayoutEffect(()=>{tt.current!==null&&qt()},[O,te,qt]);const zt=t.useRef(null),Lt=t.useCallback(o=>{const b=K(o.col,0,Math.max(0,e-1)),S=Se.prefixSum(b,{materializeOption:{materialize:!1}}),L=S.cumulative-S.currentValue,re=S.currentValue,Ze=Mt();return(o.alignX==="end"?L+re-Ye.current-Ze:o.alignX==="center"?L+re/2-Ye.current-Ze/2:L-Ye.current)+o.offsetX},[Se,e,Mt]),It=t.useRef(null),Bt=t.useCallback(()=>{const o=It.current;It.current=null,!(o===null||o.length===0)&&(ut(Se.updates(o)),lt(b=>b+1))},[Se,ut]),Yt=t.useRef({count:0,warned:!1}),{frozenColumns:$t,frozenWidth:Et}=t.useMemo(()=>{if(Q===0)return Yt.current.count=0,Yt.current.warned=!1,{frozenColumns:Fr,frozenWidth:0};const{columns:o,widthUpdates:b,width:S}=An(Q,Ve,Se);if(b.length>0){const L=Yt.current;L.count>=vr?L.warned||(L.warned=!0,P.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:Q,pendingUpdates:b.length})):(L.count+=1,It.current=[...It.current??[],...b],Promise.resolve().then(Bt))}else Yt.current.count=0,Yt.current.warned=!1;return{frozenColumns:o,frozenWidth:S}},[Q,F,Ve,Se,Bt]);Ye.current=Et,t.useLayoutEffect(()=>{Q>0?ke.current?.style.setProperty("--aqvs-grid-frozen-width",`${Et}px`):ke.current?.style.removeProperty("--aqvs-grid-frozen-width")},[Et,Q]);const jt=t.useRef({count:0,warned:!1}),{trailingColumns:wt,trailingWidth:pt}=t.useMemo(()=>{if(fe===0)return jt.current.count=0,jt.current.warned=!1,{trailingColumns:Fr,trailingWidth:0};const{columns:o,widthUpdates:b,width:S}=Ln(e,fe,Ve,Se);if(b.length>0){const L=jt.current;L.count>=vr?L.warned||(L.warned=!0,P.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:fe,pendingUpdates:b.length})):(L.count+=1,It.current=[...It.current??[],...b],Promise.resolve().then(Bt))}else jt.current.count=0,jt.current.warned=!1;return{trailingColumns:o,trailingWidth:S}},[fe,e,F,Ve,Se,Bt]);N.current=pt,t.useLayoutEffect(()=>{fe>0?ke.current?.style.setProperty("--aqvs-grid-trailing-width",`${pt}px`):ke.current?.style.removeProperty("--aqvs-grid-trailing-width")},[pt,fe]),t.useLayoutEffect(()=>{const o=zt.current;o===null?Nt.current(le.current):Nt.current(Lt(o)),At()},[_e.width,qe,F,Et,pt,At,Lt]);const Ut=t.useRef(!1);t.useLayoutEffect(()=>{if(Ut.current||C===void 0||e===0)return;Ut.current=!0;const o=K(Math.trunc(C.col),0,e-1);if(o<Q||o>=e-fe)return;const b={col:o,alignX:"start",offsetX:Math.max(0,C.offsetX)};zt.current=b,Nt.current(Lt(b))},[C,e,Lt,Q,fe]);const hr=t.useCallback(o=>{Te.current=o,ht.current=!0,Ie.current?.({x:le.current,y:o})},[]),sr=t.useCallback(o=>{if(R===0||dt.current)tt.current={renderingStartIndex:r,renderingEndIndex:r-1,visibleStartIndex:r,visibleEndIndex:r-1,scrollPosition:0,totalHeight:R===0?0:o.totalHeight},Te.current=0;else{const b=B;tt.current={renderingStartIndex:o.renderingStartIndex+b,renderingEndIndex:o.renderingEndIndex+b,visibleStartIndex:o.visibleStartIndex+b,visibleEndIndex:o.visibleEndIndex+b,scrollPosition:o.scrollPosition,totalHeight:o.totalHeight},Te.current=o.scrollPosition}mt(b=>{const S=Math.max(1,o.renderingEndIndex-o.renderingStartIndex+1);return S===b?b:S}),qt()},[qt,B,R,r]),c=t.useCallback(o=>{zt.current=null,Nt.current(le.current+o)},[]),p=Nn(ae,vt+d.length+de.length),x=t.useRef({count:0,warned:!1}),{placedColumns:q,truncatedCols:X}=t.useMemo(()=>{const o=Math.max(0,_e.width-Et-pt);if(e===0||o<=0)return{placedColumns:[],truncatedCols:0};if(h.renderingColStart>h.renderingColEnd)return{placedColumns:[],truncatedCols:0};const b=Math.max(1,p-$t.length-wt.length),{columns:S,widthUpdates:L,truncated:re}=Vn(K(h.renderingColStart,0,e-1),K(h.renderingColEnd,0,e-1),Ve,Se,b);if(L.length>0){const Ze=x.current;Ze.count>=vr?Ze.warned||(Ze.warned=!0,P.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:h.key,pendingUpdates:L.length})):(Ze.count+=1,It.current=[...It.current??[],...L],Promise.resolve().then(Bt))}else x.current.count=0,x.current.warned=!1;return{placedColumns:S,truncatedCols:re}},[h,e,_e.width,Et,pt,$t.length,wt.length,F,Ve,Se,p,Bt]),Y=t.useRef("");t.useEffect(()=>{if(X>0){const o=`${h.key}:${X}`;o!==Y.current&&(Y.current=o,ft.current?.({renderedCells:(q.length+$t.length+wt.length)*(vt+d.length+de.length),droppedCols:X}))}},[X,h.key,q.length,$t.length,wt.length,vt,d.length,de.length]);const $=h.colAnchor,ce=t.useCallback(o=>{const b=m?.(o),S=xe(o)===0,L=S?null:q.map(({col:re,left:Ze,width:er})=>{const kt=f?.(o,re),ir={...kt?.style,left:Ze-$,width:er};return t.createElement("div",{...kt,key:a?a(o,re):re,className:yt.twMerge("aqvs-grid-cell",kt?.className),style:ir},l(i(o,re),o,re))});return Q===0&&fe===0?A.jsx("div",{...b,className:yt.twMerge("aqvs-grid-row",b?.className),style:b?.style,children:L}):A.jsxs("div",{...b,"data-aqvs-frozen-row":Q>0?"":void 0,className:yt.twMerge("aqvs-grid-row aqvs-grid-row-frozen-host",b?.className),style:b?.style,children:[S?null:$t.map(({col:re,left:Ze,width:er})=>{const kt=f?.(o,re),ir={...kt?.style,left:Ze,width:er};return t.createElement("div",{...kt,"data-aqvs-frozen-cell":"",key:a?a(o,re):re,className:yt.twMerge("aqvs-grid-cell",kt?.className),style:ir},l(i(o,re),o,re))}),S?null:A.jsx("div",{className:"aqvs-grid-row-scroll",children:A.jsx("div",{className:"aqvs-grid-row-scroll-inner",children:L})}),S||fe===0?null:A.jsx("div",{className:"aqvs-grid-row-trailing",children:A.jsx("div",{className:"aqvs-grid-row-trailing-inner",children:wt.map(({col:re,left:Ze,width:er})=>{const kt=f?.(o,re),ir={...kt?.style,left:Ze,width:er};return t.createElement("div",{...kt,"data-aqvs-trailing-cell":"",key:a?a(o,re):re,className:yt.twMerge("aqvs-grid-cell",kt?.className),style:ir},l(i(o,re),o,re))})})})]})},[q,$t,wt,Q,fe,$,m,f,a,i,l,xe]),[Oe,Pe]=t.useState(""),ue=t.useRef(null),rt=t.useRef(H);rt.current=H;const We=t.useCallback(()=>{const o=rt.current;if(o===void 0)return;const b=o.debounceMs??400;Number.isFinite(b)&&b>=0&&(ue.current!==null&&window.clearTimeout(ue.current),ue.current=window.setTimeout(()=>{ue.current=null;const S=Ht();S!==null&&Pe(L=>{const re=o.buildMessage(S);return re===L?L:re})},b))},[Ht]),Ge=H?.debounceMs??400,Gt=Number.isFinite(Ge)&&Ge>=0,Jt=H!==void 0;t.useEffect(()=>{Jt&&!Gt&&P.warn(`[VirtualGrid] liveRegion.debounceMs must be a finite number >= 0, received ${Ge}. Announcements are disabled.`)},[Jt,Gt,Ge]),t.useEffect(()=>()=>{ue.current!==null&&window.clearTimeout(ue.current)},[]),t.useEffect(()=>{We()},[h,We]);const Zr=t.useCallback(o=>{sr(o),We()},[sr,We]);return t.useImperativeHandle(ye,()=>({scrollTo:o=>{const b=ge.current;let S=Te.current;o.y!==void 0&&b!==null&&(b.scrollTo(o.y),S=b.getScrollPosition(),Te.current=S);let L=le.current;return o.x!==void 0&&(zt.current=null,L=Nt.current(o.x)),{x:L,y:S}},scrollBy:o=>{const b=ge.current;let S=Te.current;o.y!==void 0&&o.y!==0&&b!==null&&(S=b.scrollBy(o.y),Te.current=S);let L=le.current;return o.x!==void 0&&o.x!==0&&(zt.current=null,L=Nt.current(le.current+o.x)),{x:L,y:S}},scrollToCell:(o,b,S)=>{const L=ge.current;if(L!==null&&r>0){const re=K(Math.trunc(o),0,r-1);re>=B&&re<r-Le&&L.scrollToIndex(re-B,{align:S?.alignY??"top",offset:S?.offsetY})}if(e>0){const re=K(Math.trunc(b),0,e-1);if(re>=Q&&re<e-fe){const Ze={col:re,alignX:S?.alignX??"start",offsetX:S?.offsetX??0};zt.current=Ze,Nt.current(Lt(Ze))}}},getScrollPosition:()=>ht.current||ge.current!==null?{x:le.current,y:ge.current?.getScrollPosition()??Te.current}:{x:-1,y:-1},getScrollAnchor:()=>{if(r===0||e===0)return null;const o=ge.current?.getScrollAnchor()??null;if(o===null)return null;const b=Ye.current+le.current,S=Se.findIndexAtOrAfter(b,{materializeOption:{materialize:!1}});if(S.index===-1)return{row:o.index+B,col:e-1,offsetX:0,offsetY:o.offsetPx};if(S.cumulative===b)return{row:o.index+B,col:K(S.index+1,0,e-1),offsetX:0,offsetY:o.offsetPx};const L=(S.cumulative??0)-(S.currentValue??0);return{row:o.index+B,col:S.index,offsetX:Math.max(0,b-L),offsetY:o.offsetPx}},getViewportSize:()=>({width:St.current.width,height:St.current.height}),getContentSize:()=>({width:Me.current,height:ge.current===null?0:Fe.current+ct.current+Math.max(0,ge.current.getContentSize())}),getRange:Ht,updateRowSize:(o,b)=>{fr(b,"row",o),Math.trunc(o)<B?Vt(S=>S+1):Le>0&&Math.trunc(o)>=r-Le?ee(S=>S+1):ge.current?.updateItemSize(Math.trunc(o)-B,b)},updateColSize:(o,b)=>{fr(b,"col",o),ut(Se.update(K(Math.trunc(o),0,Math.max(0,e-1)),b)),lt(S=>S+1)},getFrozenSize:()=>({cols:Q,width:Ye.current,rows:B,height:Fe.current,trailingCols:fe,trailingRows:Le,trailingWidth:N.current,trailingHeight:ct.current,trailingVisibleWidth:dr(N.current,Ye.current,St.current.width),trailingVisibleHeight:dr(ct.current,Fe.current,St.current.height)}),applyWheel:o=>ge.current?.applyWheel(o)??!1,focusRowAtIndex:(o,b)=>{const S=Math.trunc(o);S<B?ke.current?.querySelector(`[data-aqvs-frozen-band-row="${S}"]`)?.focus():Le>0&&S>=r-Le?ke.current?.querySelector(`[data-aqvs-trailing-band-row="${S}"]`)?.focus():ge.current?.focusItemAtIndex(S-B,b)}}),[r,e,Se,Ht,ut,Lt,Q,B,fe,Le]),A.jsxs("div",{ref:ke,className:yt.twMerge("aqvs-grid",B>0?"aqvs-grid-has-frozen-rows":"",Le>0?"aqvs-grid-has-trailing-rows":"",T),"data-testid":j,children:[B>0?A.jsx("div",{className:"aqvs-grid-frozen-rows",style:{height:O},"data-testid":j?`${j}-frozen-rows`:void 0,children:d.map(({row:o,top:b,height:S})=>A.jsx("div",{"data-aqvs-frozen-band-row":o,className:"aqvs-grid-frozen-band-row",style:{top:b,height:S,right:Ue},tabIndex:-1,onFocus:()=>I?.(o),children:ce(o)},o))}):null,A.jsx("div",{className:"aqvs-grid-main","data-testid":j?`${j}-main`:void 0,children:A.jsx(Ur,{ref:ge,itemCount:Kt?0:R,getItem:o=>o+B,getItemKey:o=>o+B,getItemHeight:De,overscanCount:z,viewportSize:_e.height>0?Math.max(0,_e.height-O-te):void 0,callbackThrottleMs:_,behaviorOptions:oe,scrollBarOptions:Ee,contentProps:g,background:w,contentInsets:M,onItemFocus:be,horizontalKeyInputs:me,horizontalKeyStep:Ne,initialScrollAnchor:at.current?$e.current!==null&&$e.current.row>=B&&R>0?{index:$e.current.row-B,offsetPx:$e.current.offsetPx}:void 0:C!==void 0&&R>0&&Math.trunc(C.row)>=B&&Math.trunc(C.row)<r-Le?{index:Math.trunc(C.row)-B,offsetPx:C.offsetY}:void 0,onScroll:hr,onRangeChange:Zr,onWheelHorizontal:c,onPanHorizontal:c,testId:j?`${j}-rows`:void 0,children:ce},B)}),Le>0?A.jsx("div",{className:"aqvs-grid-trailing-rows",style:{height:dr(te,O,_e.height)},"data-testid":j?`${j}-trailing-rows`:void 0,children:A.jsx("div",{className:"aqvs-grid-trailing-rows-inner",style:{height:te},children:de.map(({row:o,top:b,height:S})=>A.jsx("div",{"data-aqvs-trailing-band-row":o,className:"aqvs-grid-trailing-band-row",style:{top:b,height:S,right:Ue},tabIndex:-1,onFocus:()=>I?.(o),children:ce(o)},o))})}):null,A.jsx("div",{className:"aqvs-grid-hbar-strip",style:{height:Ue,paddingRight:fe>0?Ue+dr(pt,Et,_e.width):Ue},"data-testid":j?`${j}-hbar`:void 0,children:A.jsx(Cr,{horizontal:!0,enableHorizontalTapCircle:!0,contentSize:Math.max(0,qe-Et-pt),viewportSize:Math.max(0,_e.width-Et-pt),scrollPosition:u,itemCount:Math.max(0,e-Q-fe),tapScrollCircleOptions:Ee?.tapScrollCircleOptions,onScroll:(o,b)=>(zt.current=null,Nt.current(typeof o=="function"?o(b??le.current):o)),scrollBarWidth:Ue})}),H!==void 0?A.jsx("div",{className:"aqvs-grid-live-region","aria-live":"polite","data-testid":j?`${j}-live`:void 0,children:Oe}):null]})},On=t.forwardRef(_n);exports.FenwickMapTree=_t;exports.MAX_FROZEN_LEADING_COLS=Mr;exports.MAX_FROZEN_LEADING_ROWS=Ir;exports.MAX_FROZEN_TRAILING_COLS=Er;exports.MAX_FROZEN_TRAILING_ROWS=yr;exports.MAX_RENDERED_CELLS=Gr;exports.MAX_TRACK_SIZE=cr;exports.ScrollBar=Cr;exports.ScrollPane=Br;exports.TAP_SCROLL_SPEED_DEFAULTS=Tr;exports.VirtualGrid=On;exports.VirtualScroll=Ur;exports.computeAutoTapScrollMaxSpeedMultiplier=Xr;exports.computeTapScrollSpeed=qr;exports.createResidualQuantizer=Kr;exports.minmax=K;exports.tapScrollCircleSampleVisual=vn;exports.useFenwickMapTree=Pr;exports.useHeightCache=In;exports.useLruCache=Yr;exports.useWheelBridge=En;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("react/jsx-runtime"),t=require("react"),Mt=require("tailwind-merge");class z{level;prefix;impl;constructor(e=2,n="[virtualscroll]",s=console){this.level=e,this.prefix=n,this.impl=s}static instance=new z(2,"[virtualscroll]");static setLevel(e){z.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){z.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){z.instance.setPrefix(e)}setPrefix(e){this.prefix=e}static isEnabled(e){return z.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){z.instance.debug(e,...n)}debug(e,...n){this.level<=0&&this.impl.debug(...this.formatMessage(z.resolveLazy(e)),...n.map(z.resolveLazy))}static info(e,...n){z.instance.info(e,...n)}info(e,...n){this.level<=1&&this.impl.info(...this.formatMessage(z.resolveLazy(e)),...n.map(z.resolveLazy))}static warn(e,...n){z.instance.warn(e,...n)}warn(e,...n){this.level<=2&&this.impl.warn(...this.formatMessage(z.resolveLazy(e)),...n.map(z.resolveLazy))}static error(e,...n){z.instance.error(e,...n)}error(e,...n){this.level<=3&&this.impl.error(...this.formatMessage(z.resolveLazy(e)),...n.map(z.resolveLazy))}}const Gr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},gr=6,yn=8,En=({dragState:r,normalizedDistance:e})=>{const n=1+e*.18,s=.16+e*.24,i=.38+e*.28,a=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:`${a}, ${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"}})]})},Lr=t.memo(t.forwardRef(({onDragChange:r,className:e,maxVisualDistance:n=160,size:s=40,style:i,opacity:a=1,renderVisual:o,axis:u="y"},f)=>{const[g,v]=t.useState(Gr),y=t.useRef(null),I=t.useRef(null),S=t.useRef({x:0,y:0}),P=t.useRef(null),Q=t.useRef(0),O=t.useCallback(R=>{v(R),r(R)},[r]),ve=t.useCallback((R,oe,le=!1)=>{const{x:He,y:_}=S.current,_e=R-He,it=oe-_;let Qe,Ye;if(u==="xy")Qe=Math.hypot(_e,it),Ye=Qe<gr?0:1;else{const ge=u==="x"?_e:it;Qe=Math.abs(ge),Ye=Qe<gr?0:ge<0?-1:1}const rt=Q.current;let Ie=Ye;const Oe=gr+yn;Ye===0?rt!==0&&Qe<Oe?Ie=rt:(Ie=0,le||(Q.current=0)):Ye!==rt&&rt!==0&&Qe<Oe?Ie=rt:Q.current=Ye,O({active:le||Qe>=gr,offsetX:_e,offsetY:it,distance:Qe,direction:Ie,pointerId:y.current})},[O,u]),Se=t.useCallback(R=>{if(R===null)return;const oe=P.current;oe?.hasPointerCapture(R)&&oe.releasePointerCapture(R)},[]),k=t.useCallback((R=!1)=>{R&&Se(y.current),y.current=null,I.current=null,Q.current=0,O(Gr)},[O,Se]),q=t.useCallback(R=>{if(y.current!==null&&y.current!==R.pointerId){I.current={pointerId:R.pointerId,clientX:R.clientX,clientY:R.clientY},R.preventDefault(),R.stopPropagation();return}R.preventDefault(),R.stopPropagation();const oe=P.current??R.currentTarget,{left:le,top:He,width:_,height:_e}=oe.getBoundingClientRect();S.current={x:le+_/2,y:He+_e/2},y.current=R.pointerId;try{oe.setPointerCapture(R.pointerId)}catch{}ve(R.clientX,R.clientY,!0)},[ve]),ne=t.useCallback(R=>{if(y.current!==R.pointerId){I.current!==null&&I.current.pointerId===R.pointerId&&(I.current={pointerId:R.pointerId,clientX:R.clientX,clientY:R.clientY});return}R.preventDefault(),ve(R.clientX,R.clientY)},[ve]),A=t.useCallback(R=>{if(y.current!==R.pointerId){I.current!==null&&I.current.pointerId===R.pointerId&&(I.current=null);return}R.preventDefault(),R.stopPropagation();const oe=I.current;if(I.current=null,oe!==null){Se(R.pointerId);const le=P.current;let He=!0;if(le!==null&&typeof le.setPointerCapture=="function")try{le.setPointerCapture(oe.pointerId)}catch(_){(typeof _=="object"&&_!==null&&"name"in _?_.name:void 0)==="NotFoundError"&&(He=!1)}if(He){y.current=oe.pointerId,ve(oe.clientX,oe.clientY,!0);return}}k(!0)},[k,Se,ve]),C=t.useCallback(R=>{R.target===R.currentTarget&&y.current===R.pointerId&&k(!1)},[k]);t.useImperativeHandle(f,()=>({reset:()=>{k(!0)},getElement:()=>P.current}),[k]);const N=Math.min(Math.max(a,0),1),U=s/64,W=Math.min(g.distance,n)/n,$=g.direction*W*10*U;let ie;if(u==="xy"){const R=g.distance,oe=R===0?0:$*g.offsetX/R,le=R===0?0:$*g.offsetY/R;ie=`translate(${oe}px, ${le}px)`}else u==="x"?ie=`translateX(${$}px)`:ie=`translateY(${$}px)`;const ae=o??En,F={dragState:g,normalizedDistance:W,sizeScale:U,size:s,opacity:N},we={...i,width:s,height:s,transform:ie};return we.opacity=N,D.jsx("div",{ref:P,"data-testid":"virtual-scroll-tap-circle",className:Mt.twMerge("aqvs-tap-scroll-circle",e),style:we,tabIndex:-1,onPointerDown:q,onPointerMove:ne,onPointerUp:A,onPointerCancel:A,onLostPointerCapture:C,role:"presentation",children:ae(F)})}));Lr.displayName="TapScrollCircle";const re=(r,e,n)=>Math.max(e,Math.min(n,r)),Pr=(r,e)=>{const n=e==="x",s=r.getBoundingClientRect(),i=n?s.width:s.height,a=v=>{const y=Number.parseFloat(v);return Number.isFinite(y)?y:0},o=window.getComputedStyle(r),u=a(n?o.width:o.height),f=u>0?u+a(n?o.paddingLeft:o.paddingTop)+a(n?o.paddingRight:o.paddingBottom)+a(n?o.borderLeftWidth:o.borderTopWidth)+a(n?o.borderRightWidth:o.borderBottomWidth):0,g=f>0?f:n?r.offsetWidth:r.offsetHeight;return g<=0||i<=0?1:i/g},lr="virtualscroll:tap-scroll-cancel",Zr=20,Tn=250,Cn=60,Pn=20,Nn=20,_r={maxDistance:240,minSpeedMultiplier:.2},zn=_r.maxDistance,Kr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Ir=2.2,kn=8,Vn=120,ln=1/10,Ft={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:zn,minSpeedMultiplier:_r.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},An=r=>r?{mainSizeKey:"width",crossSizeKey:"height",positionKey:"left",selectDelta:(e,n)=>e,getPointerCoordinate:({clientX:e})=>e,arrowLabels:["Scroll left","Scroll right"],arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",positionKey:"top",selectDelta:(e,n)=>n,getPointerCoordinate:({clientY:e})=>e,arrowLabels:["Scroll up","Scroll down"],arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},Nr=(r,e)=>{const n=r?.maxSpeedMultiplier,s=typeof n=="number"?n:cn(e);return{enabled:r?.enabled??Ft.enabled,size:r?.size??Ft.size,offsetX:r?.offsetX??Ft.offsetX,offsetY:r?.offsetY??Ft.offsetY,className:r?.className??Ft.className,maxVisualDistance:r?.maxVisualDistance??Ft.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(r?.minSpeedMultiplier??Ft.minSpeedMultiplier,0),opacity:re(r?.opacity??Ft.opacity,0,1),renderVisual:r?.renderVisual??Ft.renderVisual,maxSpeedCurve:r?.maxSpeedCurve??Ft.maxSpeedCurve}},Dn=({isDragging:r,isThumbHovered:e,enableThumbDrag:n})=>t.useMemo(()=>n?r?"dragging":e?"hover":"idle":"disabled",[n,r,e]),Ln=({canUseArrowButtons:r,enableArrowButtons:e,resetTapScroll:n,scrollByStep:s})=>{const i=t.useRef(null),a=t.useRef(null),o=t.useRef(null),u=t.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null),a.current!==null&&(window.clearTimeout(a.current),a.current=null),o.current!==null&&(window.removeEventListener("pointerup",o.current),window.removeEventListener("pointercancel",o.current),window.removeEventListener("blur",o.current),o.current=null)},[]),f=t.useCallback(()=>{u()},[u]),g=t.useCallback(y=>I=>{if(!r)return;I.cancelable&&I.preventDefault(),I.stopPropagation(),n(),u(),s(y),a.current=window.setTimeout(()=>{i.current=window.setInterval(()=>{s(y)},Cn)},Tn);const S=()=>u();o.current=S,window.addEventListener("pointerup",S),window.addEventListener("pointercancel",S),window.addEventListener("blur",S)},[r,u,n,s]),v=t.useCallback(y=>I=>{e&&(I.key==="Enter"||I.key===" "||I.key==="Spacebar")&&(I.preventDefault(),s(y))},[e,s]);return t.useEffect(()=>{r||u()},[r,u]),t.useEffect(()=>()=>{u()},[u]),{handleArrowPointerDown:g,handleArrowPointerUp:f,handleArrowKeyDown:v}},_n=700,Ut=(r,e)=>typeof r=="number"&&Number.isFinite(r)?r:e,Sr=({distance:r,maxDistance:e,viewportSize:n,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:a,curve:o})=>{const u=Math.max(Ut(r,0),0),f=Ut(e,0),g=f>0?Math.min(u,f)/f:1,v=Math.max(Ut(n,0),0),y=Math.max(Ut(s,0),0),I=Math.max(Ut(i,0),0),S=Math.max(v*y,40),P=a?S:1200,Q=Math.max(v*I,P),O=o?Math.max(Ut(o.exponentialScale,I),0):0,ve=o?Math.min(Q,Math.max(v*O,S)):Q,Se=Math.max(ve,S);let k=g**1.1;if(o){const ne=Math.min(Math.max(Ut(o.exponentialSteepness,0),0),_n);if(ne===0)k=g;else{const A=Math.expm1(ne)||1;k=Math.min(Math.max(Math.expm1(ne*g)/A,0),1)}}const q=Math.min(Math.max(Ut(o?.easedOffset,0),0),1);return S+(Se-S)*(q+(1-q)*k)},cn=r=>{if(!r||r<=0)return Ir;const e=Math.max(1,r),n=Math.log10(e),s=Ir+n*kn;return re(s,Ir,Vn)},Or=({contentSize:r,viewportSize:e,scrollPosition:n,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:a=!0,enableArrowButtons:o=!0,horizontal:u=!1,enableHorizontalTapCircle:f=!1,stretchMainSize:g=!1,scrollBarWidth:v=12,className:y,ariaControls:I,tapScrollCircleOptions:S,itemCount:P,renderThumbOverlay:Q,visibleStartIndex:O,visibleEndIndex:ve})=>{const[Se,k]=t.useState(!1),[q,ne]=t.useState(!1),[A,C]=t.useState(!1),N=t.useRef(null),U=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),W=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),$=t.useRef(n),ie=t.useRef(s),ae=t.useRef(Kr),F=t.useRef(null),we=t.useRef(null),R=t.useRef(null),oe=t.useRef(0),le=t.useRef(0),He=t.useMemo(()=>Nr(S,P),[P,S]),_=t.useMemo(()=>An(u),[u]),{enabled:_e,size:it,offsetX:Qe,offsetY:Ye,className:rt,maxVisualDistance:Ie,maxSpeedMultiplier:Oe,minSpeedMultiplier:ge,opacity:ue,renderVisual:Pe,maxSpeedCurve:G}=He,Ue=t.useRef({viewportSize:e,maxScrollPosition:Math.max(r-e,0),scrollBarVisible:r>e,effectiveTapMaxDistance:Math.max(Ie,1),tapCircleMaxSpeedMultiplier:Oe,tapCircleMinSpeedMultiplier:ge,tapCircleMaxSpeedCurve:G,tapScrollCircleOptions:S,effectiveTrackLength:0,onScroll:s,scrollPosition:n}),{mainSizeKey:ee,crossSizeKey:We,positionKey:he,selectDelta:V,getPointerCoordinate:Z,arrowLabels:Xe,arrowIcons:M,directionClass:ht,orientation:Ge}=_,ft=Math.max(Ie,1),nt=e/r,St=Math.max(e-v*2,0),m=nt*St,H=Math.min(Math.max(Zr,m||0),St||Zr),se=Math.max(r-e,0),te=Math.max(St-H,0),de=se<=0||te<=0?0:re(n/se*te,0,te),pe=de+H/2,be=r>e||Se,Re=be&&o;t.useLayoutEffect(()=>{Ue.current={viewportSize:e,maxScrollPosition:se,scrollBarVisible:be,effectiveTapMaxDistance:ft,tapCircleMaxSpeedMultiplier:Oe,tapCircleMinSpeedMultiplier:ge,tapCircleMaxSpeedCurve:G,tapScrollCircleOptions:S,effectiveTrackLength:te,onScroll:s,scrollPosition:n}}),t.useLayoutEffect(()=>{$.current=n},[n]),t.useLayoutEffect(()=>{ie.current=s},[s]),t.useEffect(()=>{i||ne(!1)},[i]);const Ve=Dn({isDragging:Se,isThumbHovered:q,enableThumbDrag:i}),fe=t.useCallback((d,T)=>{const L=Ue.current,J=T??$.current;if(ie.current){const Le=ie.current(d,J);if(typeof Le=="number"&&Number.isFinite(Le))return $.current=Le,Le}const Ce=typeof d=="function"?d(J):d,Be=Math.max(L.maxScrollPosition,0),gt=L.scrollBarVisible?re(Ce,0,Be):0;return $.current=gt,gt},[]),at=t.useCallback(d=>{const T=Ue.current,L=$.current;if(!T.scrollBarVisible||T.maxScrollPosition<=0){const mt=fe(0,L),Nt=mt-L;return{nextPosition:mt,actualDelta:Nt,reachedBoundary:!0}}if(d===0)return{nextPosition:L,actualDelta:0,reachedBoundary:!1};const Ce=fe(mt=>re(mt+d,0,T.maxScrollPosition),L),Be=Ce-L,gt=d<0&&L+d<=0,Le=d>0&&L+d>=T.maxScrollPosition,Pt=d<0&&(Ce<=0||gt&&Be===0)||d>0&&(Ce>=T.maxScrollPosition||Le&&Be===0);return{nextPosition:Ce,actualDelta:Be,reachedBoundary:Pt}},[fe]),ot=t.useCallback((d,T)=>{d.current+=T;const L=Math.max(Ue.current.maxScrollPosition,0);L>0&&(d.current=re(d.current,-L,L));const J=at(d.current);return d.current-=J.actualDelta,J.reachedBoundary&&(d.current=0),J},[at]),ye=t.useCallback(()=>{we.current!==null&&(window.cancelAnimationFrame(we.current),we.current=null),R.current=null,oe.current=0,le.current=0},[]),qe=t.useCallback(()=>{ae.current={...Kr},C(!1),F.current?.reset(),ye()},[ye]),Ze=t.useCallback(d=>{const T=ae.current,L=Ue.current;if(!T.active||T.direction===0){ye();return}if(!L.scrollBarVisible||L.maxScrollPosition<=0){ye();return}const J=R.current??d,Ce=Math.max((d-J)/1e3,0),Be=Math.min(Ce,ln);if(R.current=d,Be<=0){we.current=window.requestAnimationFrame(Ze);return}const gt=Sr({distance:T.distance,maxDistance:L.effectiveTapMaxDistance,viewportSize:L.viewportSize,minSpeedMultiplier:L.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:L.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof L.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:L.tapCircleMaxSpeedCurve});le.current!==T.direction&&(le.current=T.direction,oe.current=0);const{reachedBoundary:Le}=ot(oe,T.direction*gt*Be);if(Le){ye();return}we.current=window.requestAnimationFrame(Ze)},[ot,ye]),Je=t.useCallback(()=>{we.current===null&&(R.current=null,oe.current=0,we.current=window.requestAnimationFrame(Ze))},[Ze]);t.useEffect(()=>{const d=ae.current;!d.active||d.direction===0||Je()},[r,e,Je]),t.useEffect(()=>()=>{ye()},[ye]);const me=t.useCallback(d=>{ae.current=d,C(d.active),d.active&&d.direction!==0?Je():ye()},[Je,ye]);t.useEffect(()=>{_e||qe()},[qe,_e]),t.useEffect(()=>{const d=T=>{const J=T.detail?.paneId;J&&I&&J!==I||qe()};return window.addEventListener(lr,d),()=>{window.removeEventListener(lr,d)}},[I,qe]),t.useEffect(()=>{if(!_e)return;const d=T=>{if(!ae.current.active||ae.current.pointerId===T.pointerId)return;const L=T.target;if(!(L instanceof Node)){qe();return}F.current?.getElement()?.contains(L)||qe()};return document.addEventListener("pointerdown",d,!0),()=>{document.removeEventListener("pointerdown",d,!0)}},[qe,_e]);const Me=d=>{if(!be||te<=0||se<=0)return 0;const T=re(d,0,te);return re(T/te*se,0,se)},pt=t.useCallback(d=>{const{scrollBarVisible:T,effectiveTrackLength:L,maxScrollPosition:J}=Ue.current;if(z.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:d,trackLen:L,maxScroll:J})),L<=0||J<=0)return null;const Ce=re(d,0,L);return re(Ce/L*J,0,J)},[]),p=t.useCallback(d=>Pr(d,u?"x":"y"),[u]),E=t.useCallback(d=>{const T=U.current;if(T.pointerId!==d.pointerId)return;const L=d.clientX-T.startClientX,J=d.clientY-T.startClientY,Ce=V(L,J)/(T.scale||1);z.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:Ce,startThumbPosition:T.startThumbPosition,clientY:d.clientY,startClientY:T.startClientY,metrics:Ue.current}));const Be=pt(T.startThumbPosition+Ce);Be!==null&&fe(Be),d.cancelable&&d.preventDefault()},[V,pt,fe]),Ne=t.useCallback(d=>{const T=U.current;if(T.pointerId!==d.pointerId)return;document.removeEventListener("pointermove",E),document.removeEventListener("pointerup",Ne),document.removeEventListener("pointercancel",Ne);const L=T.captureTarget;if(L?.hasPointerCapture?.(d.pointerId)&&L.releasePointerCapture(d.pointerId),U.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},k(!1),N.current){const J=N.current.getBoundingClientRect();d.clientX>=J.left&&d.clientX<=J.right&&d.clientY>=J.top&&d.clientY<=J.bottom||ne(!1)}else ne(!1)},[E]);t.useEffect(()=>()=>{document.removeEventListener("pointermove",E),document.removeEventListener("pointerup",Ne),document.removeEventListener("pointercancel",Ne)},[E,Ne]);const st=t.useRef(0),Fe=t.useRef(0),wt=t.useCallback(d=>{const T=Math.max(Math.round(Ue.current.viewportSize/Nn),Pn);Fe.current!==d&&(Fe.current=d,st.current=0),ot(st,d*T)},[ot]),{handleArrowPointerDown:Ae,handleArrowPointerUp:lt,handleArrowKeyDown:De}=Ln({canUseArrowButtons:Re,enableArrowButtons:o,resetTapScroll:qe,scrollByStep:wt}),Xt=d=>{if(!be)return;if(!i){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;qe();const T=d.currentTarget,L=p(T);let J=null;if(T.setPointerCapture)try{T.setPointerCapture(d.pointerId),J=T}catch{J=null}U.current={pointerId:d.pointerId,startThumbPosition:de,startClientX:d.clientX,startClientY:d.clientY,scale:L,captureTarget:J},document.addEventListener("pointermove",E),document.addEventListener("pointerup",Ne),document.addEventListener("pointercancel",Ne),k(!0),ne(!0),d.preventDefault(),d.stopPropagation()},qt=d=>{if(!be)return;if(!a){d.preventDefault(),d.stopPropagation();return}if(d.pointerType==="mouse"&&d.button!==0||d.ctrlKey)return;const T=d.currentTarget,L=T.getBoundingClientRect(),J=Z(d),Ce=p(T),Be=(J-(u?L.left:L.top))/Ce;qe();const gt=Be-H/2,Le=Me(gt);if(fe(Le),T.setPointerCapture)try{T.setPointerCapture(d.pointerId)}catch{}W.current={pointerId:d.pointerId,startThumbPosition:gt,startClientX:d.clientX,startClientY:d.clientY,scale:Ce},d.preventDefault(),d.stopPropagation()},Tt=()=>{W.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},Te=d=>{const T=W.current;if(T.pointerId!==d.pointerId)return;if(d.pointerType==="mouse"&&d.buttons===0){Tt();return}const L=d.clientX-T.startClientX,J=d.clientY-T.startClientY,Ce=V(L,J)/(T.scale||1),Be=Me(T.startThumbPosition+Ce);fe(Be),d.cancelable&&d.preventDefault()},It=d=>{if(W.current.pointerId!==d.pointerId)return;const T=d.currentTarget;T.hasPointerCapture?.(d.pointerId)&&T.releasePointerCapture(d.pointerId),Tt(),d.preventDefault(),d.stopPropagation()},Gt=d=>{if(W.current.pointerId!==d.pointerId)return;const T=d.currentTarget;T.hasPointerCapture?.(d.pointerId)&&T.releasePointerCapture(d.pointerId),Tt()},ze=d=>{d.target===d.currentTarget&&W.current.pointerId===d.pointerId&&Tt()},Rt=t.useMemo(()=>re((A?1:.8)*ue,0,1),[A,ue]),Ct=t.useMemo(()=>{const T=`calc(50% - ${it/2}px + ${Ye}px)`;return{left:Qe,top:T}},[Qe,Ye,it]),At=(d,T,L,J)=>D.jsx("button",{type:"button",tabIndex:0,className:"aqvs-scrollbar-arrow-button",style:{[ee]:v,[We]:v},"aria-label":T,onPointerDown:Ae(d),onPointerUp:lt,onPointerLeave:lt,onPointerCancel:lt,onKeyDown:De(d),"aria-disabled":!o,disabled:!Re,children:D.jsx("span",{"aria-hidden":"true",children:L})},J),et=Q&&be?{orientation:Ge,scrollPosition:n,maxScrollPosition:se,contentSize:r,viewportSize:e,thumbSize:H,thumbPosition:de,thumbCenter:pe,trackSize:St,isDragging:Se,isTapScrollActive:A,visibleStartIndex:O,visibleEndIndex:ve}:null;return D.jsxs("div",{className:Mt.twMerge("aqvs-scrollbar",ht,y),style:{...g&&!u?{}:{[ee]:e},[We]:v},"data-visible":be?"true":"false",role:"scrollbar",tabIndex:-1,"aria-controls":I,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":se,"aria-orientation":u?"horizontal":"vertical",children:[(!u||f)&&be&&_e&&D.jsx(Lr,{axis:u?"x":"y",ref:F,className:Mt.twMerge("aqvs-scrollbar-tap-circle-wrapper",rt),size:it,maxVisualDistance:ft,style:Ct,opacity:Rt,renderVisual:Pe,onDragChange:me},"tap-circle"),At(-1,Xe[0],M[0],"arrow-start"),D.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:v/2},onPointerDown:qt,onPointerMove:Te,onPointerUp:It,onPointerCancel:Gt,onLostPointerCapture:ze,"aria-disabled":!a,children:[et&&D.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:Q?.(et)},"overlay"),D.jsx("div",{className:"aqvs-scrollbar-thumb-wrapper",style:{[ee]:H,[he]:de,...u?{top:0,bottom:0}:{left:0,right:0}},"data-visible":be||Se?"true":"false",onPointerDown:Xt,role:"slider","aria-orientation":u?"horizontal":"vertical","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":se,"aria-disabled":!i,tabIndex:-1,children:D.jsx("div",{ref:N,className:Mt.twMerge("aqvs-scrollbar-thumb",u?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":Ve,style:{borderRadius:v-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&ne(!0)},onMouseLeave:()=>{i&&ne(!1)}},"thumb")},"thumb-wrapper")]},"track"),At(1,Xe[1],M[1],"arrow-end")]})},un=({offsetX:r,offsetY:e,maxDistance:n,x:s,y:i})=>{const a=Number.isFinite(r)?r:0,o=Number.isFinite(e)?e:0,u=Math.hypot(a,o);if(u===0)return{x:0,y:0};const f=Sr({distance:u,maxDistance:n,viewportSize:s.viewportSize,minSpeedMultiplier:s.minSpeedMultiplier,maxSpeedMultiplier:s.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:s.hasCustomMaxSpeedMultiplier,curve:s.curve}),g=Sr({distance:u,maxDistance:n,viewportSize:i.viewportSize,minSpeedMultiplier:i.minSpeedMultiplier,maxSpeedMultiplier:i.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:i.hasCustomMaxSpeedMultiplier,curve:i.curve});return{x:f*a/u,y:g*o/u}},On=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 a=Math.trunc(s/e)*e+0;return s-=a,a},peekResidue:()=>s,reset:()=>{s=0}}},Fn=16,Qr=(r,e,n)=>e===1?r*Fn:e===2?r*n:r,Hn=(r,e)=>{const n=r.shiftKey&&r.deltaX===0,s=n?r.deltaY:r.deltaX,i=n?0:r.deltaY,a=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:r.ctrlKey,isHorizontalDominant:a,horizontalDelta:Qr(s,r.deltaMode,e),verticalDelta:Qr(i,r.deltaMode,e)}},dn=new WeakSet,Jr=r=>{dn.add(r)},Xn=r=>dn.has(r),qn=["mouse","pen","touch"],yr=(r,e)=>!(r==="mouse"||r==="pen"||r==="touch")||e.includes(r),$n=r=>r==="mouse"||r==="pen",ar={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},br=(r,e,n)=>{for(const[s,i,a]of e)n==="add"?r.addEventListener(s,i,a):r.removeEventListener(s,i,a)},fn=t.forwardRef(({children:r,contentSize:e,viewportSize:n,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:a=!0,enableTrackClick:o=!0,enableArrowButtons:u=!0,enablePointerDrag:f=!0,pointerDragInputs:g=qn,onScroll:v,className:y,testId:I,style:S,background:P,tapScrollCircleOptions:Q,inertiaOptions:O,itemCount:ve,renderThumbOverlay:Se,wheelSpeedMultiplier:k=1,overscrollBehavior:q="auto",onWheelHorizontal:ne,onPanHorizontal:A,contentInsets:C,visibleStartIndex:N,visibleEndIndex:U,renderOverlay:W,initialScrollPosition:$=0,contentProps:ie},ae)=>{const F=t.useRef(Number.isFinite($)?Math.max(0,$):0),we=t.useRef(null),R=t.useRef(null),oe=n===void 0,[le,He]=t.useState(0),_=n??le,_e=t.useRef(null);t.useLayoutEffect(()=>{if(!oe)return;const m=R.current;if(!m)return;const H=()=>{const te=m.offsetHeight;if(te>0){He(de=>de===te?de:te);return}m.offsetParent!==null&&e>0&&_e.current!=="zero"&&(_e.current="zero",z.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."))};if(H(),typeof ResizeObserver!="function")return;const se=new ResizeObserver(H);return se.observe(m),()=>{se.disconnect()}},[e,oe]),t.useLayoutEffect(()=>{oe&&s?.(le)},[oe,le,s]),t.useLayoutEffect(()=>{if(oe)return;const m=we.current;if(!m)return;const H=()=>{const te=m.clientHeight;if(te<=0||Math.abs(te-_)<=1)return;const de=`${_}/${te}`;_e.current!==de&&(_e.current=de,z.warn(`[ScrollPane] viewportSize=${_} but the host band is ${te}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(H(),typeof ResizeObserver!="function")return;const se=new ResizeObserver(H);return se.observe(m),()=>{se.disconnect()}},[oe,_]);const it=t.useRef(ne);t.useEffect(()=>{it.current=ne},[ne]);const Qe=t.useRef(A);t.useEffect(()=>{Qe.current=A},[A]);const Ye=t.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),rt=t.useMemo(()=>({maxVelocity:O?.maxVelocity??ar.maxVelocity,minVelocity:O?.minVelocity??ar.minVelocity,deceleration:O?.deceleration??ar.deceleration,velocitySampleWindow:O?.velocitySampleWindow??ar.velocitySampleWindow,startVelocityThreshold:O?.startVelocityThreshold??ar.startVelocityThreshold}),[O]),Ie=t.useMemo(()=>({top:Math.max(0,C?.top??0),bottom:Math.max(0,C?.bottom??0)}),[C]);z.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:_,scrollBarWidth:i,className:y,style:S,tapScrollCircleOptions:Q,inertiaOptions:O,enablePointerDrag:f,contentInsets:Ie}));const Oe=t.useRef({contentSize:e,viewportSize:_}),ge=t.useMemo(()=>e>_,[e,_]),ue=t.useCallback((m,H)=>{let se=H??Oe.current;H&&!(Number.isFinite(H.contentSize)&&Number.isFinite(H.viewportSize))&&(z.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:H}),se=Oe.current);const{contentSize:te,viewportSize:de}=se,pe=te>de,be=F.current;if(z.debug("[ScrollPane] scrollTo called",()=>({newPosition:m,contentSize:te,viewportSize:de,currentIsScrollable:pe,prevPosition:be})),!pe)return F.current!==0&&(F.current=0,v?.(0,be)),F.current;const Re=typeof m=="function"?m(F.current):m;if(!Number.isFinite(Re))return z.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:Re}),F.current;const Ve=Math.max(te-de,0),fe=re(Re,0,Ve);return F.current!==fe&&(F.current=fe,v?.(fe,be)),F.current},[v]),Pe=t.useRef(ue);t.useEffect(()=>{Pe.current=ue},[ue]);const G=t.useCallback(()=>{const m=Ye.current;m.generation+=1,m.frame!==null&&cancelAnimationFrame(m.frame),m.frame=null,m.velocity=0,m.lastTimestamp=null},[]),Ue=t.useRef(G);t.useEffect(()=>{Ue.current=G},[G]),t.useEffect(()=>()=>{Ue.current()},[]);const ee=t.useCallback(m=>{if(!ge)return;const{maxVelocity:H,minVelocity:se,deceleration:te,startVelocityThreshold:de}=rt,pe=re(m,-H,H);if(Math.abs(pe)<de)return;G(),Ye.current.velocity=pe,Ye.current.lastTimestamp=null;const be=Ye.current.generation,Re=Ve=>{const fe=Ye.current;if(fe.generation!==be)return;if(fe.lastTimestamp===null){fe.lastTimestamp=Ve,fe.frame=requestAnimationFrame(Re);return}const at=Ve-fe.lastTimestamp;if(fe.lastTimestamp=Ve,at<=0){fe.frame=requestAnimationFrame(Re);return}const ot=fe.velocity;let ye=ot;const qe=te*at;ot>0?ye=Math.max(0,ot-qe):ot<0&&(ye=Math.min(0,ot+qe));const Je=(ot+ye)/2*at,me=F.current;if(Je!==0&&Pe.current(st=>st+Je),Ye.current.generation!==be)return;const Me=F.current,{contentSize:pt,viewportSize:p}=Oe.current,E=Math.max(pt-p,0);fe.velocity=ye;const Ne=Me===me||Me<=0&&ye<=0||Me>=E&&ye>=0;if(Math.abs(ye)<se||Ne){G();return}fe.frame=requestAnimationFrame(Re)};Ye.current.frame=requestAnimationFrame(Re)},[ge,rt,G]),We=t.useRef(ee);t.useEffect(()=>{We.current=ee},[ee]),t.useLayoutEffect(()=>{Oe.current={contentSize:e,viewportSize:_}},[e,_]),t.useLayoutEffect(()=>{const m=R.current;if(!m)return;const H=()=>{m.scrollTop!==0&&(z.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:m.scrollTop})),m.scrollTop=0),m.scrollLeft!==0&&(m.scrollLeft=0)};return m.addEventListener("scroll",H),()=>m.removeEventListener("scroll",H)},[]),t.useLayoutEffect(()=>{if(ge){z.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:_,scrollPosition:F.current}));const m=re(e-_,0,e);F.current>m&&ue(m)}else ue(0)},[ge,ue,e,_]);const he=t.useRef({isScrollable:ge,viewportSize:_,wheelSpeedMultiplier:k,overscrollBehavior:q});t.useLayoutEffect(()=>{he.current={isScrollable:ge,viewportSize:_,wheelSpeedMultiplier:k,overscrollBehavior:q}},[ge,_,k,q]);const V=t.useCallback(m=>{if(Xn(m))return!1;const{isScrollable:H,viewportSize:se,wheelSpeedMultiplier:te,overscrollBehavior:de}=he.current,pe=Hn(m,se);if(pe.isZoomGesture)return!1;if(pe.isHorizontalDominant)return it.current?(Jr(m),m.preventDefault(),G(),it.current(pe.horizontalDelta),!0):!1;if(!H||pe.verticalDelta===0)return!1;let be=pe.verticalDelta;if(te!==1&&(be*=te),de!=="contain"){const Re=F.current,Ve=Math.max(Oe.current.contentSize-se,0);if(be>0&&Re>=Ve||be<0&&Re<=0)return!1}return Jr(m),m.preventDefault(),G(),z.debug("[ScrollPane] wheel event",()=>({deltaY:be,scrollPosition:F.current,wheelSpeedMultiplier:te,deltaMode:m.deltaMode,scrollTop:R.current?.scrollTop})),ue(Re=>Re+be),!0},[ue,G]);t.useEffect(()=>{const m=te=>{V(te)},H=()=>{G()},se=we.current;return se&&(se.addEventListener("wheel",m,{passive:!1}),se.addEventListener("pointerdown",H,{capture:!0,passive:!0})),()=>{se&&(se.removeEventListener("wheel",m),se.removeEventListener("pointerdown",H,{capture:!0}))}},[V,G]),t.useImperativeHandle(ae,()=>({scrollTo:(m,H)=>(G(),ue(m,H)),getScrollPosition:()=>F.current,getContentSize:()=>e,getViewportSize:()=>_,applyWheel:V}),[ue,e,_,G,V]);const Z=t.useId(),Xe=ie?.id??Z,M=t.useRef({pointerType:"",pointerId:null,startClientY:0,startClientX:0,lastPanClientX:0,startScroll:0,isDragging:!1,shouldCancelNextClick:!1,clickResetTimer:null,velocitySamples:[],scale:1,scaleX:1}),ht=t.useRef(f),Ge=t.useRef(g);t.useEffect(()=>{ht.current=f},[f]),t.useEffect(()=>{Ge.current=g},[g]);const ft=t.useRef(ge);t.useEffect(()=>{ft.current=ge},[ge]);const nt=t.useRef(rt);t.useEffect(()=>{nt.current=rt},[rt]),t.useEffect(()=>{const m=M.current;if(f&&ge&&(m.pointerId===null||yr(m.pointerType,g))||m.pointerId===null)return;const H=R.current;m.clickResetTimer!==null&&(window.clearTimeout(m.clickResetTimer),m.clickResetTimer=null);const se=m.isDragging&&m.shouldCancelNextClick,te=m.pointerId;m.pointerId=null,m.pointerType="",m.startClientY=0,m.startScroll=0,m.isDragging=!1,m.shouldCancelNextClick=se,m.velocitySamples=[],m.scale=1,H?.hasPointerCapture(te)&&H.releasePointerCapture(te)},[f,g,ge]),t.useEffect(()=>{const m=R.current;if(!m)return;const H=6,se=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),te=()=>{const p=M.current;p.pointerId=null,p.pointerType="",p.startClientY=0,p.startScroll=0,p.isDragging=!1,p.velocitySamples=[],p.scale=1},de=()=>{const p=M.current;p.clickResetTimer!==null&&(window.clearTimeout(p.clickResetTimer),p.clickResetTimer=null)},pe=p=>{const E=M.current,Ne=se();E.velocitySamples.push({clientY:p,time:Ne});const st=nt.current.velocitySampleWindow;E.velocitySamples=E.velocitySamples.filter(Fe=>Ne-Fe.time<=st)},be=p=>p instanceof HTMLElement&&p.closest("[data-scrollpane-ignore-drag='true']")!==null,Re=p=>{const E=M.current;E.shouldCancelNextClick&&(p.preventDefault(),p.stopPropagation(),E.shouldCancelNextClick=!1)},Ve=p=>{const E=M.current;if(!E.isDragging){if(E.isDragging=!0,E.shouldCancelNextClick=!0,!m.hasPointerCapture(p.pointerId))try{m.setPointerCapture(p.pointerId)}catch{}pe(p.clientY)}},fe=p=>p.isTrusted||p.target===m,at=p=>{const E=M.current;m.hasPointerCapture(p)&&m.releasePointerCapture(p),E.shouldCancelNextClick=!1,de(),te()},ot=p=>{const E=M.current;if(E.pointerId!==p.pointerId)return;if(p.buttons===0&&$n(p.pointerType)){at(p.pointerId);return}if(!(ht.current&&ft.current)||!yr(p.pointerType,Ge.current))return;if(!E.isDragging){const wt=Math.abs(p.clientY-E.startClientY),Ae=Qe.current?Math.abs(p.clientX-E.startClientX):0;if(Math.max(wt,Ae)<H||(Ve(p),!E.isDragging))return}pe(p.clientY);const Ne=(p.clientY-E.startClientY)/(E.scale||1),st=E.startScroll-Ne;Pe.current(st);const Fe=Qe.current;if(Fe){const wt=p.clientX-E.lastPanClientX;E.lastPanClientX=p.clientX,wt!==0&&Fe(-wt/(E.scaleX||1))}p.cancelable&&p.preventDefault()},ye=()=>{const p=M.current;return p.pointerId!==null||!p.shouldCancelNextClick?!1:(de(),p.clickResetTimer=window.setTimeout(()=>{const E=M.current;E.shouldCancelNextClick=!1,E.clickResetTimer=null},0),!0)},qe=p=>{const E=M.current;if(E.pointerId!==p.pointerId){ye();return}E.isDragging&&E.shouldCancelNextClick&&p.cancelable&&(p.preventDefault(),p.stopPropagation()),E.isDragging&&pe(p.clientY);let Ne=0;if(E.isDragging&&E.velocitySamples.length>=2){const Fe=E.velocitySamples,wt=nt.current.velocitySampleWindow,Ae=Fe[Fe.length-1],lt=Fe.find(De=>Ae.time-De.time<=wt)??Fe[0];if(Ae&<&&Ae.time!==lt.time){const De=Ae.clientY-lt.clientY,Xt=Ae.time-lt.time;Ne=-(De/Xt)/(E.scale||1)}}de(),E.shouldCancelNextClick&&(E.clickResetTimer=window.setTimeout(()=>{const Fe=M.current;Fe.shouldCancelNextClick=!1,Fe.clickResetTimer=null},0));const st=nt.current.startVelocityThreshold;te(),m.hasPointerCapture(p.pointerId)&&m.releasePointerCapture(p.pointerId),Math.abs(Ne)>=st&&We.current?.(Ne)},Ze=p=>{if(M.current.pointerId!==null){if(!p.isPrimary||p.pointerType!==M.current.pointerType)return;at(M.current.pointerId)}if(M.current.shouldCancelNextClick&&(de(),M.current.shouldCancelNextClick=!1),!(ht.current&&ft.current)||!yr(p.pointerType,Ge.current)||p.button!==0&&p.pointerType==="mouse"||p.ctrlKey||p.metaKey||p.altKey||be(p.target))return;window.dispatchEvent(new CustomEvent(lr,{detail:{paneId:Z}})),Ue.current?.();const E=M.current;de(),E.pointerId=p.pointerId,E.pointerType=p.pointerType,E.startClientY=p.clientY,E.startClientX=p.clientX,E.lastPanClientX=p.clientX,E.startScroll=F.current,E.scale=Pr(m,"y"),E.scaleX=Qe.current?Pr(m,"x"):1,E.isDragging=!1,E.shouldCancelNextClick=!1,E.velocitySamples=[]},Je=p=>{if(M.current.pointerId!==p.pointerId){ye();return}fe(p)&&at(p.pointerId)},Me=[["click",Re,!0],["pointerdown",Ze,{passive:!1}],["lostpointercapture",p=>{p.target!==m||M.current.pointerId!==p.pointerId||at(p.pointerId)},void 0]],pt=[["pointermove",ot,{passive:!1}],["pointerup",qe,void 0],["pointercancel",Je,void 0]];return br(m,Me,"add"),br(window,pt,"add"),()=>{br(m,Me,"remove"),br(window,pt,"remove");const p=M.current;p.pointerId!==null&&m.hasPointerCapture(p.pointerId)&&m.releasePointerCapture(p.pointerId),de(),te()}},[Z]);const St=t.useCallback(m=>(G(),ue(m)),[ue,G]);return D.jsxs("div",{ref:we,"data-testid":I,"data-self-measured":oe?"true":void 0,className:Mt.twMerge("aqvs-scroll-pane",y),style:S,children:[D.jsxs("div",{ref:R,className:Mt.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:oe?void 0:_,paddingTop:Ie.top,paddingBottom:Ie.bottom,...f&&ge&&g.some(m=>m==="touch"||m==="pen")?{touchAction:"none"}:{}},...ie,id:Xe,children:[P,r(F.current)]}),D.jsx(Or,{contentSize:e,viewportSize:_,stretchMainSize:oe,scrollPosition:F.current,onScroll:St,enableThumbDrag:a,enableTrackClick:o,enableArrowButtons:u,scrollBarWidth:i,ariaControls:Xe,tapScrollCircleOptions:Q,itemCount:ve,renderThumbOverlay:Se,visibleStartIndex:N,visibleEndIndex:U},"scrollbar"),W?.()]})}),en=(r,e,n)=>Math.min(Math.max(r,e),n),Yn=({dragState:r,normalizedDistance:e,sizeScale:n,size:s})=>{const i=Math.max(s/2,1),a=1+e*.65,o=Math.max(.65,1-e*.25),u=r.direction*e*26*n,f=.8+e*.18,g=3*n,v=6*n,y=22*n,I=Math.abs(u)+v,S=u>0?g:-Math.abs(u)-g,P=Math.max(2.5,3*n),Q=en(r.offsetX,-i,i),O=en(r.offsetY,-i,i),ve=i*.35,Se=Q/i*ve,k=O/i*ve,q=Se*.45,ne=k*.45,A=Math.max(y*.38,6),C=.65+e*.2,N=r.active;return D.jsxs(D.Fragment,{children:[D.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${o}, ${a})`,transition:N?"40ms transform ease-out":"200ms ease transform"}}),D.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:y,height:y,transform:`translate(calc(-50% + ${Se}px), calc(-50% + ${k}px)) scale(${o}, ${f*a})`,transition:N?"70ms transform ease-out":"200ms ease transform"}}),D.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:A,height:A,transform:`translate(calc(-50% + ${q}px), calc(-50% + ${ne}px)) scale(${o}, ${a})`,opacity:C,boxShadow:"0 0 8px rgba(255,255,255,0.45)",transition:N?"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:P,height:I,transform:`translate(-50%, ${S}px)`,opacity:e,transition:N?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},nr=100,Wn=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},Er=(r,e)=>{if(!Number.isFinite(r))throw new Error(`valueFn returned a non-finite value at index ${e}: ${r}`);return r},sr=r=>{if(r<=0||!Number.isFinite(r))return 0;const e=Math.trunc(r);if(e<=2147483647)return e&-e;const n=BigInt(e)&-BigInt(e);return Number(n)};class Ht{tree;deltas;size;baseValue;valueFn;total;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;return}let a=0,o;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(a=u,s?.materialize){const f=s?.sampleRange??{from:0,to:Math.min(nr-1,i-1)};let g=Math.max(0,Math.trunc(f.from)),v=Math.min(Math.trunc(f.to),i-1);g>v&&(g=0,v=Math.min(nr-1,i-1)),o={from:g,values:Ht._collectValidatedValues(n,g,v)}}}else if(i>0){const f=s?.sampleRange??{from:0,to:Math.min(nr-1,i-1)};let g=Math.max(0,Math.trunc(f.from)),v=Math.min(Math.trunc(f.to),i-1);if(g>v&&(g=0,v=Math.min(nr-1,i-1)),i>nr)a=Ht._sampleBaseValueStrided(n,i,nr),s?.materialize&&(o={from:g,values:Ht._collectValidatedValues(n,g,v)});else{const y=Ht._collectValidatedValues(n,g,v);a=Ht._modeOrMedian([...y]),s?.materialize&&(o={from:g,values:y})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=n,this.baseValue=a,o)for(let f=0;f<o.values.length;f++){const g=o.from+f;if(g>=this.size)break;const v=o.values[f]-this.baseValue;v!==0&&(this.deltas.set(g,v),this._updateTree(g,v))}this.total=this.getTotal()}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())}static _collectValidatedValues(e,n,s){const i=[];for(let a=n;a<=s;a++)i.push(Er(e(a),a));return i}static _modeOrMedian(e){if(e.length===0)return 0;e.sort((o,u)=>o-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 a=0;for(const o of e){const u=(i.get(o)??0)+1;i.set(o,u),u>a&&(a=u)}if(a>e.length*.2){const o=[];for(const[f,g]of i.entries())g===a&&o.push(f);const u=o.reduce((f,g)=>f+g,0);s=Math.floor(u/o.length)}return s}static _sampleBaseValueStrided(e,n,s){if(n<=0)return 0;let i=Math.max(1,Math.ceil(n/s));i%2===0&&(i+=1);const a=[];for(let o=0;o<n&&a.length<s;o+=i)a.push(Er(e(o),o));return Ht._modeOrMedian(a)}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 o=(n.get(s)??this.deltas.get(s)??0)+i;if(o+this.baseValue<-1e-9)throw new Error(`Change would make the value at index ${s} negative: ${o+this.baseValue}`);n.set(s,o)}for(const{index:s,change:i}of e){const o=(this.deltas.get(s)??0)+i;o===0?this.deltas.delete(s):this.deltas.set(s,o),this._updateTree(s,i)}return this.total}_updateTree(e,n){if(n===0)return;let s=e+1;for(;s<=this.size;){this.tree.set(s,(this.tree.get(s)??0)+n);const i=sr(s);if(i===0)break;s+=i}this.total!==void 0&&(this.total+=n)}_buildDeltaUpdates(e){const n=[],s=new Map;for(const{index:i,value:a}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(a))throw new Error(`Value must be a finite number: ${a}`);if(a<0)throw new Error("Value cannot be negative.");const o=s.has(i)?s.get(i)??0:this.deltas.get(i)??0,u=o+this.baseValue,f=a-u;f!==0&&n.push({index:i,change:f}),s.set(i,o+f)}return n}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,n=this.size;for(;n>0;){e+=this.tree.get(n)??0;const s=sr(n);if(s===0)break;n-=s}return e+this.baseValue*this.size}_materialize(e,n=!0){if(this.valueFn){const s=this.deltas.get(e)??0,a=Er(this.valueFn(e),e)-this.baseValue;if(a!==s&&(a===0?this.deltas.delete(e):this.deltas.set(e,a),n)){const o=a-s;this._updateTree(e,o)}}}_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 v=f;v<=g;v++)this._materialize(v)}if(n===void 0)return;if(s){this._materialize(n);return}const a=i[0].from,o=i[i.length-1].to;n>=a&&n<=o&&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.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const i=n.materializeOption?.materialize===!0;let a;for(;;){if(a=this._descend(e,s),a<0||a>=this.size)return{index:-1,total:this.total??this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const u=this.deltas.get(a)??0;if(this._materialize(a),(this.deltas.get(a)??0)===u)break}const o=this.prefixSum(a);return{index:a,total:this.total??o.total,cumulative:o.cumulative,currentValue:o.currentValue,safeIndex:o.safeIndex}}_descend(e,n){let s=0,i=0,a=1;for(;a<<1<=this.size;)a<<=1;for(;a>0;a>>=1){const o=s+a;if(o<=this.size){const f=(this.tree.get(o)??0)+this.baseValue*a;(n?i+f<e:i+f<=e)&&(s=o,i+=f)}}return n?s:s-1}_findIndexLarge(e,n,s){if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};const i=Wn(this.size);if(i===0n)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(n.materializeOption);const a=n.materializeOption?.materialize===!0;for(;;){let o=0n,u=i-1n,f,g,v=this.total;for(;o<=u;){const S=o+u>>1n,P=Number(S),Q=this.prefixSum(P);if(v=Q.total,s?Q.cumulative>=e:Q.cumulative<=e)if(f=S,g=Q,s){if(S===0n)break;u=S-1n}else o=S+1n;else if(s)o=S+1n;else{if(S===0n)break;u=S-1n}}const y=g,I=f!==void 0?Number(f):-1;if(a&&I>=0){const S=this.deltas.get(I)??0;if(this._materialize(I),(this.deltas.get(I)??0)!==S)continue}return{index:I,total:v,cumulative:y?.cumulative,currentValue:y?.currentValue,safeIndex:y?.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.total??0,currentValue:0,safeIndex:0};const s=re(Math.trunc(e),0,this.size-1),i=n?.materializeOption;this._materializeRanges(i,s,!0);let a=0,o=s+1;for(;o>0;){const f=this.tree.get(o)??0;a+=f;const g=sr(o);if(g===0)break;o-=g}const u=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:a+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;if(this._materializeRanges(n),this.total===void 0)if(this.size===0)this.total=0;else{this.total=this._computeTreeTotal();const s=this.prefixSum(this.getSize()-1);s.cumulative!==s.total&&z.error("Inconsistent Fenwick Tree state")}return 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()){if(i===0)continue;let a=s+1;for(;a<=this.size;){n.set(a,(n.get(a)??0)+i);const o=sr(a);if(o===0)break;a+=o}}this.tree=n,this.total=this._computeTreeTotal()}calculateAccumulatedError(){if(this.total===void 0)return 0;let e=this.baseValue*this.size;for(const[n,s]of this.deltas)n<this.size&&(e+=s);return this.total-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)return;if(n>s)if(s===0&&this.deltas.size>0){for(const a of this.deltas.keys())a>=n&&this.deltas.delete(a);this.size=n,this.rebuildTree()}else this._growSize(s,n);else{if(n>0)for(const a of this.deltas.keys())a>=n&&this.deltas.delete(a);this.size=n,this.rebuildTree()}const i=this.prefixSum(this.getSize()-1);i.cumulative!==i.total&&z.error("Inconsistent Fenwick Tree state")}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 a=e+1;for(;a<=s;){const o=sr(a);if(o===0)break;a+=o}for(;a<=i;){this.tree.set(a,(this.tree.get(a)??0)+n);const o=sr(a);if(o===0)break;a+=o}}_growSize(e,n){if(this.size=n,this.deltas.size>0){const s=Ht._minCoveredLowBound(e,n);if(e-s<this.deltas.size)for(let a=s;a<e;a++){const o=this.deltas.get(a);o===void 0||o===0||this._propagateDeltaToGrownNodes(a,o,e,n)}else for(const[a,o]of this.deltas.entries())o===0||a<s||this._propagateDeltaToGrownNodes(a,o,e,n)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}findIndexAtOrAfter(e,n){return this._findIndex(e,n??{},!0)}findIndexAtOrBefore(e,n){return this._findIndex(e,n??{},!1)}}const Bn=(r,e)=>{const n=r?.sampleRange,s=e?.sampleRange;return n===s?!1:n&&s?n.from!==s.from||n.to!==s.to:!0},Fr=(r,e,n)=>{const s=Number.isFinite(r)&&r>0?Math.trunc(r):0,i=t.useRef(null),a=t.useRef({size:s,valueOrFn:e,options:n});i.current===null&&(i.current=new Ht(s,e,n));const o=i.current,u=a.current,f=u.size!==s,g=u.valueOrFn!==e,v=Bn(u.options,n)||u.options?.baseValue!==n?.baseValue,y=u.size===0&&s>0&&(!i.current||i.current.base===0);if(g||v){const I=n?.resetOnValueFnChange??!0;v||g&&I||y?(n?.debug&&z.debug("[useFenwickMapTree] reset",{valueOrFnChanged:g,optionsChanged:v}),o.reset(s,e,n)):(f&&(n?.debug&&z.debug("[useFenwickMapTree] resize (with valueFn change)",{from:u.size,to:s}),o.changeSize(s)),n?.debug&&z.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:g}),o.setValueFn(e,{reset:!1})),a.current={size:s,valueOrFn:e,options:n}}else f&&(n?.debug&&z.debug("[useFenwickMapTree] resize",{from:u.size,to:s}),y?o.reset(s,e,n):o.changeSize(s),a.current={size:s,valueOrFn:e,options:n});return o};class jn{key;value;prev=null;next=null;constructor(e,n){this.key=e,this.value=n}}class Tr{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}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function mn(r){const e=t.useRef(new Map),n=t.useRef(new Tr),s=Math.floor(r),i=t.useRef(s);t.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){z.warn(`useLruCache: invalid capacity ${r}; the cache will not store any entries.`),e.current.clear(),n.current=new Tr;return}if(Number.isFinite(s))for(;e.current.size>s;){const v=n.current.removeHead();if(v)e.current.delete(v.key);else break}},[r,s]);const a=t.useCallback(v=>{const y=e.current.get(v);if(y)return n.current.moveToTail(y),y.value},[]),o=t.useCallback((v,y)=>{const I=i.current;if(Number.isNaN(I)||I<=0)return;let S=e.current.get(v);if(S)S.value=y,n.current.moveToTail(S);else{if(e.current.size>=I){const P=n.current.removeHead();P&&e.current.delete(P.key)}S=new jn(v,y),e.current.set(v,S),n.current.addToTail(S)}},[]),u=t.useCallback(v=>e.current.has(v),[]),f=t.useCallback(v=>{const y=e.current.get(v);y&&(n.current.remove(y),e.current.delete(v))},[]),g=t.useCallback(()=>{e.current.clear(),n.current=new Tr},[]);return t.useMemo(()=>({get:a,set:o,has:u,remove:f,clear:g}),[a,o,u,f,g])}const Un=1e4,Gn=()=>{const{get:r,set:e,has:n,clear:s}=mn(Un);return t.useMemo(()=>({get:r,set:e,has:n,clear:s}),[r,e,n,s])},Zn=(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(a=>{if(!a||i.current.has(a))return;const o=u=>{n.current?.enableBridge!==!1&&s.current.current?.applyWheel(u)};return a.addEventListener("wheel",o,{passive:!1}),i.current.set(a,o),()=>{i.current.get(a)===o&&(a.removeEventListener("wheel",o),i.current.delete(a))}},[])},tn=-200,rn={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Kn=r=>{const e=t.useRef(r);e.current=r;const n=t.useRef(rn),s=t.useRef(null),[i,a]=t.useState(!1),o=t.useRef(null),u=t.useRef(null),f=t.useRef({residual:0,direction:0}),g=t.useRef({residual:0,direction:0}),v=t.useCallback(()=>{o.current!==null&&(window.cancelAnimationFrame(o.current),o.current=null),u.current=null,f.current={residual:0,direction:0},g.current={residual:0,direction:0}},[]),y=t.useCallback((k,q,ne,A,C,N)=>{const U=q>0?1:q<0?-1:0;U!==0&&U!==k.direction&&(k.direction=U,k.residual=0),k.residual+=q*ne;const W=Math.max(C(),0);W>0&&(k.residual=re(k.residual,-W,W));const $=k.residual;if($===0)return{actualDelta:0,atBoundary:!1};const ie=A(),ae=N($),F=ae-ie;k.residual-=F;const we=$<0&&ie+$<=0,R=$>0&&ie+$>=W,oe=$<0&&(ae<=0||we&&F===0)||$>0&&(ae>=W||R&&F===0);return oe&&(k.residual=0),{actualDelta:F,atBoundary:oe}},[]),I=t.useCallback(k=>{const q=e.current,ne=n.current;if(!ne.active||ne.direction===0){v();return}const A=u.current??k,C=Math.max((k-A)/1e3,0),N=Math.min(C,ln);if(u.current=k,N<=0){o.current=window.requestAnimationFrame(I);return}const U=un({offsetX:ne.offsetX,offsetY:ne.offsetY,maxDistance:q.maxDistance,x:q.xSpeedParams,y:q.ySpeedParams}),W=y(f.current,U.x,N,q.getHx,q.getMaxHx,F=>q.applyHxRef.current(q.getHx()+F));W.actualDelta!==0&&(q.pendingColAnchorRef.current=null);const $=y(g.current,U.y,N,q.getVy,q.getMaxVy,q.applyVy),ie=q.getMaxHx()<=0||W.atBoundary||ne.offsetX===0,ae=q.getMaxVy()<=0||$.atBoundary||ne.offsetY===0;if(ie&&ae){v();return}o.current=window.requestAnimationFrame(I)},[v,y]),S=t.useCallback(()=>{o.current===null&&(u.current=null,f.current={residual:0,direction:0},g.current={residual:0,direction:0},o.current=window.requestAnimationFrame(I))},[I]),P=t.useCallback(()=>{n.current={...rn},a(!1),s.current?.reset(),v()},[v]),Q=t.useCallback(k=>{n.current=k,a(k.active),k.active&&k.direction!==0?S():v()},[S,v]),{enabled:O,xExtentFreshness:ve,yExtentFreshness:Se}=r;return t.useEffect(()=>{const k=n.current;!k.active||k.direction===0||S()},[ve,Se,S]),t.useEffect(()=>{const k=()=>{P()};return window.addEventListener(lr,k),()=>{window.removeEventListener(lr,k)}},[P]),t.useEffect(()=>{if(!O)return;const k=q=>{if(!n.current.active||n.current.pointerId===q.pointerId)return;const ne=q.target;if(!(ne instanceof Node)){P();return}s.current?.getElement()?.contains(ne)||P()};return document.addEventListener("pointerdown",k,!0),()=>{document.removeEventListener("pointerdown",k,!0)}},[O,P]),t.useEffect(()=>{O||P()},[O,P]),t.useEffect(()=>()=>{v()},[v]),{isTapActive:i,handleTapCircleDragChange:Q,tapCircleHandleRef:s}},je=(r,e)=>e<=0?0:re(r,0,e-1),nn=r=>({top:Math.max(0,r?.top??0),bottom:Math.max(0,r?.bottom??0)}),vt=(r,e)=>r<=e?0:r-e,Qt=(r,e)=>r<=0?0:r+e,cr=1e3,zr=2e3,hn=1048576,Qn=40,or=r=>{if(!Number.isFinite(r))return 0n;const e=Math.trunc(r);return e<=0?0n:BigInt(e)},Jn=(r,e,n,s,i,a,o,u)=>{const f=or(s);if(f===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const g=A=>A<0n?0n:A>=f?f-1n:A,v={materializeOption:{materialize:!1}},{index:y,cumulative:I}=a.findIndexAtOrAfter(r,v);let S;y===-1?S=f-1n:(I===r?S=or(y+1):S=or(y),S>=f&&(S=f-1n)),r<=0&&(S=0n),u&&r>=o&&(S=f-1n);const P=A=>{const C=Number(A);if(!Number.isSafeInteger(C))return null;const{cumulative:N}=a.prefixSum(C,{materializeOption:{materialize:!1}});if(!Number.isFinite(N))return null;const{index:U}=a.findIndexAtOrAfter(N+.5,{materializeOption:{materialize:!1}});if(U===-1)return null;const W=or(U);return W>A?W:null},Q=A=>{let C=0,N=A,U=A,W=0n,$=0;for(;N<f&&C<e;){const ie=Number(N),ae=i(ie);if(C+=ae,U=N,N+=1n,W+=1n,!Number.isFinite(ae)||ae<0)break;if(ae===0){if($+=1,$>cr){const F=P(U);if(F!==null&&F>N)N=F,$=0;else if(F!==null&&F===N&&i(Number(N))>0)$=0;else break}}else $=0}return W===0n&&(U=A),{height:C,end:U}};let{height:O,end:ve}=Q(S);if(O<e&&S>0n){let A=S,C=O,N=0;for(;A>0n&&C<e;){A-=1n;const W=Number(A),$=i(W);if(C+=$,!Number.isFinite($)||$<0)break;if($===0){if(N+=1,N>cr){const ie=Number(A);if(!Number.isSafeInteger(ie))break;const{cumulative:ae}=a.prefixSum(ie,{materializeOption:{materialize:!1}});if(!Number.isFinite(ae))break;const{index:F}=a.findIndexAtOrAfter(ae-.5,{materializeOption:{materialize:!1}}),we=F===-1?-1n:or(F);if(we>=0n&&we<A)A=we+1n,N=0;else if(we===A&&A>=1n&&i(Number(A-1n))>0)N=0;else break}}else N=0}S=g(A);const U=Q(S);O=U.height,ve=U.end}const Se=g(S),k=g(ve),q=g(Se-BigInt(Math.max(0,n))),ne=g(k+BigInt(Math.max(0,n)));return{renderingStartIndex:je(Number(q),s),renderingEndIndex:je(Number(ne),s),visibleStartIndex:je(Number(Se),s),visibleEndIndex:je(Number(k),s)}},pn=(r,e,n,s,i,a,o)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const u=Number.isFinite(o),f=u?Math.min(Math.max(0,r),o):Math.max(0,r);if(s>=Number.MAX_SAFE_INTEGER)return Jn(f,e,n,s,i,a,o,u);const{index:g,cumulative:v,currentValue:y}=a.findIndexAtOrAfter(f,{materializeOption:{materialize:!1}}),I=g===-1?e<=0||(v??0)<f+(y??0)?s-1:0:g;let S=je(I,s),P=0;if(g!==-1&&v===f)S=je(g+1,s),P=0;else if(S===g&&v!==void 0&&y!==void 0)P=v-y-f;else{const{cumulative:A,currentValue:C}=a.prefixSum(S,{materializeOption:{materialize:!1}});P=(A??0)-(C??0)-f}const Q=P,O=(A,C)=>{let N=A,U=C,W=0;for(;N<s&&U<e;){const $=i(N);if(U+=$,N++,!Number.isFinite($)||$<0)break;if($===0){if(W++,W>cr){const{cumulative:ie}=a.prefixSum(N-1,{materializeOption:{materialize:!1}}),{index:ae}=Number.isFinite(ie)?a.findIndexAtOrAfter(ie+.5,{materializeOption:{materialize:!1}}):{index:-1};if(ae>N)N=ae,W=0;else if(ae===N&&i(N)>0)W=0;else break}}else W=0}return{cursor:N,height:U}},ve=O(S,P);let Se=ve.cursor;if(P=ve.height,P<e&&S>0){let A=P+Math.abs(Math.min(0,Q)),C=S-1,N=0;for(;C>=0&&A<e;){const W=i(C);if(A+=W,!Number.isFinite(W)||W<0){C--;break}if(W===0){if(N++,N>cr){const{cumulative:$}=a.prefixSum(C,{materializeOption:{materialize:!1}}),{index:ie}=Number.isFinite($)?a.findIndexAtOrAfter($-.5,{materializeOption:{materialize:!1}}):{index:-1};if(ie!==-1&&ie<C){C=ie,N=0;continue}if(ie===C&&C>=1&&i(C-1)>0)N=0;else{C--;break}}}else N=0;C--}S=je(C+1,s);const U=O(S,0);Se=U.cursor,P=U.height}const k=je(S-n,s),q=je(Math.max(Se-1,S),s),ne=je(q+n,s);return{renderingStartIndex:k,renderingEndIndex:ne,visibleStartIndex:S,visibleEndIndex:q}},sn=(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(a){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",a)}i.arg=null}},[i,r,n]),t.useCallback(a=>{if(i.arg=a,i.id!==null)return;const o=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(o))};i.id=requestAnimationFrame(o)},[s,n,r,i])},es=t.memo(({index:r,top:e,height:n,item:s,children:i,clipItemHeight:a,enableKeyboardNavigation:o,onKeyDown:u,onEscapeKeyDown:f,onFocus:g,registerItemRef:v})=>{const y=t.useCallback(O=>v(r,O),[r,v]),I=t.useCallback(O=>u(O,r),[r,u]),S=t.useCallback(O=>f?.(O,r),[r,f]),P=t.useCallback(()=>g(r),[r,g]),Q=t.useCallback(O=>{O.currentTarget.focus({preventScroll:!0})},[]);return D.jsx("div",{ref:y,"data-index":r,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:n,overflow:a?"hidden":void 0},tabIndex:o?-1:void 0,onPointerDown:o?Q:void 0,onKeyDownCapture:o?I:void 0,onKeyDown:o&&f?S:void 0,onFocusCapture:o?P:void 0,children:i(s,r)})}),ts=({itemCount:r,getItem:e,getItemKey:n,getItemHeight:s,viewportSize:i,overscanCount:a=15,className:o,testId:u,onScroll:f,onRangeChange:g,children:v,background:y,initialScrollIndex:I,initialScrollOffset:S,initialScrollAnchor:P,callbackThrottleMs:Q=5,contentInsets:O,onItemFocus:ve,scrollBarOptions:Se,behaviorOptions:k,onWheelHorizontal:q,onPanHorizontal:ne,horizontalKeyInputs:A,horizontalKeyStep:C=Qn,contentProps:N,liveRegion:U},W)=>{const{width:$,enableThumbDrag:ie,enableTrackClick:ae,enableArrowButtons:F,enableScrollToTopBottomButtons:we,renderThumbOverlay:R,tapScrollCircleOptions:oe}=Se??{},{enablePointerDrag:le,pointerDragInputs:He,enableKeyboardNavigation:_=!0,enableEscapeRowReturn:_e=!1,wheelSpeedMultiplier:it,inertiaOptions:Qe,overscrollBehavior:Ye,clipItemHeight:rt=!1,resetOnGetItemHeightChange:Ie=!1}=k??{},[Oe,ge]=t.useState(0),ue=i??Oe,Pe=t.useCallback(c=>{ge(b=>b===c?b:c)},[]),G=t.useRef(null),Ue=t.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),ee=t.useRef(P&&r>0?{index:re(Math.trunc(P.index),0,r-1),align:"top",offset:-Math.max(0,P.offsetPx??0)}:null),We=t.useRef(!1),he=t.useRef(!0);t.useEffect(()=>{if(he.current){he.current=!1;return}Ie&&(ee.current=null)},[Ie,s]);const V=t.useMemo(()=>nn(O),[O]),[Z]=t.useState(()=>{const b=P?.index??I,h=typeof b=="number"&&Number.isFinite(b)?Math.max(0,Math.trunc(b)):0;return{from:Math.max(0,h-50),to:h+50}}),Xe=t.useMemo(()=>({sampleRange:Z,resetOnValueFnChange:Ie,materialize:!0}),[Ie,Z]),M=Fr(r,s,Xe),[ht]=t.useState(()=>{let c=0,b=0;if(P&&r>0){const h=re(Math.trunc(P.index),0,r-1),Y=Math.max(0,P.offsetPx??0),B=re(h-a*2,0,r-1),j=re(h+a*2,0,r-1),K=h>0||Y>0?{materializeOption:{materialize:!0,ranges:[{from:B,to:j}]}}:void 0,{cumulative:xe,total:$e,currentValue:ke}=M.prefixSum(h,K),Ee=Math.max(xe-ke+Y,0);c=Qt(Ee,V.top),b=$e??M.getTotal()}else if(typeof I=="number"){const h=re(I,0,r-1),Y=re(h-a*2,0,r-1),B=re(h+a*2,0,r-1),j=I>0?{materializeOption:{materialize:!0,ranges:[{from:Y,to:B}]}}:void 0,{cumulative:K,total:xe,currentValue:$e}=M.prefixSum(I,j),ke=Math.max(K-$e,0);c=Qt(ke,V.top),b=xe??M.getTotal()}else typeof S=="number"&&(c=Qt(Math.max(S,0),V.top)),b=M.getTotal();return{position:c,total:b}}),[Ge,ft]=t.useState(ht.position),[nt,St]=t.useState(ht.total),m=t.useRef(ht.position),H=t.useRef(V.top),se=t.useRef(f??void 0),te=t.useRef(g??void 0),de=t.useRef(q),pe=(A?.length??0)>0,be=!!q;t.useEffect(()=>{pe&&(_||z.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),be||z.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(C)&&C>0||z.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${C}. Horizontal arrow keys are left untouched.`))},[pe,be,_,C]);const Re=t.useRef(new Map),Ve=t.useRef(null),fe=t.useRef(null),[at,ot]=t.useState(null),[ye,qe]=t.useState(!1),Ze=t.useRef(null),Je=t.useRef(!1),me=t.useRef(0),Me=t.useRef(!1),pt=t.useRef(!1),p=t.useRef(r);p.current!==r&&(p.current=r,pt.current=!0),t.useLayoutEffect(()=>{se.current=f??void 0,te.current=g??void 0,de.current=q},[g,f,q]);const E=t.useCallback(c=>{if(_&&c&&typeof c.focus=="function")try{c.focus({preventScroll:!0})}catch{c.focus()}},[_]),Ne=t.useCallback((c,{position:b,totalHeight:h})=>{c(b,h)},[]),st=sn(se,Q,Ne),Fe=t.useCallback((c,b)=>{c(b)},[]),wt=sn(te,Q,Fe),Ae=t.useRef(V.top);Ae.current=V.top;const lt=t.useRef(st);lt.current=st,t.useEffect(()=>(We.current=!1,()=>{We.current=!0,Ze.current&&(clearTimeout(Ze.current),Ze.current=null)}),[]),t.useEffect(()=>{_||(Re.current.clear(),Ve.current=null,fe.current=null)},[_]);const De=t.useCallback((c,b)=>{if(!b){Re.current.delete(c);return}_&&(Re.current.set(c,b),Ve.current===c&&(Ve.current=null,fe.current=c,E(b)))},[_,E]),Xt=.01,qt=t.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:ht.position}),Tt=t.useCallback(()=>{const c=qt.current;c.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(c.rafId),c.rafId=null,c.loopActive=!1,c.idleFrames=0},[]);t.useEffect(()=>()=>{Tt()},[Tt]);const Te=t.useRef(()=>{}),It=t.useCallback(()=>{const c=qt.current;c.rafId=null;const b=m.current,h=vt(b,Ae.current),Y=M.getTotal();if(ft(j=>Math.abs(j-b)<Xt?j:b),Math.abs(c.lastRenderedPosition-b)>=Xt?(lt.current({position:h,totalHeight:Y}),c.lastRenderedPosition=b,c.idleFrames=0):c.idleFrames+=1,c.idleFrames>=2){Tt();return}if(typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(j=>Te.current(j));return}c.loopActive=!1},[M,Tt]);Te.current=It;const Gt=t.useCallback(()=>{const c=qt.current;if(c.idleFrames=0,!c.loopActive){if(c.loopActive=!0,typeof requestAnimationFrame=="function"){c.rafId=requestAnimationFrame(It);return}c.loopActive=!1}},[It]),ze=t.useCallback((c,b)=>{const h=b?.immediate??!1,Y=vt(c,V.top);if(m.current=c,h){qt.current.lastRenderedPosition=c,qt.current.idleFrames=0,ft(c),st({position:Y,totalHeight:M.getTotal()});return}Gt()},[Gt,M,V.top,st]),Rt=t.useCallback((c,b=0)=>{const h=G.current;if(!h)return c;const Y=h.getScrollPosition();me.current+=1;const B=h.getContentSize()+b,j=h.getViewportSize(),K=h.scrollTo(c,{contentSize:B,viewportSize:j});return K===Y&&(me.current=Math.max(0,me.current-1)),Math.abs(K-c)>.5&&(Me.current=!0),K},[]),Ct=t.useRef(!1);t.useEffect(()=>{if(!Ct.current)if(Ct.current=!0,P==null&&typeof I!="number"&&typeof S=="number"){const c=Qt(Math.max(S,0),V.top),b=Math.abs(c-m.current)>.5;ze(c,{immediate:!0}),b&&G.current?.scrollTo(c)}else ze(m.current,{immediate:!0})},[P,I,S,V.top,ze]),t.useEffect(()=>{const c=M.getTotal();if(nt!==c){St(c);return}if(Me.current){Me.current=!1;const b=G.current;if(b&&Math.abs(b.getScrollPosition()-m.current)>.5){const h=Rt(m.current);Me.current=!1,ze(h,{immediate:!0})}}},[M,nt,r,Rt,ze]),t.useEffect(()=>{if(ee.current!==null){const{index:c,align:b,offset:h}=ee.current,Y=je(c,r),{cumulative:B,currentValue:j}=M.prefixSum(Y,{materializeOption:{materialize:!1}});if(B!==void 0&&j!==void 0){const K=Math.max(B-j,0);let xe=K;b==="bottom"?xe=B-ue:b==="center"&&(xe=K+j/2-ue/2),h&&(xe-=h),xe=Math.max(0,xe);const $e=Math.max(0,nt+V.top+V.bottom-ue),ke=Math.min(Qt(xe,V.top),$e);Math.abs(ke-m.current)>1&&(z.debug("[VirtualScroll] Drift correction",{from:m.current,to:ke,targetIndex:Y}),me.current===0&&(me.current+=1),G.current?.scrollTo(ke),ze(ke,{immediate:!0}))}}pt.current=!1},[nt,M,r,V.top,ze,ue,V.bottom]),t.useEffect(()=>{const c=H.current;if(c===V.top||(H.current=V.top,ee.current))return;const b=vt(m.current,c),h=Qt(b,V.top);m.current=h,G.current?.scrollTo(h),ze(h,{immediate:!0})},[V.top,ze]);const At=t.useCallback((c,b)=>{if(r===0)return;const h=je(c,r),Y=M.get(h),B=b-Y,j=M.update(h,b);j!==void 0&&St(j),z.debug("[VirtualScroll] Updated item size manually",{index:h,size:b,total:j});let K=ee.current?ee.current.index:null;if(K===null){const xe=m.current,$e=nn(O).top,ke=vt(xe,$e),{index:Ee,cumulative:ut}=M.findIndexAtOrAfter(ke,{materializeOption:{materialize:!1}});K=ut!==void 0&&ut===ke?Ee+1:Ee}if(K!==-1&&h<K&&B!==0){const xe=m.current,$e=xe+B;Rt($e,B),ze($e,{immediate:!0}),z.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:xe,to:$e,causedByIndex:h,delta:B,activeVisibleStartIndex:K})}},[M,r,Rt,ze,O]),et=t.useCallback((c,b)=>{if(!G.current||r===0)return;const h=je(c,r),Y=je(h-a*2,r),B=je(h+a*2,r),{cumulative:j,total:K,currentValue:xe}=M.prefixSum(h,{materializeOption:{materialize:!0,ranges:[{from:Y,to:B}]}});if(z.debug("[VirtualScroll] Scrolling to index:",h,"ItemBottom:",j,"Total height:",K,"ItemHeight:",xe,"safeIndexFrom:",Y,"safeIndexTo:",B),!K)return;const $e=Math.max(j-xe,0);let ke=$e;b?.align==="bottom"?ke=j-ue:b?.align==="center"&&(ke=$e+xe/2-ue/2),b?.offset&&(ke-=b.offset),ke=Math.max(0,ke);const Ee=Qt(ke,V.top),ut=G.current?.getContentSize()??K+V.top+V.bottom,tt=Math.max(0,ut-ue),dt=Math.min(Ee,tt);ee.current={index:h,align:b?.align,offset:b?.offset};const Kt=G.current?.getScrollPosition()??-1,er=Math.abs(Kt-dt)>.5;Je.current=!1,me.current=0,er&&(Je.current=!0,me.current+=1,G.current?.scrollTo(dt)),St(K),ze(dt,{immediate:!0}),z.debug("[VirtualScroll] Setting scroll position to:",dt,{original:Ee,max:tt})},[M,a,r,V.top,V.bottom,ue,ze]),d=t.useRef(P&&r===0?P:null);t.useEffect(()=>{const c=d.current;!c||r===0||(d.current=null,et(re(Math.trunc(c.index),0,r-1),{align:"top",offset:-Math.max(0,c.offsetPx??0)}))},[r,et]);const T=t.useCallback(c=>{if(!G.current||r===0)return;const b=M.getTotal(),h=re(Math.floor(c),0,b),{index:Y,cumulative:B,currentValue:j}=M.findIndexAtOrAfter(h,{materializeOption:{materialize:!1}}),xe=(B??0)-(j??0)-h;et(Y,{offset:xe})},[M,r,et]),L=t.useCallback(()=>{if(r===0)return null;const c=vt(m.current,V.top),{index:b,cumulative:h,currentValue:Y}=M.findIndexAtOrAfter(c,{materializeOption:{materialize:!1}});if(b===-1)return{index:r-1,offsetPx:0};if(h===c)return{index:re(b+1,0,r-1),offsetPx:0};const B=(h??0)-(Y??0);return{index:b,offsetPx:Math.max(0,c-B)}},[M,r,V.top]),J=t.useCallback(c=>{const b=vt(m.current,V.top),h=typeof c=="function"?c(b):c;T(h);const Y=G.current?.getScrollPosition(),B=typeof Y=="number"?Y:m.current;return ze(B),vt(B,Ae.current)},[V.top,T,ze]),Ce=t.useCallback(c=>{const b=G.current;if(!b)return vt(m.current,Ae.current);const h=b.scrollTo(Y=>Y+c);return vt(h,Ae.current)},[]),Be=t.useCallback(c=>G.current?.applyWheel(c)??!1,[]),gt=t.useCallback((c,b)=>{z.debug("[VirtualScroll] Scroll position changed:",c);const h=Je.current;h&&(Je.current=!1);const Y=me.current>0;Y&&(me.current=0);const B=pt.current&&p.current===r;if(h||Y||B||(ee.current=null),ze(c),we){if(h||Y)return;const j=c-b;if(z.debug("[VirtualScroll] Scroll diff:",j,"New:",c,"Prev:",b),Math.abs(j)>1){const K=j>0?"down":"up";ot(K),qe(!0),z.debug("[VirtualScroll] Showing scroll buttons. Direction:",K),Ze.current&&clearTimeout(Ze.current),Ze.current=setTimeout(()=>{qe(!1),z.debug("[VirtualScroll] Hiding scroll buttons")},2e3)}}},[ze,we,r]),Le=t.useMemo(()=>vt(Ge,V.top),[V.top,Ge]),Pt=t.useMemo(()=>{const c=M.getTotal(),b=pn(Le,ue,a,r,s,M,c);return z.debug("[VirtualScroll] Calculated rendering range:",()=>({...b,scrollPosition:Le,renderingContentSize:c,overscanCount:a,viewportSize:ue})),b},[Le,ue,a,r,s,M]),{renderingStartIndex:mt,renderingEndIndex:Nt,visibleStartIndex:Dt,visibleEndIndex:$t}=Pt,zt=t.useCallback((c,b)=>{if(!_||r===0)return;const h=je(c,r);if(!(b?.ensureVisible??!0)){const tt=Re.current.get(h);tt&&(Ve.current=null,fe.current=h,E(tt));return}const B=M.prefixSum(h,{materializeOption:{materialize:!1}}),j=B.currentValue,K=Math.max(B.cumulative-j,0),xe=K+j,$e=vt(m.current,V.top),ke=$e+ue;if(K<$e||xe>ke){et(h);const tt=Re.current.get(h);tt?(Ve.current=null,fe.current=h,E(tt)):Ve.current=h;return}const ut=Re.current.get(h);if(ut){Ve.current=null,fe.current=h,E(ut);return}Ve.current=h},[_,r,M,V.top,et,E,ue]),Jt=t.useCallback((c,b)=>{if(!(!_||c.defaultPrevented)&&!(c.altKey||c.metaKey||c.ctrlKey)&&c.target===c.currentTarget&&!c.currentTarget.isContentEditable){if(c.key==="ArrowLeft"||c.key==="ArrowRight"){const h=de.current;if(!h||c.shiftKey||!A?.includes("arrow")||!(Number.isFinite(C)&&C>0))return;c.preventDefault(),h(c.key==="ArrowLeft"?-C:C);return}if(c.key==="ArrowDown"){b<r-1&&(c.preventDefault(),zt(b+1));return}if(c.key==="ArrowUp"){b>0&&(c.preventDefault(),zt(b-1));return}if(c.key==="PageDown"){if(b<r-1){c.preventDefault();const{visibleStartIndex:h,visibleEndIndex:Y}=Ue.current,B=Math.max(Y-h+1,1),j=Math.max(B,1),K=je(Math.min(b+j,r-1),r);zt(K)}return}if(c.key==="PageUp"&&b>0){c.preventDefault();const{visibleStartIndex:h,visibleEndIndex:Y}=Ue.current,B=Math.max(Y-h+1,1),j=Math.max(B,1),K=je(b-j,r);zt(K)}}},[_,r,zt,A,C]),Yt=t.useCallback((c,b)=>{if(c.key!=="Escape"||c.defaultPrevented||c.nativeEvent.isComposing||c.target===c.currentTarget)return;const h=c.target;h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement||h.isContentEditable||(c.preventDefault(),zt(b))},[zt]),Wt=t.useCallback(c=>{if(!_)return;const b=je(c,r);Ve.current=null,fe.current=b,ve?.(b)},[_,r,ve]);t.useEffect(()=>{const c=G.current?.getScrollPosition()??0,b=m.current,h=vt(b,V.top);z.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:mt,renderingEndIndex:Nt,visibleStartIndex:Dt,visibleEndIndex:$t,scrollPositionState:Ge,paneScrollPosition:b,logicalScrollPosition:h,contentSize:nt,scrollPaneScrollPosition:c})),wt({renderingStartIndex:mt,renderingEndIndex:Nt,visibleStartIndex:Dt,visibleEndIndex:$t,scrollPosition:h,totalHeight:nt})},[nt,Nt,mt,V.top,wt,Ge,$t,Dt]);const dr=t.useCallback(()=>{if(!we)return null;const c=ye&&at!==null,b=at==="up";return D.jsx("div",{className:"aqvs-scroll-to-edge-overlay","data-visible":c,inert:!c,children:b?D.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:D.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:c?0:-1,onClick:h=>{h.stopPropagation(),Je.current=!0,et(0),qe(!1)},children:"Top"})}):D.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:D.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:c?0:-1,onClick:h=>{h.stopPropagation(),Je.current=!0,et(r-1),qe(!1)},children:"Bottom"})})})},[we,ye,at,et,r]),bt=t.useRef(0),{visibleItems:yt,renderAnchor:Lt}=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:"No items"})}),renderAnchor:0};const c=je(mt,r),b=je(Nt,r),{cumulative:h,currentValue:Y}=M.prefixSum(c,{materializeOption:{materialize:!1}}),B=h-Y;Number.isFinite(B)&&Math.abs(B-bt.current)>hn&&(bt.current=B);const j=bt.current,K=[],xe=[];let $e=0,ke=B;for(let Ee=c;Ee<=b;Ee++){if(xe.length>=zr){z.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:zr,safeRenderingStartIndex:c,safeRenderingEndIndex:b});break}const ut=s(Ee),tt=M.get(Ee),dt=ut-tt;dt!==0&&K.push({index:Ee,value:ut});const Kt=ke+$e,er=n?n(Ee):Ee;xe.push(D.jsx(es,{index:Ee,top:Kt-j,height:ut,item:e(Ee),clipItemHeight:rt,enableKeyboardNavigation:_,onKeyDown:Jt,onEscapeKeyDown:_e?Yt:void 0,onFocus:Wt,registerItemRef:De,children:v},er)),$e+=dt,ke+=tt}return K.length>0&&Promise.resolve().then(()=>{if(We.current)return;let Ee=0;for(const dt of K)if(dt.index<Dt){const Kt=M.get(dt.index);Ee+=dt.value-Kt}const ut=M.updates(K);if(We.current||typeof ut!="number")return;St(ut),z.debug("[VirtualScroll] Updated heights for items",K,"New total height:",ut);const tt=G.current?.getScrollPosition()??m.current;if(Ee!==0){const dt=tt+Ee;Rt(dt,Ee),ze(dt,{immediate:!0}),z.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:tt,to:dt,shiftAmount:Ee})}else tt!==m.current&&ze(tt)}),{visibleItems:xe,renderAnchor:j}},[v,rt,nt,_,r,M,e,n,s,Wt,Jt,_e,Yt,Rt,De,Nt,mt,ze,Dt]),_t=t.useCallback(c=>{const b=(Q??0)>0,h=Math.abs(c-Ge),Y=b&&h>.5?Ge:c,B=vt(Y,V.top);if(z.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:c,effectiveScrollPosition:B,renderingStartIndex:mt,renderingEndIndex:Nt,itemCount:r,viewportSize:ue,callbackThrottleMs:Q,diff:h,rawEffectiveScrollPosition:Y})),r===0)return yt;const j=V.top+Lt-Y,K=V.bottom>0?D.jsx("div",{className:"aqvs-bottom-inset",style:{top:M.getTotal()-Lt,height:V.bottom}},"virtualscroll-bottom-inset"):null;return z.debug("[VirtualScroll] Rendering items",()=>({containerTop:j,logicalScrollPosition:Le,resolvedInsets:V,effectiveScrollPosition:B})),D.jsxs("div",{className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${j}px)`,willChange:"transform"},children:[yt,K]})},[Q,r,M,Le,Lt,Nt,mt,V,Ge,ue,yt]),Bt=t.useMemo(()=>({renderingStartIndex:Pt.renderingStartIndex,renderingEndIndex:Pt.renderingEndIndex,visibleStartIndex:Pt.visibleStartIndex,visibleEndIndex:Pt.visibleEndIndex,scrollPosition:Le,totalHeight:M.getTotal()}),[Pt,Le,M,nt]);t.useEffect(()=>{Ue.current=Bt},[Bt]);const[Zt,jt]=t.useState(""),xt=t.useRef(U);t.useLayoutEffect(()=>{xt.current=U},[U]);const Et=U?.debounceMs??400,kt=Number.isFinite(Et)&&Et>=0,ct=U!==void 0;t.useEffect(()=>{ct&&!kt&&z.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${Et}. Announcements are disabled.`)},[ct,kt,Et]),t.useEffect(()=>{if(!(ct&&kt)){jt("");return}const c=setTimeout(()=>{const b=xt.current?.format;if(!b)return;const h=b({visibleStartIndex:Dt,visibleEndIndex:$t,itemCount:r});jt(h)},Et);return()=>clearTimeout(c)},[ct,kt,Et,Dt,$t,r]),t.useImperativeHandle(W,()=>({getScrollPosition:()=>{const c=G.current?.getScrollPosition();return typeof c=="number"?vt(c,Ae.current):-1},getContentSize:()=>G.current?.getContentSize()??-1,getViewportSize:()=>G.current?.getViewportSize()??-1,scrollTo:J,scrollBy:Ce,applyWheel:Be,scrollToIndex:et,getFenwickTreeTotalHeight:()=>M.getTotal(),getFenwickSize:()=>M.getSize(),focusItemAtIndex:zt,getRange:()=>Ue.current,getScrollAnchor:L,updateItemSize:At}),[J,Ce,Be,et,M,zt,L,At]);const wr=M.getTotal()+V.top+V.bottom,Ot=D.jsx(fn,{ref:G,contentSize:wr,viewportSize:i,onViewportSizeChange:Pe,className:o,testId:u,onScroll:gt,background:y,tapScrollCircleOptions:oe,inertiaOptions:Qe,overscrollBehavior:Ye,itemCount:r,scrollBarWidth:$,enableThumbDrag:ie,enableTrackClick:ae,enableArrowButtons:F,enablePointerDrag:le,pointerDragInputs:He,renderThumbOverlay:R,wheelSpeedMultiplier:it,onWheelHorizontal:q,onPanHorizontal:ne,contentInsets:V,contentProps:N,visibleStartIndex:Dt,visibleEndIndex:$t,renderOverlay:dr,initialScrollPosition:ht.position,children:_t});return ct?D.jsxs(D.Fragment,{children:[Ot,D.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:Zt})]}):Ot},gn=t.forwardRef(ts),ur=262144,an=3,bn=32768,kr=128,Vr=128,Ar=128,Dr=128,Cr=10,rs=(r,e)=>Math.max(1,Math.floor((r??bn)/Math.max(1,e))),ns=(r,e,n,s,i)=>{let a=0,o=0,u=Math.max(0,Math.min(s,n-1));for(;u<n&&a<r&&o<zr;)a+=e(u),o+=1,u+=1;return Math.max(1,o+2*i+2)},xr=(r,e,n)=>{if(!(Number.isInteger(r)&&r>=0&&r<=ur))throw new RangeError(`[VirtualGrid] ${e==="row"?"getRowHeight":"getColWidth"}(${n}) returned ${r} — must be an integer in [0, ${ur}] (0 = hidden). Oversized tracks would pierce the browser layout-coordinate wall (see the design plan §3.1/§6).`);return r},ss=(r,e,n,s,i,a,o,u)=>{const f=pn(r,e,n,s,i,a,o);if(s===0)return{renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0};const g=re(f.renderingStartIndex,0,s-1),{cumulative:v,currentValue:y}=a.prefixSum(g,{materializeOption:{materialize:!1}}),I=v-y,S=Number.isFinite(I)&&Math.abs(I-u)>hn?I:u;return{renderingColStart:f.renderingStartIndex,renderingColEnd:f.renderingEndIndex,visibleColStart:f.visibleStartIndex,visibleColEnd:f.visibleEndIndex,colAnchor:S}},on=[],is=(r,e,n,s,i)=>{const a=[],o=[];if(e<r)return{columns:a,widthUpdates:o,truncated:0};const u=s.prefixSum(r,{materializeOption:{materialize:!1}});let f=u.cumulative-u.currentValue,g=0,v=r;for(;v<=e;){if(a.length>=i)return{columns:a,widthUpdates:o,truncated:e-v+1};const y=n(v),I=s.get(v);if(y!==I&&o.push({index:v,value:y}),y>0){a.push({col:v,left:f,width:y}),f+=I,g=0,v+=1;continue}if(f+=I,g+=1,v+=1,g>cr){const S=s.findIndexAtOrAfter(f+.5,{materializeOption:{materialize:!1}});if(S.index===-1||S.index<=v||!Number.isSafeInteger(S.index))break;const P=s.prefixSum(S.index,{materializeOption:{materialize:!1}});f=P.cumulative-P.currentValue,v=S.index,g=0}}return{columns:a,widthUpdates:o,truncated:0}},as=(r,e,n)=>{const s=[],i=[];let a=0;for(let o=0;o<r;o+=1){const u=e(o),f=n.get(o);u!==f&&i.push({index:o,value:u}),u>0&&s.push({col:o,left:a,width:u}),a+=f}return{columns:s,widthUpdates:i,width:a}},os=(r,e,n,s)=>{const i=[],a=[];let o=0;for(let u=r-e;u<r;u+=1){const f=n(u),g=s.get(u);f!==g&&a.push({index:u,value:f}),f>0&&i.push({col:u,left:o,width:f}),o+=g}return{columns:i,widthUpdates:a,width:o}},vr=(r,e,n)=>Math.min(r,Math.max(0,n-e)),ls={renderingColStart:0,renderingColEnd:0,visibleColStart:0,visibleColEnd:0,colAnchor:0,key:"0:0:0"},cs=({rowCount:r,colCount:e,getRowHeight:n,getColWidth:s,getCell:i,getCellKey:a,children:o,getCellProps:u,getRowProps:f,contentProps:g,background:v,contentInsets:y,onRowFocus:I,frozenLeadingCols:S=0,frozenLeadingRows:P=0,frozenTrailingCols:Q=0,frozenTrailingRows:O=0,horizontalKeyInputs:ve,horizontalKeyStep:Se,onScroll:k,onRangeChange:q,onRenderTruncated:ne,callbackThrottleMs:A,initialScrollAnchor:C,overscanRows:N=an,overscanCols:U=an,viewportSize:W,__maxRenderedCells:$,behaviorOptions:ie,scrollBarOptions:ae,liveRegion:F,className:we,testId:R},oe)=>{const le=t.useRef(null),He=t.useRef(null),_=t.useRef(n);_.current=n;const _e=t.useRef(s);_e.current=s;const it=ie?.resetOnGetColWidthChange===!0,Ye=ie?.resetOnGetItemHeightChange===!0?n:null,rt=it?s:null,Ie=t.useCallback(l=>xr(_.current(l),"row",l),[Ye]),Oe=t.useCallback(l=>xr(_e.current(l),"col",l),[rt]),ge=ie?.defaultColWidth,ue=t.useMemo(()=>{if(ge!==void 0&&!(Number.isInteger(ge)&&ge>=0&&ge<=ur))throw new RangeError(`[VirtualGrid] behaviorOptions.defaultColWidth must be an integer in [0, ${ur}], received ${ge}.`);return{resetOnValueFnChange:it,baseValue:ge}},[it,ge]),Pe=Fr(e,Oe,ue),[G,Ue]=t.useState(0);if(!(Number.isInteger(S)&&S>=0&&S<=kr))throw new RangeError(`[VirtualGrid] frozenLeadingCols must be an integer in [0, ${kr}], received ${S}.`);const ee=Math.min(S,e),We=t.useRef(0);if(!(Number.isInteger(Q)&&Q>=0&&Q<=Ar))throw new RangeError(`[VirtualGrid] frozenTrailingCols must be an integer in [0, ${Ar}], received ${Q}.`);const he=Math.min(Q,e-ee),V=t.useRef(0);if(!(Number.isInteger(P)&&P>=0&&P<=Vr))throw new RangeError(`[VirtualGrid] frozenLeadingRows must be an integer in [0, ${Vr}], received ${P}.`);const Z=Math.min(P,r);if(!(Number.isInteger(O)&&O>=0&&O<=Dr))throw new RangeError(`[VirtualGrid] frozenTrailingRows must be an integer in [0, ${Dr}], received ${O}.`);const Xe=Math.min(O,r-Z),M=Math.max(0,r-Z-Xe),ht=t.useRef(!1),Ge=t.useRef(0),ft=t.useRef(0),[nt,St]=t.useState(0),{frozenRows:m,frozenHeight:H}=t.useMemo(()=>{if(Z===0)return{frozenRows:[],frozenHeight:0};const l=[];let x=0;for(let w=0;w<Z;w+=1){const X=Ie(w);X>0&&l.push({row:w,top:x,height:X}),x+=X}return{frozenRows:l,frozenHeight:x}},[Z,nt,Ie]);Ge.current=H;const[se,te]=t.useState(0),{trailingRows:de,trailingHeight:pe}=t.useMemo(()=>{if(Xe===0)return{trailingRows:[],trailingHeight:0};const l=[];let x=0;for(let w=r-Xe;w<r;w+=1){const X=Ie(w);X>0&&l.push({row:w,top:x,height:X}),x+=X}return{trailingRows:l,trailingHeight:x}},[Xe,r,se,Ie]);ft.current=pe;const be=t.useCallback(l=>Ie(l+Z),[Ie,Z]),Re=t.useRef(I);Re.current=I;const Ve=I!==void 0,fe=t.useMemo(()=>Ve?l=>Re.current?.(l+Z):void 0,[Z,Ve]),at=H,ot=pe,[ye,qe]=t.useState(Z),Ze=t.useRef(null),Je=t.useRef(!1);if(ye!==Z){qe(Z),Je.current=!0;const l=le.current?.getScrollAnchor()??null;Ze.current=l===null?null:{row:l.index+ye,offsetPx:l.offsetPx}}const me=t.useRef(0),Me=t.useRef(0),pt=t.useRef(!1),[p,E]=t.useState(ls),Ne=t.useRef(p);Ne.current=p;const st=t.useRef(0),[Fe,wt]=t.useState(()=>Pe.getTotal()??0),Ae=t.useRef(Fe);Ae.current=Fe;const lt=t.useCallback(l=>{typeof l=="number"&&Number.isFinite(l)&&(Ae.current=l,wt(l))},[]);t.useLayoutEffect(()=>{const l=Pe.getTotal();typeof l=="number"&&Number.isFinite(l)&&l!==Ae.current&<(l)});const De=ae?.width??12,Xt=W===void 0?null:{width:Math.max(0,Math.round(W.width)-De),height:Math.max(0,Math.round(W.height)-De)},[qt,Tt]=t.useState({width:0,height:0}),Te=Xt??qt,It=t.useRef(Te);It.current=Te;const Gt=Te.height>0&&Te.height-H-pe<=0;ht.current=Gt;const ze=Xt!==null;t.useLayoutEffect(()=>{if(ze)return;const l=He.current;if(l===null)return;const x=()=>{const X=Math.max(0,Math.round(l.clientWidth)-De),ce=Math.max(0,Math.round(l.clientHeight)-De);Tt(Ke=>Ke.width===X&&Ke.height===ce?Ke:{width:X,height:ce})};x();const w=new ResizeObserver(x);return w.observe(l),()=>w.disconnect()},[De,ze]);const Rt=t.useCallback(()=>{const l=He.current;l!==null&&l.style.setProperty("--aqvs-grid-hx-residual",`${st.current-me.current}px`)},[]),Ct=t.useCallback(()=>Math.max(0,It.current.width-We.current-V.current),[]),At=t.useCallback(()=>Math.max(0,Ae.current-We.current-V.current-Ct()),[Ct]),et=t.useCallback(()=>{const l=Ct(),x=ss(We.current+me.current,l,U,e,Oe,Pe,Ae.current,Ne.current.colAnchor);if(ee>0&&(x.renderingColStart=Math.max(x.renderingColStart,ee),x.visibleColStart=Math.max(x.visibleColStart,ee)),he>0){const X=e-he-1;x.renderingColEnd=Math.min(x.renderingColEnd,X),x.visibleColEnd=Math.min(x.visibleColEnd,X)}(ee>0||he>0)&&(l<=0||x.renderingColStart>x.renderingColEnd)&&(x.renderingColStart=e,x.renderingColEnd=e-1,x.visibleColStart=e,x.visibleColEnd=e-1);const w=`${x.renderingColStart}:${x.renderingColEnd}:${x.colAnchor}`;w!==Ne.current.key&&E({...x,key:w})},[U,e,Oe,Pe,ee,he,Ct]),[d,T]=t.useState(0),L=t.useRef(null),J=t.useCallback(()=>{L.current===null&&(L.current=requestAnimationFrame(()=>{L.current=null,T(me.current)}))},[]);t.useEffect(()=>()=>{L.current!==null&&cancelAnimationFrame(L.current)},[]);const Ce=t.useRef(k);Ce.current=k;const Be=t.useRef(q);Be.current=q;const gt=t.useRef(ne);gt.current=ne;const Le=t.useRef(null),[Pt,mt]=t.useState(null),[Nt,Dt]=t.useState(Te.height);Nt!==Te.height&&(Dt(Te.height),mt(null));const $t=C===void 0||r===0?0:re(Math.trunc(C.row),0,r-1),zt=t.useMemo(()=>{const l=Le.current?.renderingStartIndex??$t;return ns(Math.max(0,Te.height-Ge.current-ft.current),Ie,r,l,N)},[Te.height,Ie,r,$t,N,at,ot]),Jt=Pt??zt,Yt=t.useCallback(()=>{const l=Le.current;if(l===null)return null;const x=Ne.current;return{renderingRowStart:l.renderingStartIndex,renderingRowEnd:l.renderingEndIndex,visibleRowStart:l.visibleStartIndex,visibleRowEnd:l.visibleEndIndex,renderingColStart:x.renderingColStart,renderingColEnd:x.renderingColEnd,visibleColStart:x.visibleColStart,visibleColEnd:x.visibleColEnd,scrollX:me.current,scrollY:Me.current,totalWidth:Ae.current,totalHeight:l.totalHeight+Ge.current+ft.current}},[]),Wt=t.useCallback(()=>{const l=Yt();l!==null&&Be.current?.(l)},[Yt]),dr=t.useCallback(l=>{const x=At(),w=re(l,0,x);return w!==me.current&&(me.current=w,Rt(),et(),J(),Ce.current?.({x:w,y:Me.current})),w},[Rt,et,J,At]),bt=t.useRef(dr);bt.current=dr,t.useLayoutEffect(()=>{st.current=p.colAnchor,Rt(),Wt()},[p,Rt,Wt]),t.useLayoutEffect(()=>{Le.current!==null&&Wt()},[H,pe,Wt]);const yt=t.useRef(null),Lt=t.useCallback(l=>{const x=re(l.col,0,Math.max(0,e-1)),w=Pe.prefixSum(x,{materializeOption:{materialize:!1}}),X=w.cumulative-w.currentValue,ce=w.currentValue,Ke=Ct();return(l.alignX==="end"?X+ce-We.current-Ke:l.alignX==="center"?X+ce/2-We.current-Ke/2:X-We.current)+l.offsetX},[Pe,e,Ct]),_t=t.useRef(null),Bt=t.useCallback(()=>{const l=_t.current;_t.current=null,!(l===null||l.length===0)&&(lt(Pe.updates(l)),Ue(x=>x+1))},[Pe,lt]),Zt=t.useRef({count:0,warned:!1}),{frozenColumns:jt,frozenWidth:xt}=t.useMemo(()=>{if(ee===0)return Zt.current.count=0,Zt.current.warned=!1,{frozenColumns:on,frozenWidth:0};const{columns:l,widthUpdates:x,width:w}=as(ee,Oe,Pe);if(x.length>0){const X=Zt.current;X.count>=Cr?X.warned||(X.warned=!0,z.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:ee,pendingUpdates:x.length})):(X.count+=1,_t.current=[..._t.current??[],...x],Promise.resolve().then(Bt))}else Zt.current.count=0,Zt.current.warned=!1;return{frozenColumns:l,frozenWidth:w}},[ee,G,Oe,Pe,Bt]);We.current=xt,t.useLayoutEffect(()=>{ee>0?He.current?.style.setProperty("--aqvs-grid-frozen-width",`${xt}px`):He.current?.style.removeProperty("--aqvs-grid-frozen-width")},[xt,ee]);const Et=t.useRef({count:0,warned:!1}),{trailingColumns:kt,trailingWidth:ct}=t.useMemo(()=>{if(he===0)return Et.current.count=0,Et.current.warned=!1,{trailingColumns:on,trailingWidth:0};const{columns:l,widthUpdates:x,width:w}=os(e,he,Oe,Pe);if(x.length>0){const X=Et.current;X.count>=Cr?X.warned||(X.warned=!0,z.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:he,pendingUpdates:x.length})):(X.count+=1,_t.current=[..._t.current??[],...x],Promise.resolve().then(Bt))}else Et.current.count=0,Et.current.warned=!1;return{trailingColumns:l,trailingWidth:w}},[he,e,G,Oe,Pe,Bt]);V.current=ct,t.useLayoutEffect(()=>{he>0?He.current?.style.setProperty("--aqvs-grid-trailing-width",`${ct}px`):He.current?.style.removeProperty("--aqvs-grid-trailing-width")},[ct,he]);const wr=t.useMemo(()=>({...ae,tapScrollCircleOptions:{...ae?.tapScrollCircleOptions,enabled:!1}}),[ae]),Ot=ae?.tapScrollCircleOptions,c=typeof Ot?.maxSpeedMultiplier=="number",b=t.useMemo(()=>({...Ot,offsetX:Ot?.offsetX===void 0?tn:Ot.offsetX,offsetY:Ot?.offsetY===void 0?tn:Ot.offsetY}),[Ot]),h=t.useMemo(()=>Nr(b,Math.max(0,e-ee-he)),[b,e,ee,he]),Y=t.useMemo(()=>Nr(b,M),[b,M]),B=h.enabled,j=Math.max(h.maxVisualDistance,1),K={viewportSize:Math.max(0,Te.width-xt-ct),minSpeedMultiplier:h.minSpeedMultiplier,maxSpeedMultiplier:h.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:c,curve:h.maxSpeedCurve},xe={viewportSize:Math.max(0,Te.height-H-pe),minSpeedMultiplier:Y.minSpeedMultiplier,maxSpeedMultiplier:Y.maxSpeedMultiplier,hasCustomMaxSpeedMultiplier:c,curve:Y.maxSpeedCurve},$e=t.useCallback(()=>me.current,[]),ke=t.useCallback(()=>Me.current,[]),Ee=t.useCallback(()=>{const l=le.current;return l===null?0:Math.max(0,Math.max(0,l.getContentSize())-Math.max(0,l.getViewportSize()))},[]),ut=t.useCallback(l=>{const x=le.current;if(x===null)return Me.current;const w=x.scrollBy(l);return Me.current=w,w},[]),tt=At()>0||Ee()>0,dt=`${Fe}:${xt}:${ct}:${Te.width}:${p.key}`,Kt=`${r}:${Pt??-1}:${H}:${pe}:${Te.height}`,{isTapActive:er,handleTapCircleDragChange:xn,tapCircleHandleRef:vn}=Kn({enabled:B&&tt,maxDistance:j,xSpeedParams:K,ySpeedParams:xe,applyHxRef:bt,getHx:$e,getMaxHx:At,applyVy:ut,getVy:ke,getMaxVy:Ee,pendingColAnchorRef:yt,xExtentFreshness:dt,yExtentFreshness:Kt}),Sn=t.useMemo(()=>re((er?1:.8)*h.opacity,0,1),[er,h.opacity]);t.useLayoutEffect(()=>{const l=yt.current;l===null?bt.current(me.current):bt.current(Lt(l)),et()},[Te.width,Fe,G,xt,ct,et,Lt]);const Hr=t.useRef(!1);t.useLayoutEffect(()=>{if(Hr.current||C===void 0||e===0)return;Hr.current=!0;const l=re(Math.trunc(C.col),0,e-1);if(l<ee||l>=e-he)return;const x={col:l,alignX:"start",offsetX:Math.max(0,C.offsetX)};yt.current=x,bt.current(Lt(x))},[C,e,Lt,ee,he]);const wn=t.useCallback(l=>{Me.current=l,pt.current=!0,Ce.current?.({x:me.current,y:l})},[]),Xr=t.useCallback(l=>{if(M===0||ht.current)Le.current={renderingStartIndex:r,renderingEndIndex:r-1,visibleStartIndex:r,visibleEndIndex:r-1,scrollPosition:0,totalHeight:M===0?0:l.totalHeight},Me.current=0;else{const x=Z;Le.current={renderingStartIndex:l.renderingStartIndex+x,renderingEndIndex:l.renderingEndIndex+x,visibleStartIndex:l.visibleStartIndex+x,visibleEndIndex:l.visibleEndIndex+x,scrollPosition:l.scrollPosition,totalHeight:l.totalHeight},Me.current=l.scrollPosition}mt(x=>{const w=Math.max(1,l.renderingEndIndex-l.renderingStartIndex+1);return w===x?x:w}),Wt()},[Wt,Z,M,r]),qr=t.useCallback(l=>{yt.current=null,bt.current(me.current+l)},[]),$r=rs($,Jt+m.length+de.length),Rr=t.useRef({count:0,warned:!1}),{placedColumns:fr,truncatedCols:mr}=t.useMemo(()=>{const l=Math.max(0,Te.width-xt-ct);if(e===0||l<=0)return{placedColumns:[],truncatedCols:0};if(p.renderingColStart>p.renderingColEnd)return{placedColumns:[],truncatedCols:0};const x=Math.max(1,$r-jt.length-kt.length),{columns:w,widthUpdates:X,truncated:ce}=is(re(p.renderingColStart,0,e-1),re(p.renderingColEnd,0,e-1),Oe,Pe,x);if(X.length>0){const Ke=Rr.current;Ke.count>=Cr?Ke.warned||(Ke.warned=!0,z.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:p.key,pendingUpdates:X.length})):(Ke.count+=1,_t.current=[..._t.current??[],...X],Promise.resolve().then(Bt))}else Rr.current.count=0,Rr.current.warned=!1;return{placedColumns:w,truncatedCols:ce}},[p,e,Te.width,xt,ct,jt.length,kt.length,G,Oe,Pe,$r,Bt]),Yr=t.useRef("");t.useEffect(()=>{if(mr>0){const l=`${p.key}:${mr}`;l!==Yr.current&&(Yr.current=l,gt.current?.({renderedCells:(fr.length+jt.length+kt.length)*(Jt+m.length+de.length),droppedCols:mr}))}},[mr,p.key,fr.length,jt.length,kt.length,Jt,m.length,de.length]);const Wr=p.colAnchor,Mr=t.useCallback(l=>{const x=f?.(l),w=Ie(l)===0,X=w?null:fr.map(({col:ce,left:Ke,width:rr})=>{const Vt=u?.(l,ce),ir={...Vt?.style,left:Ke-Wr,width:rr};return t.createElement("div",{...Vt,key:a?a(l,ce):ce,className:Mt.twMerge("aqvs-grid-cell",Vt?.className),style:ir},o(i(l,ce),l,ce))});return ee===0&&he===0?D.jsx("div",{...x,className:Mt.twMerge("aqvs-grid-row",x?.className),style:x?.style,children:X}):D.jsxs("div",{...x,"data-aqvs-frozen-row":ee>0?"":void 0,className:Mt.twMerge("aqvs-grid-row aqvs-grid-row-frozen-host",x?.className),style:x?.style,children:[w?null:jt.map(({col:ce,left:Ke,width:rr})=>{const Vt=u?.(l,ce),ir={...Vt?.style,left:Ke,width:rr};return t.createElement("div",{...Vt,"data-aqvs-frozen-cell":"",key:a?a(l,ce):ce,className:Mt.twMerge("aqvs-grid-cell",Vt?.className),style:ir},o(i(l,ce),l,ce))}),w?null:D.jsx("div",{className:"aqvs-grid-row-scroll",children:D.jsx("div",{className:"aqvs-grid-row-scroll-inner",children:X})}),w||he===0?null:D.jsx("div",{className:"aqvs-grid-row-trailing",children:D.jsx("div",{className:"aqvs-grid-row-trailing-inner",children:kt.map(({col:ce,left:Ke,width:rr})=>{const Vt=u?.(l,ce),ir={...Vt?.style,left:Ke,width:rr};return t.createElement("div",{...Vt,"data-aqvs-trailing-cell":"",key:a?a(l,ce):ce,className:Mt.twMerge("aqvs-grid-cell",Vt?.className),style:ir},o(i(l,ce),l,ce))})})})]})},[fr,jt,kt,ee,he,Wr,f,u,a,i,o,Ie]),[Rn,Mn]=t.useState(""),tr=t.useRef(null),Br=t.useRef(F);Br.current=F;const hr=t.useCallback(()=>{const l=Br.current;if(l===void 0)return;const x=l.debounceMs??400;Number.isFinite(x)&&x>=0&&(tr.current!==null&&window.clearTimeout(tr.current),tr.current=window.setTimeout(()=>{tr.current=null;const w=Yt();w!==null&&Mn(X=>{const ce=l.buildMessage(w);return ce===X?X:ce})},x))},[Yt]),pr=F?.debounceMs??400,jr=Number.isFinite(pr)&&pr>=0,Ur=F!==void 0;t.useEffect(()=>{Ur&&!jr&&z.warn(`[VirtualGrid] liveRegion.debounceMs must be a finite number >= 0, received ${pr}. Announcements are disabled.`)},[Ur,jr,pr]),t.useEffect(()=>()=>{tr.current!==null&&window.clearTimeout(tr.current)},[]),t.useEffect(()=>{hr()},[p,hr]);const In=t.useCallback(l=>{Xr(l),hr()},[Xr,hr]);return t.useImperativeHandle(oe,()=>({scrollTo:l=>{const x=le.current;let w=Me.current;l.y!==void 0&&x!==null&&(x.scrollTo(l.y),w=x.getScrollPosition(),Me.current=w);let X=me.current;return l.x!==void 0&&(yt.current=null,X=bt.current(l.x)),{x:X,y:w}},scrollBy:l=>{const x=le.current;let w=Me.current;l.y!==void 0&&l.y!==0&&x!==null&&(w=x.scrollBy(l.y),Me.current=w);let X=me.current;return l.x!==void 0&&l.x!==0&&(yt.current=null,X=bt.current(me.current+l.x)),{x:X,y:w}},scrollToCell:(l,x,w)=>{const X=le.current;if(X!==null&&r>0){const ce=re(Math.trunc(l),0,r-1);ce>=Z&&ce<r-Xe&&X.scrollToIndex(ce-Z,{align:w?.alignY??"top",offset:w?.offsetY})}if(e>0){const ce=re(Math.trunc(x),0,e-1);if(ce>=ee&&ce<e-he){const Ke={col:ce,alignX:w?.alignX??"start",offsetX:w?.offsetX??0};yt.current=Ke,bt.current(Lt(Ke))}}},getScrollPosition:()=>pt.current||le.current!==null?{x:me.current,y:le.current?.getScrollPosition()??Me.current}:{x:-1,y:-1},getScrollAnchor:()=>{if(r===0||e===0)return null;const l=le.current?.getScrollAnchor()??null;if(l===null)return null;const x=We.current+me.current,w=Pe.findIndexAtOrAfter(x,{materializeOption:{materialize:!1}});if(w.index===-1)return{row:l.index+Z,col:e-1,offsetX:0,offsetY:l.offsetPx};if(w.cumulative===x)return{row:l.index+Z,col:re(w.index+1,0,e-1),offsetX:0,offsetY:l.offsetPx};const X=(w.cumulative??0)-(w.currentValue??0);return{row:l.index+Z,col:w.index,offsetX:Math.max(0,x-X),offsetY:l.offsetPx}},getViewportSize:()=>({width:It.current.width,height:It.current.height}),getContentSize:()=>({width:Ae.current,height:le.current===null?0:Ge.current+ft.current+Math.max(0,le.current.getContentSize())}),getRange:Yt,updateRowSize:(l,x)=>{xr(x,"row",l),Math.trunc(l)<Z?St(w=>w+1):Xe>0&&Math.trunc(l)>=r-Xe?te(w=>w+1):le.current?.updateItemSize(Math.trunc(l)-Z,x)},updateColSize:(l,x)=>{xr(x,"col",l),lt(Pe.update(re(Math.trunc(l),0,Math.max(0,e-1)),x)),Ue(w=>w+1)},getFrozenSize:()=>({cols:ee,width:We.current,rows:Z,height:Ge.current,trailingCols:he,trailingRows:Xe,trailingWidth:V.current,trailingHeight:ft.current,trailingVisibleWidth:vr(V.current,We.current,It.current.width),trailingVisibleHeight:vr(ft.current,Ge.current,It.current.height)}),applyWheel:l=>le.current?.applyWheel(l)??!1,focusRowAtIndex:(l,x)=>{const w=Math.trunc(l);w<Z?He.current?.querySelector(`[data-aqvs-frozen-band-row="${w}"]`)?.focus():Xe>0&&w>=r-Xe?He.current?.querySelector(`[data-aqvs-trailing-band-row="${w}"]`)?.focus():le.current?.focusItemAtIndex(w-Z,x)}}),[r,e,Pe,Yt,lt,Lt,ee,Z,he,Xe]),D.jsxs("div",{ref:He,className:Mt.twMerge("aqvs-grid",Z>0?"aqvs-grid-has-frozen-rows":"",Xe>0?"aqvs-grid-has-trailing-rows":"",we),"data-testid":R,children:[Z>0?D.jsx("div",{className:"aqvs-grid-frozen-rows",style:{height:H},"data-testid":R?`${R}-frozen-rows`:void 0,children:m.map(({row:l,top:x,height:w})=>D.jsx("div",{"data-aqvs-frozen-band-row":l,className:"aqvs-grid-frozen-band-row",style:{top:x,height:w,right:De},tabIndex:-1,onFocus:()=>I?.(l),children:Mr(l)},l))}):null,D.jsx("div",{className:"aqvs-grid-main","data-testid":R?`${R}-main`:void 0,children:D.jsx(gn,{ref:le,itemCount:Gt?0:M,getItem:l=>l+Z,getItemKey:l=>l+Z,getItemHeight:be,overscanCount:N,viewportSize:Te.height>0?Math.max(0,Te.height-H-pe):void 0,callbackThrottleMs:A,behaviorOptions:ie,scrollBarOptions:wr,contentProps:g,background:v,contentInsets:y,onItemFocus:fe,horizontalKeyInputs:ve,horizontalKeyStep:Se,initialScrollAnchor:Je.current?Ze.current!==null&&Ze.current.row>=Z&&M>0?{index:Ze.current.row-Z,offsetPx:Ze.current.offsetPx}:void 0:C!==void 0&&M>0&&Math.trunc(C.row)>=Z&&Math.trunc(C.row)<r-Xe?{index:Math.trunc(C.row)-Z,offsetPx:C.offsetY}:void 0,onScroll:wn,onRangeChange:In,onWheelHorizontal:qr,onPanHorizontal:qr,testId:R?`${R}-rows`:void 0,children:Mr},Z)}),Xe>0?D.jsx("div",{className:"aqvs-grid-trailing-rows",style:{height:vr(pe,H,Te.height)},"data-testid":R?`${R}-trailing-rows`:void 0,children:D.jsx("div",{className:"aqvs-grid-trailing-rows-inner",style:{height:pe},children:de.map(({row:l,top:x,height:w})=>D.jsx("div",{"data-aqvs-trailing-band-row":l,className:"aqvs-grid-trailing-band-row",style:{top:x,height:w,right:De},tabIndex:-1,onFocus:()=>I?.(l),children:Mr(l)},l))})}):null,D.jsx("div",{className:"aqvs-grid-hbar-strip",style:{height:De,paddingRight:he>0?De+vr(ct,xt,Te.width):De},"data-testid":R?`${R}-hbar`:void 0,children:D.jsx(Or,{horizontal:!0,contentSize:Math.max(0,Fe-xt-ct),viewportSize:Math.max(0,Te.width-xt-ct),scrollPosition:d,itemCount:Math.max(0,e-ee-he),tapScrollCircleOptions:ae?.tapScrollCircleOptions,onScroll:(l,x)=>(yt.current=null,bt.current(typeof l=="function"?l(x??me.current):l)),scrollBarWidth:De})}),B&&tt&&D.jsx("div",{className:"aqvs-grid-tap-circle-wrapper","data-aqvs-grid-tap-circle":"",style:{left:`min(calc(100% - ${De+h.size}px), max(calc(100% - ${De}px + ${h.offsetX}px), calc(75% - ${h.size/2}px)))`,top:`min(calc(100% - ${De+h.size}px), max(calc(100% - ${De}px + ${h.offsetY}px), calc(75% - ${h.size/2}px)))`},children:D.jsx(Lr,{axis:"xy",ref:vn,className:Mt.twMerge("aqvs-grid-tap-circle",h.className),size:h.size,maxVisualDistance:j,opacity:Sn,renderVisual:h.renderVisual,onDragChange:xn})}),F!==void 0?D.jsx("div",{className:"aqvs-grid-live-region","aria-live":"polite","data-testid":R?`${R}-live`:void 0,children:Rn}):null]})},us=t.forwardRef(cs);exports.FenwickMapTree=Ht;exports.MAX_FROZEN_LEADING_COLS=kr;exports.MAX_FROZEN_LEADING_ROWS=Vr;exports.MAX_FROZEN_TRAILING_COLS=Ar;exports.MAX_FROZEN_TRAILING_ROWS=Dr;exports.MAX_RENDERED_CELLS=bn;exports.MAX_TRACK_SIZE=ur;exports.ScrollBar=Or;exports.ScrollPane=fn;exports.TAP_SCROLL_SPEED_DEFAULTS=_r;exports.VirtualGrid=us;exports.VirtualScroll=gn;exports.computeAutoTapScrollMaxSpeedMultiplier=cn;exports.computeTapScrollSpeed=Sr;exports.computeTapScrollVelocity=un;exports.createResidualQuantizer=On;exports.minmax=re;exports.tapScrollCircleSampleVisual=Yn;exports.useFenwickMapTree=Fr;exports.useHeightCache=Gn;exports.useLruCache=mn;exports.useWheelBridge=Zn;
|
package/dist/index.d.cts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* High-performance virtual scrolling component for React with variable item heights.
|
|
5
5
|
* 可変なアイテム高さに対応したReact用の高性能仮想スクロールコンポーネント。
|
|
6
6
|
*/
|
|
7
|
+
export { computeTapScrollVelocity, type TapScrollAxisSpeedParams, type TapScrollVelocityInput } from './computeTapScrollVelocity.cjs';
|
|
7
8
|
export { createResidualQuantizer, type ResidualQuantizer, type ResidualQuantizerOptions } from './residualQuantizer.cjs';
|
|
8
9
|
export { computeAutoTapScrollMaxSpeedMultiplier, computeTapScrollSpeed, ScrollBar, type ScrollBarProps, type ScrollBarTapCircleOptions, type ScrollBarThumbOverlayRenderProps, TAP_SCROLL_SPEED_DEFAULTS, type TapScrollSpeedInput } from './ScrollBar.cjs';
|
|
9
10
|
export { ScrollPane, type ScrollPaneContentInsets, type ScrollPaneHandle, type ScrollPaneInertiaOptions, type ScrollPaneProps } from './ScrollPane.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* High-performance virtual scrolling component for React with variable item heights.
|
|
5
5
|
* 可変なアイテム高さに対応したReact用の高性能仮想スクロールコンポーネント。
|
|
6
6
|
*/
|
|
7
|
+
export { computeTapScrollVelocity, type TapScrollAxisSpeedParams, type TapScrollVelocityInput } from './computeTapScrollVelocity.ts';
|
|
7
8
|
export { createResidualQuantizer, type ResidualQuantizer, type ResidualQuantizerOptions } from './residualQuantizer.ts';
|
|
8
9
|
export { computeAutoTapScrollMaxSpeedMultiplier, computeTapScrollSpeed, ScrollBar, type ScrollBarProps, type ScrollBarTapCircleOptions, type ScrollBarThumbOverlayRenderProps, TAP_SCROLL_SPEED_DEFAULTS, type TapScrollSpeedInput } from './ScrollBar.tsx';
|
|
9
10
|
export { ScrollPane, type ScrollPaneContentInsets, type ScrollPaneHandle, type ScrollPaneInertiaOptions, type ScrollPaneProps } from './ScrollPane.tsx';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACvH,OAAO,EAAE,sCAAsC,EAAE,qBAAqB,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,yBAAyB,EAAE,KAAK,gCAAgC,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC3P,OAAO,EAAE,UAAU,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvJ,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACH,aAAa,EACb,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,GACrC,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,KAAK,wBAAwB,EAAE,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACpI,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACvH,OAAO,EAAE,sCAAsC,EAAE,qBAAqB,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,yBAAyB,EAAE,KAAK,gCAAgC,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC3P,OAAO,EAAE,UAAU,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,KAAK,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvJ,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACH,aAAa,EACb,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,GACrC,MAAM,qBAAqB,CAAA"}
|