import{m as H,n as V,r as s,j as d,p as q,o as z,F as J,P as G,q as m,v as Q}from"./index-D5aSL5Lk.js";import{u as W}from"./index-CeP29QIk.js";var _="rovingFocusGroup.onEntryFocus",X={bubbles:!1,cancelable:!0},I="RovingFocusGroup",[y,N,Z]=H(I),[$,le]=V(I,[Z]),[ee,te]=$(I),O=s.forwardRef((e,r)=>d.jsx(y.Provider,{scope:e.__scopeRovingFocusGroup,children:d.jsx(y.Slot,{scope:e.__scopeRovingFocusGroup,children:d.jsx(oe,{...e,ref:r})})}));O.displayName=I;var oe=s.forwardRef((e,r)=>{const{__scopeRovingFocusGroup:c,orientation:t,loop:T=!1,dir:w,currentTabStopId:v,defaultCurrentTabStopId:C,onCurrentTabStopIdChange:S,onEntryFocus:p,preventScrollOnEntryFocus:a=!1,...b}=e,F=s.useRef(null),g=q(r,F),R=W(w),[E,o]=z({prop:v,defaultProp:C??null,onChange:S,caller:I}),[i,x]=s.useState(!1),u=J(p),l=N(c),h=s.useRef(!1),[k,P]=s.useState(0);return s.useEffect(()=>{const n=F.current;if(n)return n.addEventListener(_,u),()=>n.removeEventListener(_,u)},[u]),d.jsx(ee,{scope:c,orientation:t,dir:R,loop:T,currentTabStopId:E,onItemFocus:s.useCallback(n=>o(n),[o]),onItemShiftTab:s.useCallback(()=>x(!0),[]),onFocusableItemAdd:s.useCallback(()=>P(n=>n+1),[]),onFocusableItemRemove:s.useCallback(()=>P(n=>n-1),[]),children:d.jsx(G.div,{tabIndex:i||k===0?-1:0,"data-orientation":t,...b,ref:g,style:{outline:"none",...e.style},onMouseDown:m(e.onMouseDown,()=>{h.current=!0}),onFocus:m(e.onFocus,n=>{const L=!h.current;if(n.target===n.currentTarget&&L&&!i){const D=new CustomEvent(_,X);if(n.currentTarget.dispatchEvent(D),!D.defaultPrevented){const A=l().filter(f=>f.focusable),U=A.find(f=>f.active),B=A.find(f=>f.id===E),Y=[U,B,...A].filter(Boolean).map(f=>f.ref.current);M(Y,a)}}h.current=!1}),onBlur:m(e.onBlur,()=>x(!1))})})}),K="RovingFocusGroupItem",j=s.forwardRef((e,r)=>{const{__scopeRovingFocusGroup:c,focusable:t=!0,active:T=!1,tabStopId:w,children:v,...C}=e,S=Q(),p=w||S,a=te(K,c),b=a.currentTabStopId===p,F=N(c),{onFocusableItemAdd:g,onFocusableItemRemove:R,currentTabStopId:E}=a;return s.useEffect(()=>{if(t)return g(),()=>R()},[t,g,R]),d.jsx(y.ItemSlot,{scope:c,id:p,focusable:t,active:T,children:d.jsx(G.span,{tabIndex:b?0:-1,"data-orientation":a.orientation,...C,ref:r,onMouseDown:m(e.onMouseDown,o=>{t?a.onItemFocus(p):o.preventDefault()}),onFocus:m(e.onFocus,()=>a.onItemFocus(p)),onKeyDown:m(e.onKeyDown,o=>{if(o.key==="Tab"&&o.shiftKey){a.onItemShiftTab();return}if(o.target!==o.currentTarget)return;const i=se(o,a.orientation,a.dir);if(i!==void 0){if(o.metaKey||o.ctrlKey||o.altKey||o.shiftKey)return;o.preventDefault();let u=F().filter(l=>l.focusable).map(l=>l.ref.current);if(i==="last")u.reverse();else if(i==="prev"||i==="next"){i==="prev"&&u.reverse();const l=u.indexOf(o.currentTarget);u=a.loop?ce(u,l+1):u.slice(l+1)}setTimeout(()=>M(u))}}),children:typeof v=="function"?v({isCurrentTabStop:b,hasTabStop:E!=null}):v})})});j.displayName=K;var re={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ne(e,r){return r!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function se(e,r,c){const t=ne(e.key,c);if(!(r==="vertical"&&["ArrowLeft","ArrowRight"].includes(t))&&!(r==="horizontal"&&["ArrowUp","ArrowDown"].includes(t)))return re[t]}function M(e,r=!1){const c=document.activeElement;for(const t of e)if(t===c||(t.focus({preventScroll:r}),document.activeElement!==c))return}function ce(e,r){return e.map((c,t)=>e[(r+t)%e.length])}var fe=O,de=j;export{de as I,fe as R,le as c};