UNPKG

@stanfordspezi/spezi-web-design-system

Version:

Stanford Biodesign Digital Health Spezi Web Design System

2 lines (1 loc) 4.63 kB
"use strict";const B=require("react"),v=require("./index-DMAkK3b-.js"),Y=require("./index-DzTG1n6i.js"),D=require("./index-CajSSBH7.js"),z=require("./index-DO-atGp-.js"),V=require("./index-C7R_tQdV.js");require("react-dom");const d=require("react/jsx-runtime"),J=require("./index-CzY-WZXL.js"),Q=require("./index-BhY3ui5c.js"),W=require("./index-Cje7xxa1.js");function X(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const s=X(B);var Z=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],N=Z.reduce((e,t)=>{const r=D.createSlot(`Primitive.${t}`),o=s.forwardRef((b,g)=>{const{asChild:f,...I}=b,F=f?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),d.jsx(F,{...I,ref:g})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),_="rovingFocusGroup.onEntryFocus",ee={bubbles:!1,cancelable:!0},R="RovingFocusGroup",[A,G,te]=Y.createCollection(R),[oe,re]=z.createContextScope(R,[te]),[ne,se]=oe(R),j=s.forwardRef((e,t)=>d.jsx(A.Provider,{scope:e.__scopeRovingFocusGroup,children:d.jsx(A.Slot,{scope:e.__scopeRovingFocusGroup,children:d.jsx(ce,{...e,ref:t})})}));j.displayName=R;var ce=s.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:b=!1,dir:g,currentTabStopId:f,defaultCurrentTabStopId:I,onCurrentTabStopIdChange:F,onEntryFocus:m,preventScrollOnEntryFocus:u=!1,...E}=e,S=s.useRef(null),w=D.useComposedRefs(t,S),x=W.useDirection(g),[C,n]=Q.useControllableState({prop:f,defaultProp:I??null,onChange:F,caller:R}),[a,T]=s.useState(!1),i=J.useCallbackRef(m),l=G(r),h=s.useRef(!1),[k,P]=s.useState(0);return s.useEffect(()=>{const c=S.current;if(c)return c.addEventListener(_,i),()=>c.removeEventListener(_,i)},[i]),d.jsx(ne,{scope:r,orientation:o,dir:x,loop:b,currentTabStopId:C,onItemFocus:s.useCallback(c=>n(c),[n]),onItemShiftTab:s.useCallback(()=>T(!0),[]),onFocusableItemAdd:s.useCallback(()=>P(c=>c+1),[]),onFocusableItemRemove:s.useCallback(()=>P(c=>c-1),[]),children:d.jsx(N.div,{tabIndex:a||k===0?-1:0,"data-orientation":o,...E,ref:w,style:{outline:"none",...e.style},onMouseDown:v.composeEventHandlers(e.onMouseDown,()=>{h.current=!0}),onFocus:v.composeEventHandlers(e.onFocus,c=>{const $=!h.current;if(c.target===c.currentTarget&&$&&!a){const O=new CustomEvent(_,ee);if(c.currentTarget.dispatchEvent(O),!O.defaultPrevented){const y=l().filter(p=>p.focusable),L=y.find(p=>p.active),U=y.find(p=>p.id===C),H=[L,U,...y].filter(Boolean).map(p=>p.ref.current);M(H,u)}}h.current=!1}),onBlur:v.composeEventHandlers(e.onBlur,()=>T(!1))})})}),q="RovingFocusGroupItem",K=s.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:o=!0,active:b=!1,tabStopId:g,children:f,...I}=e,F=V.useId(),m=g||F,u=se(q,r),E=u.currentTabStopId===m,S=G(r),{onFocusableItemAdd:w,onFocusableItemRemove:x,currentTabStopId:C}=u;return s.useEffect(()=>{if(o)return w(),()=>x()},[o,w,x]),d.jsx(A.ItemSlot,{scope:r,id:m,focusable:o,active:b,children:d.jsx(N.span,{tabIndex:E?0:-1,"data-orientation":u.orientation,...I,ref:t,onMouseDown:v.composeEventHandlers(e.onMouseDown,n=>{o?u.onItemFocus(m):n.preventDefault()}),onFocus:v.composeEventHandlers(e.onFocus,()=>u.onItemFocus(m)),onKeyDown:v.composeEventHandlers(e.onKeyDown,n=>{if(n.key==="Tab"&&n.shiftKey){u.onItemShiftTab();return}if(n.target!==n.currentTarget)return;const a=ae(n,u.orientation,u.dir);if(a!==void 0){if(n.metaKey||n.ctrlKey||n.altKey||n.shiftKey)return;n.preventDefault();let i=S().filter(l=>l.focusable).map(l=>l.ref.current);if(a==="last")i.reverse();else if(a==="prev"||a==="next"){a==="prev"&&i.reverse();const l=i.indexOf(n.currentTarget);i=u.loop?le(i,l+1):i.slice(l+1)}setTimeout(()=>M(i))}}),children:typeof f=="function"?f({isCurrentTabStop:E,hasTabStop:C!=null}):f})})});K.displayName=q;var ue={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ie(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ae(e,t,r){const o=ie(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(o))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(o)))return ue[o]}function M(e,t=!1){const r=document.activeElement;for(const o of e)if(o===r||(o.focus({preventScroll:t}),document.activeElement!==r))return}function le(e,t){return e.map((r,o)=>e[(t+o)%e.length])}var de=j,fe=K;exports.Item=fe;exports.Root=de;exports.createRovingFocusGroupScope=re;