boreal-ui 0.0.899-experimental.3 → 0.0.899-experimental.4

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.
@@ -0,0 +1 @@
1
+ "use strict";require('./Menu.css');const l=require("react/jsx-runtime"),Pe=require("./propAliases-Bfsf5cJN.cjs"),s=require("react"),C=require("./classNames-C7V3kfBj.cjs"),Z=require("./capitalize-CnTiekgk.cjs"),K=require("./styleConfig-BB8MdwYx.cjs"),H="root",m=8,en=(o,g)=>o?`${o}.${g}`:`${g}`,nn=o=>{const g=o.split(".");return g.length>1?g.slice(0,-1).join("."):null},ke=o=>Array.isArray(o.items)&&o.items.length>0,de=(o,g)=>o===g||(o==null?void 0:o.startsWith(`${g}.`))===!0,Ne=o=>o.getAttribute("aria-disabled")==="true"||o instanceof HTMLButtonElement&&o.disabled,Se=({items:o,children:g,trigger:O,open:ce,defaultOpen:$e=!1,position:B,activation:P=O?"click":"contextmenu",onOpenChange:M,onPositionChange:z,closeOnSelect:Ee=!0,focusFirstItemOnOpen:me=!0,theme:ee=K.getDefaultTheme(),glass:ne=K.getDefaultGlass(),rounding:R=K.getDefaultRounding(),shadow:j=K.getDefaultShadow(),state:A,className:Le,targetClassName:Re,triggerClassName:je,menuClassName:fe,itemClassName:Ae,id:Te,menuId:De,"aria-label":qe="Context menu","aria-labelledby":be,"aria-describedby":We,"data-testid":ve,testId:k=ve??"menu",triggerProps:h,menuProps:p,onKeyDown:te,classMap:u,...N})=>{const[He,Oe]=s.useState($e),[Be,Me]=s.useState(B??{x:0,y:0}),[he,T]=s.useState(null),[ae,ye]=s.useState({}),ue=s.useRef(null),re=s.useRef(null),F=s.useRef(null),S=s.useRef(null),ze=s.useId(),xe=ce!==void 0,b=ce??He,se=De??`${ze}-menu`,Y=B??Be,Fe=s.isValidElement(O),X=s.useCallback(e=>{xe||Oe(e),e||T(null),M==null||M(e)},[xe,M]),ge=s.useCallback(e=>{B||Me(e),z==null||z(e)},[z,B]),G=s.useCallback(e=>{ge(e),X(!0)},[ge,X]),D=s.useCallback(()=>{var e;X(!1),(e=F.current)==null||e.focus()},[X]),q=s.useCallback(e=>e?Array.from(e.querySelectorAll('[data-menu-item="true"]')).filter(t=>t.closest("[data-menu-panel]")===e&&!Ne(t)):[],[]),U=s.useCallback((e,t)=>{var r;const n=q(e);if(n.length===0)return;const i=(t+n.length)%n.length;(r=n[i])==null||r.focus()},[q]),oe=s.useCallback(e=>{var t;(t=q(e)[0])==null||t.focus()},[q]),I=s.useCallback(()=>{if(!b||!S.current){ye({});return}const e=window.innerWidth||document.documentElement.clientWidth||0,t=window.innerHeight||document.documentElement.clientHeight||0,n=`${Math.max(120,t-m*2)}px`,i=`${Math.max(160,e-m*2)}px`,r=[S.current,...Array.from(S.current.querySelectorAll("[data-menu-panel]"))],y={};r.forEach(f=>{const a=f.dataset.menuPanelPath??H,d=f.getBoundingClientRect(),x={"--menu-panel-max-height":n,"--menu-panel-max-width":i};if(a===H){const v=Math.min(Math.max(m,Y.x),Math.max(m,e-d.width-m)),Q=Math.min(Math.max(m,Y.y),Math.max(m,t-d.height-m));x.left=`${Math.round(v)}px`,x.top=`${Math.round(Q)}px`,y[a]={style:x};return}const $=f.closest('[data-menu-item-wrapper="true"]'),w=$==null?void 0:$.getBoundingClientRect(),E=Math.max(d.width,f.offsetWidth,160),W=w?e-w.right-m:e-d.right-m,V=w?w.left-m:d.left-m,J=W>=E||W>=V?"right":"left";let _=0;d.bottom>t-m&&(_-=d.bottom-(t-m)),d.top+_<m&&(_+=m-(d.top+_)),x["--menu-panel-offset-y"]=`${Math.round(_)}px`,y[a]={placement:J,style:x}}),ye(y)},[b,Y.x,Y.y]);s.useLayoutEffect(()=>{b&&I()},[b,o,he,I]),s.useEffect(()=>{if(b)return window.addEventListener("resize",I),window.addEventListener("scroll",I,!0),()=>{window.removeEventListener("resize",I),window.removeEventListener("scroll",I,!0)}},[b,I]),s.useEffect(()=>{!b||!me||oe(S.current)},[me,oe,b]),s.useEffect(()=>{if(!b)return;const e=t=>{var n;(n=ue.current)!=null&&n.contains(t.target)||D()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[D,b]);const Ye=s.useMemo(()=>C.combineClassNames(u.menu,u[ee],A&&u[A],ne&&u.glass,j&&u[`shadow${Z.capitalize(j)}`],R&&u[`round${Z.capitalize(R)}`],fe,p==null?void 0:p.className),[u,ne,fe,p==null?void 0:p.className,R,j,A,ee]),Xe=e=>C.combineClassNames(u.menu,u.submenu,e&&u.submenuOpen,u[ee],A&&u[A],ne&&u.glass,j&&u[`shadow${Z.capitalize(j)}`],R&&u[`round${Z.capitalize(R)}`]),le=ae[H],Ge=e=>{var t;(t=N.onContextMenu)==null||t.call(N,e),!(e.defaultPrevented||!["contextmenu","both"].includes(P))&&(e.preventDefault(),G({x:e.clientX,y:e.clientY}))},Ue=e=>{var i,r,y,f;if((i=N.onClick)==null||i.call(N,e),e.defaultPrevented||!["click","both"].includes(P))return;const t=e.target;if((r=S.current)!=null&&r.contains(t)||(y=F.current)!=null&&y.contains(t))return;const n=(f=re.current)==null?void 0:f.getBoundingClientRect();G({x:(n==null?void 0:n.left)??e.clientX,y:(n==null?void 0:n.bottom)??e.clientY})},Ve=e=>{var n,i;if((n=h==null?void 0:h.onClick)==null||n.call(h,e),e.defaultPrevented)return;e.stopPropagation();const t=(i=F.current)==null?void 0:i.getBoundingClientRect();G({x:(t==null?void 0:t.left)??e.clientX,y:(t==null?void 0:t.bottom)??e.clientY})},pe=(e,t)=>{var n,i;e.stopPropagation(),!(t.disabled||ke(t))&&((n=t.onSelect)==null||n.call(t,e),(i=t.onClick)==null||i.call(t),!e.defaultPrevented&&Ee&&D())},Je=e=>{const t=()=>{const n=document.getElementById(e);n instanceof HTMLElement&&oe(n)};window.requestAnimationFrame?window.requestAnimationFrame(t):window.setTimeout(t)},Qe=e=>{var y,f;if(te==null||te(e),e.defaultPrevented)return;if(!b&&(e.key==="ContextMenu"||e.shiftKey&&e.key==="F10")){e.preventDefault();const a=(y=re.current)==null?void 0:y.getBoundingClientRect();G({x:(a==null?void 0:a.left)??m,y:(a==null?void 0:a.bottom)??m});return}if(!b)return;const t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=(t==null?void 0:t.closest("[data-menu-panel]"))??S.current,i=q(n),r=t?i.indexOf(t):-1;if(e.key==="Escape"){e.preventDefault(),D();return}if(e.key==="Tab"){D();return}if(e.key==="ArrowDown"){e.preventDefault(),U(n,r+1);return}if(e.key==="ArrowUp"){e.preventDefault(),U(n,r<0?i.length-1:r-1);return}if(e.key==="Home"){e.preventDefault(),U(n,0);return}if(e.key==="End"){e.preventDefault(),U(n,i.length-1);return}if(e.key==="ArrowRight"){const a=t==null?void 0:t.dataset.menuItemPath,d=t==null?void 0:t.getAttribute("aria-controls");(t==null?void 0:t.dataset.menuHasSubmenu)==="true"&&a&&d&&(e.preventDefault(),T(a),Je(d));return}if(e.key==="ArrowLeft"){const a=n==null?void 0:n.dataset.menuPanelPath;if(a&&a!==H){e.preventDefault();const d=nn(a);T(d);const x=(f=ue.current)==null?void 0:f.querySelector(`[data-menu-item-path="${a}"][data-menu-item="true"]`);x==null||x.focus()}return}if(e.key==="Enter"||e.key===" "){const a=(t==null?void 0:t.dataset.menuItem)==="true"?t:null;if(!a||Ne(a))return;e.preventDefault(),a.click()}},ie=(e,t)=>l.jsxs(l.Fragment,{children:[l.jsxs("span",{className:u.itemContent,children:[e.icon&&l.jsx("span",{className:u.icon,"aria-hidden":"true",children:e.icon}),e.label&&l.jsx("span",{className:u.label,children:e.label})]}),e.shortcut&&l.jsx("span",{className:u.shortcut,"aria-hidden":"true",children:e.shortcut}),t&&l.jsx("span",{className:u.submenuIndicator,"aria-hidden":"true",children:">"})]}),we=(e,t="")=>e.map((n,i)=>{var Q,_e;const r=en(t,i),y=n.type??"item",f=n["data-testid"]??n.testId;if(y==="separator")return l.jsx("div",{role:"separator",className:u.separator,"data-testid":f??`${k}-${r}-separator`},n.id??r);if(y==="label")return l.jsx("div",{role:"none",className:C.combineClassNames(u.sectionLabel,n.className),"data-testid":f??`${k}-${r}-label`,children:n.label},n.id??r);const a=ke(n),d=a&&de(he,r),x=n.submenuId??`${se}-${r}-submenu`,$=n.role??"menuitem",w=(c=!0)=>{a&&!n.disabled&&T(L=>c&&L&&de(L,r)?L:r)},E=()=>w(!1),W=()=>{a||T(c=>c&&(t?de(c,t)?t:c:null))},V=()=>{if(a){w();return}W()},J=()=>{w()},_=c=>{const L=c.target,Ze=c.currentTarget.closest("[data-menu-panel]"),Ce=L.closest("[data-menu-panel]"),Ke=L.closest('[data-menu-item-wrapper="true"]');Ce&&Ce!==Ze||Ke===c.currentTarget&&(a?E():W())},v={id:n.id,className:C.combineClassNames(u.item,n.destructive&&u.destructive,n.inset&&u.inset,a&&u.submenuTrigger,n.disabled&&u.disabled,Ae,n.className),role:$,title:n.title,"aria-label":n["aria-label"],"aria-describedby":n["aria-describedby"],"aria-current":n["aria-current"],"aria-disabled":n.disabled||void 0,"aria-checked":$==="menuitemcheckbox"||$==="menuitemradio"?n.checked:void 0,"aria-haspopup":a?"menu":void 0,"aria-expanded":a?d:void 0,"aria-controls":a?x:void 0,"data-menu-item":"true","data-menu-item-path":r,"data-menu-has-submenu":a?"true":void 0,"data-testid":f};return l.jsxs("div",{className:C.combineClassNames(u.itemWrapper,a&&u.hasSubmenu),role:"group","data-menu-item-wrapper":"true","data-menu-item-path":r,onMouseEnter:V,onMouseOver:_,onPointerEnter:V,onPointerOver:_,children:[a?l.jsx("button",{type:"button",disabled:n.disabled,...v,onMouseEnter:J,onMouseOver:E,onPointerEnter:J,onPointerOver:E,onClick:c=>{c.stopPropagation(),E()},children:ie(n,!0)}):n.href?l.jsx("a",{href:n.disabled?void 0:n.href,target:n.disabled?void 0:n.target,rel:n.rel??(n.target==="_blank"?"noopener noreferrer":void 0),...v,onClick:c=>{if(c.stopPropagation(),n.disabled){c.preventDefault();return}pe(c,n)},children:ie(n,!1)}):l.jsx("button",{type:"button",disabled:n.disabled,...v,onClick:c=>pe(c,n),children:ie(n,!1)}),a&&d&&l.jsx("div",{id:x,role:"menu","aria-label":n.submenuAriaLabel??(typeof n.label=="string"?n.label:void 0),className:Xe(d),"data-menu-panel":"true","data-menu-panel-path":r,"data-placement":(Q=ae[r])==null?void 0:Q.placement,"data-testid":f?`${f}-submenu`:`${k}-${r}-submenu`,style:(_e=ae[r])==null?void 0:_e.style,children:we(n.items??[],r)})]},n.id??r)});return l.jsxs("div",{...N,id:Te,ref:ue,className:C.combineClassNames(u.wrapper,Le),"data-testid":k,onContextMenu:Ge,onClick:Ue,onKeyDown:Qe,children:[O&&l.jsx("button",{...h,ref:F,type:(h==null?void 0:h.type)??"button",className:C.combineClassNames(u.trigger,Fe?u.triggerCustom:u.triggerPlain,je,h==null?void 0:h.className),"aria-haspopup":"menu","aria-expanded":b,"aria-controls":se,"data-testid":`${k}-trigger`,onClick:Ve,children:O}),g&&l.jsx("div",{ref:re,className:C.combineClassNames(u.target,Re),tabIndex:P==="manual"?void 0:0,"data-testid":`${k}-target`,children:g}),b&&l.jsx("div",{...p,id:se,ref:S,role:"menu","aria-label":be?void 0:qe,"aria-labelledby":be,"aria-describedby":We,className:Ye,"data-menu-panel":"true","data-menu-panel-path":H,"data-testid":`${k}-menu`,style:{...le==null?void 0:le.style,...p==null?void 0:p.style},children:we(o)})]})};Se.displayName="BaseMenu";const tn={wrapper:"menu",target:"menu_target",trigger:"menu_trigger",triggerPlain:"menu_triggerPlain",triggerCustom:"menu_triggerCustom",menu:"menu_panel",item:"menu_item",itemWrapper:"menu_itemWrapper",itemContent:"menu_itemContent",icon:"menu_icon",label:"menu_label",shortcut:"menu_shortcut",separator:"menu_separator",sectionLabel:"menu_sectionLabel",hasSubmenu:"menu_hasSubmenu",submenu:"menu_submenu",submenuOpen:"menu_submenu_open",submenuTrigger:"menu_submenuTrigger",submenuIndicator:"menu_submenuIndicator",destructive:"menu_destructive",inset:"menu_inset",primary:"menu_primary",secondary:"menu_secondary",tertiary:"menu_tertiary",quaternary:"menu_quaternary",clear:"menu_clear",success:"menu_success",info:"menu_info",error:"menu_error",warning:"menu_warning",disabled:"menu_disabled",glass:"menu_glass",shadowNone:"menu_shadow-None",shadowLight:"menu_shadow-Light",shadowMedium:"menu_shadow-Medium",shadowStrong:"menu_shadow-Strong",shadowIntense:"menu_shadow-Intense",roundNone:"menu_round-None",roundSmall:"menu_round-Small",roundMedium:"menu_round-Medium",roundLarge:"menu_round-Large"},Ie=o=>l.jsx(Se,{...o,classMap:Pe.expandClassMap(tn)});Ie.displayName="Menu";exports.Menu=Ie;