UNPKG

@anoki/fse-ui

Version:

FSE UI components library

3 lines (2 loc) • 15.9 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Be=require("react"),x=require("./index.cjs479.js"),Ve=require("./index.cjs569.js"),y=require("./index.cjs478.js"),Ye=require("./index.cjs477.js"),Xe=require("./index.cjs570.js"),We=require("./index.cjs483.js"),ze=require("./index.cjs488.js"),Ze=require("./index.cjs484.js"),T=require("./index.cjs571.js"),Je=require("./index.cjs485.js"),X=require("./index.cjs486.js"),A=require("./index.cjs487.js"),W=require("./index.cjs572.js"),Qe=require("./index.cjs480.js"),be=require("./index.cjs565.js"),et=require("./index.cjs490.js"),tt=require("./index.cjs489.js"),a=require("./index.cjs237.js");function nt(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const r=nt(Be);var oe=["Enter"," "],ot=["ArrowDown","PageUp","Home"],we=["ArrowUp","PageDown","End"],rt=[...ot,...we],st={ltr:[...oe,"ArrowRight"],rtl:[...oe,"ArrowLeft"]},ct={ltr:["ArrowLeft"],rtl:["ArrowRight"]},F="Menu",[N,ut,at]=Ve.createCollection(F),[j,it]=Ye.createContextScope(F,[at,T.createPopperScope,W.createRovingFocusGroupScope]),z=T.createPopperScope(),ye=W.createRovingFocusGroupScope(),[lt,S]=j(F),[dt,G]=j(F),re=e=>{const{__scopeMenu:n,open:t=!1,children:o,dir:u,onOpenChange:s,modal:d=!0}=e,p=z(n),[v,m]=r.useState(null),f=r.useRef(!1),c=be.useCallbackRef(s),l=Xe.useDirection(u);return r.useEffect(()=>{const R=()=>{f.current=!0,document.addEventListener("pointerdown",M,{capture:!0,once:!0}),document.addEventListener("pointermove",M,{capture:!0,once:!0})},M=()=>f.current=!1;return document.addEventListener("keydown",R,{capture:!0}),()=>{document.removeEventListener("keydown",R,{capture:!0}),document.removeEventListener("pointerdown",M,{capture:!0}),document.removeEventListener("pointermove",M,{capture:!0})}},[]),a.jsxRuntimeExports.jsx(T.Root,{...p,children:a.jsxRuntimeExports.jsx(lt,{scope:n,open:t,onOpenChange:c,content:v,onContentChange:m,children:a.jsxRuntimeExports.jsx(dt,{scope:n,onClose:r.useCallback(()=>c(!1),[c]),isUsingKeyboardRef:f,dir:l,modal:d,children:o})})})};re.displayName=F;var ft="MenuAnchor",Z=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,u=z(t);return a.jsxRuntimeExports.jsx(T.Anchor,{...u,...o,ref:n})});Z.displayName=ft;var se="MenuPortal",[mt,Te]=j(se,{forceMount:void 0}),ce=e=>{const{__scopeMenu:n,forceMount:t,children:o,container:u}=e,s=S(se,n);return a.jsxRuntimeExports.jsx(mt,{scope:n,forceMount:t,children:a.jsxRuntimeExports.jsx(X.Presence,{present:t||s.open,children:a.jsxRuntimeExports.jsx(Je.Portal,{asChild:!0,container:u,children:o})})})};ce.displayName=se;var C="MenuContent",[pt,ue]=j(C),ae=r.forwardRef((e,n)=>{const t=Te(C,e.__scopeMenu),{forceMount:o=t.forceMount,...u}=e,s=S(C,e.__scopeMenu),d=G(C,e.__scopeMenu);return a.jsxRuntimeExports.jsx(N.Provider,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(X.Presence,{present:o||s.open,children:a.jsxRuntimeExports.jsx(N.Slot,{scope:e.__scopeMenu,children:d.modal?a.jsxRuntimeExports.jsx(xt,{...u,ref:n}):a.jsxRuntimeExports.jsx(vt,{...u,ref:n})})})})}),xt=r.forwardRef((e,n)=>{const t=S(C,e.__scopeMenu),o=r.useRef(null),u=y.useComposedRefs(n,o);return r.useEffect(()=>{const s=o.current;if(s)return et.hideOthers(s)},[]),a.jsxRuntimeExports.jsx(ie,{...e,ref:u,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:x.composeEventHandlers(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),vt=r.forwardRef((e,n)=>{const t=S(C,e.__scopeMenu);return a.jsxRuntimeExports.jsx(ie,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Mt=Qe.createSlot("MenuContent.ScrollLock"),ie=r.forwardRef((e,n)=>{const{__scopeMenu:t,loop:o=!1,trapFocus:u,onOpenAutoFocus:s,onCloseAutoFocus:d,disableOutsidePointerEvents:p,onEntryFocus:v,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:c,onInteractOutside:l,onDismiss:R,disableOutsideScroll:M,...P}=e,I=S(C,t),O=G(C,t),H=z(t),q=ye(t),he=ut(t),[Ge,ge]=r.useState(null),U=r.useRef(null),Ke=y.useComposedRefs(n,U,I.onContentChange),$=r.useRef(0),B=r.useRef(""),He=r.useRef(0),Q=r.useRef(null),_e=r.useRef("right"),ee=r.useRef(0),qe=M?tt:r.Fragment,Ue=M?{as:Mt,allowPinchZoom:!0}:void 0,$e=i=>{var w,je;const E=B.current+i,h=he().filter(g=>!g.disabled),_=document.activeElement,te=(w=h.find(g=>g.ref.current===_))==null?void 0:w.textValue,ne=h.map(g=>g.textValue),Pe=wt(ne,E,te),k=(je=h.find(g=>g.textValue===Pe))==null?void 0:je.ref.current;(function g(Se){B.current=Se,window.clearTimeout($.current),Se!==""&&($.current=window.setTimeout(()=>g(""),1e3))})(E),k&&setTimeout(()=>k.focus())};r.useEffect(()=>()=>window.clearTimeout($.current),[]),ze.useFocusGuards();const b=r.useCallback(i=>{var h,_;return _e.current===((h=Q.current)==null?void 0:h.side)&&Tt(i,(_=Q.current)==null?void 0:_.area)},[]);return a.jsxRuntimeExports.jsx(pt,{scope:t,searchRef:B,onItemEnter:r.useCallback(i=>{b(i)&&i.preventDefault()},[b]),onItemLeave:r.useCallback(i=>{var E;b(i)||((E=U.current)==null||E.focus(),ge(null))},[b]),onTriggerLeave:r.useCallback(i=>{b(i)&&i.preventDefault()},[b]),pointerGraceTimerRef:He,onPointerGraceIntentChange:r.useCallback(i=>{Q.current=i},[]),children:a.jsxRuntimeExports.jsx(qe,{...Ue,children:a.jsxRuntimeExports.jsx(Ze.FocusScope,{asChild:!0,trapped:u,onMountAutoFocus:x.composeEventHandlers(s,i=>{var E;i.preventDefault(),(E=U.current)==null||E.focus({preventScroll:!0})}),onUnmountAutoFocus:d,children:a.jsxRuntimeExports.jsx(We.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:p,onEscapeKeyDown:m,onPointerDownOutside:f,onFocusOutside:c,onInteractOutside:l,onDismiss:R,children:a.jsxRuntimeExports.jsx(W.Root,{asChild:!0,...q,dir:O.dir,orientation:"vertical",loop:o,currentTabStopId:Ge,onCurrentTabStopIdChange:ge,onEntryFocus:x.composeEventHandlers(v,i=>{O.isUsingKeyboardRef.current||i.preventDefault()}),preventScrollOnEntryFocus:!0,children:a.jsxRuntimeExports.jsx(T.Content,{role:"menu","aria-orientation":"vertical","data-state":Fe(I.open),"data-radix-menu-content":"",dir:O.dir,...H,...P,ref:Ke,style:{outline:"none",...P.style},onKeyDown:x.composeEventHandlers(P.onKeyDown,i=>{const h=i.target.closest("[data-radix-menu-content]")===i.currentTarget,_=i.ctrlKey||i.altKey||i.metaKey,te=i.key.length===1;h&&(i.key==="Tab"&&i.preventDefault(),!_&&te&&$e(i.key));const ne=U.current;if(i.target!==ne||!rt.includes(i.key))return;i.preventDefault();const k=he().filter(w=>!w.disabled).map(w=>w.ref.current);we.includes(i.key)&&k.reverse(),It(k)}),onBlur:x.composeEventHandlers(e.onBlur,i=>{i.currentTarget.contains(i.target)||(window.clearTimeout($.current),B.current="")}),onPointerMove:x.composeEventHandlers(e.onPointerMove,L(i=>{const E=i.target,h=ee.current!==i.clientX;if(i.currentTarget.contains(E)&&h){const _=i.clientX>ee.current?"right":"left";_e.current=_,ee.current=i.clientX}}))})})})})})})});ae.displayName=C;var Rt="MenuGroup",J=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"group",...o,ref:n})});J.displayName=Rt;var Et="MenuLabel",le=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{...o,ref:n})});le.displayName=Et;var V="MenuItem",Ie="menu.itemSelect",K=r.forwardRef((e,n)=>{const{disabled:t=!1,onSelect:o,...u}=e,s=r.useRef(null),d=G(V,e.__scopeMenu),p=ue(V,e.__scopeMenu),v=y.useComposedRefs(n,s),m=r.useRef(!1),f=()=>{const c=s.current;if(!t&&c){const l=new CustomEvent(Ie,{bubbles:!0,cancelable:!0});c.addEventListener(Ie,R=>o==null?void 0:o(R),{once:!0}),A.dispatchDiscreteCustomEvent(c,l),l.defaultPrevented?m.current=!1:d.onClose()}};return a.jsxRuntimeExports.jsx(Ae,{...u,ref:v,disabled:t,onClick:x.composeEventHandlers(e.onClick,f),onPointerDown:c=>{var l;(l=e.onPointerDown)==null||l.call(e,c),m.current=!0},onPointerUp:x.composeEventHandlers(e.onPointerUp,c=>{var l;m.current||(l=c.currentTarget)==null||l.click()}),onKeyDown:x.composeEventHandlers(e.onKeyDown,c=>{const l=p.searchRef.current!=="";t||l&&c.key===" "||oe.includes(c.key)&&(c.currentTarget.click(),c.preventDefault())})})});K.displayName=V;var Ae=r.forwardRef((e,n)=>{const{__scopeMenu:t,disabled:o=!1,textValue:u,...s}=e,d=ue(V,t),p=ye(t),v=r.useRef(null),m=y.useComposedRefs(n,v),[f,c]=r.useState(!1),[l,R]=r.useState("");return r.useEffect(()=>{const M=v.current;M&&R((M.textContent??"").trim())},[s.children]),a.jsxRuntimeExports.jsx(N.ItemSlot,{scope:t,disabled:o,textValue:u??l,children:a.jsxRuntimeExports.jsx(W.Item,{asChild:!0,...p,focusable:!o,children:a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...s,ref:m,onPointerMove:x.composeEventHandlers(e.onPointerMove,L(M=>{o?d.onItemLeave(M):(d.onItemEnter(M),M.defaultPrevented||M.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:x.composeEventHandlers(e.onPointerLeave,L(M=>d.onItemLeave(M))),onFocus:x.composeEventHandlers(e.onFocus,()=>c(!0)),onBlur:x.composeEventHandlers(e.onBlur,()=>c(!1))})})})}),Ct="MenuCheckboxItem",de=r.forwardRef((e,n)=>{const{checked:t=!1,onCheckedChange:o,...u}=e;return a.jsxRuntimeExports.jsx(De,{scope:e.__scopeMenu,checked:t,children:a.jsxRuntimeExports.jsx(K,{role:"menuitemcheckbox","aria-checked":Y(t)?"mixed":t,...u,ref:n,"data-state":Ce(t),onSelect:x.composeEventHandlers(u.onSelect,()=>o==null?void 0:o(Y(t)?!0:!t),{checkForDefaultPrevented:!1})})})});de.displayName=Ct;var Oe="MenuRadioGroup",[ht,gt]=j(Oe,{value:void 0,onValueChange:()=>{}}),fe=r.forwardRef((e,n)=>{const{value:t,onValueChange:o,...u}=e,s=be.useCallbackRef(o);return a.jsxRuntimeExports.jsx(ht,{scope:e.__scopeMenu,value:t,onValueChange:s,children:a.jsxRuntimeExports.jsx(J,{...u,ref:n})})});fe.displayName=Oe;var ke="MenuRadioItem",me=r.forwardRef((e,n)=>{const{value:t,...o}=e,u=gt(ke,e.__scopeMenu),s=t===u.value;return a.jsxRuntimeExports.jsx(De,{scope:e.__scopeMenu,checked:s,children:a.jsxRuntimeExports.jsx(K,{role:"menuitemradio","aria-checked":s,...o,ref:n,"data-state":Ce(s),onSelect:x.composeEventHandlers(o.onSelect,()=>{var d;return(d=u.onValueChange)==null?void 0:d.call(u,t)},{checkForDefaultPrevented:!1})})})});me.displayName=ke;var pe="MenuItemIndicator",[De,_t]=j(pe,{checked:!1}),xe=r.forwardRef((e,n)=>{const{__scopeMenu:t,forceMount:o,...u}=e,s=_t(pe,t);return a.jsxRuntimeExports.jsx(X.Presence,{present:o||Y(s.checked)||s.checked===!0,children:a.jsxRuntimeExports.jsx(A.Primitive.span,{...u,ref:n,"data-state":Ce(s.checked)})})});xe.displayName=pe;var Pt="MenuSeparator",ve=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"separator","aria-orientation":"horizontal",...o,ref:n})});ve.displayName=Pt;var jt="MenuArrow",Me=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,u=z(t);return a.jsxRuntimeExports.jsx(T.Arrow,{...u,...o,ref:n})});Me.displayName=jt;var St="MenuSub",[Yt,Ne]=j(St),D="MenuSubTrigger",Re=r.forwardRef((e,n)=>{const t=S(D,e.__scopeMenu),o=G(D,e.__scopeMenu),u=Ne(D,e.__scopeMenu),s=ue(D,e.__scopeMenu),d=r.useRef(null),{pointerGraceTimerRef:p,onPointerGraceIntentChange:v}=s,m={__scopeMenu:e.__scopeMenu},f=r.useCallback(()=>{d.current&&window.clearTimeout(d.current),d.current=null},[]);return r.useEffect(()=>f,[f]),r.useEffect(()=>{const c=p.current;return()=>{window.clearTimeout(c),v(null)}},[p,v]),a.jsxRuntimeExports.jsx(Z,{asChild:!0,...m,children:a.jsxRuntimeExports.jsx(Ae,{id:u.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":u.contentId,"data-state":Fe(t.open),...e,ref:y.composeRefs(n,u.onTriggerChange),onClick:c=>{var l;(l=e.onClick)==null||l.call(e,c),!(e.disabled||c.defaultPrevented)&&(c.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:x.composeEventHandlers(e.onPointerMove,L(c=>{s.onItemEnter(c),!c.defaultPrevented&&!e.disabled&&!t.open&&!d.current&&(s.onPointerGraceIntentChange(null),d.current=window.setTimeout(()=>{t.onOpenChange(!0),f()},100))})),onPointerLeave:x.composeEventHandlers(e.onPointerLeave,L(c=>{var R,M;f();const l=(R=t.content)==null?void 0:R.getBoundingClientRect();if(l){const P=(M=t.content)==null?void 0:M.dataset.side,I=P==="right",O=I?-5:5,H=l[I?"left":"right"],q=l[I?"right":"left"];s.onPointerGraceIntentChange({area:[{x:c.clientX+O,y:c.clientY},{x:H,y:l.top},{x:q,y:l.top},{x:q,y:l.bottom},{x:H,y:l.bottom}],side:P}),window.clearTimeout(p.current),p.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(c),c.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:x.composeEventHandlers(e.onKeyDown,c=>{var R;const l=s.searchRef.current!=="";e.disabled||l&&c.key===" "||st[o.dir].includes(c.key)&&(t.onOpenChange(!0),(R=t.content)==null||R.focus(),c.preventDefault())})})})});Re.displayName=D;var Le="MenuSubContent",Ee=r.forwardRef((e,n)=>{const t=Te(C,e.__scopeMenu),{forceMount:o=t.forceMount,...u}=e,s=S(C,e.__scopeMenu),d=G(C,e.__scopeMenu),p=Ne(Le,e.__scopeMenu),v=r.useRef(null),m=y.useComposedRefs(n,v);return a.jsxRuntimeExports.jsx(N.Provider,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(X.Presence,{present:o||s.open,children:a.jsxRuntimeExports.jsx(N.Slot,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(ie,{id:p.contentId,"aria-labelledby":p.triggerId,...u,ref:m,align:"start",side:d.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{var c;d.isUsingKeyboardRef.current&&((c=v.current)==null||c.focus()),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:x.composeEventHandlers(e.onFocusOutside,f=>{f.target!==p.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:x.composeEventHandlers(e.onEscapeKeyDown,f=>{d.onClose(),f.preventDefault()}),onKeyDown:x.composeEventHandlers(e.onKeyDown,f=>{var R;const c=f.currentTarget.contains(f.target),l=ct[d.dir].includes(f.key);c&&l&&(s.onOpenChange(!1),(R=p.trigger)==null||R.focus(),f.preventDefault())})})})})})});Ee.displayName=Le;function Fe(e){return e?"open":"closed"}function Y(e){return e==="indeterminate"}function Ce(e){return Y(e)?"indeterminate":e?"checked":"unchecked"}function It(e){const n=document.activeElement;for(const t of e)if(t===n||(t.focus(),document.activeElement!==n))return}function bt(e,n){return e.map((t,o)=>e[(n+o)%e.length])}function wt(e,n,t){const u=n.length>1&&Array.from(n).every(m=>m===n[0])?n[0]:n,s=t?e.indexOf(t):-1;let d=bt(e,Math.max(s,0));u.length===1&&(d=d.filter(m=>m!==t));const v=d.find(m=>m.toLowerCase().startsWith(u.toLowerCase()));return v!==t?v:void 0}function yt(e,n){const{x:t,y:o}=e;let u=!1;for(let s=0,d=n.length-1;s<n.length;d=s++){const p=n[s],v=n[d],m=p.x,f=p.y,c=v.x,l=v.y;f>o!=l>o&&t<(c-m)*(o-f)/(l-f)+m&&(u=!u)}return u}function Tt(e,n){if(!n)return!1;const t={x:e.clientX,y:e.clientY};return yt(t,n)}function L(e){return n=>n.pointerType==="mouse"?e(n):void 0}var At=re,Ot=Z,kt=ce,Dt=ae,Nt=J,Lt=le,Ft=K,Gt=de,Kt=fe,Ht=me,qt=xe,Ut=ve,$t=Me,Bt=Re,Vt=Ee;exports.Anchor=Ot;exports.Arrow=$t;exports.CheckboxItem=Gt;exports.Content=Dt;exports.Group=Nt;exports.Item=Ft;exports.ItemIndicator=qt;exports.Label=Lt;exports.Menu=re;exports.MenuAnchor=Z;exports.MenuArrow=Me;exports.MenuCheckboxItem=de;exports.MenuContent=ae;exports.MenuGroup=J;exports.MenuItem=K;exports.MenuItemIndicator=xe;exports.MenuLabel=le;exports.MenuPortal=ce;exports.MenuRadioGroup=fe;exports.MenuRadioItem=me;exports.MenuSeparator=ve;exports.MenuSubContent=Ee;exports.MenuSubTrigger=Re;exports.Portal=kt;exports.RadioGroup=Kt;exports.RadioItem=Ht;exports.Root=At;exports.Separator=Ut;exports.SubContent=Vt;exports.SubTrigger=Bt;exports.createMenuScope=it; //# sourceMappingURL=index.cjs520.js.map