@aiquants/virtualscroll 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/ScrollBar.d.ts.map +1 -1
- package/dist/ScrollPane.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1243 -1245
- package/dist/utils.d.cts +15 -0
- package/dist/utils.d.ts +15 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ScrollBar.tsx +3 -30
- package/src/ScrollPane.tsx +16 -3
- package/src/utils.ts +42 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@aiquants/virtualscroll` are documented here.
|
|
4
4
|
|
|
5
|
+
## 3.1.1 (未リリース)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **タッチ / ペンパンの祖先 transform scale 補正 (÷scale)**: ScrollPane のポインタパンとフリック
|
|
10
|
+
慣性速度が視覚 px のまま論理スクロールへ入っていたため、祖先に `transform: scale(z)` がある
|
|
11
|
+
ホスト (例: `@aiquants/spreadsheet` v0.3 のパッケージズーム) で**コンテンツが指速の z 倍**で
|
|
12
|
+
動き、慣性走行距離も同率で歪んでいた。押下時に採取する視覚 / レイアウト比で move delta と
|
|
13
|
+
慣性初速を除算する (ScrollBar のサム / トラックドラッグが既に持つ press キャッシュ規約と
|
|
14
|
+
同一)。スケール算出は `getAxisScale` として `utils.ts` へ共有化 (ScrollBar は委譲 — 挙動
|
|
15
|
+
不変を既存スケール補正テストが封印)。発動閾値 6px は指の物理移動量の判別のため視覚 px の
|
|
16
|
+
まま (意図的非対称)。ホイールは補正しない — WheelEvent の delta はスクロール量であり
|
|
17
|
+
transform の影響を受けない (ネイティブスクローラーと同挙動、`wheelSpeedMultiplier` で調整可)。
|
|
18
|
+
ゲート: scale 0.5 のパン 2 倍換算・小数寸法 scale 1 の厳密同値・視覚速度閾値未満 / 論理速度
|
|
19
|
+
閾値以上の慣性判別 (変異 3 種 red 実測)。付随の lint 衛生 1 件: 既存の意図的観測プローブ
|
|
20
|
+
(`sameCountRoundtripDetach.spec.tsx` の console.log) へ根拠つき biome-ignore を付与 (コメント
|
|
21
|
+
のみ・挙動不変)。
|
|
22
|
+
|
|
5
23
|
## 3.1.0 (2026-08-20)
|
|
6
24
|
|
|
7
25
|
**A-5 のアクセシビリティ / 入力ユーティリティ 3 点。すべて opt-in で、未使用時の挙動・DOM 形状は
|
package/dist/ScrollBar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollBar.d.ts","sourceRoot":"","sources":["../src/ScrollBar.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScrollBar.d.ts","sourceRoot":"","sources":["../src/ScrollBar.tsx"],"names":[],"mappings":"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"}
|
package/dist/ScrollPane.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollPane.d.ts","sourceRoot":"","sources":["../src/ScrollPane.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScrollPane.d.ts","sourceRoot":"","sources":["../src/ScrollPane.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("react/jsx-runtime"),t=require("react"),Mt=require("tailwind-merge"),Rr=n=>{const{quantum:e,resetOnDirectionChange:r=!0}=n;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;r&&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}}};class M{level;prefix;impl;constructor(e=2,r="[virtualscroll]",s=console){this.level=e,this.prefix=r,this.impl=s}static instance=new M(2,"[virtualscroll]");static setLevel(e){M.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){M.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){M.instance.setPrefix(e)}setPrefix(e){this.prefix=e}static isEnabled(e){return M.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,...r){M.instance.debug(e,...r)}debug(e,...r){this.level<=0&&this.impl.debug(...this.formatMessage(M.resolveLazy(e)),...r.map(M.resolveLazy))}static info(e,...r){M.instance.info(e,...r)}info(e,...r){this.level<=1&&this.impl.info(...this.formatMessage(M.resolveLazy(e)),...r.map(M.resolveLazy))}static warn(e,...r){M.instance.warn(e,...r)}warn(e,...r){this.level<=2&&this.impl.warn(...this.formatMessage(M.resolveLazy(e)),...r.map(M.resolveLazy))}static error(e,...r){M.instance.error(e,...r)}error(e,...r){this.level<=3&&this.impl.error(...this.formatMessage(M.resolveLazy(e)),...r.map(M.resolveLazy))}}const sr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Xt=6,Pr=8,yr=({dragState:n,normalizedDistance:e})=>{const r=1+e*.18,s=.16+e*.24,i=.38+e*.28,o=n.active?"80ms ease-out":"220ms ease";return q.jsxs(q.Fragment,{children:[q.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(${r})`,transition:`${o}, ${n.active?"80ms":"260ms"} box-shadow ease`}}),q.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:n.active?"120ms opacity ease-out":"220ms opacity ease"}})]})},mr=t.memo(t.forwardRef(({onDragChange:n,className:e,maxVisualDistance:r=160,size:s=40,style:i,opacity:o=1,renderVisual:c},d)=>{const[p,b]=t.useState(sr),S=t.useRef(null),I=t.useRef(null),N=t.useRef({x:0,y:0}),g=t.useRef(null),A=t.useRef(0),$=t.useCallback(v=>{b(v),n(v)},[n]),V=t.useCallback((v,W,ue=!1)=>{const{x:He,y:qe}=N.current,k=v-He,Ae=W-qe,Xe=Math.abs(Ae),Ee=Xe<Xt?0:Ae<0?-1:1,Le=A.current;let je=Ee;const Ne=Xt+Pr;Ee===0?Le!==0&&Xe<Ne?je=Le:(je=0,ue||(A.current=0)):Ee!==Le&&Le!==0&&Xe<Ne?je=Le:A.current=Ee,$({active:ue||Xe>=Xt,offsetX:k,offsetY:Ae,distance:Xe,direction:je,pointerId:S.current})},[$]),ae=t.useCallback(v=>{if(v===null)return;const W=g.current;W?.hasPointerCapture(v)&&W.releasePointerCapture(v)},[]),le=t.useCallback((v=!1)=>{v&&ae(S.current),S.current=null,I.current=null,A.current=0,$(sr)},[$,ae]),re=t.useCallback(v=>{if(S.current!==null&&S.current!==v.pointerId){I.current={pointerId:v.pointerId,clientX:v.clientX,clientY:v.clientY},v.preventDefault(),v.stopPropagation();return}v.preventDefault(),v.stopPropagation();const W=g.current??v.currentTarget,{left:ue,top:He,width:qe,height:k}=W.getBoundingClientRect();N.current={x:ue+qe/2,y:He+k/2},S.current=v.pointerId;try{W.setPointerCapture(v.pointerId)}catch{}V(v.clientX,v.clientY,!0)},[V]),se=t.useCallback(v=>{if(S.current!==v.pointerId){I.current!==null&&I.current.pointerId===v.pointerId&&(I.current={pointerId:v.pointerId,clientX:v.clientX,clientY:v.clientY});return}v.preventDefault(),V(v.clientX,v.clientY)},[V]),ce=t.useCallback(v=>{if(S.current!==v.pointerId){I.current!==null&&I.current.pointerId===v.pointerId&&(I.current=null);return}v.preventDefault(),v.stopPropagation();const W=I.current;if(I.current=null,W!==null){ae(v.pointerId);const ue=g.current;let He=!0;if(ue!==null&&typeof ue.setPointerCapture=="function")try{ue.setPointerCapture(W.pointerId)}catch(qe){(typeof qe=="object"&&qe!==null&&"name"in qe?qe.name:void 0)==="NotFoundError"&&(He=!1)}if(He){S.current=W.pointerId,V(W.clientX,W.clientY,!0);return}}le(!0)},[le,ae,V]),R=t.useCallback(v=>{v.target===v.currentTarget&&S.current===v.pointerId&&le(!1)},[le]);t.useImperativeHandle(d,()=>({reset:()=>{le(!0)},getElement:()=>g.current}),[le]);const F=Math.min(Math.max(o,0),1),w=s/64,G=Math.min(p.distance,r)/r,Z=p.direction*G*10*w,U=c??yr,me={dragState:p,normalizedDistance:G,sizeScale:w,size:s,opacity:F},z={...i,width:s,height:s,transform:`translateY(${Z}px)`};return z.opacity=F,q.jsx("div",{ref:g,"data-testid":"virtual-scroll-tap-circle",className:Mt.twMerge("aqvs-tap-scroll-circle",e),style:z,tabIndex:-1,onPointerDown:re,onPointerMove:se,onPointerUp:ce,onPointerCancel:ce,onLostPointerCapture:R,role:"presentation",children:U(me)})}));mr.displayName="TapScrollCircle";const te=(n,e,r)=>Math.max(e,Math.min(r,n)),Kt="virtualscroll:tap-scroll-cancel",ir=20,Er=250,Cr=60,kr=20,Nr=20,Gt={maxDistance:240,minSpeedMultiplier:.2},Vr=Gt.maxDistance,or={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},jt=2.2,zr=8,Dr=120,Ar=1/10,ot={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:Vr,minSpeedMultiplier:Gt.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},Lr=n=>n?{mainSizeKey:"width",crossSizeKey:"height",positionKey:"left",selectDelta:(e,r)=>e,getPointerCoordinate:({clientX:e})=>e,arrowLabels:["Scroll left","Scroll right"],arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",positionKey:"top",selectDelta:(e,r)=>r,getPointerCoordinate:({clientY:e})=>e,arrowLabels:["Scroll up","Scroll down"],arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},Or=(n,e)=>{const r=n?.maxSpeedMultiplier,s=typeof r=="number"?r:hr(e);return{enabled:n?.enabled??ot.enabled,size:n?.size??ot.size,offsetX:n?.offsetX??ot.offsetX,offsetY:n?.offsetY??ot.offsetY,className:n?.className??ot.className,maxVisualDistance:n?.maxVisualDistance??ot.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(n?.minSpeedMultiplier??ot.minSpeedMultiplier,0),opacity:te(n?.opacity??ot.opacity,0,1),renderVisual:n?.renderVisual??ot.renderVisual,maxSpeedCurve:n?.maxSpeedCurve??ot.maxSpeedCurve}},_r=({isDragging:n,isThumbHovered:e,enableThumbDrag:r})=>t.useMemo(()=>r?n?"dragging":e?"hover":"idle":"disabled",[r,n,e]),Fr=({canUseArrowButtons:n,enableArrowButtons:e,resetTapScroll:r,scrollByStep:s})=>{const i=t.useRef(null),o=t.useRef(null),c=t.useRef(null),d=t.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null),o.current!==null&&(window.clearTimeout(o.current),o.current=null),c.current!==null&&(window.removeEventListener("pointerup",c.current),window.removeEventListener("pointercancel",c.current),window.removeEventListener("blur",c.current),c.current=null)},[]),p=t.useCallback(()=>{d()},[d]),b=t.useCallback(I=>N=>{if(!n)return;N.cancelable&&N.preventDefault(),N.stopPropagation(),r(),d(),s(I),o.current=window.setTimeout(()=>{i.current=window.setInterval(()=>{s(I)},Cr)},Er);const g=()=>d();c.current=g,window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g),window.addEventListener("blur",g)},[n,d,r,s]),S=t.useCallback(I=>N=>{e&&(N.key==="Enter"||N.key===" "||N.key==="Spacebar")&&(N.preventDefault(),s(I))},[e,s]);return t.useEffect(()=>{n||d()},[n,d]),t.useEffect(()=>()=>{d()},[d]),{handleArrowPointerDown:b,handleArrowPointerUp:p,handleArrowKeyDown:S}},Yr=700,gt=(n,e)=>typeof n=="number"&&Number.isFinite(n)?n:e,pr=({distance:n,maxDistance:e,viewportSize:r,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:o,curve:c})=>{const d=Math.max(gt(n,0),0),p=gt(e,0),b=p>0?Math.min(d,p)/p:1,S=Math.max(gt(r,0),0),I=Math.max(gt(s,0),0),N=Math.max(gt(i,0),0),g=Math.max(S*I,40),A=o?g:1200,$=Math.max(S*N,A),V=c?Math.max(gt(c.exponentialScale,N),0):0,ae=c?Math.min($,Math.max(S*V,g)):$,le=Math.max(ae,g);let re=b**1.1;if(c){const ce=Math.min(Math.max(gt(c.exponentialSteepness,0),0),Yr);if(ce===0)re=b;else{const R=Math.expm1(ce)||1;re=Math.min(Math.max(Math.expm1(ce*b)/R,0),1)}}const se=Math.min(Math.max(gt(c?.easedOffset,0),0),1);return g+(le-g)*(se+(1-se)*re)},hr=n=>{if(!n||n<=0)return jt;const e=Math.max(1,n),r=Math.log10(e),s=jt+r*zr;return te(s,jt,Dr)},gr=({contentSize:n,viewportSize:e,scrollPosition:r,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:o=!0,enableArrowButtons:c=!0,horizontal:d=!1,scrollBarWidth:p=12,className:b,ariaControls:S,tapScrollCircleOptions:I,itemCount:N,renderThumbOverlay:g,visibleStartIndex:A,visibleEndIndex:$})=>{const[V,ae]=t.useState(!1),[le,re]=t.useState(!1),[se,ce]=t.useState(!1),R=t.useRef(null),F=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),w=t.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),G=t.useRef(r),Z=t.useRef(s),U=t.useRef(or),me=t.useRef(null),z=t.useRef(null),v=t.useRef(null),W=t.useRef(0),ue=t.useRef(0),He=t.useMemo(()=>Or(I,N),[N,I]),qe=t.useMemo(()=>Lr(d),[d]),{enabled:k,size:Ae,offsetX:Xe,offsetY:Ee,className:Le,maxVisualDistance:je,maxSpeedMultiplier:Ne,minSpeedMultiplier:Te,opacity:Ce,renderVisual:he,maxSpeedCurve:Se}=He,K=t.useRef({viewportSize:e,maxScrollPosition:Math.max(n-e,0),scrollBarVisible:n>e,effectiveTapMaxDistance:Math.max(je,1),tapCircleMaxSpeedMultiplier:Ne,tapCircleMinSpeedMultiplier:Te,tapCircleMaxSpeedCurve:Se,tapScrollCircleOptions:I,effectiveTrackLength:0,onScroll:s,scrollPosition:r}),{mainSizeKey:Ge,crossSizeKey:$e,positionKey:at,selectDelta:et,getPointerCoordinate:E,arrowLabels:dt,arrowIcons:ne,directionClass:C,orientation:tt}=qe,Ue=Math.max(je,1),lt=e/n,Ve=Math.max(e-p*2,0),m=lt*Ve,T=Math.min(Math.max(ir,m||0),Ve||ir),H=n-e,B=Math.max(Ve-T,0),Q=H<=0||B<=0?0:te(r/H*B,0,B),ve=Q+T/2,J=n>e||V,ge=J&&c;t.useLayoutEffect(()=>{K.current={viewportSize:e,maxScrollPosition:H,scrollBarVisible:J,effectiveTapMaxDistance:Ue,tapCircleMaxSpeedMultiplier:Ne,tapCircleMinSpeedMultiplier:Te,tapCircleMaxSpeedCurve:Se,tapScrollCircleOptions:I,effectiveTrackLength:B,onScroll:s,scrollPosition:r}}),t.useLayoutEffect(()=>{G.current=r},[r]),t.useLayoutEffect(()=>{Z.current=s},[s]),t.useEffect(()=>{i||re(!1)},[i]);const Me=_r({isDragging:V,isThumbHovered:le,enableThumbDrag:i}),X=t.useCallback((l,x)=>{const y=K.current,D=x??G.current;if(Z.current){const Fe=Z.current(l,D);if(typeof Fe=="number"&&Number.isFinite(Fe))return G.current=Fe,Fe}const j=typeof l=="function"?l(D):l,be=Math.max(y.maxScrollPosition,0),_e=y.scrollBarVisible?te(j,0,be):0;return G.current=_e,_e},[]),Re=t.useCallback(l=>{const x=K.current,y=G.current;if(!x.scrollBarVisible||x.maxScrollPosition<=0){const We=X(0,y),ct=We-y;return{nextPosition:We,actualDelta:ct,reachedBoundary:!0}}if(l===0)return{nextPosition:y,actualDelta:0,reachedBoundary:!1};const j=X(We=>te(We+l,0,x.maxScrollPosition),y),be=j-y,_e=l<0&&y+l<=0,Fe=l>0&&y+l>=x.maxScrollPosition,nt=l<0&&(j<=0||_e&&be===0)||l>0&&(j>=x.maxScrollPosition||Fe&&be===0);return{nextPosition:j,actualDelta:be,reachedBoundary:nt}},[X]),ke=t.useCallback((l,x)=>{l.current+=x;const y=Math.max(K.current.maxScrollPosition,0);y>0&&(l.current=te(l.current,-y,y));const D=Re(l.current);return l.current-=D.actualDelta,D.reachedBoundary&&(l.current=0),D},[Re]),fe=t.useCallback(()=>{z.current!==null&&(window.cancelAnimationFrame(z.current),z.current=null),v.current=null,W.current=0,ue.current=0},[]),Pe=t.useCallback(()=>{U.current={...or},ce(!1),me.current?.reset(),fe()},[fe]),Ze=t.useCallback(l=>{const x=U.current,y=K.current;if(!x.active||x.direction===0){fe();return}if(!y.scrollBarVisible||y.maxScrollPosition<=0){fe();return}const D=v.current??l,j=Math.max((l-D)/1e3,0),be=Math.min(j,Ar);if(v.current=l,be<=0){z.current=window.requestAnimationFrame(Ze);return}const _e=pr({distance:x.distance,maxDistance:y.effectiveTapMaxDistance,viewportSize:y.viewportSize,minSpeedMultiplier:y.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:y.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof y.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:y.tapCircleMaxSpeedCurve});ue.current!==x.direction&&(ue.current=x.direction,W.current=0);const{reachedBoundary:Fe}=ke(W,x.direction*_e*be);if(Fe){fe();return}z.current=window.requestAnimationFrame(Ze)},[ke,fe]),ze=t.useCallback(()=>{z.current===null&&(v.current=null,W.current=0,z.current=window.requestAnimationFrame(Ze))},[Ze]);t.useEffect(()=>{const l=U.current;!l.active||l.direction===0||ze()},[n,e,ze]),t.useEffect(()=>()=>{fe()},[fe]);const rt=t.useCallback(l=>{U.current=l,ce(l.active),l.active&&l.direction!==0?ze():fe()},[ze,fe]);t.useEffect(()=>{k||Pe()},[Pe,k]),t.useEffect(()=>{const l=x=>{const D=x.detail?.paneId;D&&S&&D!==S||Pe()};return window.addEventListener(Kt,l),()=>{window.removeEventListener(Kt,l)}},[S,Pe]),t.useEffect(()=>{if(!k)return;const l=x=>{if(!U.current.active||U.current.pointerId===x.pointerId)return;const y=x.target;if(!(y instanceof Node)){Pe();return}me.current?.getElement()?.contains(y)||Pe()};return document.addEventListener("pointerdown",l,!0),()=>{document.removeEventListener("pointerdown",l,!0)}},[Pe,k]);const we=l=>{if(!J||B<=0||H<=0)return 0;const x=te(l,0,B);return te(x/B*H,0,H)},Qe=t.useCallback(l=>{const{scrollBarVisible:x,effectiveTrackLength:y,maxScrollPosition:D}=K.current;if(M.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:l,trackLen:y,maxScroll:D})),y<=0||D<=0)return null;const j=te(l,0,y);return te(j/y*D,0,D)},[]),h=t.useCallback(l=>{const x=l.getBoundingClientRect(),y=d?x.width:x.height,D=nt=>{const We=Number.parseFloat(nt);return Number.isFinite(We)?We:0},j=window.getComputedStyle(l),be=D(d?j.width:j.height),_e=be>0?be+D(d?j.paddingLeft:j.paddingTop)+D(d?j.paddingRight:j.paddingBottom)+D(d?j.borderLeftWidth:j.borderTopWidth)+D(d?j.borderRightWidth:j.borderBottomWidth):0,Fe=_e>0?_e:d?l.offsetWidth:l.offsetHeight;return Fe<=0||y<=0?1:y/Fe},[d]),P=t.useCallback(l=>{const x=F.current;if(x.pointerId!==l.pointerId)return;const y=l.clientX-x.startClientX,D=l.clientY-x.startClientY,j=et(y,D)/(x.scale||1);M.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:j,startThumbPosition:x.startThumbPosition,clientY:l.clientY,startClientY:x.startClientY,metrics:K.current}));const be=Qe(x.startThumbPosition+j);be!==null&&X(be),l.cancelable&&l.preventDefault()},[et,Qe,X]),ie=t.useCallback(l=>{const x=F.current;if(x.pointerId!==l.pointerId)return;document.removeEventListener("pointermove",P),document.removeEventListener("pointerup",ie),document.removeEventListener("pointercancel",ie);const y=x.captureTarget;if(y?.hasPointerCapture?.(l.pointerId)&&y.releasePointerCapture(l.pointerId),F.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},ae(!1),R.current){const D=R.current.getBoundingClientRect();l.clientX>=D.left&&l.clientX<=D.right&&l.clientY>=D.top&&l.clientY<=D.bottom||re(!1)}else re(!1)},[P]);t.useEffect(()=>()=>{document.removeEventListener("pointermove",P),document.removeEventListener("pointerup",ie),document.removeEventListener("pointercancel",ie)},[P,ie]);const Je=t.useRef(0),ye=t.useRef(0),Rt=t.useCallback(l=>{const x=Math.max(Math.round(K.current.viewportSize/Nr),kr);ye.current!==l&&(ye.current=l,Je.current=0),ke(Je,l*x)},[ke]),{handleArrowPointerDown:st,handleArrowPointerUp:Oe,handleArrowKeyDown:mt}=Fr({canUseArrowButtons:ge,enableArrowButtons:c,resetTapScroll:Pe,scrollByStep:Rt}),St=l=>{if(!J)return;if(!i){l.preventDefault(),l.stopPropagation();return}if(l.pointerType==="mouse"&&l.button!==0||l.ctrlKey)return;Pe();const x=l.currentTarget,y=h(x);let D=null;if(x.setPointerCapture)try{x.setPointerCapture(l.pointerId),D=x}catch{D=null}F.current={pointerId:l.pointerId,startThumbPosition:Q,startClientX:l.clientX,startClientY:l.clientY,scale:y,captureTarget:D},document.addEventListener("pointermove",P),document.addEventListener("pointerup",ie),document.addEventListener("pointercancel",ie),ae(!0),re(!0),l.preventDefault(),l.stopPropagation()},zt=l=>{if(!J)return;if(!o){l.preventDefault(),l.stopPropagation();return}if(l.pointerType==="mouse"&&l.button!==0||l.ctrlKey)return;const x=l.currentTarget,y=x.getBoundingClientRect(),D=E(l),j=h(x),be=(D-(d?y.left:y.top))/j;Pe();const _e=be-T/2,Fe=we(_e);if(X(Fe),x.setPointerCapture)try{x.setPointerCapture(l.pointerId)}catch{}w.current={pointerId:l.pointerId,startThumbPosition:_e,startClientX:l.clientX,startClientY:l.clientY,scale:j},l.preventDefault(),l.stopPropagation()},it=()=>{w.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},vt=l=>{const x=w.current;if(x.pointerId!==l.pointerId)return;if(l.pointerType==="mouse"&&l.buttons===0){it();return}const y=l.clientX-x.startClientX,D=l.clientY-x.startClientY,j=et(y,D)/(x.scale||1),be=we(x.startThumbPosition+j);X(be),l.cancelable&&l.preventDefault()},Dt=l=>{if(w.current.pointerId!==l.pointerId)return;const x=l.currentTarget;x.hasPointerCapture?.(l.pointerId)&&x.releasePointerCapture(l.pointerId),it(),l.preventDefault(),l.stopPropagation()},Pt=l=>{if(w.current.pointerId!==l.pointerId)return;const x=l.currentTarget;x.hasPointerCapture?.(l.pointerId)&&x.releasePointerCapture(l.pointerId),it()},At=l=>{l.target===l.currentTarget&&w.current.pointerId===l.pointerId&&it()},pe=t.useMemo(()=>te((se?1:.8)*Ce,0,1),[se,Ce]),pt=t.useMemo(()=>{const x=`calc(50% - ${Ae/2}px + ${Ee}px)`;return{left:Xe,top:x}},[Xe,Ee,Ae]),yt=(l,x,y,D)=>q.jsx("button",{type:"button",tabIndex:0,className:"aqvs-scrollbar-arrow-button",style:{[Ge]:p,[$e]:p},"aria-label":x,onPointerDown:st(l),onPointerUp:Oe,onPointerLeave:Oe,onPointerCancel:Oe,onKeyDown:mt(l),"aria-disabled":!c,disabled:!ge,children:q.jsx("span",{"aria-hidden":"true",children:y})},D),Et=g&&J?{orientation:tt,scrollPosition:r,maxScrollPosition:H,contentSize:n,viewportSize:e,thumbSize:T,thumbPosition:Q,thumbCenter:ve,trackSize:Ve,isDragging:V,isTapScrollActive:se,visibleStartIndex:A,visibleEndIndex:$}:null;return q.jsxs("div",{className:Mt.twMerge("aqvs-scrollbar",C,b),style:{[Ge]:e,[$e]:p},"data-visible":J?"true":"false",role:"scrollbar",tabIndex:-1,"aria-controls":S,"aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":H,"aria-orientation":d?"horizontal":"vertical",children:[!d&&J&&k&&q.jsx(mr,{ref:me,className:Mt.twMerge("aqvs-scrollbar-tap-circle-wrapper",Le),size:Ae,maxVisualDistance:Ue,style:pt,opacity:pe,renderVisual:he,onDragChange:rt},"tap-circle"),yt(-1,dt[0],ne[0],"arrow-start"),q.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:p/2},onPointerDown:zt,onPointerMove:vt,onPointerUp:Dt,onPointerCancel:Pt,onLostPointerCapture:At,"aria-disabled":!o,children:[Et&&q.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:g?.(Et)},"overlay"),q.jsx("div",{className:"aqvs-scrollbar-thumb-wrapper",style:{[Ge]:T,[at]:Q,...d?{top:0,bottom:0}:{left:0,right:0}},"data-visible":J||V?"true":"false",onPointerDown:St,role:"slider","aria-orientation":d?"horizontal":"vertical","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":H,"aria-disabled":!i,tabIndex:-1,children:q.jsx("div",{ref:R,className:Mt.twMerge("aqvs-scrollbar-thumb",d?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":Me,style:{borderRadius:p-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&re(!0)},onMouseLeave:()=>{i&&re(!1)}},"thumb")},"thumb-wrapper")]},"track"),yt(1,dt[1],ne[1],"arrow-end")]})},Br=16,ar=(n,e,r)=>e===1?n*Br:e===2?n*r:n,Hr=(n,e)=>{const r=n.shiftKey&&n.deltaX===0,s=r?n.deltaY:n.deltaX,i=r?0:n.deltaY,o=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:n.ctrlKey,isHorizontalDominant:o,horizontalDelta:ar(s,n.deltaMode,e),verticalDelta:ar(i,n.deltaMode,e)}},br=new WeakSet,lr=n=>{br.add(n)},qr=n=>br.has(n),Xr=["mouse","pen","touch"],$t=(n,e)=>!(n==="mouse"||n==="pen"||n==="touch")||e.includes(n),jr=n=>n==="mouse"||n==="pen",Nt={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},Ot=(n,e,r)=>{for(const[s,i,o]of e)r==="add"?n.addEventListener(s,i,o):n.removeEventListener(s,i,o)},xr=t.forwardRef(({children:n,contentSize:e,viewportSize:r,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:o=!0,enableTrackClick:c=!0,enableArrowButtons:d=!0,enablePointerDrag:p=!0,pointerDragInputs:b=Xr,onScroll:S,className:I,testId:N,style:g,background:A,tapScrollCircleOptions:$,inertiaOptions:V,itemCount:ae,renderThumbOverlay:le,wheelSpeedMultiplier:re=1,overscrollBehavior:se="auto",onWheelHorizontal:ce,contentInsets:R,visibleStartIndex:F,visibleEndIndex:w,renderOverlay:G,initialScrollPosition:Z=0,contentProps:U},me)=>{const z=t.useRef(Number.isFinite(Z)?Math.max(0,Z):0),v=t.useRef(null),W=t.useRef(null),ue=r===void 0,[He,qe]=t.useState(0),k=r??He,Ae=t.useRef(null);t.useLayoutEffect(()=>{if(!ue)return;const m=W.current;if(!m)return;const T=()=>{const B=m.offsetHeight;if(B>0){qe(Q=>Q===B?Q:B);return}m.offsetParent!==null&&e>0&&Ae.current!=="zero"&&(Ae.current="zero",M.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(T(),typeof ResizeObserver!="function")return;const H=new ResizeObserver(T);return H.observe(m),()=>{H.disconnect()}},[e,ue]),t.useLayoutEffect(()=>{ue&&s?.(He)},[ue,He,s]),t.useLayoutEffect(()=>{if(ue)return;const m=v.current;if(!m)return;const T=()=>{const B=m.clientHeight;if(B<=0||Math.abs(B-k)<=1)return;const Q=`${k}/${B}`;Ae.current!==Q&&(Ae.current=Q,M.warn(`[ScrollPane] viewportSize=${k} but the host band is ${B}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(T(),typeof ResizeObserver!="function")return;const H=new ResizeObserver(T);return H.observe(m),()=>{H.disconnect()}},[ue,k]);const Xe=t.useRef(ce);t.useEffect(()=>{Xe.current=ce},[ce]);const Ee=t.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),Le=t.useMemo(()=>({maxVelocity:V?.maxVelocity??Nt.maxVelocity,minVelocity:V?.minVelocity??Nt.minVelocity,deceleration:V?.deceleration??Nt.deceleration,velocitySampleWindow:V?.velocitySampleWindow??Nt.velocitySampleWindow,startVelocityThreshold:V?.startVelocityThreshold??Nt.startVelocityThreshold}),[V]),je=t.useMemo(()=>({top:Math.max(0,R?.top??0),bottom:Math.max(0,R?.bottom??0)}),[R]);M.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:k,scrollBarWidth:i,className:I,style:g,tapScrollCircleOptions:$,inertiaOptions:V,enablePointerDrag:p,contentInsets:je}));const Ne=t.useRef({contentSize:e,viewportSize:k}),Te=t.useMemo(()=>e>k,[e,k]),Ce=t.useCallback((m,T)=>{let H=T??Ne.current;T&&!(Number.isFinite(T.contentSize)&&Number.isFinite(T.viewportSize))&&(M.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:T}),H=Ne.current);const{contentSize:B,viewportSize:Q}=H,ve=B>Q,J=z.current;if(M.debug("[ScrollPane] scrollTo called",()=>({newPosition:m,contentSize:B,viewportSize:Q,currentIsScrollable:ve,prevPosition:J})),!ve)return z.current!==0&&(z.current=0,S?.(0,J)),z.current;const ge=typeof m=="function"?m(z.current):m;if(!Number.isFinite(ge))return M.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:ge}),z.current;const Me=Math.max(B-Q,0),X=te(ge,0,Me);return z.current!==X&&(z.current=X,S?.(X,J)),z.current},[S]),he=t.useRef(Ce);t.useEffect(()=>{he.current=Ce},[Ce]);const Se=t.useCallback(()=>{const m=Ee.current;m.generation+=1,m.frame!==null&&cancelAnimationFrame(m.frame),m.frame=null,m.velocity=0,m.lastTimestamp=null},[]),K=t.useRef(Se);t.useEffect(()=>{K.current=Se},[Se]),t.useEffect(()=>()=>{K.current()},[]);const Ge=t.useCallback(m=>{if(!Te)return;const{maxVelocity:T,minVelocity:H,deceleration:B,startVelocityThreshold:Q}=Le,ve=te(m,-T,T);if(Math.abs(ve)<Q)return;Se(),Ee.current.velocity=ve,Ee.current.lastTimestamp=null;const J=Ee.current.generation,ge=Me=>{const X=Ee.current;if(X.generation!==J)return;if(X.lastTimestamp===null){X.lastTimestamp=Me,X.frame=requestAnimationFrame(ge);return}const Re=Me-X.lastTimestamp;if(X.lastTimestamp=Me,Re<=0){X.frame=requestAnimationFrame(ge);return}const ke=X.velocity;let fe=ke;const Pe=B*Re;ke>0?fe=Math.max(0,ke-Pe):ke<0&&(fe=Math.min(0,ke+Pe));const ze=(ke+fe)/2*Re,rt=z.current;if(ze!==0&&he.current(Je=>Je+ze),Ee.current.generation!==J)return;const we=z.current,{contentSize:Qe,viewportSize:h}=Ne.current,P=Math.max(Qe-h,0);X.velocity=fe;const ie=we===rt||we<=0&&fe<=0||we>=P&&fe>=0;if(Math.abs(fe)<H||ie){Se();return}X.frame=requestAnimationFrame(ge)};Ee.current.frame=requestAnimationFrame(ge)},[Te,Le,Se]),$e=t.useRef(Ge);t.useEffect(()=>{$e.current=Ge},[Ge]),t.useLayoutEffect(()=>{Ne.current={contentSize:e,viewportSize:k}},[e,k]),t.useLayoutEffect(()=>{const m=W.current;if(!m)return;const T=()=>{m.scrollTop!==0&&(M.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:m.scrollTop})),m.scrollTop=0),m.scrollLeft!==0&&(m.scrollLeft=0)};return m.addEventListener("scroll",T),()=>m.removeEventListener("scroll",T)},[]),t.useLayoutEffect(()=>{if(Te){M.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:k,scrollPosition:z.current}));const m=te(e-k,0,e);z.current>m&&Ce(m)}else Ce(0)},[Te,Ce,e,k]);const at=t.useRef({isScrollable:Te,viewportSize:k,wheelSpeedMultiplier:re,overscrollBehavior:se});t.useLayoutEffect(()=>{at.current={isScrollable:Te,viewportSize:k,wheelSpeedMultiplier:re,overscrollBehavior:se}},[Te,k,re,se]);const et=t.useCallback(m=>{if(qr(m))return!1;const{isScrollable:T,viewportSize:H,wheelSpeedMultiplier:B,overscrollBehavior:Q}=at.current,ve=Hr(m,H);if(ve.isZoomGesture)return!1;if(ve.isHorizontalDominant)return Xe.current?(lr(m),m.preventDefault(),Se(),Xe.current(ve.horizontalDelta),!0):!1;if(!T||ve.verticalDelta===0)return!1;let J=ve.verticalDelta;if(B!==1&&(J*=B),Q!=="contain"){const ge=z.current,Me=Math.max(Ne.current.contentSize-H,0);if(J>0&&ge>=Me||J<0&&ge<=0)return!1}return lr(m),m.preventDefault(),Se(),M.debug("[ScrollPane] wheel event",()=>({deltaY:J,scrollPosition:z.current,wheelSpeedMultiplier:B,deltaMode:m.deltaMode,scrollTop:W.current?.scrollTop})),Ce(ge=>ge+J),!0},[Ce,Se]);t.useEffect(()=>{const m=B=>{et(B)},T=()=>{Se()},H=v.current;return H&&(H.addEventListener("wheel",m,{passive:!1}),H.addEventListener("pointerdown",T,{capture:!0,passive:!0})),()=>{H&&(H.removeEventListener("wheel",m),H.removeEventListener("pointerdown",T,{capture:!0}))}},[et,Se]),t.useImperativeHandle(me,()=>({scrollTo:(m,T)=>(Se(),Ce(m,T)),getScrollPosition:()=>z.current,getContentSize:()=>e,getViewportSize:()=>k,applyWheel:et}),[Ce,e,k,Se,et]);const E=t.useId(),dt=U?.id??E,ne=t.useRef({pointerType:"",pointerId:null,startClientY:0,startScroll:0,isDragging:!1,shouldCancelNextClick:!1,clickResetTimer:null,velocitySamples:[]}),C=t.useRef(p),tt=t.useRef(b);t.useEffect(()=>{C.current=p},[p]),t.useEffect(()=>{tt.current=b},[b]);const Ue=t.useRef(Te);t.useEffect(()=>{Ue.current=Te},[Te]);const lt=t.useRef(Le);t.useEffect(()=>{lt.current=Le},[Le]),t.useEffect(()=>{const m=ne.current;if(p&&Te&&(m.pointerId===null||$t(m.pointerType,b))||m.pointerId===null)return;const T=W.current;m.clickResetTimer!==null&&(window.clearTimeout(m.clickResetTimer),m.clickResetTimer=null);const H=m.isDragging&&m.shouldCancelNextClick,B=m.pointerId;m.pointerId=null,m.pointerType="",m.startClientY=0,m.startScroll=0,m.isDragging=!1,m.shouldCancelNextClick=H,m.velocitySamples=[],T?.hasPointerCapture(B)&&T.releasePointerCapture(B)},[p,b,Te]),t.useEffect(()=>{const m=W.current;if(!m)return;const T=6,H=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),B=()=>{const h=ne.current;h.pointerId=null,h.pointerType="",h.startClientY=0,h.startScroll=0,h.isDragging=!1,h.velocitySamples=[]},Q=()=>{const h=ne.current;h.clickResetTimer!==null&&(window.clearTimeout(h.clickResetTimer),h.clickResetTimer=null)},ve=h=>{const P=ne.current,ie=H();P.velocitySamples.push({clientY:h,time:ie});const Je=lt.current.velocitySampleWindow;P.velocitySamples=P.velocitySamples.filter(ye=>ie-ye.time<=Je)},J=h=>h instanceof HTMLElement&&h.closest("[data-scrollpane-ignore-drag='true']")!==null,ge=h=>{const P=ne.current;P.shouldCancelNextClick&&(h.preventDefault(),h.stopPropagation(),P.shouldCancelNextClick=!1)},Me=h=>{const P=ne.current;if(!P.isDragging){if(P.isDragging=!0,P.shouldCancelNextClick=!0,!m.hasPointerCapture(h.pointerId))try{m.setPointerCapture(h.pointerId)}catch{}ve(h.clientY)}},X=h=>h.isTrusted||h.target===m,Re=h=>{const P=ne.current;m.hasPointerCapture(h)&&m.releasePointerCapture(h),P.shouldCancelNextClick=!1,Q(),B()},ke=h=>{const P=ne.current;if(P.pointerId!==h.pointerId)return;if(h.buttons===0&&jr(h.pointerType)){Re(h.pointerId);return}if(!(C.current&&Ue.current)||!$t(h.pointerType,tt.current)||!P.isDragging&&(Math.abs(h.clientY-P.startClientY)<T||(Me(h),!P.isDragging)))return;ve(h.clientY);const ie=h.clientY-P.startClientY,Je=P.startScroll-ie;he.current(Je),h.cancelable&&h.preventDefault()},fe=()=>{const h=ne.current;return h.pointerId!==null||!h.shouldCancelNextClick?!1:(Q(),h.clickResetTimer=window.setTimeout(()=>{const P=ne.current;P.shouldCancelNextClick=!1,P.clickResetTimer=null},0),!0)},Pe=h=>{const P=ne.current;if(P.pointerId!==h.pointerId){fe();return}P.isDragging&&P.shouldCancelNextClick&&h.cancelable&&(h.preventDefault(),h.stopPropagation()),P.isDragging&&ve(h.clientY);let ie=0;if(P.isDragging&&P.velocitySamples.length>=2){const ye=P.velocitySamples,Rt=lt.current.velocitySampleWindow,st=ye[ye.length-1],Oe=ye.find(mt=>st.time-mt.time<=Rt)??ye[0];if(st&&Oe&&st.time!==Oe.time){const mt=st.clientY-Oe.clientY,St=st.time-Oe.time;ie=-(mt/St)}}Q(),P.shouldCancelNextClick&&(P.clickResetTimer=window.setTimeout(()=>{const ye=ne.current;ye.shouldCancelNextClick=!1,ye.clickResetTimer=null},0));const Je=lt.current.startVelocityThreshold;B(),m.hasPointerCapture(h.pointerId)&&m.releasePointerCapture(h.pointerId),Math.abs(ie)>=Je&&$e.current?.(ie)},Ze=h=>{if(ne.current.pointerId!==null){if(!h.isPrimary||h.pointerType!==ne.current.pointerType)return;Re(ne.current.pointerId)}if(ne.current.shouldCancelNextClick&&(Q(),ne.current.shouldCancelNextClick=!1),!(C.current&&Ue.current)||!$t(h.pointerType,tt.current)||h.button!==0&&h.pointerType==="mouse"||h.ctrlKey||h.metaKey||h.altKey||J(h.target))return;window.dispatchEvent(new CustomEvent(Kt,{detail:{paneId:E}})),K.current?.();const P=ne.current;Q(),P.pointerId=h.pointerId,P.pointerType=h.pointerType,P.startClientY=h.clientY,P.startScroll=z.current,P.isDragging=!1,P.shouldCancelNextClick=!1,P.velocitySamples=[]},ze=h=>{if(ne.current.pointerId!==h.pointerId){fe();return}X(h)&&Re(h.pointerId)},we=[["click",ge,!0],["pointerdown",Ze,{passive:!1}],["lostpointercapture",h=>{h.target!==m||ne.current.pointerId!==h.pointerId||Re(h.pointerId)},void 0]],Qe=[["pointermove",ke,{passive:!1}],["pointerup",Pe,void 0],["pointercancel",ze,void 0]];return Ot(m,we,"add"),Ot(window,Qe,"add"),()=>{Ot(m,we,"remove"),Ot(window,Qe,"remove");const h=ne.current;h.pointerId!==null&&m.hasPointerCapture(h.pointerId)&&m.releasePointerCapture(h.pointerId),Q(),B()}},[E]);const Ve=t.useCallback(m=>(Se(),Ce(m)),[Ce,Se]);return q.jsxs("div",{ref:v,"data-testid":N,"data-self-measured":ue?"true":void 0,className:Mt.twMerge("aqvs-scroll-pane",I),style:g,children:[q.jsxs("div",{ref:W,className:Mt.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:ue?void 0:k,paddingTop:je.top,paddingBottom:je.bottom,...p&&Te&&b.some(m=>m==="touch"||m==="pen")?{touchAction:"none"}:{}},...U,id:dt,children:[A,n(z.current)]}),q.jsx(gr,{contentSize:e,viewportSize:k,scrollPosition:z.current,onScroll:Ve,enableThumbDrag:o,enableTrackClick:c,enableArrowButtons:d,scrollBarWidth:i,ariaControls:dt,tapScrollCircleOptions:$,itemCount:ae,renderThumbOverlay:le,visibleStartIndex:F,visibleEndIndex:w},"scrollbar"),G?.()]})}),cr=(n,e,r)=>Math.min(Math.max(n,e),r),$r=({dragState:n,normalizedDistance:e,sizeScale:r,size:s})=>{const i=Math.max(s/2,1),o=1+e*.65,c=Math.max(.65,1-e*.25),d=n.direction*e*26*r,p=.8+e*.18,b=3*r,S=6*r,I=22*r,N=Math.abs(d)+S,g=d>0?b:-Math.abs(d)-b,A=Math.max(2.5,3*r),$=cr(n.offsetX,-i,i),V=cr(n.offsetY,-i,i),ae=i*.35,le=$/i*ae,re=V/i*ae,se=le*.45,ce=re*.45,R=Math.max(I*.38,6),F=.65+e*.2,w=n.active;return q.jsxs(q.Fragment,{children:[q.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${c}, ${o})`,transition:w?"40ms transform ease-out":"200ms ease transform"}}),q.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:I,height:I,transform:`translate(calc(-50% + ${le}px), calc(-50% + ${re}px)) scale(${c}, ${p*o})`,transition:w?"70ms transform ease-out":"200ms ease transform"}}),q.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:R,height:R,transform:`translate(calc(-50% + ${se}px), calc(-50% + ${ce}px)) scale(${c}, ${o})`,opacity:F,boxShadow:"0 0 8px rgba(255,255,255,0.45)",transition:w?"120ms opacity 150ms, 120ms transform ease-out ease-out":"220ms ease transform, 240ms opacity ease"}}),q.jsx("div",{className:"aqvs-sample-visual-rod",style:{width:A,height:N,transform:`translate(-50%, ${g}px)`,opacity:e,transition:w?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},_t=100,Ur=n=>{if(!Number.isFinite(n))return 0n;const e=Math.trunc(n);return e<=0?0n:BigInt(e)},Ut=(n,e)=>{if(!Number.isFinite(n))throw new Error(`valueFn returned a non-finite value at index ${e}: ${n}`);return n},Tt=n=>{if(n<=0||!Number.isFinite(n))return 0;const e=Math.trunc(n);if(e<=2147483647)return e&-e;const r=BigInt(e)&-BigInt(e);return Number(r)};class ft{tree;deltas;size;baseValue;valueFn;total;constructor(e,r,s){this.reset(e,r,s)}reset(e,r,s){const i=Number.isFinite(e)&&e>0?Math.trunc(e):0;if(typeof r!="function"){this.size=i,this.tree=new Map,this.deltas=new Map,this.valueFn=void 0,this.baseValue=r,this.total=this.baseValue*this.size;return}let o=0,c;if(i>0){const d=s?.sampleRange??{from:0,to:Math.min(_t-1,i-1)};let p=Math.max(0,Math.trunc(d.from)),b=Math.min(Math.trunc(d.to),i-1);if(p>b&&(p=0,b=Math.min(_t-1,i-1)),i>_t)o=ft._sampleBaseValueStrided(r,i,_t),s?.materialize&&(c={from:p,values:ft._collectValidatedValues(r,p,b)});else{const S=ft._collectValidatedValues(r,p,b);o=ft._modeOrMedian([...S]),s?.materialize&&(c={from:p,values:S})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=r,this.baseValue=o,c)for(let d=0;d<c.values.length;d++){const p=c.from+d;if(p>=this.size)break;const b=c.values[d]-this.baseValue;b!==0&&(this.deltas.set(p,b),this._updateTree(p,b))}this.total=this.getTotal()}setValueFn(e,r){if(r?.reset){this.reset(this.size,e);return}typeof e=="function"?this.valueFn=e:(this.valueFn=void 0,this.baseValue=e,this.total=this._computeTreeTotal())}static _collectValidatedValues(e,r,s){const i=[];for(let o=r;o<=s;o++)i.push(Ut(e(o),o));return i}static _modeOrMedian(e){if(e.length===0)return 0;e.sort((c,d)=>c-d);const r=Math.floor(e.length/2);let s;e.length%2===0?s=Math.floor((e[r-1]+e[r])/2):s=e[r];const i=new Map;let o=0;for(const c of e){const d=(i.get(c)??0)+1;i.set(c,d),d>o&&(o=d)}if(o>e.length*.2){const c=[];for(const[p,b]of i.entries())b===o&&c.push(p);const d=c.reduce((p,b)=>p+b,0);s=Math.floor(d/c.length)}return s}static _sampleBaseValueStrided(e,r,s){if(r<=0)return 0;let i=Math.max(1,Math.ceil(r/s));i%2===0&&(i+=1);const o=[];for(let c=0;c<r&&o.length<s;c+=i)o.push(Ut(e(c),c));return ft._modeOrMedian(o)}update(e,r){return this.updates([{index:e,value:r}])}updates(e){const r=this._buildDeltaUpdates(e);return r.length>0?this.updateDeltas(r):this.total}updateDelta(e,r){return this.updateDeltas([{index:e,change:r}])}updateDeltas(e){const r=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=(r.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}`);r.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,r){if(r===0)return;let s=e+1;for(;s<=this.size;){this.tree.set(s,(this.tree.get(s)??0)+r);const i=Tt(s);if(i===0)break;s+=i}this.total!==void 0&&(this.total+=r)}_buildDeltaUpdates(e){const r=[],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.has(i)?s.get(i)??0:this.deltas.get(i)??0,d=c+this.baseValue,p=o-d;p!==0&&r.push({index:i,change:p}),s.set(i,c+p)}return r}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,r=this.size;for(;r>0;){e+=this.tree.get(r)??0;const s=Tt(r);if(s===0)break;r-=s}return e+this.baseValue*this.size}_materialize(e,r=!0){if(this.valueFn){const s=this.deltas.get(e)??0,o=Ut(this.valueFn(e),e)-this.baseValue;if(o!==s&&(o===0?this.deltas.delete(e):this.deltas.set(e,o),r)){const c=o-s;this._updateTree(e,c)}}}_materializeRanges(e,r,s=!1){if(!(e?.materialize&&this.valueFn))return;const i=e.ranges;if(i&&i.length>0){for(const d of i){const p=Math.max(0,Math.trunc(d.from)),b=Math.min(Math.trunc(d.to),this.size-1);for(let S=p;S<=b;S++)this._materialize(S)}if(r===void 0)return;if(s){this._materialize(r);return}const o=i[0].from,c=i[i.length-1].to;r>=o&&r<=c&&this._materialize(r);return}r!==void 0&&this._materialize(r)}_findIndex(e,r={},s){if(this.size>=1073741824)return this._findIndexLarge(e,r,s);if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(r.materializeOption);const i=r.materializeOption?.materialize===!0;let o;for(;;){if(o=this._descend(e,s),o<0||o>=this.size)return{index:-1,total:this.total??this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const d=this.deltas.get(o)??0;if(this._materialize(o),(this.deltas.get(o)??0)===d)break}const c=this.prefixSum(o);return{index:o,total:this.total??c.total,cumulative:c.cumulative,currentValue:c.currentValue,safeIndex:c.safeIndex}}_descend(e,r){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 p=(this.tree.get(c)??0)+this.baseValue*o;(r?i+p<e:i+p<=e)&&(s=c,i+=p)}}return r?s:s-1}_findIndexLarge(e,r,s){if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};const i=Ur(this.size);if(i===0n)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(r.materializeOption);const o=r.materializeOption?.materialize===!0;for(;;){let c=0n,d=i-1n,p,b,S=this.total;for(;c<=d;){const g=c+d>>1n,A=Number(g),$=this.prefixSum(A);if(S=$.total,s?$.cumulative>=e:$.cumulative<=e)if(p=g,b=$,s){if(g===0n)break;d=g-1n}else c=g+1n;else if(s)c=g+1n;else{if(g===0n)break;d=g-1n}}const I=b,N=p!==void 0?Number(p):-1;if(o&&N>=0){const g=this.deltas.get(N)??0;if(this._materialize(N),(this.deltas.get(N)??0)!==g)continue}return{index:N,total:S,cumulative:I?.cumulative,currentValue:I?.currentValue,safeIndex:I?.safeIndex}}}prefixSum(e,r){if(e<0||Number.isNaN(e))return{cumulative:0,total:this.total,currentValue:0,safeIndex:0};if(this.size===0)return{cumulative:0,total:this.total??0,currentValue:0,safeIndex:0};const s=te(Math.trunc(e),0,this.size-1),i=r?.materializeOption;this._materializeRanges(i,s,!0);let o=0,c=s+1;for(;c>0;){const p=this.tree.get(c)??0;o+=p;const b=Tt(c);if(b===0)break;c-=b}const d=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:o+this.baseValue*(s+1),total:this.total,currentValue:d,safeIndex:s}}get(e,r){if(this.size===0)return 0;if(!Number.isInteger(e)||e<0||e>=this.size)throw new Error("Index out of bounds");const s=r?.materializeOption;return this._materializeRanges(s,e),(this.deltas.get(e)??0)+this.baseValue}getTotal(e){const r=e?.materializeOption;if(this._materializeRanges(r),this.total===void 0)if(this.size===0)this.total=0;else{this.total=this._computeTreeTotal();const s=this.prefixSum(this.getSize()-1);s.cumulative!==s.total&&M.error("Inconsistent Fenwick Tree state")}return this.total}rebuildTree(e){if(e?.materialize&&this.valueFn){const s=this.valueFn;this.reset(this.size,i=>s(i),{materialize:!0});return}const r=new Map;for(const[s,i]of this.deltas.entries()){if(i===0)continue;let o=s+1;for(;o<=this.size;){r.set(o,(r.get(o)??0)+i);const c=Tt(o);if(c===0)break;o+=c}}this.tree=r,this.total=this._computeTreeTotal()}calculateAccumulatedError(){if(this.total===void 0)return 0;let e=this.baseValue*this.size;for(const[r,s]of this.deltas)r<this.size&&(e+=s);return this.total-e}changeSize(e){if(!Number.isFinite(e))throw new Error(`Size must be a finite number: ${e}`);const r=Math.max(0,Math.trunc(e)),s=this.size;if(r===s)return;if(r>s)if(s===0&&this.deltas.size>0){for(const o of this.deltas.keys())o>=r&&this.deltas.delete(o);this.size=r,this.rebuildTree()}else this._growSize(s,r);else{if(r>0)for(const o of this.deltas.keys())o>=r&&this.deltas.delete(o);this.size=r,this.rebuildTree()}const i=this.prefixSum(this.getSize()-1);i.cumulative!==i.total&&M.error("Inconsistent Fenwick Tree state")}static _minCoveredLowBound(e,r){let s=1;for(;;){const i=s*2;if(Math.floor(r/i)*i<=e)break;s=i}return s*Math.floor(e/s)}_propagateDeltaToGrownNodes(e,r,s,i){let o=e+1;for(;o<=s;){const c=Tt(o);if(c===0)break;o+=c}for(;o<=i;){this.tree.set(o,(this.tree.get(o)??0)+r);const c=Tt(o);if(c===0)break;o+=c}}_growSize(e,r){if(this.size=r,this.deltas.size>0){const s=ft._minCoveredLowBound(e,r);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,r)}else for(const[o,c]of this.deltas.entries())c===0||o<s||this._propagateDeltaToGrownNodes(o,c,e,r)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}findIndexAtOrAfter(e,r){return this._findIndex(e,r??{},!0)}findIndexAtOrBefore(e,r){return this._findIndex(e,r??{},!1)}}const Wr=(n,e)=>{const r=n?.sampleRange,s=e?.sampleRange;return r===s?!1:r&&s?r.from!==s.from||r.to!==s.to:!0},Sr=(n,e,r)=>{const s=Number.isFinite(n)&&n>0?Math.trunc(n):0,i=t.useRef(null),o=t.useRef({size:s,valueOrFn:e,options:r});i.current===null&&(i.current=new ft(s,e,r));const c=i.current,d=o.current,p=d.size!==s,b=d.valueOrFn!==e,S=Wr(d.options,r),I=d.size===0&&s>0&&(!i.current||i.current.base===0);if(b||S){const N=r?.resetOnValueFnChange??!0;S||b&&N||I?(r?.debug&&M.debug("[useFenwickMapTree] reset",{valueOrFnChanged:b,optionsChanged:S}),c.reset(s,e,r)):(p&&(r?.debug&&M.debug("[useFenwickMapTree] resize (with valueFn change)",{from:d.size,to:s}),c.changeSize(s)),r?.debug&&M.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:b}),c.setValueFn(e,{reset:!1})),o.current={size:s,valueOrFn:e,options:r}}else p&&(r?.debug&&M.debug("[useFenwickMapTree] resize",{from:d.size,to:s}),I?c.reset(s,e,r):c.changeSize(s),o.current={size:s,valueOrFn:e,options:r});return c};class Kr{key;value;prev=null;next=null;constructor(e,r){this.key=e,this.value=r}}class Wt{head=null;tail=null;addToTail(e){this.tail?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=null,e.next=null}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function vr(n){const e=t.useRef(new Map),r=t.useRef(new Wt),s=Math.floor(n),i=t.useRef(s);t.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){M.warn(`useLruCache: invalid capacity ${n}; the cache will not store any entries.`),e.current.clear(),r.current=new Wt;return}if(Number.isFinite(s))for(;e.current.size>s;){const S=r.current.removeHead();if(S)e.current.delete(S.key);else break}},[n,s]);const o=t.useCallback(S=>{const I=e.current.get(S);if(I)return r.current.moveToTail(I),I.value},[]),c=t.useCallback((S,I)=>{const N=i.current;if(Number.isNaN(N)||N<=0)return;let g=e.current.get(S);if(g)g.value=I,r.current.moveToTail(g);else{if(e.current.size>=N){const A=r.current.removeHead();A&&e.current.delete(A.key)}g=new Kr(S,I),e.current.set(S,g),r.current.addToTail(g)}},[]),d=t.useCallback(S=>e.current.has(S),[]),p=t.useCallback(S=>{const I=e.current.get(S);I&&(r.current.remove(I),e.current.delete(S))},[]),b=t.useCallback(()=>{e.current.clear(),r.current=new Wt},[]);return t.useMemo(()=>({get:o,set:c,has:d,remove:p,clear:b}),[o,c,d,p,b])}const Gr=1e4,Zr=()=>{const{get:n,set:e,has:r,clear:s}=vr(Gr);return t.useMemo(()=>({get:n,set:e,has:r,clear:s}),[n,e,r,s])},Qr=(n,e)=>{const r=t.useRef(e),s=t.useRef(n);t.useLayoutEffect(()=>{r.current=e,s.current=n},[e,n]);const i=t.useRef(new WeakMap);return t.useCallback(o=>{if(!o||i.current.has(o))return;const c=d=>{r.current?.enableBridge!==!1&&s.current.current?.applyWheel(d)};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))}},[])},xe=(n,e)=>e<=0?0:te(n,0,e-1),ur=n=>({top:Math.max(0,n?.top??0),bottom:Math.max(0,n?.bottom??0)}),Ke=(n,e)=>n<=e?0:n-e,xt=(n,e)=>n<=0?0:n+e,Ft=1e3,fr=2e3,Jr=1048576,en=40,Vt=n=>{if(!Number.isFinite(n))return 0n;const e=Math.trunc(n);return e<=0?0n:BigInt(e)},tn=(n,e,r,s,i,o,c,d)=>{const p=Vt(s);if(p===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const b=R=>R<0n?0n:R>=p?p-1n:R,S={materializeOption:{materialize:!1}},{index:I,cumulative:N}=o.findIndexAtOrAfter(n,S);let g;I===-1?g=p-1n:(N===n?g=Vt(I+1):g=Vt(I),g>=p&&(g=p-1n)),n<=0&&(g=0n),d&&n>=c&&(g=p-1n);const A=R=>{const F=Number(R);if(!Number.isSafeInteger(F))return null;const{cumulative:w}=o.prefixSum(F,{materializeOption:{materialize:!1}});if(!Number.isFinite(w))return null;const{index:G}=o.findIndexAtOrAfter(w+.5,{materializeOption:{materialize:!1}});if(G===-1)return null;const Z=Vt(G);return Z>R?Z:null},$=R=>{let F=0,w=R,G=R,Z=0n,U=0;for(;w<p&&F<e;){const me=Number(w),z=i(me);if(F+=z,G=w,w+=1n,Z+=1n,!Number.isFinite(z)||z<0)break;if(z===0){if(U+=1,U>Ft){const v=A(G);if(v!==null&&v>w)w=v,U=0;else if(v!==null&&v===w&&i(Number(w))>0)U=0;else break}}else U=0}return Z===0n&&(G=R),{height:F,end:G}};let{height:V,end:ae}=$(g);if(V<e&&g>0n){let R=g,F=V,w=0;for(;R>0n&&F<e;){R-=1n;const Z=Number(R),U=i(Z);if(F+=U,!Number.isFinite(U)||U<0)break;if(U===0){if(w+=1,w>Ft){const me=Number(R);if(!Number.isSafeInteger(me))break;const{cumulative:z}=o.prefixSum(me,{materializeOption:{materialize:!1}});if(!Number.isFinite(z))break;const{index:v}=o.findIndexAtOrAfter(z-.5,{materializeOption:{materialize:!1}}),W=v===-1?-1n:Vt(v);if(W>=0n&&W<R)R=W+1n,w=0;else if(W===R&&R>=1n&&i(Number(R-1n))>0)w=0;else break}}else w=0}g=b(R);const G=$(g);V=G.height,ae=G.end}const le=b(g),re=b(ae),se=b(le-BigInt(Math.max(0,r))),ce=b(re+BigInt(Math.max(0,r)));return{renderingStartIndex:xe(Number(se),s),renderingEndIndex:xe(Number(ce),s),visibleStartIndex:xe(Number(le),s),visibleEndIndex:xe(Number(re),s)}},rn=(n,e,r,s,i,o,c)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const d=Number.isFinite(c),p=d?Math.min(Math.max(0,n),c):Math.max(0,n);if(s>=Number.MAX_SAFE_INTEGER)return tn(p,e,r,s,i,o,c,d);const{index:b,cumulative:S,currentValue:I}=o.findIndexAtOrAfter(p,{materializeOption:{materialize:!1}}),N=b===-1?e<=0||(S??0)<p+(I??0)?s-1:0:b;let g=xe(N,s),A=0;if(b!==-1&&S===p)g=xe(b+1,s),A=0;else if(g===b&&S!==void 0&&I!==void 0)A=S-I-p;else{const{cumulative:R,currentValue:F}=o.prefixSum(g,{materializeOption:{materialize:!1}});A=(R??0)-(F??0)-p}const $=A,V=(R,F)=>{let w=R,G=F,Z=0;for(;w<s&&G<e;){const U=i(w);if(G+=U,w++,!Number.isFinite(U)||U<0)break;if(U===0){if(Z++,Z>Ft){const{cumulative:me}=o.prefixSum(w-1,{materializeOption:{materialize:!1}}),{index:z}=Number.isFinite(me)?o.findIndexAtOrAfter(me+.5,{materializeOption:{materialize:!1}}):{index:-1};if(z>w)w=z,Z=0;else if(z===w&&i(w)>0)Z=0;else break}}else Z=0}return{cursor:w,height:G}},ae=V(g,A);let le=ae.cursor;if(A=ae.height,A<e&&g>0){let R=A+Math.abs(Math.min(0,$)),F=g-1,w=0;for(;F>=0&&R<e;){const Z=i(F);if(R+=Z,!Number.isFinite(Z)||Z<0){F--;break}if(Z===0){if(w++,w>Ft){const{cumulative:U}=o.prefixSum(F,{materializeOption:{materialize:!1}}),{index:me}=Number.isFinite(U)?o.findIndexAtOrAfter(U-.5,{materializeOption:{materialize:!1}}):{index:-1};if(me!==-1&&me<F){F=me,w=0;continue}if(me===F&&F>=1&&i(F-1)>0)w=0;else{F--;break}}}else w=0;F--}g=xe(F+1,s);const G=V(g,0);le=G.cursor,A=G.height}const re=xe(g-r,s),se=xe(Math.max(le-1,g),s),ce=xe(se+r,s);return{renderingStartIndex:re,renderingEndIndex:ce,visibleStartIndex:g,visibleEndIndex:se}},dr=(n,e,r)=>{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&&n.current){try{r(n.current,i.arg)}catch(o){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",o)}i.arg=null}},[i,n,r]),t.useCallback(o=>{if(i.arg=o,i.id!==null)return;const c=d=>{if(i.id=null,i.arg===null)return;const p=d-i.last;if(s===0||i.last===0||p>=s){if(n.current)try{r(n.current,i.arg)}catch(b){console.error("[useThrottledInvoker] Error invoking callback",b)}i.arg=null,i.last=d}i.arg!==null&&(i.id=requestAnimationFrame(c))};i.id=requestAnimationFrame(c)},[s,r,n,i])},nn=t.memo(({index:n,top:e,height:r,item:s,children:i,clipItemHeight:o,enableKeyboardNavigation:c,onKeyDown:d,onEscapeKeyDown:p,onFocus:b,registerItemRef:S})=>{const I=t.useCallback(V=>S(n,V),[n,S]),N=t.useCallback(V=>d(V,n),[n,d]),g=t.useCallback(V=>p?.(V,n),[n,p]),A=t.useCallback(()=>b(n),[n,b]),$=t.useCallback(V=>{V.currentTarget.focus({preventScroll:!0})},[]);return q.jsx("div",{ref:I,"data-index":n,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:r,overflow:o?"hidden":void 0},tabIndex:c?-1:void 0,onPointerDown:c?$:void 0,onKeyDownCapture:c?N:void 0,onKeyDown:c&&p?g:void 0,onFocusCapture:c?A:void 0,children:i(s,n)})}),sn=({itemCount:n,getItem:e,getItemKey:r,getItemHeight:s,viewportSize:i,overscanCount:o=15,className:c,testId:d,onScroll:p,onRangeChange:b,children:S,background:I,initialScrollIndex:N,initialScrollOffset:g,initialScrollAnchor:A,callbackThrottleMs:$=5,contentInsets:V,onItemFocus:ae,scrollBarOptions:le,behaviorOptions:re,onWheelHorizontal:se,horizontalKeyInputs:ce,horizontalKeyStep:R=en,contentProps:F,liveRegion:w},G)=>{const{width:Z,enableThumbDrag:U,enableTrackClick:me,enableArrowButtons:z,enableScrollToTopBottomButtons:v,renderThumbOverlay:W,tapScrollCircleOptions:ue}=le??{},{enablePointerDrag:He,pointerDragInputs:qe,enableKeyboardNavigation:k=!0,enableEscapeRowReturn:Ae=!1,wheelSpeedMultiplier:Xe,inertiaOptions:Ee,overscrollBehavior:Le,clipItemHeight:je=!1,resetOnGetItemHeightChange:Ne=!1}=re??{},[Te,Ce]=t.useState(0),he=i??Te,Se=t.useCallback(a=>{Ce(u=>u===a?u:a)},[]),K=t.useRef(null),Ge=t.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),$e=t.useRef(A&&n>0?{index:te(Math.trunc(A.index),0,n-1),align:"top",offset:-Math.max(0,A.offsetPx??0)}:null),at=t.useRef(!1),et=t.useRef(!0);t.useEffect(()=>{if(et.current){et.current=!1;return}Ne&&($e.current=null)},[Ne,s]);const E=t.useMemo(()=>ur(V),[V]),[dt]=t.useState(()=>{const u=A?.index??N,f=typeof u=="number"&&Number.isFinite(u)?Math.max(0,Math.trunc(u)):0;return{from:Math.max(0,f-50),to:f+50}}),ne=t.useMemo(()=>({sampleRange:dt,resetOnValueFnChange:Ne,materialize:!0}),[Ne,dt]),C=Sr(n,s,ne),[tt]=t.useState(()=>{let a=0,u=0;if(A&&n>0){const f=te(Math.trunc(A.index),0,n-1),L=Math.max(0,A.offsetPx??0),O=te(f-o*2,0,n-1),_=te(f+o*2,0,n-1),Y=f>0||L>0?{materializeOption:{materialize:!0,ranges:[{from:O,to:_}]}}:void 0,{cumulative:ee,total:Ie,currentValue:de}=C.prefixSum(f,Y),oe=Math.max(ee-de+L,0);a=xt(oe,E.top),u=Ie??C.getTotal()}else if(typeof N=="number"){const f=te(N,0,n-1),L=te(f-o*2,0,n-1),O=te(f+o*2,0,n-1),_=N>0?{materializeOption:{materialize:!0,ranges:[{from:L,to:O}]}}:void 0,{cumulative:Y,total:ee,currentValue:Ie}=C.prefixSum(N,_),de=Math.max(Y-Ie,0);a=xt(de,E.top),u=ee??C.getTotal()}else typeof g=="number"&&(a=xt(Math.max(g,0),E.top)),u=C.getTotal();return{position:a,total:u}}),[Ue,lt]=t.useState(tt.position),[Ve,m]=t.useState(tt.total),T=t.useRef(tt.position),H=t.useRef(E.top),B=t.useRef(p??void 0),Q=t.useRef(b??void 0),ve=t.useRef(se),J=(ce?.length??0)>0,ge=!!se;t.useEffect(()=>{J&&(k||M.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),ge||M.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(R)&&R>0||M.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${R}. Horizontal arrow keys are left untouched.`))},[J,ge,k,R]);const Me=t.useRef(new Map),X=t.useRef(null),Re=t.useRef(null),[ke,fe]=t.useState(null),[Pe,Ze]=t.useState(!1),ze=t.useRef(null),rt=t.useRef(!1),we=t.useRef(0),Qe=t.useRef(!1),h=t.useRef(!1),P=t.useRef(n);P.current!==n&&(P.current=n,h.current=!0),t.useLayoutEffect(()=>{B.current=p??void 0,Q.current=b??void 0,ve.current=se},[b,p,se]);const ie=t.useCallback(a=>{if(k&&a&&typeof a.focus=="function")try{a.focus({preventScroll:!0})}catch{a.focus()}},[k]),Je=t.useCallback((a,{position:u,totalHeight:f})=>{a(u,f)},[]),ye=dr(B,$,Je),Rt=t.useCallback((a,u)=>{a(u)},[]),st=dr(Q,$,Rt),Oe=t.useRef(E.top);Oe.current=E.top;const mt=t.useRef(ye);mt.current=ye,t.useEffect(()=>(at.current=!1,()=>{at.current=!0,ze.current&&(clearTimeout(ze.current),ze.current=null)}),[]),t.useEffect(()=>{k||(Me.current.clear(),X.current=null,Re.current=null)},[k]);const St=t.useCallback((a,u)=>{if(!u){Me.current.delete(a);return}k&&(Me.current.set(a,u),X.current===a&&(X.current=null,Re.current=a,ie(u)))},[k,ie]),zt=.01,it=t.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:tt.position}),vt=t.useCallback(()=>{const a=it.current;a.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(a.rafId),a.rafId=null,a.loopActive=!1,a.idleFrames=0},[]);t.useEffect(()=>()=>{vt()},[vt]);const Dt=t.useRef(()=>{}),Pt=t.useCallback(()=>{const a=it.current;a.rafId=null;const u=T.current,f=Ke(u,Oe.current),L=C.getTotal();if(lt(_=>Math.abs(_-u)<zt?_:u),Math.abs(a.lastRenderedPosition-u)>=zt?(mt.current({position:f,totalHeight:L}),a.lastRenderedPosition=u,a.idleFrames=0):a.idleFrames+=1,a.idleFrames>=2){vt();return}if(typeof requestAnimationFrame=="function"){a.rafId=requestAnimationFrame(_=>Dt.current(_));return}a.loopActive=!1},[C,vt]);Dt.current=Pt;const At=t.useCallback(()=>{const a=it.current;if(a.idleFrames=0,!a.loopActive){if(a.loopActive=!0,typeof requestAnimationFrame=="function"){a.rafId=requestAnimationFrame(Pt);return}a.loopActive=!1}},[Pt]),pe=t.useCallback((a,u)=>{const f=u?.immediate??!1,L=Ke(a,E.top);if(T.current=a,f){it.current.lastRenderedPosition=a,it.current.idleFrames=0,lt(a),ye({position:L,totalHeight:C.getTotal()});return}At()},[At,C,E.top,ye]),pt=t.useCallback((a,u=0)=>{const f=K.current;if(!f)return a;const L=f.getScrollPosition();we.current+=1;const O=f.getContentSize()+u,_=f.getViewportSize(),Y=f.scrollTo(a,{contentSize:O,viewportSize:_});return Y===L&&(we.current=Math.max(0,we.current-1)),Math.abs(Y-a)>.5&&(Qe.current=!0),Y},[]),yt=t.useRef(!1);t.useEffect(()=>{if(!yt.current)if(yt.current=!0,A==null&&typeof N!="number"&&typeof g=="number"){const a=xt(Math.max(g,0),E.top),u=Math.abs(a-T.current)>.5;pe(a,{immediate:!0}),u&&K.current?.scrollTo(a)}else pe(T.current,{immediate:!0})},[A,N,g,E.top,pe]),t.useEffect(()=>{const a=C.getTotal();if(Ve!==a){m(a);return}if(Qe.current){Qe.current=!1;const u=K.current;if(u&&Math.abs(u.getScrollPosition()-T.current)>.5){const f=pt(T.current);Qe.current=!1,pe(f,{immediate:!0})}}},[C,Ve,n,pt,pe]),t.useEffect(()=>{if($e.current!==null){const{index:a,align:u,offset:f}=$e.current,L=xe(a,n),{cumulative:O,currentValue:_}=C.prefixSum(L,{materializeOption:{materialize:!1}});if(O!==void 0&&_!==void 0){const Y=Math.max(O-_,0);let ee=Y;u==="bottom"?ee=O-he:u==="center"&&(ee=Y+_/2-he/2),f&&(ee-=f),ee=Math.max(0,ee);const Ie=Math.max(0,Ve+E.top+E.bottom-he),de=Math.min(xt(ee,E.top),Ie);Math.abs(de-T.current)>1&&(M.debug("[VirtualScroll] Drift correction",{from:T.current,to:de,targetIndex:L}),we.current===0&&(we.current+=1),K.current?.scrollTo(de),pe(de,{immediate:!0}))}}h.current=!1},[Ve,C,n,E.top,pe,he,E.bottom]),t.useEffect(()=>{const a=H.current;if(a===E.top||(H.current=E.top,$e.current))return;const u=Ke(T.current,a),f=xt(u,E.top);T.current=f,K.current?.scrollTo(f),pe(f,{immediate:!0})},[E.top,pe]);const Et=t.useCallback((a,u)=>{if(n===0)return;const f=xe(a,n),L=C.get(f),O=u-L,_=C.update(f,u);_!==void 0&&m(_),M.debug("[VirtualScroll] Updated item size manually",{index:f,size:u,total:_});let Y=$e.current?$e.current.index:null;if(Y===null){const ee=T.current,Ie=ur(V).top,de=Ke(ee,Ie),{index:oe,cumulative:Ye}=C.findIndexAtOrAfter(de,{materializeOption:{materialize:!1}});Y=Ye!==void 0&&Ye===de?oe+1:oe}if(Y!==-1&&f<Y&&O!==0){const ee=T.current,Ie=ee+O;pt(Ie,O),pe(Ie,{immediate:!0}),M.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:ee,to:Ie,causedByIndex:f,delta:O,activeVisibleStartIndex:Y})}},[C,n,pt,pe,V]),l=t.useCallback((a,u)=>{if(!K.current||n===0)return;const f=xe(a,n),L=xe(f-o*2,n),O=xe(f+o*2,n),{cumulative:_,total:Y,currentValue:ee}=C.prefixSum(f,{materializeOption:{materialize:!0,ranges:[{from:L,to:O}]}});if(M.debug("[VirtualScroll] Scrolling to index:",f,"ItemBottom:",_,"Total height:",Y,"ItemHeight:",ee,"safeIndexFrom:",L,"safeIndexTo:",O),!Y)return;const Ie=Math.max(_-ee,0);let de=Ie;u?.align==="bottom"?de=_-he:u?.align==="center"&&(de=Ie+ee/2-he/2),u?.offset&&(de-=u.offset),de=Math.max(0,de);const oe=xt(de,E.top),Ye=K.current?.getContentSize()??Y+E.top+E.bottom,De=Math.max(0,Ye-he),Be=Math.min(oe,De);$e.current={index:f,align:u?.align,offset:u?.offset};const kt=K.current?.getScrollPosition()??-1,qt=Math.abs(kt-Be)>.5;rt.current=!1,we.current=0,qt&&(rt.current=!0,we.current+=1,K.current?.scrollTo(Be)),m(Y),pe(Be,{immediate:!0}),M.debug("[VirtualScroll] Setting scroll position to:",Be,{original:oe,max:De})},[C,o,n,E.top,E.bottom,he,pe]),x=t.useRef(A&&n===0?A:null);t.useEffect(()=>{const a=x.current;!a||n===0||(x.current=null,l(te(Math.trunc(a.index),0,n-1),{align:"top",offset:-Math.max(0,a.offsetPx??0)}))},[n,l]);const y=t.useCallback(a=>{if(!K.current||n===0)return;const u=C.getTotal(),f=te(Math.floor(a),0,u),{index:L,cumulative:O,currentValue:_}=C.findIndexAtOrAfter(f,{materializeOption:{materialize:!1}}),ee=(O??0)-(_??0)-f;l(L,{offset:ee})},[C,n,l]),D=t.useCallback(()=>{if(n===0)return null;const a=Ke(T.current,E.top),{index:u,cumulative:f,currentValue:L}=C.findIndexAtOrAfter(a,{materializeOption:{materialize:!1}});if(u===-1)return{index:n-1,offsetPx:0};if(f===a)return{index:te(u+1,0,n-1),offsetPx:0};const O=(f??0)-(L??0);return{index:u,offsetPx:Math.max(0,a-O)}},[C,n,E.top]),j=t.useCallback(a=>{const u=Ke(T.current,E.top),f=typeof a=="function"?a(u):a;y(f);const L=K.current?.getScrollPosition(),O=typeof L=="number"?L:T.current;return pe(O),Ke(O,Oe.current)},[E.top,y,pe]),be=t.useCallback(a=>{const u=K.current;if(!u)return Ke(T.current,Oe.current);const f=u.scrollTo(L=>L+a);return Ke(f,Oe.current)},[]),_e=t.useCallback(a=>K.current?.applyWheel(a)??!1,[]),Fe=t.useCallback((a,u)=>{M.debug("[VirtualScroll] Scroll position changed:",a);const f=rt.current;f&&(rt.current=!1);const L=we.current>0;L&&(we.current=0);const O=h.current&&P.current===n;if(f||L||O||($e.current=null),pe(a),v){if(f||L)return;const _=a-u;if(M.debug("[VirtualScroll] Scroll diff:",_,"New:",a,"Prev:",u),Math.abs(_)>1){const Y=_>0?"down":"up";fe(Y),Ze(!0),M.debug("[VirtualScroll] Showing scroll buttons. Direction:",Y),ze.current&&clearTimeout(ze.current),ze.current=setTimeout(()=>{Ze(!1),M.debug("[VirtualScroll] Hiding scroll buttons")},2e3)}}},[pe,v,n]),nt=t.useMemo(()=>Ke(Ue,E.top),[E.top,Ue]),We=t.useMemo(()=>{const a=C.getTotal(),u=rn(nt,he,o,n,s,C,a);return M.debug("[VirtualScroll] Calculated rendering range:",()=>({...u,scrollPosition:nt,renderingContentSize:a,overscanCount:o,viewportSize:he})),u},[nt,he,o,n,s,C]),{renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It}=We,ut=t.useCallback((a,u)=>{if(!k||n===0)return;const f=xe(a,n);if(!(u?.ensureVisible??!0)){const De=Me.current.get(f);De&&(X.current=null,Re.current=f,ie(De));return}const O=C.prefixSum(f,{materializeOption:{materialize:!1}}),_=O.currentValue,Y=Math.max(O.cumulative-_,0),ee=Y+_,Ie=Ke(T.current,E.top),de=Ie+he;if(Y<Ie||ee>de){l(f);const De=Me.current.get(f);De?(X.current=null,Re.current=f,ie(De)):X.current=f;return}const Ye=Me.current.get(f);if(Ye){X.current=null,Re.current=f,ie(Ye);return}X.current=f},[k,n,C,E.top,l,ie,he]),Zt=t.useCallback((a,u)=>{if(!(!k||a.defaultPrevented)&&!(a.altKey||a.metaKey||a.ctrlKey)&&a.target===a.currentTarget&&!a.currentTarget.isContentEditable){if(a.key==="ArrowLeft"||a.key==="ArrowRight"){const f=ve.current;if(!f||a.shiftKey||!ce?.includes("arrow")||!(Number.isFinite(R)&&R>0))return;a.preventDefault(),f(a.key==="ArrowLeft"?-R:R);return}if(a.key==="ArrowDown"){u<n-1&&(a.preventDefault(),ut(u+1));return}if(a.key==="ArrowUp"){u>0&&(a.preventDefault(),ut(u-1));return}if(a.key==="PageDown"){if(u<n-1){a.preventDefault();const{visibleStartIndex:f,visibleEndIndex:L}=Ge.current,O=Math.max(L-f+1,1),_=Math.max(O,1),Y=xe(Math.min(u+_,n-1),n);ut(Y)}return}if(a.key==="PageUp"&&u>0){a.preventDefault();const{visibleStartIndex:f,visibleEndIndex:L}=Ge.current,O=Math.max(L-f+1,1),_=Math.max(O,1),Y=xe(u-_,n);ut(Y)}}},[k,n,ut,ce,R]),Qt=t.useCallback((a,u)=>{if(a.key!=="Escape"||a.defaultPrevented||a.nativeEvent.isComposing||a.target===a.currentTarget)return;const f=a.target;f instanceof HTMLInputElement||f instanceof HTMLTextAreaElement||f instanceof HTMLSelectElement||f.isContentEditable||(a.preventDefault(),ut(u))},[ut]),Jt=t.useCallback(a=>{if(!k)return;const u=xe(a,n);X.current=null,Re.current=u,ae?.(u)},[k,n,ae]);t.useEffect(()=>{const a=K.current?.getScrollPosition()??0,u=T.current,f=Ke(u,E.top);M.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It,scrollPositionState:Ue,paneScrollPosition:u,logicalScrollPosition:f,contentSize:Ve,scrollPaneScrollPosition:a})),st({renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It,scrollPosition:f,totalHeight:Ve})},[Ve,bt,ct,E.top,st,Ue,It,ht]);const Ir=t.useCallback(()=>{if(!v)return null;const a=Pe&&ke!==null,u=ke==="up";return q.jsx("div",{className:"aqvs-scroll-to-edge-overlay","data-visible":a,inert:!a,children:u?q.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:q.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:a?0:-1,onClick:f=>{f.stopPropagation(),rt.current=!0,l(0),Ze(!1)},children:"Top"})}):q.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:q.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:a?0:-1,onClick:f=>{f.stopPropagation(),rt.current=!0,l(n-1),Ze(!1)},children:"Bottom"})})})},[v,Pe,ke,l,n]),Yt=t.useRef(0),{visibleItems:Bt,renderAnchor:Ht}=t.useMemo(()=>{if(n===0)return{visibleItems:q.jsx("div",{className:"aqvs-no-items-container",children:q.jsx("div",{className:"aqvs-no-items-text",children:"No items"})}),renderAnchor:0};const a=xe(ct,n),u=xe(bt,n),{cumulative:f,currentValue:L}=C.prefixSum(a,{materializeOption:{materialize:!1}}),O=f-L;Number.isFinite(O)&&Math.abs(O-Yt.current)>Jr&&(Yt.current=O);const _=Yt.current,Y=[],ee=[];let Ie=0,de=O;for(let oe=a;oe<=u;oe++){if(ee.length>=fr){M.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:fr,safeRenderingStartIndex:a,safeRenderingEndIndex:u});break}const Ye=s(oe),De=C.get(oe),Be=Ye-De;Be!==0&&Y.push({index:oe,value:Ye});const kt=de+Ie,qt=r?r(oe):oe;ee.push(q.jsx(nn,{index:oe,top:kt-_,height:Ye,item:e(oe),clipItemHeight:je,enableKeyboardNavigation:k,onKeyDown:Zt,onEscapeKeyDown:Ae?Qt:void 0,onFocus:Jt,registerItemRef:St,children:S},qt)),Ie+=Be,de+=De}return Y.length>0&&Promise.resolve().then(()=>{if(at.current)return;let oe=0;for(const Be of Y)if(Be.index<ht){const kt=C.get(Be.index);oe+=Be.value-kt}const Ye=C.updates(Y);if(at.current||typeof Ye!="number")return;m(Ye),M.debug("[VirtualScroll] Updated heights for items",Y,"New total height:",Ye);const De=K.current?.getScrollPosition()??T.current;if(oe!==0){const Be=De+oe;pt(Be,oe),pe(Be,{immediate:!0}),M.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:De,to:Be,shiftAmount:oe})}else De!==T.current&&pe(De)}),{visibleItems:ee,renderAnchor:_}},[S,je,Ve,k,n,C,e,r,s,Jt,Zt,Ae,Qt,pt,St,bt,ct,pe,ht]),wr=t.useCallback(a=>{const u=($??0)>0,f=Math.abs(a-Ue),L=u&&f>.5?Ue:a,O=Ke(L,E.top);if(M.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:a,effectiveScrollPosition:O,renderingStartIndex:ct,renderingEndIndex:bt,itemCount:n,viewportSize:he,callbackThrottleMs:$,diff:f,rawEffectiveScrollPosition:L})),n===0)return Bt;const _=E.top+Ht-L,Y=E.bottom>0?q.jsx("div",{className:"aqvs-bottom-inset",style:{top:C.getTotal()-Ht,height:E.bottom}},"virtualscroll-bottom-inset"):null;return M.debug("[VirtualScroll] Rendering items",()=>({containerTop:_,logicalScrollPosition:nt,resolvedInsets:E,effectiveScrollPosition:O})),q.jsxs("div",{className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${_}px)`,willChange:"transform"},children:[Bt,Y]})},[$,n,C,nt,Ht,bt,ct,E,Ue,he,Bt]),er=t.useMemo(()=>({renderingStartIndex:We.renderingStartIndex,renderingEndIndex:We.renderingEndIndex,visibleStartIndex:We.visibleStartIndex,visibleEndIndex:We.visibleEndIndex,scrollPosition:nt,totalHeight:C.getTotal()}),[We,nt,C,Ve]);t.useEffect(()=>{Ge.current=er},[er]);const[Tr,tr]=t.useState(""),rr=t.useRef(w);t.useLayoutEffect(()=>{rr.current=w},[w]);const wt=w?.debounceMs??400,Lt=Number.isFinite(wt)&&wt>=0,Ct=w!==void 0;t.useEffect(()=>{Ct&&!Lt&&M.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${wt}. Announcements are disabled.`)},[Ct,Lt,wt]),t.useEffect(()=>{if(!(Ct&&Lt)){tr("");return}const a=setTimeout(()=>{const u=rr.current?.format;if(!u)return;const f=u({visibleStartIndex:ht,visibleEndIndex:It,itemCount:n});tr(f)},wt);return()=>clearTimeout(a)},[Ct,Lt,wt,ht,It,n]),t.useImperativeHandle(G,()=>({getScrollPosition:()=>{const a=K.current?.getScrollPosition();return typeof a=="number"?Ke(a,Oe.current):-1},getContentSize:()=>K.current?.getContentSize()??-1,getViewportSize:()=>K.current?.getViewportSize()??-1,scrollTo:j,scrollBy:be,applyWheel:_e,scrollToIndex:l,getFenwickTreeTotalHeight:()=>C.getTotal(),getFenwickSize:()=>C.getSize(),focusItemAtIndex:ut,getRange:()=>Ge.current,getScrollAnchor:D,updateItemSize:Et}),[j,be,_e,l,C,ut,D,Et]);const Mr=C.getTotal()+E.top+E.bottom,nr=q.jsx(xr,{ref:K,contentSize:Mr,viewportSize:i,onViewportSizeChange:Se,className:c,testId:d,onScroll:Fe,background:I,tapScrollCircleOptions:ue,inertiaOptions:Ee,overscrollBehavior:Le,itemCount:n,scrollBarWidth:Z,enableThumbDrag:U,enableTrackClick:me,enableArrowButtons:z,enablePointerDrag:He,pointerDragInputs:qe,renderThumbOverlay:W,wheelSpeedMultiplier:Xe,onWheelHorizontal:se,contentInsets:E,contentProps:F,visibleStartIndex:ht,visibleEndIndex:It,renderOverlay:Ir,initialScrollPosition:tt.position,children:wr});return Ct?q.jsxs(q.Fragment,{children:[nr,q.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:Tr})]}):nr},on=t.forwardRef(sn);exports.FenwickMapTree=ft;exports.ScrollBar=gr;exports.ScrollPane=xr;exports.TAP_SCROLL_SPEED_DEFAULTS=Gt;exports.VirtualScroll=on;exports.computeAutoTapScrollMaxSpeedMultiplier=hr;exports.computeTapScrollSpeed=pr;exports.createResidualQuantizer=Rr;exports.minmax=te;exports.tapScrollCircleSampleVisual=$r;exports.useFenwickMapTree=Sr;exports.useHeightCache=Zr;exports.useLruCache=vr;exports.useWheelBridge=Qr;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("react/jsx-runtime"),r=require("react"),Mt=require("tailwind-merge"),Pr=n=>{const{quantum:e,resetOnDirectionChange:t=!0}=n;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;t&&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}}};class R{level;prefix;impl;constructor(e=2,t="[virtualscroll]",s=console){this.level=e,this.prefix=t,this.impl=s}static instance=new R(2,"[virtualscroll]");static setLevel(e){R.instance.setLevel(e)}setLevel(e){this.level=e}static setImplementation(e){R.instance.setImplementation(e)}setImplementation(e){this.impl=e}static setPrefix(e){R.instance.setPrefix(e)}setPrefix(e){this.prefix=e}static isEnabled(e){return R.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,...t){R.instance.debug(e,...t)}debug(e,...t){this.level<=0&&this.impl.debug(...this.formatMessage(R.resolveLazy(e)),...t.map(R.resolveLazy))}static info(e,...t){R.instance.info(e,...t)}info(e,...t){this.level<=1&&this.impl.info(...this.formatMessage(R.resolveLazy(e)),...t.map(R.resolveLazy))}static warn(e,...t){R.instance.warn(e,...t)}warn(e,...t){this.level<=2&&this.impl.warn(...this.formatMessage(R.resolveLazy(e)),...t.map(R.resolveLazy))}static error(e,...t){R.instance.error(e,...t)}error(e,...t){this.level<=3&&this.impl.error(...this.formatMessage(R.resolveLazy(e)),...t.map(R.resolveLazy))}}const sr={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},Xt=6,yr=8,Er=({dragState:n,normalizedDistance:e})=>{const t=1+e*.18,s=.16+e*.24,i=.38+e*.28,o=n.active?"80ms ease-out":"220ms ease";return q.jsxs(q.Fragment,{children:[q.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(${t})`,transition:`${o}, ${n.active?"80ms":"260ms"} box-shadow ease`}}),q.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:n.active?"120ms opacity ease-out":"220ms opacity ease"}})]})},mr=r.memo(r.forwardRef(({onDragChange:n,className:e,maxVisualDistance:t=160,size:s=40,style:i,opacity:o=1,renderVisual:l},p)=>{const[d,b]=r.useState(sr),x=r.useRef(null),I=r.useRef(null),N=r.useRef({x:0,y:0}),g=r.useRef(null),D=r.useRef(0),j=r.useCallback(S=>{b(S),n(S)},[n]),z=r.useCallback((S,U,ce=!1)=>{const{x:Ye,y:Be}=N.current,k=S-Ye,Ae=U-Be,He=Math.abs(Ae),Ee=He<Xt?0:Ae<0?-1:1,Le=D.current;let qe=Ee;const Ne=Xt+yr;Ee===0?Le!==0&&He<Ne?qe=Le:(qe=0,ce||(D.current=0)):Ee!==Le&&Le!==0&&He<Ne?qe=Le:D.current=Ee,j({active:ce||He>=Xt,offsetX:k,offsetY:Ae,distance:He,direction:qe,pointerId:x.current})},[j]),oe=r.useCallback(S=>{if(S===null)return;const U=g.current;U?.hasPointerCapture(S)&&U.releasePointerCapture(S)},[]),ae=r.useCallback((S=!1)=>{S&&oe(x.current),x.current=null,I.current=null,D.current=0,j(sr)},[j,oe]),te=r.useCallback(S=>{if(x.current!==null&&x.current!==S.pointerId){I.current={pointerId:S.pointerId,clientX:S.clientX,clientY:S.clientY},S.preventDefault(),S.stopPropagation();return}S.preventDefault(),S.stopPropagation();const U=g.current??S.currentTarget,{left:ce,top:Ye,width:Be,height:k}=U.getBoundingClientRect();N.current={x:ce+Be/2,y:Ye+k/2},x.current=S.pointerId;try{U.setPointerCapture(S.pointerId)}catch{}z(S.clientX,S.clientY,!0)},[z]),ne=r.useCallback(S=>{if(x.current!==S.pointerId){I.current!==null&&I.current.pointerId===S.pointerId&&(I.current={pointerId:S.pointerId,clientX:S.clientX,clientY:S.clientY});return}S.preventDefault(),z(S.clientX,S.clientY)},[z]),le=r.useCallback(S=>{if(x.current!==S.pointerId){I.current!==null&&I.current.pointerId===S.pointerId&&(I.current=null);return}S.preventDefault(),S.stopPropagation();const U=I.current;if(I.current=null,U!==null){oe(S.pointerId);const ce=g.current;let Ye=!0;if(ce!==null&&typeof ce.setPointerCapture=="function")try{ce.setPointerCapture(U.pointerId)}catch(Be){(typeof Be=="object"&&Be!==null&&"name"in Be?Be.name:void 0)==="NotFoundError"&&(Ye=!1)}if(Ye){x.current=U.pointerId,z(U.clientX,U.clientY,!0);return}}ae(!0)},[ae,oe,z]),P=r.useCallback(S=>{S.target===S.currentTarget&&x.current===S.pointerId&&ae(!1)},[ae]);r.useImperativeHandle(p,()=>({reset:()=>{ae(!0)},getElement:()=>g.current}),[ae]);const _=Math.min(Math.max(o,0),1),w=s/64,K=Math.min(d.distance,t)/t,G=d.direction*K*10*w,$=l??Er,de={dragState:d,normalizedDistance:K,sizeScale:w,size:s,opacity:_},V={...i,width:s,height:s,transform:`translateY(${G}px)`};return V.opacity=_,q.jsx("div",{ref:g,"data-testid":"virtual-scroll-tap-circle",className:Mt.twMerge("aqvs-tap-scroll-circle",e),style:V,tabIndex:-1,onPointerDown:te,onPointerMove:ne,onPointerUp:le,onPointerCancel:le,onLostPointerCapture:P,role:"presentation",children:$(de)})}));mr.displayName="TapScrollCircle";const ee=(n,e,t)=>Math.max(e,Math.min(t,n)),pr=(n,e)=>{const t=e==="x",s=n.getBoundingClientRect(),i=t?s.width:s.height,o=x=>{const I=Number.parseFloat(x);return Number.isFinite(I)?I:0},l=window.getComputedStyle(n),p=o(t?l.width:l.height),d=p>0?p+o(t?l.paddingLeft:l.paddingTop)+o(t?l.paddingRight:l.paddingBottom)+o(t?l.borderLeftWidth:l.borderTopWidth)+o(t?l.borderRightWidth:l.borderBottomWidth):0,b=d>0?d:t?n.offsetWidth:n.offsetHeight;return b<=0||i<=0?1:i/b},Kt="virtualscroll:tap-scroll-cancel",ir=20,Cr=250,kr=60,Nr=20,zr=20,Gt={maxDistance:240,minSpeedMultiplier:.2},Vr=Gt.maxDistance,or={active:!1,offsetX:0,offsetY:0,distance:0,direction:0,pointerId:null},jt=2.2,Dr=8,Ar=120,Lr=1/10,it={enabled:!0,size:40,offsetX:-80,offsetY:0,className:void 0,maxVisualDistance:Vr,minSpeedMultiplier:Gt.minSpeedMultiplier,opacity:.9,renderVisual:void 0,maxSpeedCurve:void 0},Or=n=>n?{mainSizeKey:"width",crossSizeKey:"height",positionKey:"left",selectDelta:(e,t)=>e,getPointerCoordinate:({clientX:e})=>e,arrowLabels:["Scroll left","Scroll right"],arrowIcons:["◀","▶"],directionClass:"aqvs-scrollbar-horizontal",orientation:"horizontal"}:{mainSizeKey:"height",crossSizeKey:"width",positionKey:"top",selectDelta:(e,t)=>t,getPointerCoordinate:({clientY:e})=>e,arrowLabels:["Scroll up","Scroll down"],arrowIcons:["▲","▼"],directionClass:"aqvs-scrollbar-vertical",orientation:"vertical"},_r=(n,e)=>{const t=n?.maxSpeedMultiplier,s=typeof t=="number"?t:gr(e);return{enabled:n?.enabled??it.enabled,size:n?.size??it.size,offsetX:n?.offsetX??it.offsetX,offsetY:n?.offsetY??it.offsetY,className:n?.className??it.className,maxVisualDistance:n?.maxVisualDistance??it.maxVisualDistance,maxSpeedMultiplier:s,minSpeedMultiplier:Math.max(n?.minSpeedMultiplier??it.minSpeedMultiplier,0),opacity:ee(n?.opacity??it.opacity,0,1),renderVisual:n?.renderVisual??it.renderVisual,maxSpeedCurve:n?.maxSpeedCurve??it.maxSpeedCurve}},Fr=({isDragging:n,isThumbHovered:e,enableThumbDrag:t})=>r.useMemo(()=>t?n?"dragging":e?"hover":"idle":"disabled",[t,n,e]),Yr=({canUseArrowButtons:n,enableArrowButtons:e,resetTapScroll:t,scrollByStep:s})=>{const i=r.useRef(null),o=r.useRef(null),l=r.useRef(null),p=r.useCallback(()=>{i.current!==null&&(window.clearInterval(i.current),i.current=null),o.current!==null&&(window.clearTimeout(o.current),o.current=null),l.current!==null&&(window.removeEventListener("pointerup",l.current),window.removeEventListener("pointercancel",l.current),window.removeEventListener("blur",l.current),l.current=null)},[]),d=r.useCallback(()=>{p()},[p]),b=r.useCallback(I=>N=>{if(!n)return;N.cancelable&&N.preventDefault(),N.stopPropagation(),t(),p(),s(I),o.current=window.setTimeout(()=>{i.current=window.setInterval(()=>{s(I)},kr)},Cr);const g=()=>p();l.current=g,window.addEventListener("pointerup",g),window.addEventListener("pointercancel",g),window.addEventListener("blur",g)},[n,p,t,s]),x=r.useCallback(I=>N=>{e&&(N.key==="Enter"||N.key===" "||N.key==="Spacebar")&&(N.preventDefault(),s(I))},[e,s]);return r.useEffect(()=>{n||p()},[n,p]),r.useEffect(()=>()=>{p()},[p]),{handleArrowPointerDown:b,handleArrowPointerUp:d,handleArrowKeyDown:x}},Br=700,gt=(n,e)=>typeof n=="number"&&Number.isFinite(n)?n:e,hr=({distance:n,maxDistance:e,viewportSize:t,minSpeedMultiplier:s,maxSpeedMultiplier:i,hasCustomMaxSpeedMultiplier:o,curve:l})=>{const p=Math.max(gt(n,0),0),d=gt(e,0),b=d>0?Math.min(p,d)/d:1,x=Math.max(gt(t,0),0),I=Math.max(gt(s,0),0),N=Math.max(gt(i,0),0),g=Math.max(x*I,40),D=o?g:1200,j=Math.max(x*N,D),z=l?Math.max(gt(l.exponentialScale,N),0):0,oe=l?Math.min(j,Math.max(x*z,g)):j,ae=Math.max(oe,g);let te=b**1.1;if(l){const le=Math.min(Math.max(gt(l.exponentialSteepness,0),0),Br);if(le===0)te=b;else{const P=Math.expm1(le)||1;te=Math.min(Math.max(Math.expm1(le*b)/P,0),1)}}const ne=Math.min(Math.max(gt(l?.easedOffset,0),0),1);return g+(ae-g)*(ne+(1-ne)*te)},gr=n=>{if(!n||n<=0)return jt;const e=Math.max(1,n),t=Math.log10(e),s=jt+t*Dr;return ee(s,jt,Ar)},br=({contentSize:n,viewportSize:e,scrollPosition:t,onScroll:s,enableThumbDrag:i=!0,enableTrackClick:o=!0,enableArrowButtons:l=!0,horizontal:p=!1,scrollBarWidth:d=12,className:b,ariaControls:x,tapScrollCircleOptions:I,itemCount:N,renderThumbOverlay:g,visibleStartIndex:D,visibleEndIndex:j})=>{const[z,oe]=r.useState(!1),[ae,te]=r.useState(!1),[ne,le]=r.useState(!1),P=r.useRef(null),_=r.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null}),w=r.useRef({pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}),K=r.useRef(t),G=r.useRef(s),$=r.useRef(or),de=r.useRef(null),V=r.useRef(null),S=r.useRef(null),U=r.useRef(0),ce=r.useRef(0),Ye=r.useMemo(()=>_r(I,N),[N,I]),Be=r.useMemo(()=>Or(p),[p]),{enabled:k,size:Ae,offsetX:He,offsetY:Ee,className:Le,maxVisualDistance:qe,maxSpeedMultiplier:Ne,minSpeedMultiplier:we,opacity:Ce,renderVisual:he,maxSpeedCurve:xe}=Ye,W=r.useRef({viewportSize:e,maxScrollPosition:Math.max(n-e,0),scrollBarVisible:n>e,effectiveTapMaxDistance:Math.max(qe,1),tapCircleMaxSpeedMultiplier:Ne,tapCircleMinSpeedMultiplier:we,tapCircleMaxSpeedCurve:xe,tapScrollCircleOptions:I,effectiveTrackLength:0,onScroll:s,scrollPosition:t}),{mainSizeKey:Ue,crossSizeKey:Xe,positionKey:ot,selectDelta:Je,getPointerCoordinate:y,arrowLabels:dt,arrowIcons:re,directionClass:E,orientation:et}=Be,je=Math.max(qe,1),at=e/n,ze=Math.max(e-d*2,0),m=at*ze,M=Math.min(Math.max(ir,m||0),ze||ir),H=n-e,Y=Math.max(ze-M,0),Z=H<=0||Y<=0?0:ee(t/H*Y,0,Y),Se=Z+M/2,Q=n>e||z,ge=Q&&l;r.useLayoutEffect(()=>{W.current={viewportSize:e,maxScrollPosition:H,scrollBarVisible:Q,effectiveTapMaxDistance:je,tapCircleMaxSpeedMultiplier:Ne,tapCircleMinSpeedMultiplier:we,tapCircleMaxSpeedCurve:xe,tapScrollCircleOptions:I,effectiveTrackLength:Y,onScroll:s,scrollPosition:t}}),r.useLayoutEffect(()=>{K.current=t},[t]),r.useLayoutEffect(()=>{G.current=s},[s]),r.useEffect(()=>{i||te(!1)},[i]);const Te=Fr({isDragging:z,isThumbHovered:ae,enableThumbDrag:i}),X=r.useCallback((c,v)=>{const C=W.current,B=v??K.current;if(G.current){const Qe=G.current(c,B);if(typeof Qe=="number"&&Number.isFinite(Qe))return K.current=Qe,Qe}const pe=typeof c=="function"?c(B):c,ye=Math.max(C.maxScrollPosition,0),Ze=C.scrollBarVisible?ee(pe,0,ye):0;return K.current=Ze,Ze},[]),Me=r.useCallback(c=>{const v=W.current,C=K.current;if(!v.scrollBarVisible||v.maxScrollPosition<=0){const rt=X(0,C),ct=rt-C;return{nextPosition:rt,actualDelta:ct,reachedBoundary:!0}}if(c===0)return{nextPosition:C,actualDelta:0,reachedBoundary:!1};const pe=X(rt=>ee(rt+c,0,v.maxScrollPosition),C),ye=pe-C,Ze=c<0&&C+c<=0,Qe=c>0&&C+c>=v.maxScrollPosition,lt=c<0&&(pe<=0||Ze&&ye===0)||c>0&&(pe>=v.maxScrollPosition||Qe&&ye===0);return{nextPosition:pe,actualDelta:ye,reachedBoundary:lt}},[X]),ke=r.useCallback((c,v)=>{c.current+=v;const C=Math.max(W.current.maxScrollPosition,0);C>0&&(c.current=ee(c.current,-C,C));const B=Me(c.current);return c.current-=B.actualDelta,B.reachedBoundary&&(c.current=0),B},[Me]),ue=r.useCallback(()=>{V.current!==null&&(window.cancelAnimationFrame(V.current),V.current=null),S.current=null,U.current=0,ce.current=0},[]),Re=r.useCallback(()=>{$.current={...or},le(!1),de.current?.reset(),ue()},[ue]),We=r.useCallback(c=>{const v=$.current,C=W.current;if(!v.active||v.direction===0){ue();return}if(!C.scrollBarVisible||C.maxScrollPosition<=0){ue();return}const B=S.current??c,pe=Math.max((c-B)/1e3,0),ye=Math.min(pe,Lr);if(S.current=c,ye<=0){V.current=window.requestAnimationFrame(We);return}const Ze=hr({distance:v.distance,maxDistance:C.effectiveTapMaxDistance,viewportSize:C.viewportSize,minSpeedMultiplier:C.tapCircleMinSpeedMultiplier,maxSpeedMultiplier:C.tapCircleMaxSpeedMultiplier,hasCustomMaxSpeedMultiplier:typeof C.tapScrollCircleOptions?.maxSpeedMultiplier=="number",curve:C.tapCircleMaxSpeedCurve});ce.current!==v.direction&&(ce.current=v.direction,U.current=0);const{reachedBoundary:Qe}=ke(U,v.direction*Ze*ye);if(Qe){ue();return}V.current=window.requestAnimationFrame(We)},[ke,ue]),Ve=r.useCallback(()=>{V.current===null&&(S.current=null,U.current=0,V.current=window.requestAnimationFrame(We))},[We]);r.useEffect(()=>{const c=$.current;!c.active||c.direction===0||Ve()},[n,e,Ve]),r.useEffect(()=>()=>{ue()},[ue]);const tt=r.useCallback(c=>{$.current=c,le(c.active),c.active&&c.direction!==0?Ve():ue()},[Ve,ue]);r.useEffect(()=>{k||Re()},[Re,k]),r.useEffect(()=>{const c=v=>{const B=v.detail?.paneId;B&&x&&B!==x||Re()};return window.addEventListener(Kt,c),()=>{window.removeEventListener(Kt,c)}},[x,Re]),r.useEffect(()=>{if(!k)return;const c=v=>{if(!$.current.active||$.current.pointerId===v.pointerId)return;const C=v.target;if(!(C instanceof Node)){Re();return}de.current?.getElement()?.contains(C)||Re()};return document.addEventListener("pointerdown",c,!0),()=>{document.removeEventListener("pointerdown",c,!0)}},[Re,k]);const Ie=c=>{if(!Q||Y<=0||H<=0)return 0;const v=ee(c,0,Y);return ee(v/Y*H,0,H)},Ke=r.useCallback(c=>{const{scrollBarVisible:v,effectiveTrackLength:C,maxScrollPosition:B}=W.current;if(R.debug("[ScrollBar] calculateScrollPositionFromThumb",()=>({thumbPos:c,trackLen:C,maxScroll:B})),C<=0||B<=0)return null;const pe=ee(c,0,C);return ee(pe/C*B,0,B)},[]),h=r.useCallback(c=>pr(c,p?"x":"y"),[p]),T=r.useCallback(c=>{const v=_.current;if(v.pointerId!==c.pointerId)return;const C=c.clientX-v.startClientX,B=c.clientY-v.startClientY,pe=Je(C,B)/(v.scale||1);R.debug("[ScrollBar] handleThumbPointerMove",()=>({delta:pe,startThumbPosition:v.startThumbPosition,clientY:c.clientY,startClientY:v.startClientY,metrics:W.current}));const ye=Ke(v.startThumbPosition+pe);ye!==null&&X(ye),c.cancelable&&c.preventDefault()},[Je,Ke,X]),se=r.useCallback(c=>{const v=_.current;if(v.pointerId!==c.pointerId)return;document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",se),document.removeEventListener("pointercancel",se);const C=v.captureTarget;if(C?.hasPointerCapture?.(c.pointerId)&&C.releasePointerCapture(c.pointerId),_.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1,captureTarget:null},oe(!1),P.current){const B=P.current.getBoundingClientRect();c.clientX>=B.left&&c.clientX<=B.right&&c.clientY>=B.top&&c.clientY<=B.bottom||te(!1)}else te(!1)},[T]);r.useEffect(()=>()=>{document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",se),document.removeEventListener("pointercancel",se)},[T,se]);const Ge=r.useRef(0),Pe=r.useRef(0),Rt=r.useCallback(c=>{const v=Math.max(Math.round(W.current.viewportSize/zr),Nr);Pe.current!==c&&(Pe.current=c,Ge.current=0),ke(Ge,c*v)},[ke]),{handleArrowPointerDown:nt,handleArrowPointerUp:Oe,handleArrowKeyDown:mt}=Yr({canUseArrowButtons:ge,enableArrowButtons:l,resetTapScroll:Re,scrollByStep:Rt}),St=c=>{if(!Q)return;if(!i){c.preventDefault(),c.stopPropagation();return}if(c.pointerType==="mouse"&&c.button!==0||c.ctrlKey)return;Re();const v=c.currentTarget,C=h(v);let B=null;if(v.setPointerCapture)try{v.setPointerCapture(c.pointerId),B=v}catch{B=null}_.current={pointerId:c.pointerId,startThumbPosition:Z,startClientX:c.clientX,startClientY:c.clientY,scale:C,captureTarget:B},document.addEventListener("pointermove",T),document.addEventListener("pointerup",se),document.addEventListener("pointercancel",se),oe(!0),te(!0),c.preventDefault(),c.stopPropagation()},Vt=c=>{if(!Q)return;if(!o){c.preventDefault(),c.stopPropagation();return}if(c.pointerType==="mouse"&&c.button!==0||c.ctrlKey)return;const v=c.currentTarget,C=v.getBoundingClientRect(),B=y(c),pe=h(v),ye=(B-(p?C.left:C.top))/pe;Re();const Ze=ye-M/2,Qe=Ie(Ze);if(X(Qe),v.setPointerCapture)try{v.setPointerCapture(c.pointerId)}catch{}w.current={pointerId:c.pointerId,startThumbPosition:Ze,startClientX:c.clientX,startClientY:c.clientY,scale:pe},c.preventDefault(),c.stopPropagation()},st=()=>{w.current={pointerId:null,startThumbPosition:0,startClientX:0,startClientY:0,scale:1}},vt=c=>{const v=w.current;if(v.pointerId!==c.pointerId)return;if(c.pointerType==="mouse"&&c.buttons===0){st();return}const C=c.clientX-v.startClientX,B=c.clientY-v.startClientY,pe=Je(C,B)/(v.scale||1),ye=Ie(v.startThumbPosition+pe);X(ye),c.cancelable&&c.preventDefault()},Dt=c=>{if(w.current.pointerId!==c.pointerId)return;const v=c.currentTarget;v.hasPointerCapture?.(c.pointerId)&&v.releasePointerCapture(c.pointerId),st(),c.preventDefault(),c.stopPropagation()},Pt=c=>{if(w.current.pointerId!==c.pointerId)return;const v=c.currentTarget;v.hasPointerCapture?.(c.pointerId)&&v.releasePointerCapture(c.pointerId),st()},At=c=>{c.target===c.currentTarget&&w.current.pointerId===c.pointerId&&st()},me=r.useMemo(()=>ee((ne?1:.8)*Ce,0,1),[ne,Ce]),pt=r.useMemo(()=>{const v=`calc(50% - ${Ae/2}px + ${Ee}px)`;return{left:He,top:v}},[He,Ee,Ae]),yt=(c,v,C,B)=>q.jsx("button",{type:"button",tabIndex:0,className:"aqvs-scrollbar-arrow-button",style:{[Ue]:d,[Xe]:d},"aria-label":v,onPointerDown:nt(c),onPointerUp:Oe,onPointerLeave:Oe,onPointerCancel:Oe,onKeyDown:mt(c),"aria-disabled":!l,disabled:!ge,children:q.jsx("span",{"aria-hidden":"true",children:C})},B),Et=g&&Q?{orientation:et,scrollPosition:t,maxScrollPosition:H,contentSize:n,viewportSize:e,thumbSize:M,thumbPosition:Z,thumbCenter:Se,trackSize:ze,isDragging:z,isTapScrollActive:ne,visibleStartIndex:D,visibleEndIndex:j}:null;return q.jsxs("div",{className:Mt.twMerge("aqvs-scrollbar",E,b),style:{[Ue]:e,[Xe]:d},"data-visible":Q?"true":"false",role:"scrollbar",tabIndex:-1,"aria-controls":x,"aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":H,"aria-orientation":p?"horizontal":"vertical",children:[!p&&Q&&k&&q.jsx(mr,{ref:de,className:Mt.twMerge("aqvs-scrollbar-tap-circle-wrapper",Le),size:Ae,maxVisualDistance:je,style:pt,opacity:me,renderVisual:he,onDragChange:tt},"tap-circle"),yt(-1,dt[0],re[0],"arrow-start"),q.jsxs("div",{className:"aqvs-scrollbar-track",style:{borderRadius:d/2},onPointerDown:Vt,onPointerMove:vt,onPointerUp:Dt,onPointerCancel:Pt,onLostPointerCapture:At,"aria-disabled":!o,children:[Et&&q.jsx("div",{className:"aqvs-scrollbar-overlay","aria-hidden":!0,children:g?.(Et)},"overlay"),q.jsx("div",{className:"aqvs-scrollbar-thumb-wrapper",style:{[Ue]:M,[ot]:Z,...p?{top:0,bottom:0}:{left:0,right:0}},"data-visible":Q||z?"true":"false",onPointerDown:St,role:"slider","aria-orientation":p?"horizontal":"vertical","aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":H,"aria-disabled":!i,tabIndex:-1,children:q.jsx("div",{ref:P,className:Mt.twMerge("aqvs-scrollbar-thumb",p?"aqvs-scrollbar-thumb-horizontal":"aqvs-scrollbar-thumb-vertical"),"data-testid":"aqvs-scrollbar-thumb","data-thumb-state":Te,style:{borderRadius:d-1,cursor:i?"pointer":"default"},onMouseEnter:()=>{i&&te(!0)},onMouseLeave:()=>{i&&te(!1)}},"thumb")},"thumb-wrapper")]},"track"),yt(1,dt[1],re[1],"arrow-end")]})},Hr=16,ar=(n,e,t)=>e===1?n*Hr:e===2?n*t:n,qr=(n,e)=>{const t=n.shiftKey&&n.deltaX===0,s=t?n.deltaY:n.deltaX,i=t?0:n.deltaY,o=s!==0&&Math.abs(s)>=Math.abs(i);return{isZoomGesture:n.ctrlKey,isHorizontalDominant:o,horizontalDelta:ar(s,n.deltaMode,e),verticalDelta:ar(i,n.deltaMode,e)}},xr=new WeakSet,lr=n=>{xr.add(n)},Xr=n=>xr.has(n),jr=["mouse","pen","touch"],$t=(n,e)=>!(n==="mouse"||n==="pen"||n==="touch")||e.includes(n),$r=n=>n==="mouse"||n==="pen",Nt={maxVelocity:6,minVelocity:.02,deceleration:.0025,velocitySampleWindow:90,startVelocityThreshold:.04},Ot=(n,e,t)=>{for(const[s,i,o]of e)t==="add"?n.addEventListener(s,i,o):n.removeEventListener(s,i,o)},Sr=r.forwardRef(({children:n,contentSize:e,viewportSize:t,onViewportSizeChange:s,scrollBarWidth:i=12,enableThumbDrag:o=!0,enableTrackClick:l=!0,enableArrowButtons:p=!0,enablePointerDrag:d=!0,pointerDragInputs:b=jr,onScroll:x,className:I,testId:N,style:g,background:D,tapScrollCircleOptions:j,inertiaOptions:z,itemCount:oe,renderThumbOverlay:ae,wheelSpeedMultiplier:te=1,overscrollBehavior:ne="auto",onWheelHorizontal:le,contentInsets:P,visibleStartIndex:_,visibleEndIndex:w,renderOverlay:K,initialScrollPosition:G=0,contentProps:$},de)=>{const V=r.useRef(Number.isFinite(G)?Math.max(0,G):0),S=r.useRef(null),U=r.useRef(null),ce=t===void 0,[Ye,Be]=r.useState(0),k=t??Ye,Ae=r.useRef(null);r.useLayoutEffect(()=>{if(!ce)return;const m=U.current;if(!m)return;const M=()=>{const Y=m.offsetHeight;if(Y>0){Be(Z=>Z===Y?Z:Y);return}m.offsetParent!==null&&e>0&&Ae.current!=="zero"&&(Ae.current="zero",R.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(M(),typeof ResizeObserver!="function")return;const H=new ResizeObserver(M);return H.observe(m),()=>{H.disconnect()}},[e,ce]),r.useLayoutEffect(()=>{ce&&s?.(Ye)},[ce,Ye,s]),r.useLayoutEffect(()=>{if(ce)return;const m=S.current;if(!m)return;const M=()=>{const Y=m.clientHeight;if(Y<=0||Math.abs(Y-k)<=1)return;const Z=`${k}/${Y}`;Ae.current!==Z&&(Ae.current=Z,R.warn(`[ScrollPane] viewportSize=${k} but the host band is ${Y}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(M(),typeof ResizeObserver!="function")return;const H=new ResizeObserver(M);return H.observe(m),()=>{H.disconnect()}},[ce,k]);const He=r.useRef(le);r.useEffect(()=>{He.current=le},[le]);const Ee=r.useRef({frame:null,velocity:0,lastTimestamp:null,generation:0}),Le=r.useMemo(()=>({maxVelocity:z?.maxVelocity??Nt.maxVelocity,minVelocity:z?.minVelocity??Nt.minVelocity,deceleration:z?.deceleration??Nt.deceleration,velocitySampleWindow:z?.velocitySampleWindow??Nt.velocitySampleWindow,startVelocityThreshold:z?.startVelocityThreshold??Nt.startVelocityThreshold}),[z]),qe=r.useMemo(()=>({top:Math.max(0,P?.top??0),bottom:Math.max(0,P?.bottom??0)}),[P]);R.debug("[ScrollPane] ScrollPane rendered",()=>({contentSize:e,viewportSize:k,scrollBarWidth:i,className:I,style:g,tapScrollCircleOptions:j,inertiaOptions:z,enablePointerDrag:d,contentInsets:qe}));const Ne=r.useRef({contentSize:e,viewportSize:k}),we=r.useMemo(()=>e>k,[e,k]),Ce=r.useCallback((m,M)=>{let H=M??Ne.current;M&&!(Number.isFinite(M.contentSize)&&Number.isFinite(M.viewportSize))&&(R.warn("[ScrollPane] scrollTo received non-finite dimsOverride; falling back to the committed dims",{dimsOverride:M}),H=Ne.current);const{contentSize:Y,viewportSize:Z}=H,Se=Y>Z,Q=V.current;if(R.debug("[ScrollPane] scrollTo called",()=>({newPosition:m,contentSize:Y,viewportSize:Z,currentIsScrollable:Se,prevPosition:Q})),!Se)return V.current!==0&&(V.current=0,x?.(0,Q)),V.current;const ge=typeof m=="function"?m(V.current):m;if(!Number.isFinite(ge))return R.warn("[ScrollPane] scrollTo received a non-finite position; keeping the current position",{nextPosition:ge}),V.current;const Te=Math.max(Y-Z,0),X=ee(ge,0,Te);return V.current!==X&&(V.current=X,x?.(X,Q)),V.current},[x]),he=r.useRef(Ce);r.useEffect(()=>{he.current=Ce},[Ce]);const xe=r.useCallback(()=>{const m=Ee.current;m.generation+=1,m.frame!==null&&cancelAnimationFrame(m.frame),m.frame=null,m.velocity=0,m.lastTimestamp=null},[]),W=r.useRef(xe);r.useEffect(()=>{W.current=xe},[xe]),r.useEffect(()=>()=>{W.current()},[]);const Ue=r.useCallback(m=>{if(!we)return;const{maxVelocity:M,minVelocity:H,deceleration:Y,startVelocityThreshold:Z}=Le,Se=ee(m,-M,M);if(Math.abs(Se)<Z)return;xe(),Ee.current.velocity=Se,Ee.current.lastTimestamp=null;const Q=Ee.current.generation,ge=Te=>{const X=Ee.current;if(X.generation!==Q)return;if(X.lastTimestamp===null){X.lastTimestamp=Te,X.frame=requestAnimationFrame(ge);return}const Me=Te-X.lastTimestamp;if(X.lastTimestamp=Te,Me<=0){X.frame=requestAnimationFrame(ge);return}const ke=X.velocity;let ue=ke;const Re=Y*Me;ke>0?ue=Math.max(0,ke-Re):ke<0&&(ue=Math.min(0,ke+Re));const Ve=(ke+ue)/2*Me,tt=V.current;if(Ve!==0&&he.current(Ge=>Ge+Ve),Ee.current.generation!==Q)return;const Ie=V.current,{contentSize:Ke,viewportSize:h}=Ne.current,T=Math.max(Ke-h,0);X.velocity=ue;const se=Ie===tt||Ie<=0&&ue<=0||Ie>=T&&ue>=0;if(Math.abs(ue)<H||se){xe();return}X.frame=requestAnimationFrame(ge)};Ee.current.frame=requestAnimationFrame(ge)},[we,Le,xe]),Xe=r.useRef(Ue);r.useEffect(()=>{Xe.current=Ue},[Ue]),r.useLayoutEffect(()=>{Ne.current={contentSize:e,viewportSize:k}},[e,k]),r.useLayoutEffect(()=>{const m=U.current;if(!m)return;const M=()=>{m.scrollTop!==0&&(R.debug("[ScrollPane] Native scroll detected, resetting to 0",()=>({scrollTop:m.scrollTop})),m.scrollTop=0),m.scrollLeft!==0&&(m.scrollLeft=0)};return m.addEventListener("scroll",M),()=>m.removeEventListener("scroll",M)},[]),r.useLayoutEffect(()=>{if(we){R.debug("[ScrollPane] Adjusting scroll position due to content or viewport size change",()=>({contentSize:e,viewportSize:k,scrollPosition:V.current}));const m=ee(e-k,0,e);V.current>m&&Ce(m)}else Ce(0)},[we,Ce,e,k]);const ot=r.useRef({isScrollable:we,viewportSize:k,wheelSpeedMultiplier:te,overscrollBehavior:ne});r.useLayoutEffect(()=>{ot.current={isScrollable:we,viewportSize:k,wheelSpeedMultiplier:te,overscrollBehavior:ne}},[we,k,te,ne]);const Je=r.useCallback(m=>{if(Xr(m))return!1;const{isScrollable:M,viewportSize:H,wheelSpeedMultiplier:Y,overscrollBehavior:Z}=ot.current,Se=qr(m,H);if(Se.isZoomGesture)return!1;if(Se.isHorizontalDominant)return He.current?(lr(m),m.preventDefault(),xe(),He.current(Se.horizontalDelta),!0):!1;if(!M||Se.verticalDelta===0)return!1;let Q=Se.verticalDelta;if(Y!==1&&(Q*=Y),Z!=="contain"){const ge=V.current,Te=Math.max(Ne.current.contentSize-H,0);if(Q>0&&ge>=Te||Q<0&&ge<=0)return!1}return lr(m),m.preventDefault(),xe(),R.debug("[ScrollPane] wheel event",()=>({deltaY:Q,scrollPosition:V.current,wheelSpeedMultiplier:Y,deltaMode:m.deltaMode,scrollTop:U.current?.scrollTop})),Ce(ge=>ge+Q),!0},[Ce,xe]);r.useEffect(()=>{const m=Y=>{Je(Y)},M=()=>{xe()},H=S.current;return H&&(H.addEventListener("wheel",m,{passive:!1}),H.addEventListener("pointerdown",M,{capture:!0,passive:!0})),()=>{H&&(H.removeEventListener("wheel",m),H.removeEventListener("pointerdown",M,{capture:!0}))}},[Je,xe]),r.useImperativeHandle(de,()=>({scrollTo:(m,M)=>(xe(),Ce(m,M)),getScrollPosition:()=>V.current,getContentSize:()=>e,getViewportSize:()=>k,applyWheel:Je}),[Ce,e,k,xe,Je]);const y=r.useId(),dt=$?.id??y,re=r.useRef({pointerType:"",pointerId:null,startClientY:0,startScroll:0,isDragging:!1,shouldCancelNextClick:!1,clickResetTimer:null,velocitySamples:[],scale:1}),E=r.useRef(d),et=r.useRef(b);r.useEffect(()=>{E.current=d},[d]),r.useEffect(()=>{et.current=b},[b]);const je=r.useRef(we);r.useEffect(()=>{je.current=we},[we]);const at=r.useRef(Le);r.useEffect(()=>{at.current=Le},[Le]),r.useEffect(()=>{const m=re.current;if(d&&we&&(m.pointerId===null||$t(m.pointerType,b))||m.pointerId===null)return;const M=U.current;m.clickResetTimer!==null&&(window.clearTimeout(m.clickResetTimer),m.clickResetTimer=null);const H=m.isDragging&&m.shouldCancelNextClick,Y=m.pointerId;m.pointerId=null,m.pointerType="",m.startClientY=0,m.startScroll=0,m.isDragging=!1,m.shouldCancelNextClick=H,m.velocitySamples=[],m.scale=1,M?.hasPointerCapture(Y)&&M.releasePointerCapture(Y)},[d,b,we]),r.useEffect(()=>{const m=U.current;if(!m)return;const M=6,H=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now(),Y=()=>{const h=re.current;h.pointerId=null,h.pointerType="",h.startClientY=0,h.startScroll=0,h.isDragging=!1,h.velocitySamples=[],h.scale=1},Z=()=>{const h=re.current;h.clickResetTimer!==null&&(window.clearTimeout(h.clickResetTimer),h.clickResetTimer=null)},Se=h=>{const T=re.current,se=H();T.velocitySamples.push({clientY:h,time:se});const Ge=at.current.velocitySampleWindow;T.velocitySamples=T.velocitySamples.filter(Pe=>se-Pe.time<=Ge)},Q=h=>h instanceof HTMLElement&&h.closest("[data-scrollpane-ignore-drag='true']")!==null,ge=h=>{const T=re.current;T.shouldCancelNextClick&&(h.preventDefault(),h.stopPropagation(),T.shouldCancelNextClick=!1)},Te=h=>{const T=re.current;if(!T.isDragging){if(T.isDragging=!0,T.shouldCancelNextClick=!0,!m.hasPointerCapture(h.pointerId))try{m.setPointerCapture(h.pointerId)}catch{}Se(h.clientY)}},X=h=>h.isTrusted||h.target===m,Me=h=>{const T=re.current;m.hasPointerCapture(h)&&m.releasePointerCapture(h),T.shouldCancelNextClick=!1,Z(),Y()},ke=h=>{const T=re.current;if(T.pointerId!==h.pointerId)return;if(h.buttons===0&&$r(h.pointerType)){Me(h.pointerId);return}if(!(E.current&&je.current)||!$t(h.pointerType,et.current)||!T.isDragging&&(Math.abs(h.clientY-T.startClientY)<M||(Te(h),!T.isDragging)))return;Se(h.clientY);const se=(h.clientY-T.startClientY)/(T.scale||1),Ge=T.startScroll-se;he.current(Ge),h.cancelable&&h.preventDefault()},ue=()=>{const h=re.current;return h.pointerId!==null||!h.shouldCancelNextClick?!1:(Z(),h.clickResetTimer=window.setTimeout(()=>{const T=re.current;T.shouldCancelNextClick=!1,T.clickResetTimer=null},0),!0)},Re=h=>{const T=re.current;if(T.pointerId!==h.pointerId){ue();return}T.isDragging&&T.shouldCancelNextClick&&h.cancelable&&(h.preventDefault(),h.stopPropagation()),T.isDragging&&Se(h.clientY);let se=0;if(T.isDragging&&T.velocitySamples.length>=2){const Pe=T.velocitySamples,Rt=at.current.velocitySampleWindow,nt=Pe[Pe.length-1],Oe=Pe.find(mt=>nt.time-mt.time<=Rt)??Pe[0];if(nt&&Oe&&nt.time!==Oe.time){const mt=nt.clientY-Oe.clientY,St=nt.time-Oe.time;se=-(mt/St)/(T.scale||1)}}Z(),T.shouldCancelNextClick&&(T.clickResetTimer=window.setTimeout(()=>{const Pe=re.current;Pe.shouldCancelNextClick=!1,Pe.clickResetTimer=null},0));const Ge=at.current.startVelocityThreshold;Y(),m.hasPointerCapture(h.pointerId)&&m.releasePointerCapture(h.pointerId),Math.abs(se)>=Ge&&Xe.current?.(se)},We=h=>{if(re.current.pointerId!==null){if(!h.isPrimary||h.pointerType!==re.current.pointerType)return;Me(re.current.pointerId)}if(re.current.shouldCancelNextClick&&(Z(),re.current.shouldCancelNextClick=!1),!(E.current&&je.current)||!$t(h.pointerType,et.current)||h.button!==0&&h.pointerType==="mouse"||h.ctrlKey||h.metaKey||h.altKey||Q(h.target))return;window.dispatchEvent(new CustomEvent(Kt,{detail:{paneId:y}})),W.current?.();const T=re.current;Z(),T.pointerId=h.pointerId,T.pointerType=h.pointerType,T.startClientY=h.clientY,T.startScroll=V.current,T.scale=pr(m,"y"),T.isDragging=!1,T.shouldCancelNextClick=!1,T.velocitySamples=[]},Ve=h=>{if(re.current.pointerId!==h.pointerId){ue();return}X(h)&&Me(h.pointerId)},Ie=[["click",ge,!0],["pointerdown",We,{passive:!1}],["lostpointercapture",h=>{h.target!==m||re.current.pointerId!==h.pointerId||Me(h.pointerId)},void 0]],Ke=[["pointermove",ke,{passive:!1}],["pointerup",Re,void 0],["pointercancel",Ve,void 0]];return Ot(m,Ie,"add"),Ot(window,Ke,"add"),()=>{Ot(m,Ie,"remove"),Ot(window,Ke,"remove");const h=re.current;h.pointerId!==null&&m.hasPointerCapture(h.pointerId)&&m.releasePointerCapture(h.pointerId),Z(),Y()}},[y]);const ze=r.useCallback(m=>(xe(),Ce(m)),[Ce,xe]);return q.jsxs("div",{ref:S,"data-testid":N,"data-self-measured":ce?"true":void 0,className:Mt.twMerge("aqvs-scroll-pane",I),style:g,children:[q.jsxs("div",{ref:U,className:Mt.twMerge("aqvs-scroll-pane-content"),"data-testid":"aqvs-scroll-pane-content",style:{height:ce?void 0:k,paddingTop:qe.top,paddingBottom:qe.bottom,...d&&we&&b.some(m=>m==="touch"||m==="pen")?{touchAction:"none"}:{}},...$,id:dt,children:[D,n(V.current)]}),q.jsx(br,{contentSize:e,viewportSize:k,scrollPosition:V.current,onScroll:ze,enableThumbDrag:o,enableTrackClick:l,enableArrowButtons:p,scrollBarWidth:i,ariaControls:dt,tapScrollCircleOptions:j,itemCount:oe,renderThumbOverlay:ae,visibleStartIndex:_,visibleEndIndex:w},"scrollbar"),K?.()]})}),cr=(n,e,t)=>Math.min(Math.max(n,e),t),Ur=({dragState:n,normalizedDistance:e,sizeScale:t,size:s})=>{const i=Math.max(s/2,1),o=1+e*.65,l=Math.max(.65,1-e*.25),p=n.direction*e*26*t,d=.8+e*.18,b=3*t,x=6*t,I=22*t,N=Math.abs(p)+x,g=p>0?b:-Math.abs(p)-b,D=Math.max(2.5,3*t),j=cr(n.offsetX,-i,i),z=cr(n.offsetY,-i,i),oe=i*.35,ae=j/i*oe,te=z/i*oe,ne=ae*.45,le=te*.45,P=Math.max(I*.38,6),_=.65+e*.2,w=n.active;return q.jsxs(q.Fragment,{children:[q.jsx("div",{className:"aqvs-tap-scroll-circle-gradient",style:{transform:`scale(${l}, ${o})`,transition:w?"40ms transform ease-out":"200ms ease transform"}}),q.jsx("div",{className:"aqvs-sample-visual-pupil",style:{width:I,height:I,transform:`translate(calc(-50% + ${ae}px), calc(-50% + ${te}px)) scale(${l}, ${d*o})`,transition:w?"70ms transform ease-out":"200ms ease transform"}}),q.jsx("div",{className:"aqvs-sample-visual-highlight",style:{width:P,height:P,transform:`translate(calc(-50% + ${ne}px), calc(-50% + ${le}px)) scale(${l}, ${o})`,opacity:_,boxShadow:"0 0 8px rgba(255,255,255,0.45)",transition:w?"120ms opacity 150ms, 120ms transform ease-out ease-out":"220ms ease transform, 240ms opacity ease"}}),q.jsx("div",{className:"aqvs-sample-visual-rod",style:{width:D,height:N,transform:`translate(-50%, ${g}px)`,opacity:e,transition:w?"40ms height, 60ms opacity ease-out ease-out":"200ms ease height, 120ms ease opacity"}})]})},_t=100,Wr=n=>{if(!Number.isFinite(n))return 0n;const e=Math.trunc(n);return e<=0?0n:BigInt(e)},Ut=(n,e)=>{if(!Number.isFinite(n))throw new Error(`valueFn returned a non-finite value at index ${e}: ${n}`);return n},Tt=n=>{if(n<=0||!Number.isFinite(n))return 0;const e=Math.trunc(n);if(e<=2147483647)return e&-e;const t=BigInt(e)&-BigInt(e);return Number(t)};class ft{tree;deltas;size;baseValue;valueFn;total;constructor(e,t,s){this.reset(e,t,s)}reset(e,t,s){const i=Number.isFinite(e)&&e>0?Math.trunc(e):0;if(typeof t!="function"){this.size=i,this.tree=new Map,this.deltas=new Map,this.valueFn=void 0,this.baseValue=t,this.total=this.baseValue*this.size;return}let o=0,l;if(i>0){const p=s?.sampleRange??{from:0,to:Math.min(_t-1,i-1)};let d=Math.max(0,Math.trunc(p.from)),b=Math.min(Math.trunc(p.to),i-1);if(d>b&&(d=0,b=Math.min(_t-1,i-1)),i>_t)o=ft._sampleBaseValueStrided(t,i,_t),s?.materialize&&(l={from:d,values:ft._collectValidatedValues(t,d,b)});else{const x=ft._collectValidatedValues(t,d,b);o=ft._modeOrMedian([...x]),s?.materialize&&(l={from:d,values:x})}}if(this.size=i,this.tree=new Map,this.deltas=new Map,this.total=void 0,this.valueFn=t,this.baseValue=o,l)for(let p=0;p<l.values.length;p++){const d=l.from+p;if(d>=this.size)break;const b=l.values[p]-this.baseValue;b!==0&&(this.deltas.set(d,b),this._updateTree(d,b))}this.total=this.getTotal()}setValueFn(e,t){if(t?.reset){this.reset(this.size,e);return}typeof e=="function"?this.valueFn=e:(this.valueFn=void 0,this.baseValue=e,this.total=this._computeTreeTotal())}static _collectValidatedValues(e,t,s){const i=[];for(let o=t;o<=s;o++)i.push(Ut(e(o),o));return i}static _modeOrMedian(e){if(e.length===0)return 0;e.sort((l,p)=>l-p);const t=Math.floor(e.length/2);let s;e.length%2===0?s=Math.floor((e[t-1]+e[t])/2):s=e[t];const i=new Map;let o=0;for(const l of e){const p=(i.get(l)??0)+1;i.set(l,p),p>o&&(o=p)}if(o>e.length*.2){const l=[];for(const[d,b]of i.entries())b===o&&l.push(d);const p=l.reduce((d,b)=>d+b,0);s=Math.floor(p/l.length)}return s}static _sampleBaseValueStrided(e,t,s){if(t<=0)return 0;let i=Math.max(1,Math.ceil(t/s));i%2===0&&(i+=1);const o=[];for(let l=0;l<t&&o.length<s;l+=i)o.push(Ut(e(l),l));return ft._modeOrMedian(o)}update(e,t){return this.updates([{index:e,value:t}])}updates(e){const t=this._buildDeltaUpdates(e);return t.length>0?this.updateDeltas(t):this.total}updateDelta(e,t){return this.updateDeltas([{index:e,change:t}])}updateDeltas(e){const t=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=(t.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}`);t.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,t){if(t===0)return;let s=e+1;for(;s<=this.size;){this.tree.set(s,(this.tree.get(s)??0)+t);const i=Tt(s);if(i===0)break;s+=i}this.total!==void 0&&(this.total+=t)}_buildDeltaUpdates(e){const t=[],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.has(i)?s.get(i)??0:this.deltas.get(i)??0,p=l+this.baseValue,d=o-p;d!==0&&t.push({index:i,change:d}),s.set(i,l+d)}return t}_computeTreeTotal(){if(this.size<=0)return 0;let e=0,t=this.size;for(;t>0;){e+=this.tree.get(t)??0;const s=Tt(t);if(s===0)break;t-=s}return e+this.baseValue*this.size}_materialize(e,t=!0){if(this.valueFn){const s=this.deltas.get(e)??0,o=Ut(this.valueFn(e),e)-this.baseValue;if(o!==s&&(o===0?this.deltas.delete(e):this.deltas.set(e,o),t)){const l=o-s;this._updateTree(e,l)}}}_materializeRanges(e,t,s=!1){if(!(e?.materialize&&this.valueFn))return;const i=e.ranges;if(i&&i.length>0){for(const p of i){const d=Math.max(0,Math.trunc(p.from)),b=Math.min(Math.trunc(p.to),this.size-1);for(let x=d;x<=b;x++)this._materialize(x)}if(t===void 0)return;if(s){this._materialize(t);return}const o=i[0].from,l=i[i.length-1].to;t>=o&&t<=l&&this._materialize(t);return}t!==void 0&&this._materialize(t)}_findIndex(e,t={},s){if(this.size>=1073741824)return this._findIndexLarge(e,t,s);if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(t.materializeOption);const i=t.materializeOption?.materialize===!0;let o;for(;;){if(o=this._descend(e,s),o<0||o>=this.size)return{index:-1,total:this.total??this.getTotal(),cumulative:void 0,currentValue:void 0,safeIndex:void 0};if(!i)break;const p=this.deltas.get(o)??0;if(this._materialize(o),(this.deltas.get(o)??0)===p)break}const l=this.prefixSum(o);return{index:o,total:this.total??l.total,cumulative:l.cumulative,currentValue:l.currentValue,safeIndex:l.safeIndex}}_descend(e,t){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 d=(this.tree.get(l)??0)+this.baseValue*o;(t?i+d<e:i+d<=e)&&(s=l,i+=d)}}return t?s:s-1}_findIndexLarge(e,t,s){if(this.size===0)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};const i=Wr(this.size);if(i===0n)return{index:-1,total:this.total??0,cumulative:void 0,currentValue:void 0,safeIndex:void 0};this._materializeRanges(t.materializeOption);const o=t.materializeOption?.materialize===!0;for(;;){let l=0n,p=i-1n,d,b,x=this.total;for(;l<=p;){const g=l+p>>1n,D=Number(g),j=this.prefixSum(D);if(x=j.total,s?j.cumulative>=e:j.cumulative<=e)if(d=g,b=j,s){if(g===0n)break;p=g-1n}else l=g+1n;else if(s)l=g+1n;else{if(g===0n)break;p=g-1n}}const I=b,N=d!==void 0?Number(d):-1;if(o&&N>=0){const g=this.deltas.get(N)??0;if(this._materialize(N),(this.deltas.get(N)??0)!==g)continue}return{index:N,total:x,cumulative:I?.cumulative,currentValue:I?.currentValue,safeIndex:I?.safeIndex}}}prefixSum(e,t){if(e<0||Number.isNaN(e))return{cumulative:0,total:this.total,currentValue:0,safeIndex:0};if(this.size===0)return{cumulative:0,total:this.total??0,currentValue:0,safeIndex:0};const s=ee(Math.trunc(e),0,this.size-1),i=t?.materializeOption;this._materializeRanges(i,s,!0);let o=0,l=s+1;for(;l>0;){const d=this.tree.get(l)??0;o+=d;const b=Tt(l);if(b===0)break;l-=b}const p=i?.materialize?this.get(s):(this.deltas.get(s)||0)+this.baseValue;return{cumulative:o+this.baseValue*(s+1),total:this.total,currentValue:p,safeIndex:s}}get(e,t){if(this.size===0)return 0;if(!Number.isInteger(e)||e<0||e>=this.size)throw new Error("Index out of bounds");const s=t?.materializeOption;return this._materializeRanges(s,e),(this.deltas.get(e)??0)+this.baseValue}getTotal(e){const t=e?.materializeOption;if(this._materializeRanges(t),this.total===void 0)if(this.size===0)this.total=0;else{this.total=this._computeTreeTotal();const s=this.prefixSum(this.getSize()-1);s.cumulative!==s.total&&R.error("Inconsistent Fenwick Tree state")}return this.total}rebuildTree(e){if(e?.materialize&&this.valueFn){const s=this.valueFn;this.reset(this.size,i=>s(i),{materialize:!0});return}const t=new Map;for(const[s,i]of this.deltas.entries()){if(i===0)continue;let o=s+1;for(;o<=this.size;){t.set(o,(t.get(o)??0)+i);const l=Tt(o);if(l===0)break;o+=l}}this.tree=t,this.total=this._computeTreeTotal()}calculateAccumulatedError(){if(this.total===void 0)return 0;let e=this.baseValue*this.size;for(const[t,s]of this.deltas)t<this.size&&(e+=s);return this.total-e}changeSize(e){if(!Number.isFinite(e))throw new Error(`Size must be a finite number: ${e}`);const t=Math.max(0,Math.trunc(e)),s=this.size;if(t===s)return;if(t>s)if(s===0&&this.deltas.size>0){for(const o of this.deltas.keys())o>=t&&this.deltas.delete(o);this.size=t,this.rebuildTree()}else this._growSize(s,t);else{if(t>0)for(const o of this.deltas.keys())o>=t&&this.deltas.delete(o);this.size=t,this.rebuildTree()}const i=this.prefixSum(this.getSize()-1);i.cumulative!==i.total&&R.error("Inconsistent Fenwick Tree state")}static _minCoveredLowBound(e,t){let s=1;for(;;){const i=s*2;if(Math.floor(t/i)*i<=e)break;s=i}return s*Math.floor(e/s)}_propagateDeltaToGrownNodes(e,t,s,i){let o=e+1;for(;o<=s;){const l=Tt(o);if(l===0)break;o+=l}for(;o<=i;){this.tree.set(o,(this.tree.get(o)??0)+t);const l=Tt(o);if(l===0)break;o+=l}}_growSize(e,t){if(this.size=t,this.deltas.size>0){const s=ft._minCoveredLowBound(e,t);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,t)}else for(const[o,l]of this.deltas.entries())l===0||o<s||this._propagateDeltaToGrownNodes(o,l,e,t)}this.total=this._computeTreeTotal()}getSize(){return this.size}get base(){return this.baseValue}findIndexAtOrAfter(e,t){return this._findIndex(e,t??{},!0)}findIndexAtOrBefore(e,t){return this._findIndex(e,t??{},!1)}}const Kr=(n,e)=>{const t=n?.sampleRange,s=e?.sampleRange;return t===s?!1:t&&s?t.from!==s.from||t.to!==s.to:!0},vr=(n,e,t)=>{const s=Number.isFinite(n)&&n>0?Math.trunc(n):0,i=r.useRef(null),o=r.useRef({size:s,valueOrFn:e,options:t});i.current===null&&(i.current=new ft(s,e,t));const l=i.current,p=o.current,d=p.size!==s,b=p.valueOrFn!==e,x=Kr(p.options,t),I=p.size===0&&s>0&&(!i.current||i.current.base===0);if(b||x){const N=t?.resetOnValueFnChange??!0;x||b&&N||I?(t?.debug&&R.debug("[useFenwickMapTree] reset",{valueOrFnChanged:b,optionsChanged:x}),l.reset(s,e,t)):(d&&(t?.debug&&R.debug("[useFenwickMapTree] resize (with valueFn change)",{from:p.size,to:s}),l.changeSize(s)),t?.debug&&R.debug("[useFenwickMapTree] setValueFn (no reset)",{valueOrFnChanged:b}),l.setValueFn(e,{reset:!1})),o.current={size:s,valueOrFn:e,options:t}}else d&&(t?.debug&&R.debug("[useFenwickMapTree] resize",{from:p.size,to:s}),I?l.reset(s,e,t):l.changeSize(s),o.current={size:s,valueOrFn:e,options:t});return l};class Gr{key;value;prev=null;next=null;constructor(e,t){this.key=e,this.value=t}}class Wt{head=null;tail=null;addToTail(e){this.tail?(this.tail.next=e,e.prev=this.tail,this.tail=e):this.head=this.tail=e}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=null,e.next=null}removeHead(){const e=this.head;return e&&this.remove(e),e}moveToTail(e){this.remove(e),this.addToTail(e)}}function Ir(n){const e=r.useRef(new Map),t=r.useRef(new Wt),s=Math.floor(n),i=r.useRef(s);r.useEffect(()=>{if(i.current=s,Number.isNaN(s)||s<0){R.warn(`useLruCache: invalid capacity ${n}; the cache will not store any entries.`),e.current.clear(),t.current=new Wt;return}if(Number.isFinite(s))for(;e.current.size>s;){const x=t.current.removeHead();if(x)e.current.delete(x.key);else break}},[n,s]);const o=r.useCallback(x=>{const I=e.current.get(x);if(I)return t.current.moveToTail(I),I.value},[]),l=r.useCallback((x,I)=>{const N=i.current;if(Number.isNaN(N)||N<=0)return;let g=e.current.get(x);if(g)g.value=I,t.current.moveToTail(g);else{if(e.current.size>=N){const D=t.current.removeHead();D&&e.current.delete(D.key)}g=new Gr(x,I),e.current.set(x,g),t.current.addToTail(g)}},[]),p=r.useCallback(x=>e.current.has(x),[]),d=r.useCallback(x=>{const I=e.current.get(x);I&&(t.current.remove(I),e.current.delete(x))},[]),b=r.useCallback(()=>{e.current.clear(),t.current=new Wt},[]);return r.useMemo(()=>({get:o,set:l,has:p,remove:d,clear:b}),[o,l,p,d,b])}const Zr=1e4,Qr=()=>{const{get:n,set:e,has:t,clear:s}=Ir(Zr);return r.useMemo(()=>({get:n,set:e,has:t,clear:s}),[n,e,t,s])},Jr=(n,e)=>{const t=r.useRef(e),s=r.useRef(n);r.useLayoutEffect(()=>{t.current=e,s.current=n},[e,n]);const i=r.useRef(new WeakMap);return r.useCallback(o=>{if(!o||i.current.has(o))return;const l=p=>{t.current?.enableBridge!==!1&&s.current.current?.applyWheel(p)};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))}},[])},be=(n,e)=>e<=0?0:ee(n,0,e-1),ur=n=>({top:Math.max(0,n?.top??0),bottom:Math.max(0,n?.bottom??0)}),$e=(n,e)=>n<=e?0:n-e,xt=(n,e)=>n<=0?0:n+e,Ft=1e3,fr=2e3,en=1048576,tn=40,zt=n=>{if(!Number.isFinite(n))return 0n;const e=Math.trunc(n);return e<=0?0n:BigInt(e)},rn=(n,e,t,s,i,o,l,p)=>{const d=zt(s);if(d===0n)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const b=P=>P<0n?0n:P>=d?d-1n:P,x={materializeOption:{materialize:!1}},{index:I,cumulative:N}=o.findIndexAtOrAfter(n,x);let g;I===-1?g=d-1n:(N===n?g=zt(I+1):g=zt(I),g>=d&&(g=d-1n)),n<=0&&(g=0n),p&&n>=l&&(g=d-1n);const D=P=>{const _=Number(P);if(!Number.isSafeInteger(_))return null;const{cumulative:w}=o.prefixSum(_,{materializeOption:{materialize:!1}});if(!Number.isFinite(w))return null;const{index:K}=o.findIndexAtOrAfter(w+.5,{materializeOption:{materialize:!1}});if(K===-1)return null;const G=zt(K);return G>P?G:null},j=P=>{let _=0,w=P,K=P,G=0n,$=0;for(;w<d&&_<e;){const de=Number(w),V=i(de);if(_+=V,K=w,w+=1n,G+=1n,!Number.isFinite(V)||V<0)break;if(V===0){if($+=1,$>Ft){const S=D(K);if(S!==null&&S>w)w=S,$=0;else if(S!==null&&S===w&&i(Number(w))>0)$=0;else break}}else $=0}return G===0n&&(K=P),{height:_,end:K}};let{height:z,end:oe}=j(g);if(z<e&&g>0n){let P=g,_=z,w=0;for(;P>0n&&_<e;){P-=1n;const G=Number(P),$=i(G);if(_+=$,!Number.isFinite($)||$<0)break;if($===0){if(w+=1,w>Ft){const de=Number(P);if(!Number.isSafeInteger(de))break;const{cumulative:V}=o.prefixSum(de,{materializeOption:{materialize:!1}});if(!Number.isFinite(V))break;const{index:S}=o.findIndexAtOrAfter(V-.5,{materializeOption:{materialize:!1}}),U=S===-1?-1n:zt(S);if(U>=0n&&U<P)P=U+1n,w=0;else if(U===P&&P>=1n&&i(Number(P-1n))>0)w=0;else break}}else w=0}g=b(P);const K=j(g);z=K.height,oe=K.end}const ae=b(g),te=b(oe),ne=b(ae-BigInt(Math.max(0,t))),le=b(te+BigInt(Math.max(0,t)));return{renderingStartIndex:be(Number(ne),s),renderingEndIndex:be(Number(le),s),visibleStartIndex:be(Number(ae),s),visibleEndIndex:be(Number(te),s)}},nn=(n,e,t,s,i,o,l)=>{if(s===0)return{renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0};const p=Number.isFinite(l),d=p?Math.min(Math.max(0,n),l):Math.max(0,n);if(s>=Number.MAX_SAFE_INTEGER)return rn(d,e,t,s,i,o,l,p);const{index:b,cumulative:x,currentValue:I}=o.findIndexAtOrAfter(d,{materializeOption:{materialize:!1}}),N=b===-1?e<=0||(x??0)<d+(I??0)?s-1:0:b;let g=be(N,s),D=0;if(b!==-1&&x===d)g=be(b+1,s),D=0;else if(g===b&&x!==void 0&&I!==void 0)D=x-I-d;else{const{cumulative:P,currentValue:_}=o.prefixSum(g,{materializeOption:{materialize:!1}});D=(P??0)-(_??0)-d}const j=D,z=(P,_)=>{let w=P,K=_,G=0;for(;w<s&&K<e;){const $=i(w);if(K+=$,w++,!Number.isFinite($)||$<0)break;if($===0){if(G++,G>Ft){const{cumulative:de}=o.prefixSum(w-1,{materializeOption:{materialize:!1}}),{index:V}=Number.isFinite(de)?o.findIndexAtOrAfter(de+.5,{materializeOption:{materialize:!1}}):{index:-1};if(V>w)w=V,G=0;else if(V===w&&i(w)>0)G=0;else break}}else G=0}return{cursor:w,height:K}},oe=z(g,D);let ae=oe.cursor;if(D=oe.height,D<e&&g>0){let P=D+Math.abs(Math.min(0,j)),_=g-1,w=0;for(;_>=0&&P<e;){const G=i(_);if(P+=G,!Number.isFinite(G)||G<0){_--;break}if(G===0){if(w++,w>Ft){const{cumulative:$}=o.prefixSum(_,{materializeOption:{materialize:!1}}),{index:de}=Number.isFinite($)?o.findIndexAtOrAfter($-.5,{materializeOption:{materialize:!1}}):{index:-1};if(de!==-1&&de<_){_=de,w=0;continue}if(de===_&&_>=1&&i(_-1)>0)w=0;else{_--;break}}}else w=0;_--}g=be(_+1,s);const K=z(g,0);ae=K.cursor,D=K.height}const te=be(g-t,s),ne=be(Math.max(ae-1,g),s),le=be(ne+t,s);return{renderingStartIndex:te,renderingEndIndex:le,visibleStartIndex:g,visibleEndIndex:ne}},dr=(n,e,t)=>{const s=Math.max(0,e??0),i=r.useRef({last:0,id:null,arg:null}).current;return r.useEffect(()=>()=>{if(i.id!==null&&(cancelAnimationFrame(i.id),i.id=null),i.arg!==null&&n.current){try{t(n.current,i.arg)}catch(o){console.error("[useThrottledInvoker] Error flushing pending callback on unmount",o)}i.arg=null}},[i,n,t]),r.useCallback(o=>{if(i.arg=o,i.id!==null)return;const l=p=>{if(i.id=null,i.arg===null)return;const d=p-i.last;if(s===0||i.last===0||d>=s){if(n.current)try{t(n.current,i.arg)}catch(b){console.error("[useThrottledInvoker] Error invoking callback",b)}i.arg=null,i.last=p}i.arg!==null&&(i.id=requestAnimationFrame(l))};i.id=requestAnimationFrame(l)},[s,t,n,i])},sn=r.memo(({index:n,top:e,height:t,item:s,children:i,clipItemHeight:o,enableKeyboardNavigation:l,onKeyDown:p,onEscapeKeyDown:d,onFocus:b,registerItemRef:x})=>{const I=r.useCallback(z=>x(n,z),[n,x]),N=r.useCallback(z=>p(z,n),[n,p]),g=r.useCallback(z=>d?.(z,n),[n,d]),D=r.useCallback(()=>b(n),[n,b]),j=r.useCallback(z=>{z.currentTarget.focus({preventScroll:!0})},[]);return q.jsx("div",{ref:I,"data-index":n,"data-virtualscroll-item":"true",className:"aqvs-item-container",style:{top:e,height:t,overflow:o?"hidden":void 0},tabIndex:l?-1:void 0,onPointerDown:l?j:void 0,onKeyDownCapture:l?N:void 0,onKeyDown:l&&d?g:void 0,onFocusCapture:l?D:void 0,children:i(s,n)})}),on=({itemCount:n,getItem:e,getItemKey:t,getItemHeight:s,viewportSize:i,overscanCount:o=15,className:l,testId:p,onScroll:d,onRangeChange:b,children:x,background:I,initialScrollIndex:N,initialScrollOffset:g,initialScrollAnchor:D,callbackThrottleMs:j=5,contentInsets:z,onItemFocus:oe,scrollBarOptions:ae,behaviorOptions:te,onWheelHorizontal:ne,horizontalKeyInputs:le,horizontalKeyStep:P=tn,contentProps:_,liveRegion:w},K)=>{const{width:G,enableThumbDrag:$,enableTrackClick:de,enableArrowButtons:V,enableScrollToTopBottomButtons:S,renderThumbOverlay:U,tapScrollCircleOptions:ce}=ae??{},{enablePointerDrag:Ye,pointerDragInputs:Be,enableKeyboardNavigation:k=!0,enableEscapeRowReturn:Ae=!1,wheelSpeedMultiplier:He,inertiaOptions:Ee,overscrollBehavior:Le,clipItemHeight:qe=!1,resetOnGetItemHeightChange:Ne=!1}=te??{},[we,Ce]=r.useState(0),he=i??we,xe=r.useCallback(a=>{Ce(u=>u===a?u:a)},[]),W=r.useRef(null),Ue=r.useRef({renderingStartIndex:0,renderingEndIndex:0,visibleStartIndex:0,visibleEndIndex:0,scrollPosition:0,totalHeight:0}),Xe=r.useRef(D&&n>0?{index:ee(Math.trunc(D.index),0,n-1),align:"top",offset:-Math.max(0,D.offsetPx??0)}:null),ot=r.useRef(!1),Je=r.useRef(!0);r.useEffect(()=>{if(Je.current){Je.current=!1;return}Ne&&(Xe.current=null)},[Ne,s]);const y=r.useMemo(()=>ur(z),[z]),[dt]=r.useState(()=>{const u=D?.index??N,f=typeof u=="number"&&Number.isFinite(u)?Math.max(0,Math.trunc(u)):0;return{from:Math.max(0,f-50),to:f+50}}),re=r.useMemo(()=>({sampleRange:dt,resetOnValueFnChange:Ne,materialize:!0}),[Ne,dt]),E=vr(n,s,re),[et]=r.useState(()=>{let a=0,u=0;if(D&&n>0){const f=ee(Math.trunc(D.index),0,n-1),A=Math.max(0,D.offsetPx??0),L=ee(f-o*2,0,n-1),O=ee(f+o*2,0,n-1),F=f>0||A>0?{materializeOption:{materialize:!0,ranges:[{from:L,to:O}]}}:void 0,{cumulative:J,total:ve,currentValue:fe}=E.prefixSum(f,F),ie=Math.max(J-fe+A,0);a=xt(ie,y.top),u=ve??E.getTotal()}else if(typeof N=="number"){const f=ee(N,0,n-1),A=ee(f-o*2,0,n-1),L=ee(f+o*2,0,n-1),O=N>0?{materializeOption:{materialize:!0,ranges:[{from:A,to:L}]}}:void 0,{cumulative:F,total:J,currentValue:ve}=E.prefixSum(N,O),fe=Math.max(F-ve,0);a=xt(fe,y.top),u=J??E.getTotal()}else typeof g=="number"&&(a=xt(Math.max(g,0),y.top)),u=E.getTotal();return{position:a,total:u}}),[je,at]=r.useState(et.position),[ze,m]=r.useState(et.total),M=r.useRef(et.position),H=r.useRef(y.top),Y=r.useRef(d??void 0),Z=r.useRef(b??void 0),Se=r.useRef(ne),Q=(le?.length??0)>0,ge=!!ne;r.useEffect(()=>{Q&&(k||R.warn("[VirtualScroll] horizontalKeyInputs is set but behaviorOptions.enableKeyboardNavigation is false; horizontal keyboard scrolling is disabled because the row key handler is not mounted."),ge||R.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(P)&&P>0||R.warn(`[VirtualScroll] horizontalKeyStep must be a finite positive number, received ${P}. Horizontal arrow keys are left untouched.`))},[Q,ge,k,P]);const Te=r.useRef(new Map),X=r.useRef(null),Me=r.useRef(null),[ke,ue]=r.useState(null),[Re,We]=r.useState(!1),Ve=r.useRef(null),tt=r.useRef(!1),Ie=r.useRef(0),Ke=r.useRef(!1),h=r.useRef(!1),T=r.useRef(n);T.current!==n&&(T.current=n,h.current=!0),r.useLayoutEffect(()=>{Y.current=d??void 0,Z.current=b??void 0,Se.current=ne},[b,d,ne]);const se=r.useCallback(a=>{if(k&&a&&typeof a.focus=="function")try{a.focus({preventScroll:!0})}catch{a.focus()}},[k]),Ge=r.useCallback((a,{position:u,totalHeight:f})=>{a(u,f)},[]),Pe=dr(Y,j,Ge),Rt=r.useCallback((a,u)=>{a(u)},[]),nt=dr(Z,j,Rt),Oe=r.useRef(y.top);Oe.current=y.top;const mt=r.useRef(Pe);mt.current=Pe,r.useEffect(()=>(ot.current=!1,()=>{ot.current=!0,Ve.current&&(clearTimeout(Ve.current),Ve.current=null)}),[]),r.useEffect(()=>{k||(Te.current.clear(),X.current=null,Me.current=null)},[k]);const St=r.useCallback((a,u)=>{if(!u){Te.current.delete(a);return}k&&(Te.current.set(a,u),X.current===a&&(X.current=null,Me.current=a,se(u)))},[k,se]),Vt=.01,st=r.useRef({rafId:null,loopActive:!1,idleFrames:0,lastRenderedPosition:et.position}),vt=r.useCallback(()=>{const a=st.current;a.rafId!==null&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(a.rafId),a.rafId=null,a.loopActive=!1,a.idleFrames=0},[]);r.useEffect(()=>()=>{vt()},[vt]);const Dt=r.useRef(()=>{}),Pt=r.useCallback(()=>{const a=st.current;a.rafId=null;const u=M.current,f=$e(u,Oe.current),A=E.getTotal();if(at(O=>Math.abs(O-u)<Vt?O:u),Math.abs(a.lastRenderedPosition-u)>=Vt?(mt.current({position:f,totalHeight:A}),a.lastRenderedPosition=u,a.idleFrames=0):a.idleFrames+=1,a.idleFrames>=2){vt();return}if(typeof requestAnimationFrame=="function"){a.rafId=requestAnimationFrame(O=>Dt.current(O));return}a.loopActive=!1},[E,vt]);Dt.current=Pt;const At=r.useCallback(()=>{const a=st.current;if(a.idleFrames=0,!a.loopActive){if(a.loopActive=!0,typeof requestAnimationFrame=="function"){a.rafId=requestAnimationFrame(Pt);return}a.loopActive=!1}},[Pt]),me=r.useCallback((a,u)=>{const f=u?.immediate??!1,A=$e(a,y.top);if(M.current=a,f){st.current.lastRenderedPosition=a,st.current.idleFrames=0,at(a),Pe({position:A,totalHeight:E.getTotal()});return}At()},[At,E,y.top,Pe]),pt=r.useCallback((a,u=0)=>{const f=W.current;if(!f)return a;const A=f.getScrollPosition();Ie.current+=1;const L=f.getContentSize()+u,O=f.getViewportSize(),F=f.scrollTo(a,{contentSize:L,viewportSize:O});return F===A&&(Ie.current=Math.max(0,Ie.current-1)),Math.abs(F-a)>.5&&(Ke.current=!0),F},[]),yt=r.useRef(!1);r.useEffect(()=>{if(!yt.current)if(yt.current=!0,D==null&&typeof N!="number"&&typeof g=="number"){const a=xt(Math.max(g,0),y.top),u=Math.abs(a-M.current)>.5;me(a,{immediate:!0}),u&&W.current?.scrollTo(a)}else me(M.current,{immediate:!0})},[D,N,g,y.top,me]),r.useEffect(()=>{const a=E.getTotal();if(ze!==a){m(a);return}if(Ke.current){Ke.current=!1;const u=W.current;if(u&&Math.abs(u.getScrollPosition()-M.current)>.5){const f=pt(M.current);Ke.current=!1,me(f,{immediate:!0})}}},[E,ze,n,pt,me]),r.useEffect(()=>{if(Xe.current!==null){const{index:a,align:u,offset:f}=Xe.current,A=be(a,n),{cumulative:L,currentValue:O}=E.prefixSum(A,{materializeOption:{materialize:!1}});if(L!==void 0&&O!==void 0){const F=Math.max(L-O,0);let J=F;u==="bottom"?J=L-he:u==="center"&&(J=F+O/2-he/2),f&&(J-=f),J=Math.max(0,J);const ve=Math.max(0,ze+y.top+y.bottom-he),fe=Math.min(xt(J,y.top),ve);Math.abs(fe-M.current)>1&&(R.debug("[VirtualScroll] Drift correction",{from:M.current,to:fe,targetIndex:A}),Ie.current===0&&(Ie.current+=1),W.current?.scrollTo(fe),me(fe,{immediate:!0}))}}h.current=!1},[ze,E,n,y.top,me,he,y.bottom]),r.useEffect(()=>{const a=H.current;if(a===y.top||(H.current=y.top,Xe.current))return;const u=$e(M.current,a),f=xt(u,y.top);M.current=f,W.current?.scrollTo(f),me(f,{immediate:!0})},[y.top,me]);const Et=r.useCallback((a,u)=>{if(n===0)return;const f=be(a,n),A=E.get(f),L=u-A,O=E.update(f,u);O!==void 0&&m(O),R.debug("[VirtualScroll] Updated item size manually",{index:f,size:u,total:O});let F=Xe.current?Xe.current.index:null;if(F===null){const J=M.current,ve=ur(z).top,fe=$e(J,ve),{index:ie,cumulative:_e}=E.findIndexAtOrAfter(fe,{materializeOption:{materialize:!1}});F=_e!==void 0&&_e===fe?ie+1:ie}if(F!==-1&&f<F&&L!==0){const J=M.current,ve=J+L;pt(ve,L),me(ve,{immediate:!0}),R.debug("[VirtualScroll] Adjusted scroll for layout shift (manual update)",{from:J,to:ve,causedByIndex:f,delta:L,activeVisibleStartIndex:F})}},[E,n,pt,me,z]),c=r.useCallback((a,u)=>{if(!W.current||n===0)return;const f=be(a,n),A=be(f-o*2,n),L=be(f+o*2,n),{cumulative:O,total:F,currentValue:J}=E.prefixSum(f,{materializeOption:{materialize:!0,ranges:[{from:A,to:L}]}});if(R.debug("[VirtualScroll] Scrolling to index:",f,"ItemBottom:",O,"Total height:",F,"ItemHeight:",J,"safeIndexFrom:",A,"safeIndexTo:",L),!F)return;const ve=Math.max(O-J,0);let fe=ve;u?.align==="bottom"?fe=O-he:u?.align==="center"&&(fe=ve+J/2-he/2),u?.offset&&(fe-=u.offset),fe=Math.max(0,fe);const ie=xt(fe,y.top),_e=W.current?.getContentSize()??F+y.top+y.bottom,De=Math.max(0,_e-he),Fe=Math.min(ie,De);Xe.current={index:f,align:u?.align,offset:u?.offset};const kt=W.current?.getScrollPosition()??-1,qt=Math.abs(kt-Fe)>.5;tt.current=!1,Ie.current=0,qt&&(tt.current=!0,Ie.current+=1,W.current?.scrollTo(Fe)),m(F),me(Fe,{immediate:!0}),R.debug("[VirtualScroll] Setting scroll position to:",Fe,{original:ie,max:De})},[E,o,n,y.top,y.bottom,he,me]),v=r.useRef(D&&n===0?D:null);r.useEffect(()=>{const a=v.current;!a||n===0||(v.current=null,c(ee(Math.trunc(a.index),0,n-1),{align:"top",offset:-Math.max(0,a.offsetPx??0)}))},[n,c]);const C=r.useCallback(a=>{if(!W.current||n===0)return;const u=E.getTotal(),f=ee(Math.floor(a),0,u),{index:A,cumulative:L,currentValue:O}=E.findIndexAtOrAfter(f,{materializeOption:{materialize:!1}}),J=(L??0)-(O??0)-f;c(A,{offset:J})},[E,n,c]),B=r.useCallback(()=>{if(n===0)return null;const a=$e(M.current,y.top),{index:u,cumulative:f,currentValue:A}=E.findIndexAtOrAfter(a,{materializeOption:{materialize:!1}});if(u===-1)return{index:n-1,offsetPx:0};if(f===a)return{index:ee(u+1,0,n-1),offsetPx:0};const L=(f??0)-(A??0);return{index:u,offsetPx:Math.max(0,a-L)}},[E,n,y.top]),pe=r.useCallback(a=>{const u=$e(M.current,y.top),f=typeof a=="function"?a(u):a;C(f);const A=W.current?.getScrollPosition(),L=typeof A=="number"?A:M.current;return me(L),$e(L,Oe.current)},[y.top,C,me]),ye=r.useCallback(a=>{const u=W.current;if(!u)return $e(M.current,Oe.current);const f=u.scrollTo(A=>A+a);return $e(f,Oe.current)},[]),Ze=r.useCallback(a=>W.current?.applyWheel(a)??!1,[]),Qe=r.useCallback((a,u)=>{R.debug("[VirtualScroll] Scroll position changed:",a);const f=tt.current;f&&(tt.current=!1);const A=Ie.current>0;A&&(Ie.current=0);const L=h.current&&T.current===n;if(f||A||L||(Xe.current=null),me(a),S){if(f||A)return;const O=a-u;if(R.debug("[VirtualScroll] Scroll diff:",O,"New:",a,"Prev:",u),Math.abs(O)>1){const F=O>0?"down":"up";ue(F),We(!0),R.debug("[VirtualScroll] Showing scroll buttons. Direction:",F),Ve.current&&clearTimeout(Ve.current),Ve.current=setTimeout(()=>{We(!1),R.debug("[VirtualScroll] Hiding scroll buttons")},2e3)}}},[me,S,n]),lt=r.useMemo(()=>$e(je,y.top),[y.top,je]),rt=r.useMemo(()=>{const a=E.getTotal(),u=nn(lt,he,o,n,s,E,a);return R.debug("[VirtualScroll] Calculated rendering range:",()=>({...u,scrollPosition:lt,renderingContentSize:a,overscanCount:o,viewportSize:he})),u},[lt,he,o,n,s,E]),{renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It}=rt,ut=r.useCallback((a,u)=>{if(!k||n===0)return;const f=be(a,n);if(!(u?.ensureVisible??!0)){const De=Te.current.get(f);De&&(X.current=null,Me.current=f,se(De));return}const L=E.prefixSum(f,{materializeOption:{materialize:!1}}),O=L.currentValue,F=Math.max(L.cumulative-O,0),J=F+O,ve=$e(M.current,y.top),fe=ve+he;if(F<ve||J>fe){c(f);const De=Te.current.get(f);De?(X.current=null,Me.current=f,se(De)):X.current=f;return}const _e=Te.current.get(f);if(_e){X.current=null,Me.current=f,se(_e);return}X.current=f},[k,n,E,y.top,c,se,he]),Zt=r.useCallback((a,u)=>{if(!(!k||a.defaultPrevented)&&!(a.altKey||a.metaKey||a.ctrlKey)&&a.target===a.currentTarget&&!a.currentTarget.isContentEditable){if(a.key==="ArrowLeft"||a.key==="ArrowRight"){const f=Se.current;if(!f||a.shiftKey||!le?.includes("arrow")||!(Number.isFinite(P)&&P>0))return;a.preventDefault(),f(a.key==="ArrowLeft"?-P:P);return}if(a.key==="ArrowDown"){u<n-1&&(a.preventDefault(),ut(u+1));return}if(a.key==="ArrowUp"){u>0&&(a.preventDefault(),ut(u-1));return}if(a.key==="PageDown"){if(u<n-1){a.preventDefault();const{visibleStartIndex:f,visibleEndIndex:A}=Ue.current,L=Math.max(A-f+1,1),O=Math.max(L,1),F=be(Math.min(u+O,n-1),n);ut(F)}return}if(a.key==="PageUp"&&u>0){a.preventDefault();const{visibleStartIndex:f,visibleEndIndex:A}=Ue.current,L=Math.max(A-f+1,1),O=Math.max(L,1),F=be(u-O,n);ut(F)}}},[k,n,ut,le,P]),Qt=r.useCallback((a,u)=>{if(a.key!=="Escape"||a.defaultPrevented||a.nativeEvent.isComposing||a.target===a.currentTarget)return;const f=a.target;f instanceof HTMLInputElement||f instanceof HTMLTextAreaElement||f instanceof HTMLSelectElement||f.isContentEditable||(a.preventDefault(),ut(u))},[ut]),Jt=r.useCallback(a=>{if(!k)return;const u=be(a,n);X.current=null,Me.current=u,oe?.(u)},[k,n,oe]);r.useEffect(()=>{const a=W.current?.getScrollPosition()??0,u=M.current,f=$e(u,y.top);R.debug("[VirtualScroll] Range change effect triggered",()=>({renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It,scrollPositionState:je,paneScrollPosition:u,logicalScrollPosition:f,contentSize:ze,scrollPaneScrollPosition:a})),nt({renderingStartIndex:ct,renderingEndIndex:bt,visibleStartIndex:ht,visibleEndIndex:It,scrollPosition:f,totalHeight:ze})},[ze,bt,ct,y.top,nt,je,It,ht]);const wr=r.useCallback(()=>{if(!S)return null;const a=Re&&ke!==null,u=ke==="up";return q.jsx("div",{className:"aqvs-scroll-to-edge-overlay","data-visible":a,inert:!a,children:u?q.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-top",children:q.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:a?0:-1,onClick:f=>{f.stopPropagation(),tt.current=!0,c(0),We(!1)},children:"Top"})}):q.jsx("div",{className:"aqvs-scroll-to-edge-button-container aqvs-scroll-to-edge-button-container-bottom",children:q.jsx("button",{type:"button",className:"aqvs-scroll-to-edge-button",tabIndex:a?0:-1,onClick:f=>{f.stopPropagation(),tt.current=!0,c(n-1),We(!1)},children:"Bottom"})})})},[S,Re,ke,c,n]),Yt=r.useRef(0),{visibleItems:Bt,renderAnchor:Ht}=r.useMemo(()=>{if(n===0)return{visibleItems:q.jsx("div",{className:"aqvs-no-items-container",children:q.jsx("div",{className:"aqvs-no-items-text",children:"No items"})}),renderAnchor:0};const a=be(ct,n),u=be(bt,n),{cumulative:f,currentValue:A}=E.prefixSum(a,{materializeOption:{materialize:!1}}),L=f-A;Number.isFinite(L)&&Math.abs(L-Yt.current)>en&&(Yt.current=L);const O=Yt.current,F=[],J=[];let ve=0,fe=L;for(let ie=a;ie<=u;ie++){if(J.length>=fr){R.warn("[VirtualScroll] Rendered item count reached the safety cap; truncating render window.",{cap:fr,safeRenderingStartIndex:a,safeRenderingEndIndex:u});break}const _e=s(ie),De=E.get(ie),Fe=_e-De;Fe!==0&&F.push({index:ie,value:_e});const kt=fe+ve,qt=t?t(ie):ie;J.push(q.jsx(sn,{index:ie,top:kt-O,height:_e,item:e(ie),clipItemHeight:qe,enableKeyboardNavigation:k,onKeyDown:Zt,onEscapeKeyDown:Ae?Qt:void 0,onFocus:Jt,registerItemRef:St,children:x},qt)),ve+=Fe,fe+=De}return F.length>0&&Promise.resolve().then(()=>{if(ot.current)return;let ie=0;for(const Fe of F)if(Fe.index<ht){const kt=E.get(Fe.index);ie+=Fe.value-kt}const _e=E.updates(F);if(ot.current||typeof _e!="number")return;m(_e),R.debug("[VirtualScroll] Updated heights for items",F,"New total height:",_e);const De=W.current?.getScrollPosition()??M.current;if(ie!==0){const Fe=De+ie;pt(Fe,ie),me(Fe,{immediate:!0}),R.debug("[VirtualScroll] Adjusted scroll for layout shift (auto update)",{from:De,to:Fe,shiftAmount:ie})}else De!==M.current&&me(De)}),{visibleItems:J,renderAnchor:O}},[x,qe,ze,k,n,E,e,t,s,Jt,Zt,Ae,Qt,pt,St,bt,ct,me,ht]),Tr=r.useCallback(a=>{const u=(j??0)>0,f=Math.abs(a-je),A=u&&f>.5?je:a,L=$e(A,y.top);if(R.debug("[VirtualScroll] Rendering visible items",()=>({currentScrollPosition:a,effectiveScrollPosition:L,renderingStartIndex:ct,renderingEndIndex:bt,itemCount:n,viewportSize:he,callbackThrottleMs:j,diff:f,rawEffectiveScrollPosition:A})),n===0)return Bt;const O=y.top+Ht-A,F=y.bottom>0?q.jsx("div",{className:"aqvs-bottom-inset",style:{top:E.getTotal()-Ht,height:y.bottom}},"virtualscroll-bottom-inset"):null;return R.debug("[VirtualScroll] Rendering items",()=>({containerTop:O,logicalScrollPosition:lt,resolvedInsets:y,effectiveScrollPosition:L})),q.jsxs("div",{className:"aqvs-items-wrapper",style:{top:0,transform:`translateY(${O}px)`,willChange:"transform"},children:[Bt,F]})},[j,n,E,lt,Ht,bt,ct,y,je,he,Bt]),er=r.useMemo(()=>({renderingStartIndex:rt.renderingStartIndex,renderingEndIndex:rt.renderingEndIndex,visibleStartIndex:rt.visibleStartIndex,visibleEndIndex:rt.visibleEndIndex,scrollPosition:lt,totalHeight:E.getTotal()}),[rt,lt,E,ze]);r.useEffect(()=>{Ue.current=er},[er]);const[Mr,tr]=r.useState(""),rr=r.useRef(w);r.useLayoutEffect(()=>{rr.current=w},[w]);const wt=w?.debounceMs??400,Lt=Number.isFinite(wt)&&wt>=0,Ct=w!==void 0;r.useEffect(()=>{Ct&&!Lt&&R.warn(`[VirtualScroll] liveRegion.debounceMs must be a finite number >= 0, received ${wt}. Announcements are disabled.`)},[Ct,Lt,wt]),r.useEffect(()=>{if(!(Ct&&Lt)){tr("");return}const a=setTimeout(()=>{const u=rr.current?.format;if(!u)return;const f=u({visibleStartIndex:ht,visibleEndIndex:It,itemCount:n});tr(f)},wt);return()=>clearTimeout(a)},[Ct,Lt,wt,ht,It,n]),r.useImperativeHandle(K,()=>({getScrollPosition:()=>{const a=W.current?.getScrollPosition();return typeof a=="number"?$e(a,Oe.current):-1},getContentSize:()=>W.current?.getContentSize()??-1,getViewportSize:()=>W.current?.getViewportSize()??-1,scrollTo:pe,scrollBy:ye,applyWheel:Ze,scrollToIndex:c,getFenwickTreeTotalHeight:()=>E.getTotal(),getFenwickSize:()=>E.getSize(),focusItemAtIndex:ut,getRange:()=>Ue.current,getScrollAnchor:B,updateItemSize:Et}),[pe,ye,Ze,c,E,ut,B,Et]);const Rr=E.getTotal()+y.top+y.bottom,nr=q.jsx(Sr,{ref:W,contentSize:Rr,viewportSize:i,onViewportSizeChange:xe,className:l,testId:p,onScroll:Qe,background:I,tapScrollCircleOptions:ce,inertiaOptions:Ee,overscrollBehavior:Le,itemCount:n,scrollBarWidth:G,enableThumbDrag:$,enableTrackClick:de,enableArrowButtons:V,enablePointerDrag:Ye,pointerDragInputs:Be,renderThumbOverlay:U,wheelSpeedMultiplier:He,onWheelHorizontal:ne,contentInsets:y,contentProps:_,visibleStartIndex:ht,visibleEndIndex:It,renderOverlay:wr,initialScrollPosition:et.position,children:Tr});return Ct?q.jsxs(q.Fragment,{children:[nr,q.jsx("div",{className:"aqvs-live-region",role:"status","aria-live":"polite","aria-atomic":"true","data-aqvs-live-region":"",children:Mr})]}):nr},an=r.forwardRef(on);exports.FenwickMapTree=ft;exports.ScrollBar=br;exports.ScrollPane=Sr;exports.TAP_SCROLL_SPEED_DEFAULTS=Gt;exports.VirtualScroll=an;exports.computeAutoTapScrollMaxSpeedMultiplier=gr;exports.computeTapScrollSpeed=hr;exports.createResidualQuantizer=Pr;exports.minmax=ee;exports.tapScrollCircleSampleVisual=Ur;exports.useFenwickMapTree=vr;exports.useHeightCache=Qr;exports.useLruCache=Ir;exports.useWheelBridge=Jr;
|