@aiquants/virtualscroll 3.11.0 → 3.11.2

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