import{r as s,j as d}from"./index-C-9v46qO.js";import{c as H,f as V,b as G,a as p,e as z,u as q}from"./index-WGdLp8p1.js";import{c as J,u as Q}from"./index-zKHek3fh.js";import{u as W}from"./button-B-2orO_-.js";var _="rovingFocusGroup.onEntryFocus",X={bubbles:!1,cancelable:!0},I="RovingFocusGroup",[y,N,Z]=J(I),[$,de]=H(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:m,preventScrollOnEntryFocus:a=!1,...b}=e,F=s.useRef(null),g=W(r,F),R=Q(w),[E,o]=z({prop:v,defaultProp:C??null,onChange:S,caller:I}),[i,x]=s.useState(!1),u=q(m),l=N(c),h=s.useRef(!1),[k,D]=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(()=>D(n=>n+1),[]),onFocusableItemRemove:s.useCallback(()=>D(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:p(e.onMouseDown,()=>{h.current=!0}),onFocus:p(e.onFocus,n=>{const L=!h.current;if(n.target===n.currentTarget&&L&&!i){const P=new CustomEvent(_,X);if(n.currentTarget.dispatchEvent(P),!P.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:p(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=V(),m=w||S,a=te(K,c),b=a.currentTabStopId===m,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:m,focusable:t,active:T,children:d.jsx(G.span,{tabIndex:b?0:-1,"data-orientation":a.orientation,...C,ref:r,onMouseDown:p(e.onMouseDown,o=>{t?a.onItemFocus(m):o.preventDefault()}),onFocus:p(e.onFocus,()=>a.onItemFocus(m)),onKeyDown:p(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 me=O,pe=j;export{pe as I,me as R,de as c};
