@data-slot/navigation-menu 0.2.143 → 0.2.144

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.
package/README.md CHANGED
@@ -227,8 +227,10 @@ and restored to its original markup location when inactive/closed.
227
227
  }
228
228
  ```
229
229
 
230
- `data-instant` is used for the initial open phase and cleared when switching or closing.
231
- Use it to skip first-open transitions without suppressing exit animations.
230
+ `data-instant` is used for the initial open phase and for sync-driven anchor tracking updates
231
+ (for example when a sticky trigger moves while the menu is open). It is cleared when switching,
232
+ closing, or after the tracking update settles. Use it to skip those reposition transitions without
233
+ suppressing exit animations.
232
234
 
233
235
  ### Motion Animations
234
236
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`start`,`center`,`end`],n=[`top`,`right`,`bottom`,`left`],r=(e,t)=>t===`start`?{x:e.left,y:e.top}:t===`end`?{x:e.right,y:e.bottom}:{x:e.left+e.width/2,y:e.top+e.height/2},i=(e,t,n)=>{let i=r(n,t);return e===`top`?{x:i.x,y:n.top}:e===`bottom`?{x:i.x,y:n.bottom}:e===`left`?{x:n.left,y:i.y}:{x:n.right,y:i.y}},a=`@data-slot/navigation-menu`;function o(r,o={}){let s=(0,e.reuseRootBinding)(r,a,`[@data-slot/navigation-menu] createNavigationMenu() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(s)return s;let c=o.delayOpen??(0,e.getDataNumber)(r,`delayOpen`)??0,l=o.delayClose??(0,e.getDataNumber)(r,`delayClose`)??0,u=o.openOnFocus??(0,e.getDataBool)(r,`openOnFocus`)??!1,d=o.side??(0,e.getDataEnum)(r,`side`,n)??`bottom`,ee=o.align??(0,e.getDataEnum)(r,`align`,t)??`start`,f=o.sideOffset??(0,e.getDataNumber)(r,`sideOffset`)??0,p=o.alignOffset??(0,e.getDataNumber)(r,`alignOffset`)??0,m=o.safeTriangle??(0,e.getDataBool)(r,`safeTriangle`)??!1,h=o.debugSafeTriangle??(0,e.getDataBool)(r,`debugSafeTriangle`)??!1,te=m||h,ne=o.onValueChange,re=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),ie=(e,t)=>{`inert`in e&&(e.inert=t)},g=(0,e.getPart)(r,`navigation-menu-list`),_=(0,e.getParts)(r,`navigation-menu-item`),v=(0,e.getPart)(r,`navigation-menu-viewport`),y=(0,e.getPart)(r,`navigation-menu-indicator`),b=(e,t)=>{let n=e.parentElement;for(;n&&n!==r;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!g||_.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let x=null,S=null,C=-1,w=null,ae=null,T=null,E=!1,D=null,O=null,k=!1,A=!1,j=null,M=null,N=0,P=0,F=[],I=new Map,L=new Map,oe=v?b(v,`navigation-menu-viewport-positioner`):null,se=v?b(v,`navigation-menu-positioner`):null,R=oe??se,ce=R?b(R,`navigation-menu-portal`):null,z=v?(0,e.createPortalLifecycle)({content:v,root:r,enabled:!0,wrapperSlot:R?void 0:`navigation-menu-viewport-positioner`,container:R??void 0,mountTarget:R?ce??R:void 0}):null,le=()=>{let e=z?.container;e instanceof HTMLElement&&(e.style.position=``,e.style.top=``,e.style.left=``,e.style.width=``,e.style.height=``,e.style.margin=``,e.style.willChange=``,e.style.pointerEvents=``,e.style.transform=``,e.style.removeProperty(`--transform-origin`),e.removeAttribute(`data-instant`))},ue=()=>{v?.removeAttribute(`data-instant`);let e=z?.container;e instanceof HTMLElement&&e.removeAttribute(`data-instant`)},de=v?(0,e.createPresenceLifecycle)({element:v,onExitComplete:()=>{A||(ue(),le(),N=0,P=0,z?.restore(),v.hidden=!0,v.style.pointerEvents=`none`)}}):null,fe=e=>{if(!v)return;let t=L.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,L.set(e,t)),e.parentNode!==v&&v.appendChild(e)},pe=e=>{let t=L.get(e);if(!t||!t.mountedInViewport)return;let n=t.originalParent,r=t.originalNextSibling;n&&n.isConnected?r&&r.parentNode===n?n.insertBefore(e,r):n.appendChild(e):e.remove(),t.mountedInViewport=!1,t.originalParent=null,t.originalNextSibling=null},me=()=>{if(!v||!z)return;let e=z.container,t=r.ownerDocument.defaultView??window,n=r.getBoundingClientRect(),i=n.top+t.scrollY+P,a=n.left+t.scrollX+N;e.style.position=`absolute`,e.style.top=`${i}px`,e.style.left=`${a}px`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`top,left`,e.style.pointerEvents=`none`},B=null,he=e=>{B?.disconnect(),B=null,!(!v||!e)&&(B=new ResizeObserver(()=>{let t=ge(e.item,e.content);rt(e.content,e.trigger,t)}),B.observe(e.content))};F.push(()=>B?.disconnect()),F.push(()=>{ue(),I.forEach(e=>e.cleanup()),I.clear(),L.forEach((e,t)=>{pe(t),t.hidden=!0,t.style.pointerEvents=`none`}),L.clear(),le(),N=0,P=0,de?.cleanup(),z?.cleanup()});let V=new Map,ge=(r,i)=>({side:o.side??(0,e.getDataEnum)(i,`side`,n)??(0,e.getDataEnum)(r,`side`,n)??d,align:o.align??(0,e.getDataEnum)(i,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??ee,sideOffset:o.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??f,alignOffset:o.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??p}),_e=0;_.forEach(t=>{let n=t.dataset.value;if(!n)return;let r=(0,e.getPart)(t,`navigation-menu-trigger`),i=(0,e.getPart)(t,`navigation-menu-content`);if(r&&i){V.set(n,{value:n,item:t,trigger:r,content:i,index:_e++}),I.set(i,(0,e.createPresenceLifecycle)({element:i,onExitComplete:()=>{A||(pe(i),i.hidden=!0,i.style.pointerEvents=`none`)}}));let a=re(n),o=(0,e.ensureId)(r,`nav-menu-trigger-${a}`),s=(0,e.ensureId)(i,`nav-menu-content-${a}`);r.setAttribute(`aria-haspopup`,`true`),r.setAttribute(`aria-controls`,s),i.setAttribute(`aria-labelledby`,o)}});let ve=Array.from(V.values()).map(e=>e.trigger),ye=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,be=e=>{let t=e?.closest(`[data-slot="navigation-menu-item"]`);if(!t)return null;let n=t.dataset.value;if(!n)return null;let r=V.get(n);return!r||r.item!==t?null:r},xe=e=>{if(e.matches(ye))return e;let t=e.querySelectorAll(ye);for(let n of t)if(e.contains(n)&&!n.closest(`[data-slot="navigation-menu-content"]`)&&!(n.hidden||n.closest(`[hidden]`)))return n;return null},H=[],U=new Map;_.forEach(e=>{let t=be(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};H.push(e),U.set(e.element,e),U.set(e.item,e);return}let n=xe(e);if(!n)return;let r={kind:`plain`,element:n};H.push(r),U.set(r.element,r)});let Se=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==g;){let e=U.get(n);if(e)return e;n=n.parentElement}return null},Ce=e=>{let t=Se(e);return t?.kind===`plain`?t:null},we=e=>{let t=Se(e);return t?.kind===`submenu`?t:null},Te=()=>{let e=r.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},W=e=>{try{return e.matches(`:hover`)}catch{return!1}},Ee=()=>{for(let e of H){if(e.kind===`submenu`){if(W(e.item)||W(e.trigger))return e;continue}if(W(e.element))return e}return null},De=(e,t={})=>{let n=r.ownerDocument,i=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(x!==null&&!i&&$(),e.element.focus(),n.activeElement===e.element?(x!==null&&i?Z():X(e.element),!0):!1)},Oe=(e,t,n={})=>{for(let r=e+t;r>=0&&r<H.length;r+=t){let e=H[r];if(e&&De(e,n))return!0}return!1},ke=(e,t,n={})=>{let r=H.indexOf(e);return r===-1?!1:Oe(r,t,n)},Ae=(e,t,n={})=>{let r=H.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Oe(r,t,n)},je=e=>{if(!(e instanceof Node)||!g.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||be(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},Me=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,Ne=e=>Array.from(e.querySelectorAll(Me)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),Pe=e=>!e.isConnected||e.hidden||e.closest(`[hidden]`)||`disabled`in e&&e.disabled||e.getAttribute(`aria-hidden`)===`true`||e.getAttribute(`tabindex`)===`-1`?!1:e.matches(Me)?!0:e.tabIndex>=0,Fe=e=>{if(r.contains(e)||v?.contains(e))return!0;let t=z?.container;if(t instanceof HTMLElement&&t.contains(e))return!0;for(let{content:t}of V.values())if(t.contains(e))return!0;return!1},Ie=()=>{let e=r.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(Pe(n)&&!Fe(n)&&(r.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},Le=e=>{requestAnimationFrame(()=>{if(x!==e)return;let t=V.get(e);if(!t)return;let n=Ne(t.content)[0];n?n.focus():t.content.focus()})},G=()=>{w&&=(clearTimeout(w),null),ae&&=(clearTimeout(ae),null)},K=()=>{G(),S=null},Re=()=>{D=null,O=null},ze=()=>{M!==null&&(cancelAnimationFrame(M),M=null)},q=null,Be=()=>{if(!v)return null;let e=z?.container;return e instanceof HTMLElement?e:v.parentElement instanceof HTMLElement?v.parentElement:v},Ve=()=>{let t=Be();return q||(q=document.createElement(`div`),q.setAttribute(`data-slot`,`navigation-menu-bridge`),q.style.cssText=`position: absolute; pointer-events: auto; z-index: 0; display: none;`,F.push((0,e.on)(q,`pointerenter`,()=>{G()}),(0,e.on)(q,`pointerleave`,t=>{if(E||x===null)return;let n=t.relatedTarget;nt(n)||n&&(0,e.containsWithPortals)(r,n)||(Q(null),X(null))}))),t&&q.parentElement!==t&&t.insertBefore(q,t.firstChild),q},J=()=>{q&&(q.style.height=`0`,q.style.width=`0`,q.style.top=`0px`,q.style.left=`0px`,q.style.right=`0px`,q.style.bottom=`auto`,q.style.transform=`none`,q.style.clipPath=`none`,q.style.display=`none`)},He=()=>{if(!h)return null;let e=r.ownerDocument.body;return e?(j||(j=r.ownerDocument.createElement(`div`),j.setAttribute(`data-slot`,`navigation-menu-safe-triangle`),j.style.cssText=[`position: fixed`,`pointer-events: none`,`display: none`,`z-index: 2147483647`,`background: rgba(255, 0, 0, 0.18)`,`border: 1px solid rgba(255, 0, 0, 0.45)`].join(`; `)),j.parentElement!==e&&e.appendChild(j),j):null},Ue=()=>{j&&(j.style.width=`0`,j.style.height=`0`,j.style.clipPath=`none`,j.style.display=`none`)},Y=()=>{h||Ue()},We=e=>{let t=He();if(!t)return;let n=e.apex.x,r=e.apex.y,i=e.edgeA.x,a=e.edgeA.y,o=e.edgeB.x,s=e.edgeB.y,c=Math.min(n,i,o),l=Math.min(r,a,s),u=Math.max(n,i,o),d=Math.max(r,a,s),ee=Math.max(1,u-c),f=Math.max(1,d-l),p=(e,t)=>`${(e-c)/ee*100}% ${(t-l)/f*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${ee}px`,t.style.height=`${f}px`,t.style.clipPath=`polygon(${p(n,r)}, ${p(i,a)}, ${p(o,s)})`},Ge=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Ke=(e,t,n,r)=>{let i=Ge(e,t,n),a=Ge(e,n,r),o=Ge(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},qe=(e,t,n)=>{let r=.5;if(n.top>=t.bottom-r)return[{x:n.left,y:n.top},{x:n.right,y:n.top}];if(n.bottom<=t.top+r)return[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}];if(n.left>=t.right-r)return[{x:n.left,y:n.top},{x:n.left,y:n.bottom}];if(n.right<=t.left+r)return[{x:n.right,y:n.top},{x:n.right,y:n.bottom}];let i=[[{x:n.left,y:n.top},{x:n.right,y:n.top}],[{x:n.right,y:n.top},{x:n.right,y:n.bottom}],[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}],[{x:n.left,y:n.top},{x:n.left,y:n.bottom}]],a=([t,n])=>t.y===n.y?Math.abs(e.y-t.y):Math.abs(e.x-t.x),o=i[0],s=a(o);for(let e=1;e<i.length;e++){let t=i[e],n=a(t);n<s&&(o=t,s=n)}return o},Je=()=>x?V.get(x)??null:null,Ye=(e,t,n)=>{if(n.width<=0||n.height<=0)return null;let r={x:e.left+e.width/2,y:e.top+e.height*.62},[i,a]=qe(r,t,n);if(i.x===a.x){let e=Math.min(i.y,a.y),t=Math.max(i.y,a.y),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:i.x,y:e+r},a={x:a.x,y:t-r}}else{let e=Math.min(i.x,a.x),t=Math.max(i.x,a.x),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:e+r,y:i.y},a={x:t-r,y:a.y}}return{apex:r,edgeA:i,edgeB:a}},Xe=()=>{if(!te||!v||x===null)return null;let e=Je();if(!e)return null;let t=r.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),i=v.getBoundingClientRect(),a=e.content.getBoundingClientRect();return Ye(n,t,i.width>0&&i.height>0?i:a)},Ze=e=>{let t=Xe();return t?Ke({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},Qe=(e,t)=>({x:e.x-t.left,y:e.y-t.top}),$e=e=>{if(e.length<=1)return e.slice();let t=e=>`${e.x.toFixed(3)}:${e.y.toFixed(3)}`,n=new Map;for(let r of e)n.set(t(r),r);let r=Array.from(n.values()).sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x);if(r.length<=2)return r;let i=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),a=[];for(let e of r){for(;a.length>=2&&i(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}let o=[];for(let e=r.length-1;e>=0;e--){let t=r[e];for(;o.length>=2&&i(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return a.pop(),o.pop(),a.concat(o)},et=e=>{if(e.length<3){J();return}let t=Ve(),n=t.parentElement,r=$e(n&&n===z?.container?e.map(e=>({x:e.x-N,y:e.y-P})):e);if(r.length<3){J();return}let i=Math.min(...r.map(e=>e.x)),a=Math.min(...r.map(e=>e.y)),o=Math.max(...r.map(e=>e.x)),s=Math.max(...r.map(e=>e.y)),c=Math.max(1,o-i),l=Math.max(1,s-a),u=e=>`${(e.x-i)/c*100}% ${(e.y-a)/l*100}%`;t.style.display=`block`,t.style.transform=`none`,t.style.bottom=`auto`,t.style.right=`auto`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.width=`${c}px`,t.style.height=`${l}px`,t.style.clipPath=`polygon(${r.map(u).join(`, `)})`},tt=()=>{if(!h)return;let e=Xe();if(!e){Ue();return}We(e)},nt=e=>{if(!e)return!1;if(Je()?.content.contains(e)||v?.contains(e)||q?.contains(e))return!0;let t=z?.container;return!!(t instanceof HTMLElement&&t.contains(e))};F.push(Y),F.push(ze),F.push(J),F.push(()=>{Ue(),j?.parentElement&&j.parentElement.removeChild(j),j=null});let rt=(t,a,o)=>{v&&requestAnimationFrame(()=>{if(v.getAttribute(`data-state`)!==`open`||t.getAttribute(`data-state`)!==`active`)return;let s=t.firstElementChild,c=t.lastElementChild,l=s?getComputedStyle(s):null,u=c?getComputedStyle(c):null,d=l&&parseFloat(l.marginTop)||0,ee=u&&parseFloat(u.marginBottom)||0,f=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},p=t.getBoundingClientRect(),m=f(p.width,t.scrollWidth,t.offsetWidth,t.clientWidth),h=f(p.height,t.scrollHeight,t.offsetHeight,t.clientHeight)+d+ee,ne={top:p.top,left:p.left,width:m,height:h,right:p.left+m,bottom:p.top+h},re=getComputedStyle(v),ie=parseFloat(re.marginTop)||0;v.style.setProperty(`--viewport-width`,`${m}px`),v.style.setProperty(`--viewport-height`,`${h}px`);let g=r.getBoundingClientRect(),_=a.getBoundingClientRect(),y=(0,e.computeFloatingPosition)({anchorRect:_,contentRect:ne,side:o.side,align:o.align,sideOffset:o.sideOffset,alignOffset:o.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:n}),b=y.x-g.left,x=y.y-g.top;N=b,P=x;let S=i(y.side,y.align,_),C=S.x-(g.left+b),w=S.y-(g.top+x),ae=S.x-g.left,T=S.y-g.top,E=`${C}px ${w}px`,D=`${ae}px ${T}px`;v.style.top=`0px`,v.style.left=`0px`,v.style.willChange=`transform,width,height`,v.style.setProperty(`--transform-origin`,E),t.style.top=`0px`,t.style.left=`0px`,t.style.setProperty(`--transform-origin`,E),v.setAttribute(`data-side`,y.side),v.setAttribute(`data-align`,y.align),t.setAttribute(`data-side`,y.side),t.setAttribute(`data-align`,y.align);let O=z?.container;O&&O!==v&&(O.setAttribute(`data-side`,y.side),O.setAttribute(`data-align`,y.align),O.style.setProperty(`--transform-origin`,D)),me();let k=v.getBoundingClientRect(),A=[],j=Math.max(0,k.top-g.bottom),M=Math.max(0,g.top-k.bottom),F=Math.max(0,k.left-g.right),I=Math.max(0,g.left-k.right),L=Math.max(0,d+ie),oe=Math.max(j,M,L),se=Math.max(F,I),R=te?Ye(_,g,k):null,ce=(e,t,n,r)=>{n<=0||r<=0||A.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(oe>=se&&oe>0){let e=Math.max(j,M,L),t=b,n=M>j&&M>=L?x+h:x-e,r=m;if(R){let e=Math.min(R.edgeA.x,R.edgeB.x)-g.left,n=Math.max(R.edgeA.x,R.edgeB.x)-g.left;t=e-8,r=n-e+16}ce(t,n,r,e)}else if(se>0){let e=Math.max(F,I),t=x,n=I>F?b+m:b-e,r=h;if(R){let e=Math.min(R.edgeA.y,R.edgeB.y)-g.top,n=Math.max(R.edgeA.y,R.edgeB.y)-g.top;t=e-8,r=n-e+16}ce(n,t,e,r)}if(R){let e=Qe(R.apex,g),t=Qe(R.edgeA,g),n=Qe(R.edgeB,g);A.push(e,t,n)}et(A),tt()})},it=(e=Je())=>{if(!e)return;let t=ge(e.item,e.content);rt(e.content,e.trigger,t)},at=(0,e.createPositionSync)({observedElements:[r,...ve],isActive:()=>x!==null,ancestorScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{it()}});F.push(()=>at.stop());let ot=e=>C===-1||e>C?`right`:`left`,X=e=>{if(!y)return;if(T=e,!e){ze(),y.removeAttribute(`data-instant`),y.setAttribute(`data-state`,`hidden`);return}y.getAttribute(`data-state`)!==`visible`&&(ze(),y.setAttribute(`data-instant`,``),M=requestAnimationFrame(()=>{M=requestAnimationFrame(()=>{y.removeAttribute(`data-instant`),M=null})}));let t=g.getBoundingClientRect(),n=e.getBoundingClientRect();y.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),y.style.setProperty(`--indicator-width`,`${n.width}px`),y.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(v&&parseFloat(getComputedStyle(v).marginTop)||0)<1?1:0;y.style.setProperty(`--indicator-height`,`${n.height-r}px`),y.setAttribute(`data-state`,`visible`)},st=()=>x?V.get(x)?.trigger??null:null,Z=(e=null)=>{let t=st();if(t){X(t);return}X(e)},Q=(t,n=!1)=>{if(Y(),t===x){t===null?K():G();return}if(!n&&t!==null&&t===S)return;G(),S=t===null?null:t;let i=()=>{let n=x,i=t?V.get(t):null,a=n!==null&&t!==null&&n!==t,o=a&&i?ot(i.index):null,s=document.activeElement;if(t===null&&s&&n){let t=V.get(n);t&&(0,e.containsWithPortals)(t.content,s)&&t.trigger.focus()}if(V.forEach(({trigger:r,content:i,item:a},s)=>{let c=s===t,l=s===n;if((0,e.setAria)(r,`expanded`,c),r.setAttribute(`data-state`,c?`open`:`closed`),a.setAttribute(`data-state`,c?`open`:`closed`),!c){let e=I.get(i);if(i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),ie(i,!0),i.style.pointerEvents=`none`,l&&o){let e=o===`right`?`to-left`:`to-right`;i.setAttribute(`data-motion`,e)}else l&&i.removeAttribute(`data-motion`);l?e?.exit():e?.isExiting||(i.removeAttribute(`data-motion`),pe(i),i.hidden=!0)}}),i){if(z?.mount(),v&&(v.hidden=!1),n===null&&de?.enter(),fe(i.content),I.get(i.content)?.enter(),at.start(),o){let e=o===`right`?`from-right`:`from-left`;i.content.setAttribute(`data-motion`,e)}else i.content.removeAttribute(`data-motion`);i.content.setAttribute(`data-state`,`active`),i.content.removeAttribute(`aria-hidden`),ie(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,C=i.index,it(i),he(i),X(i.trigger)}else at.stop(),J(),Y(),de?.exit(),he(null);let c=t!==null;if(r.setAttribute(`data-state`,c?`open`:`closed`),o?r.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):r.removeAttribute(`data-motion`),v){v.setAttribute(`data-state`,c?`open`:`closed`),v.style.pointerEvents=c?`auto`:`none`;let e=z?.container;c&&!a?(v.setAttribute(`data-instant`,``),e?.setAttribute(`data-instant`,``)):a?ue():c||ue(),o&&v.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)}x=t,S=null,t===null&&X(null),tt(),(0,e.emit)(r,`navigation-menu:change`,{value:t}),ne?.(t)};n?i():t!==null&&x===null?w=setTimeout(i,c):t!==null&&x!==null?i():ae=setTimeout(i,l)};r.setAttribute(`data-state`,`closed`),v&&(v.setAttribute(`data-state`,`closed`),v.hidden=!0,v.style.pointerEvents=`none`),y&&y.setAttribute(`data-state`,`hidden`),V.forEach(({trigger:t,content:n,item:r})=>{t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),(0,e.setAria)(t,`expanded`,!1),t.setAttribute(`data-state`,`closed`),t.tabIndex=0,r.setAttribute(`data-state`,`closed`),n.setAttribute(`data-state`,`inactive`),n.setAttribute(`aria-hidden`,`true`),n.tabIndex=-1,ie(n,!0),n.hidden=!0,n.style.pointerEvents=`none`}),V.forEach(({item:t,trigger:n},i)=>{F.push((0,e.on)(n,`pointerenter`,e=>{if(!E){if(x!==i&&Ze(e))return;X(n)}})),F.push((0,e.on)(t,`pointerenter`,e=>{if(!E){if(x!==i&&Ze(e))return;Q(i)}})),F.push((0,e.on)(t,`pointerleave`,t=>{if(S===i&&x===null&&K(),x===i&&!E){let n=t.relatedTarget;if(nt(n))return;(!n||!(0,e.containsWithPortals)(r,n))&&(Q(null),X(null))}})),F.push((0,e.on)(n,`focus`,()=>{if(D===n){D=null;return}u&&Q(i,!0),Z(n)})),F.push((0,e.on)(n,`pointerdown`,()=>{D=n,O=n}),(0,e.on)(n,`keydown`,()=>{O=null})),F.push((0,e.on)(n,`click`,()=>{let e=O===n;O=null,D=null,K(),x===i&&E?(E=!1,Q(null,!0),X(null)):x===i&&!E?(E=!0,X(n),e||Le(i)):(E=!0,Q(i,!0),X(n),e||Le(i))}))}),F.push((0,e.on)(g,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=we(t.target);if(n){if(k=!0,E||x!==n.value&&Ze(t))return;X(n.trigger),Q(n.value);return}let r=Ce(t.target);if(r){if(k=!0,x!==null){if(E)return;$()}X(r.element);return}x!==null&&(E||je(t.target)&&$())}),(0,e.on)(g,`click`,e=>{x!==null&&je(e.target)&&$()})),F.push((0,e.on)(g,`focusin`,e=>{let t=Ce(e.target);if(t){if(x!==null){Z();return}X(t.element)}}),(0,e.on)(r,`pointerenter`,()=>{k=!0}),(0,e.on)(r,`pointerleave`,e=>{let t=e.relatedTarget;if(!nt(t)&&(k=!1,!E)){if(Ze(e)){G();return}Q(null),X(null)}}),(0,e.on)(r,`pointerdown`,()=>{Y(),K()}));let ct=()=>{if(!Te()||x!==null||S!==null||E)return;let e=Ee();if(k=e!==null||r instanceof HTMLElement&&W(r),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};v&&F.push((0,e.on)(v,`pointerenter`,()=>{Y(),G()}),(0,e.on)(v,`transitionend`,e=>{if(e.target!==v)return;let t=x?V.get(x):null;if(t){let e=ge(t.item,t.content);rt(t.content,t.trigger,e)}})),V.forEach(({content:t})=>{F.push((0,e.on)(t,`pointerenter`,()=>{Y(),G()}),(0,e.on)(t,`pointerleave`,t=>{if(E)return;let n=t.relatedTarget;nt(n)||(0,e.containsWithPortals)(r,n)||(Q(null),X(null))}))}),F.push((0,e.on)(g,`keydown`,e=>{let t=Se(e.target);if(!t)return;let n=H.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`Tab`:if(e.shiftKey||x===null)return;(ke(t,1,{preserveOpenOnPlain:!0})||Ie())&&e.preventDefault();return;case`ArrowLeft`:r=n-1,r<0&&(r=H.length-1);break;case`ArrowRight`:r=n+1,r>=H.length&&(r=0);break;case`ArrowDown`:if(t.kind===`submenu`){e.preventDefault();let n=t.value;E=!0,Q(n,!0),Le(n)}return;case`Home`:r=0;break;case`End`:r=H.length-1;break;case`Escape`:E=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=H[r];i&&De(i,{preserveOpenOnPlain:!0})})),V.forEach(({content:t,trigger:n})=>{F.push((0,e.on)(t,`keydown`,e=>{let r=e.target,i=Ne(t),a=i.indexOf(r);if(a!==-1)switch(e.key){case`Tab`:if(!e.shiftKey&&a===i.length-1){(Ae(n,1,{preserveOpenOnPlain:!0})||Ie())&&e.preventDefault();return}if(e.shiftKey&&a===0){e.preventDefault(),n.focus();return}return;case`ArrowDown`:case`ArrowRight`:{e.preventDefault();let t=a+1;t<i.length&&i[t]?.focus();break}case`ArrowUp`:case`ArrowLeft`:e.preventDefault(),a===0?n.focus():i[a-1]?.focus();break;case`Escape`:e.preventDefault(),E=!1,Q(null,!0),X(null),n.focus();break}}))});let lt=()=>(0,e.containsWithPortals)(r,document.activeElement)||k||E,$=()=>{Y(),K(),Re(),E=!1,Q(null,!0),X(null),tt()};F.push((0,e.on)(document,`focusin`,t=>{let n=t.target;if(!(0,e.containsWithPortals)(r,n)){if(x!==null){$();return}X(null)}})),F.push((0,e.createDismissLayer)({root:r,isOpen:()=>x!==null&&lt(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(r,t)})),F.push((0,e.on)(window,`resize`,()=>{(x||T)&&requestAnimationFrame(()=>Z(T))}),(0,e.on)(g,`scroll`,()=>{(x||T)&&requestAnimationFrame(()=>Z(T))})),F.push((0,e.on)(r,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(V.has(t.value)){E=!0,Q(t.value,!0);let e=V.get(t.value);e&&X(e.trigger)}}}));let ut={get value(){return x},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{A=!0,K(),Re(),F.forEach(e=>e()),F.length=0,(0,e.clearRootBinding)(r,a,ut)}};return ct(),(0,e.setRootBinding)(r,a,ut),ut}function s(t=document){let n=[];for(let r of(0,e.getRoots)(t,`navigation-menu`))(0,e.hasRootBinding)(r,a)||n.push(o(r));return n}exports.create=s,exports.createNavigationMenu=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`start`,`center`,`end`],n=[`top`,`right`,`bottom`,`left`],r=(e,t)=>t===`start`?{x:e.left,y:e.top}:t===`end`?{x:e.right,y:e.bottom}:{x:e.left+e.width/2,y:e.top+e.height/2},i=(e,t,n)=>{let i=r(n,t);return e===`top`?{x:i.x,y:n.top}:e===`bottom`?{x:i.x,y:n.bottom}:e===`left`?{x:n.left,y:i.y}:{x:n.right,y:i.y}},a=`@data-slot/navigation-menu`;function o(r,o={}){let s=(0,e.reuseRootBinding)(r,a,`[@data-slot/navigation-menu] createNavigationMenu() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(s)return s;let c=o.delayOpen??(0,e.getDataNumber)(r,`delayOpen`)??0,l=o.delayClose??(0,e.getDataNumber)(r,`delayClose`)??0,u=o.openOnFocus??(0,e.getDataBool)(r,`openOnFocus`)??!1,ee=o.side??(0,e.getDataEnum)(r,`side`,n)??`bottom`,d=o.align??(0,e.getDataEnum)(r,`align`,t)??`start`,f=o.sideOffset??(0,e.getDataNumber)(r,`sideOffset`)??0,p=o.alignOffset??(0,e.getDataNumber)(r,`alignOffset`)??0,m=o.safeTriangle??(0,e.getDataBool)(r,`safeTriangle`)??!1,h=o.debugSafeTriangle??(0,e.getDataBool)(r,`debugSafeTriangle`)??!1,te=m||h,ne=o.onValueChange,re=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),ie=(e,t)=>{`inert`in e&&(e.inert=t)},g=(0,e.getPart)(r,`navigation-menu-list`),_=(0,e.getParts)(r,`navigation-menu-item`),v=(0,e.getPart)(r,`navigation-menu-viewport`),y=(0,e.getPart)(r,`navigation-menu-indicator`),b=(e,t)=>{let n=e.parentElement;for(;n&&n!==r;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!g||_.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let x=null,S=null,ae=-1,oe=null,se=null,C=null,w=!1,T=null,E=null,D=!1,O=!1,k=null,A=null,j=null,M=0,N=0,P=!1,F=!1,I=[],L=new Map,R=new Map,ce=v?b(v,`navigation-menu-viewport-positioner`):null,le=v?b(v,`navigation-menu-positioner`):null,z=ce??le,ue=z?b(z,`navigation-menu-portal`):null,B=v?(0,e.createPortalLifecycle)({content:v,root:r,enabled:!0,wrapperSlot:z?void 0:`navigation-menu-viewport-positioner`,container:z??void 0,mountTarget:z?ue??z:void 0}):null,de=()=>{let e=B?.container;e instanceof HTMLElement&&(e.style.position=``,e.style.top=``,e.style.left=``,e.style.width=``,e.style.height=``,e.style.margin=``,e.style.willChange=``,e.style.pointerEvents=``,e.style.transform=``,e.style.removeProperty(`--transform-origin`))},fe=()=>{j!==null&&(cancelAnimationFrame(j),j=null)},V=()=>{let e=P||F;v&&(e?v.setAttribute(`data-instant`,``):v.removeAttribute(`data-instant`));let t=B?.container;t instanceof HTMLElement&&(e?t.setAttribute(`data-instant`,``):t.removeAttribute(`data-instant`))},pe=()=>{fe(),j=requestAnimationFrame(()=>{j=null,F=!1,V()})},me=()=>{fe(),P=!1,F=!1,V()},he=v?(0,e.createPresenceLifecycle)({element:v,onExitComplete:()=>{O||(me(),de(),M=0,N=0,B?.restore(),v.hidden=!0,v.style.pointerEvents=`none`)}}):null,ge=e=>{if(!v)return;let t=R.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,R.set(e,t)),e.parentNode!==v&&v.appendChild(e)},_e=e=>{let t=R.get(e);if(!t||!t.mountedInViewport)return;let n=t.originalParent,r=t.originalNextSibling;n&&n.isConnected?r&&r.parentNode===n?n.insertBefore(e,r):n.appendChild(e):e.remove(),t.mountedInViewport=!1,t.originalParent=null,t.originalNextSibling=null},ve=()=>{if(!v||!B)return;let e=B.container,t=r.ownerDocument.defaultView??window,n=r.getBoundingClientRect(),i=n.top+t.scrollY+N,a=n.left+t.scrollX+M;e.style.position=`absolute`,e.style.top=`${i}px`,e.style.left=`${a}px`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`top,left`,e.style.pointerEvents=`none`},H=null,ye=e=>{H?.disconnect(),H=null,!(!v||!e)&&(H=new ResizeObserver(()=>{let t=be(e.item,e.content);lt(e.content,e.trigger,t)}),H.observe(e.content))};I.push(()=>H?.disconnect()),I.push(()=>{me(),L.forEach(e=>e.cleanup()),L.clear(),R.forEach((e,t)=>{_e(t),t.hidden=!0,t.style.pointerEvents=`none`}),R.clear(),de(),M=0,N=0,he?.cleanup(),B?.cleanup()});let U=new Map,be=(r,i)=>({side:o.side??(0,e.getDataEnum)(i,`side`,n)??(0,e.getDataEnum)(r,`side`,n)??ee,align:o.align??(0,e.getDataEnum)(i,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??d,sideOffset:o.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??f,alignOffset:o.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??p}),xe=0;_.forEach(t=>{let n=t.dataset.value;if(!n)return;let r=(0,e.getPart)(t,`navigation-menu-trigger`),i=(0,e.getPart)(t,`navigation-menu-content`);if(r&&i){U.set(n,{value:n,item:t,trigger:r,content:i,index:xe++}),L.set(i,(0,e.createPresenceLifecycle)({element:i,onExitComplete:()=>{O||(_e(i),i.hidden=!0,i.style.pointerEvents=`none`)}}));let a=re(n),o=(0,e.ensureId)(r,`nav-menu-trigger-${a}`),s=(0,e.ensureId)(i,`nav-menu-content-${a}`);r.setAttribute(`aria-haspopup`,`true`),r.setAttribute(`aria-controls`,s),i.setAttribute(`aria-labelledby`,o)}});let Se=Array.from(U.values()).map(e=>e.trigger),Ce=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,we=e=>{let t=e?.closest(`[data-slot="navigation-menu-item"]`);if(!t)return null;let n=t.dataset.value;if(!n)return null;let r=U.get(n);return!r||r.item!==t?null:r},Te=e=>{if(e.matches(Ce))return e;let t=e.querySelectorAll(Ce);for(let n of t)if(e.contains(n)&&!n.closest(`[data-slot="navigation-menu-content"]`)&&!(n.hidden||n.closest(`[hidden]`)))return n;return null},W=[],G=new Map;_.forEach(e=>{let t=we(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};W.push(e),G.set(e.element,e),G.set(e.item,e);return}let n=Te(e);if(!n)return;let r={kind:`plain`,element:n};W.push(r),G.set(r.element,r)});let Ee=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==g;){let e=G.get(n);if(e)return e;n=n.parentElement}return null},De=e=>{let t=Ee(e);return t?.kind===`plain`?t:null},Oe=e=>{let t=Ee(e);return t?.kind===`submenu`?t:null},ke=()=>{let e=r.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},Ae=e=>{try{return e.matches(`:hover`)}catch{return!1}},je=()=>{for(let e of W){if(e.kind===`submenu`){if(Ae(e.item)||Ae(e.trigger))return e;continue}if(Ae(e.element))return e}return null},Me=(e,t={})=>{let n=r.ownerDocument,i=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(x!==null&&!i&&$(),e.element.focus(),n.activeElement===e.element?(x!==null&&i?Z():X(e.element),!0):!1)},Ne=(e,t,n={})=>{for(let r=e+t;r>=0&&r<W.length;r+=t){let e=W[r];if(e&&Me(e,n))return!0}return!1},Pe=(e,t,n={})=>{let r=W.indexOf(e);return r===-1?!1:Ne(r,t,n)},Fe=(e,t,n={})=>{let r=W.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Ne(r,t,n)},Ie=e=>{if(!(e instanceof Node)||!g.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||we(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},Le=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,Re=e=>Array.from(e.querySelectorAll(Le)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),ze=e=>!e.isConnected||e.hidden||e.closest(`[hidden]`)||`disabled`in e&&e.disabled||e.getAttribute(`aria-hidden`)===`true`||e.getAttribute(`tabindex`)===`-1`?!1:e.matches(Le)?!0:e.tabIndex>=0,Be=e=>{if(r.contains(e)||v?.contains(e))return!0;let t=B?.container;if(t instanceof HTMLElement&&t.contains(e))return!0;for(let{content:t}of U.values())if(t.contains(e))return!0;return!1},Ve=()=>{let e=r.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(ze(n)&&!Be(n)&&(r.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},He=e=>{requestAnimationFrame(()=>{if(x!==e)return;let t=U.get(e);if(!t)return;let n=Re(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{oe&&=(clearTimeout(oe),null),se&&=(clearTimeout(se),null)},q=()=>{K(),S=null},Ue=()=>{T=null,E=null},We=()=>{A!==null&&(cancelAnimationFrame(A),A=null)},J=null,Ge=()=>{if(!v)return null;let e=B?.container;return e instanceof HTMLElement?e:v.parentElement instanceof HTMLElement?v.parentElement:v},Ke=()=>{let t=Ge();return J||(J=document.createElement(`div`),J.setAttribute(`data-slot`,`navigation-menu-bridge`),J.style.cssText=`position: absolute; pointer-events: auto; z-index: 0; display: none;`,I.push((0,e.on)(J,`pointerenter`,()=>{K()}),(0,e.on)(J,`pointerleave`,t=>{if(w||x===null)return;let n=t.relatedTarget;ct(n)||n&&(0,e.containsWithPortals)(r,n)||(Q(null),X(null))}))),t&&J.parentElement!==t&&t.insertBefore(J,t.firstChild),J},qe=()=>{J&&(J.style.height=`0`,J.style.width=`0`,J.style.top=`0px`,J.style.left=`0px`,J.style.right=`0px`,J.style.bottom=`auto`,J.style.transform=`none`,J.style.clipPath=`none`,J.style.display=`none`)},Je=()=>{if(!h)return null;let e=r.ownerDocument.body;return e?(k||(k=r.ownerDocument.createElement(`div`),k.setAttribute(`data-slot`,`navigation-menu-safe-triangle`),k.style.cssText=[`position: fixed`,`pointer-events: none`,`display: none`,`z-index: 2147483647`,`background: rgba(255, 0, 0, 0.18)`,`border: 1px solid rgba(255, 0, 0, 0.45)`].join(`; `)),k.parentElement!==e&&e.appendChild(k),k):null},Ye=()=>{k&&(k.style.width=`0`,k.style.height=`0`,k.style.clipPath=`none`,k.style.display=`none`)},Y=()=>{h||Ye()},Xe=e=>{let t=Je();if(!t)return;let n=e.apex.x,r=e.apex.y,i=e.edgeA.x,a=e.edgeA.y,o=e.edgeB.x,s=e.edgeB.y,c=Math.min(n,i,o),l=Math.min(r,a,s),u=Math.max(n,i,o),ee=Math.max(r,a,s),d=Math.max(1,u-c),f=Math.max(1,ee-l),p=(e,t)=>`${(e-c)/d*100}% ${(t-l)/f*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${d}px`,t.style.height=`${f}px`,t.style.clipPath=`polygon(${p(n,r)}, ${p(i,a)}, ${p(o,s)})`},Ze=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Qe=(e,t,n,r)=>{let i=Ze(e,t,n),a=Ze(e,n,r),o=Ze(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},$e=(e,t,n)=>{let r=.5;if(n.top>=t.bottom-r)return[{x:n.left,y:n.top},{x:n.right,y:n.top}];if(n.bottom<=t.top+r)return[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}];if(n.left>=t.right-r)return[{x:n.left,y:n.top},{x:n.left,y:n.bottom}];if(n.right<=t.left+r)return[{x:n.right,y:n.top},{x:n.right,y:n.bottom}];let i=[[{x:n.left,y:n.top},{x:n.right,y:n.top}],[{x:n.right,y:n.top},{x:n.right,y:n.bottom}],[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}],[{x:n.left,y:n.top},{x:n.left,y:n.bottom}]],a=([t,n])=>t.y===n.y?Math.abs(e.y-t.y):Math.abs(e.x-t.x),o=i[0],s=a(o);for(let e=1;e<i.length;e++){let t=i[e],n=a(t);n<s&&(o=t,s=n)}return o},et=()=>x?U.get(x)??null:null,tt=(e,t,n)=>{if(n.width<=0||n.height<=0)return null;let r={x:e.left+e.width/2,y:e.top+e.height*.62},[i,a]=$e(r,t,n);if(i.x===a.x){let e=Math.min(i.y,a.y),t=Math.max(i.y,a.y),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:i.x,y:e+r},a={x:a.x,y:t-r}}else{let e=Math.min(i.x,a.x),t=Math.max(i.x,a.x),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:e+r,y:i.y},a={x:t-r,y:a.y}}return{apex:r,edgeA:i,edgeB:a}},nt=()=>{if(!te||!v||x===null)return null;let e=et();if(!e)return null;let t=r.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),i=v.getBoundingClientRect(),a=e.content.getBoundingClientRect();return tt(n,t,i.width>0&&i.height>0?i:a)},rt=e=>{let t=nt();return t?Qe({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},it=(e,t)=>({x:e.x-t.left,y:e.y-t.top}),at=e=>{if(e.length<=1)return e.slice();let t=e=>`${e.x.toFixed(3)}:${e.y.toFixed(3)}`,n=new Map;for(let r of e)n.set(t(r),r);let r=Array.from(n.values()).sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x);if(r.length<=2)return r;let i=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),a=[];for(let e of r){for(;a.length>=2&&i(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}let o=[];for(let e=r.length-1;e>=0;e--){let t=r[e];for(;o.length>=2&&i(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return a.pop(),o.pop(),a.concat(o)},ot=e=>{if(e.length<3){qe();return}let t=Ke(),n=t.parentElement,r=at(n&&n===B?.container?e.map(e=>({x:e.x-M,y:e.y-N})):e);if(r.length<3){qe();return}let i=Math.min(...r.map(e=>e.x)),a=Math.min(...r.map(e=>e.y)),o=Math.max(...r.map(e=>e.x)),s=Math.max(...r.map(e=>e.y)),c=Math.max(1,o-i),l=Math.max(1,s-a),u=e=>`${(e.x-i)/c*100}% ${(e.y-a)/l*100}%`;t.style.display=`block`,t.style.transform=`none`,t.style.bottom=`auto`,t.style.right=`auto`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.width=`${c}px`,t.style.height=`${l}px`,t.style.clipPath=`polygon(${r.map(u).join(`, `)})`},st=()=>{if(!h)return;let e=nt();if(!e){Ye();return}Xe(e)},ct=e=>{if(!e)return!1;if(et()?.content.contains(e)||v?.contains(e)||J?.contains(e))return!0;let t=B?.container;return!!(t instanceof HTMLElement&&t.contains(e))};I.push(Y),I.push(We),I.push(qe),I.push(()=>{Ye(),k?.parentElement&&k.parentElement.removeChild(k),k=null});let lt=(t,a,o)=>{v&&requestAnimationFrame(()=>{if(v.getAttribute(`data-state`)!==`open`||t.getAttribute(`data-state`)!==`active`)return;let s=t.firstElementChild,c=t.lastElementChild,l=s?getComputedStyle(s):null,u=c?getComputedStyle(c):null,ee=l&&parseFloat(l.marginTop)||0,d=u&&parseFloat(u.marginBottom)||0,f=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},p=t.getBoundingClientRect(),m=f(p.width,t.scrollWidth,t.offsetWidth,t.clientWidth),h=f(p.height,t.scrollHeight,t.offsetHeight,t.clientHeight)+ee+d,ne={top:p.top,left:p.left,width:m,height:h,right:p.left+m,bottom:p.top+h},re=getComputedStyle(v),ie=parseFloat(re.marginTop)||0;v.style.setProperty(`--viewport-width`,`${m}px`),v.style.setProperty(`--viewport-height`,`${h}px`);let g=r.getBoundingClientRect(),_=a.getBoundingClientRect(),y=(0,e.computeFloatingPosition)({anchorRect:_,contentRect:ne,side:o.side,align:o.align,sideOffset:o.sideOffset,alignOffset:o.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:n}),b=y.x-g.left,x=y.y-g.top;M=b,N=x;let S=i(y.side,y.align,_),ae=S.x-(g.left+b),oe=S.y-(g.top+x),se=S.x-g.left,C=S.y-g.top,w=`${ae}px ${oe}px`,T=`${se}px ${C}px`;v.style.top=`0px`,v.style.left=`0px`,v.style.willChange=`transform,width,height`,v.style.setProperty(`--transform-origin`,w),t.style.top=`0px`,t.style.left=`0px`,t.style.setProperty(`--transform-origin`,w),v.setAttribute(`data-side`,y.side),v.setAttribute(`data-align`,y.align),t.setAttribute(`data-side`,y.side),t.setAttribute(`data-align`,y.align);let E=B?.container;E&&E!==v&&(E.setAttribute(`data-side`,y.side),E.setAttribute(`data-align`,y.align),E.style.setProperty(`--transform-origin`,T)),ve();let D=v.getBoundingClientRect(),O=[],k=Math.max(0,D.top-g.bottom),A=Math.max(0,g.top-D.bottom),j=Math.max(0,D.left-g.right),P=Math.max(0,g.left-D.right),F=Math.max(0,ee+ie),I=Math.max(k,A,F),L=Math.max(j,P),R=te?tt(_,g,D):null,ce=(e,t,n,r)=>{n<=0||r<=0||O.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(I>=L&&I>0){let e=Math.max(k,A,F),t=b,n=A>k&&A>=F?x+h:x-e,r=m;if(R){let e=Math.min(R.edgeA.x,R.edgeB.x)-g.left,n=Math.max(R.edgeA.x,R.edgeB.x)-g.left;t=e-8,r=n-e+16}ce(t,n,r,e)}else if(L>0){let e=Math.max(j,P),t=x,n=P>j?b+m:b-e,r=h;if(R){let e=Math.min(R.edgeA.y,R.edgeB.y)-g.top,n=Math.max(R.edgeA.y,R.edgeB.y)-g.top;t=e-8,r=n-e+16}ce(n,t,e,r)}if(R){let e=it(R.apex,g),t=it(R.edgeA,g),n=it(R.edgeB,g);O.push(e,t,n)}ot(O),st()})},ut=(e=et())=>{if(!e)return;let t=be(e.item,e.content);lt(e.content,e.trigger,t)},dt=(0,e.createPositionSync)({observedElements:[r,...Se],isActive:()=>x!==null,ancestorScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{F=!0,V(),ut(),pe()}});I.push(()=>dt.stop());let ft=e=>ae===-1||e>ae?`right`:`left`,X=e=>{if(!y)return;if(C=e,!e){We(),y.removeAttribute(`data-instant`),y.setAttribute(`data-state`,`hidden`);return}y.getAttribute(`data-state`)!==`visible`&&(We(),y.setAttribute(`data-instant`,``),A=requestAnimationFrame(()=>{A=requestAnimationFrame(()=>{y.removeAttribute(`data-instant`),A=null})}));let t=g.getBoundingClientRect(),n=e.getBoundingClientRect();y.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),y.style.setProperty(`--indicator-width`,`${n.width}px`),y.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(v&&parseFloat(getComputedStyle(v).marginTop)||0)<1?1:0;y.style.setProperty(`--indicator-height`,`${n.height-r}px`),y.setAttribute(`data-state`,`visible`)},pt=()=>x?U.get(x)?.trigger??null:null,Z=(e=null)=>{let t=pt();if(t){X(t);return}X(e)},Q=(t,n=!1)=>{if(Y(),t===x){t===null?q():K();return}if(!n&&t!==null&&t===S)return;K(),S=t===null?null:t;let i=()=>{let n=x,i=t?U.get(t):null,a=n!==null&&t!==null&&n!==t,o=a&&i?ft(i.index):null,s=document.activeElement;if(t===null&&s&&n){let t=U.get(n);t&&(0,e.containsWithPortals)(t.content,s)&&t.trigger.focus()}if(U.forEach(({trigger:r,content:i,item:a},s)=>{let c=s===t,l=s===n;if((0,e.setAria)(r,`expanded`,c),r.setAttribute(`data-state`,c?`open`:`closed`),a.setAttribute(`data-state`,c?`open`:`closed`),!c){let e=L.get(i);if(i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),ie(i,!0),i.style.pointerEvents=`none`,l&&o){let e=o===`right`?`to-left`:`to-right`;i.setAttribute(`data-motion`,e)}else l&&i.removeAttribute(`data-motion`);l?e?.exit():e?.isExiting||(i.removeAttribute(`data-motion`),_e(i),i.hidden=!0)}}),i){if(B?.mount(),v&&(v.hidden=!1),n===null&&he?.enter(),ge(i.content),L.get(i.content)?.enter(),dt.start(),o){let e=o===`right`?`from-right`:`from-left`;i.content.setAttribute(`data-motion`,e)}else i.content.removeAttribute(`data-motion`);i.content.setAttribute(`data-state`,`active`),i.content.removeAttribute(`aria-hidden`),ie(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,ae=i.index,ut(i),ye(i),X(i.trigger)}else dt.stop(),qe(),Y(),he?.exit(),ye(null);let c=t!==null;r.setAttribute(`data-state`,c?`open`:`closed`),o?r.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):r.removeAttribute(`data-motion`),v&&(v.setAttribute(`data-state`,c?`open`:`closed`),v.style.pointerEvents=c?`auto`:`none`,P=c&&!a,(!c||a)&&(fe(),F=!1),V(),o&&v.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),x=t,S=null,t===null&&X(null),st(),(0,e.emit)(r,`navigation-menu:change`,{value:t}),ne?.(t)};n?i():t!==null&&x===null?oe=setTimeout(i,c):t!==null&&x!==null?i():se=setTimeout(i,l)};r.setAttribute(`data-state`,`closed`),v&&(v.setAttribute(`data-state`,`closed`),v.hidden=!0,v.style.pointerEvents=`none`),y&&y.setAttribute(`data-state`,`hidden`),U.forEach(({trigger:t,content:n,item:r})=>{t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),(0,e.setAria)(t,`expanded`,!1),t.setAttribute(`data-state`,`closed`),t.tabIndex=0,r.setAttribute(`data-state`,`closed`),n.setAttribute(`data-state`,`inactive`),n.setAttribute(`aria-hidden`,`true`),n.tabIndex=-1,ie(n,!0),n.hidden=!0,n.style.pointerEvents=`none`}),U.forEach(({item:t,trigger:n},i)=>{I.push((0,e.on)(n,`pointerenter`,e=>{if(!w){if(x!==i&&rt(e))return;X(n)}})),I.push((0,e.on)(t,`pointerenter`,e=>{if(!w){if(x!==i&&rt(e))return;Q(i)}})),I.push((0,e.on)(t,`pointerleave`,t=>{if(S===i&&x===null&&q(),x===i&&!w){let n=t.relatedTarget;if(ct(n))return;(!n||!(0,e.containsWithPortals)(r,n))&&(Q(null),X(null))}})),I.push((0,e.on)(n,`focus`,()=>{if(T===n){T=null;return}u&&Q(i,!0),Z(n)})),I.push((0,e.on)(n,`pointerdown`,()=>{T=n,E=n}),(0,e.on)(n,`keydown`,()=>{E=null})),I.push((0,e.on)(n,`click`,()=>{let e=E===n;E=null,T=null,q(),x===i&&w?(w=!1,Q(null,!0),X(null)):x===i&&!w?(w=!0,X(n),e||He(i)):(w=!0,Q(i,!0),X(n),e||He(i))}))}),I.push((0,e.on)(g,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=Oe(t.target);if(n){if(D=!0,w||x!==n.value&&rt(t))return;X(n.trigger),Q(n.value);return}let r=De(t.target);if(r){if(D=!0,x!==null){if(w)return;$()}X(r.element);return}x!==null&&(w||Ie(t.target)&&$())}),(0,e.on)(g,`click`,e=>{x!==null&&Ie(e.target)&&$()})),I.push((0,e.on)(g,`focusin`,e=>{let t=De(e.target);if(t){if(x!==null){Z();return}X(t.element)}}),(0,e.on)(r,`pointerenter`,()=>{D=!0}),(0,e.on)(r,`pointerleave`,e=>{let t=e.relatedTarget;if(!ct(t)&&(D=!1,!w)){if(rt(e)){K();return}Q(null),X(null)}}),(0,e.on)(r,`pointerdown`,()=>{Y(),q()}));let mt=()=>{if(!ke()||x!==null||S!==null||w)return;let e=je();if(D=e!==null||r instanceof HTMLElement&&Ae(r),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};v&&I.push((0,e.on)(v,`pointerenter`,()=>{Y(),K()}),(0,e.on)(v,`transitionend`,e=>{if(e.target!==v)return;let t=x?U.get(x):null;if(t){let e=be(t.item,t.content);lt(t.content,t.trigger,e)}})),U.forEach(({content:t})=>{I.push((0,e.on)(t,`pointerenter`,()=>{Y(),K()}),(0,e.on)(t,`pointerleave`,t=>{if(w)return;let n=t.relatedTarget;ct(n)||(0,e.containsWithPortals)(r,n)||(Q(null),X(null))}))}),I.push((0,e.on)(g,`keydown`,e=>{let t=Ee(e.target);if(!t)return;let n=W.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`Tab`:if(e.shiftKey||x===null)return;(Pe(t,1,{preserveOpenOnPlain:!0})||Ve())&&e.preventDefault();return;case`ArrowLeft`:r=n-1,r<0&&(r=W.length-1);break;case`ArrowRight`:r=n+1,r>=W.length&&(r=0);break;case`ArrowDown`:if(t.kind===`submenu`){e.preventDefault();let n=t.value;w=!0,Q(n,!0),He(n)}return;case`Home`:r=0;break;case`End`:r=W.length-1;break;case`Escape`:w=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=W[r];i&&Me(i,{preserveOpenOnPlain:!0})})),U.forEach(({content:t,trigger:n})=>{I.push((0,e.on)(t,`keydown`,e=>{let r=e.target,i=Re(t),a=i.indexOf(r);if(a!==-1)switch(e.key){case`Tab`:if(!e.shiftKey&&a===i.length-1){(Fe(n,1,{preserveOpenOnPlain:!0})||Ve())&&e.preventDefault();return}if(e.shiftKey&&a===0){e.preventDefault(),n.focus();return}return;case`ArrowDown`:case`ArrowRight`:{e.preventDefault();let t=a+1;t<i.length&&i[t]?.focus();break}case`ArrowUp`:case`ArrowLeft`:e.preventDefault(),a===0?n.focus():i[a-1]?.focus();break;case`Escape`:e.preventDefault(),w=!1,Q(null,!0),X(null),n.focus();break}}))});let ht=()=>(0,e.containsWithPortals)(r,document.activeElement)||D||w,$=()=>{Y(),q(),Ue(),w=!1,Q(null,!0),X(null),st()};I.push((0,e.on)(document,`focusin`,t=>{let n=t.target;if(!(0,e.containsWithPortals)(r,n)){if(x!==null){$();return}X(null)}})),I.push((0,e.createDismissLayer)({root:r,isOpen:()=>x!==null&&ht(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(r,t)})),I.push((0,e.on)(window,`resize`,()=>{(x||C)&&requestAnimationFrame(()=>Z(C))}),(0,e.on)(g,`scroll`,()=>{(x||C)&&requestAnimationFrame(()=>Z(C))})),I.push((0,e.on)(r,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(U.has(t.value)){w=!0,Q(t.value,!0);let e=U.get(t.value);e&&X(e.trigger)}}}));let gt={get value(){return x},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{O=!0,q(),Ue(),I.forEach(e=>e()),I.length=0,(0,e.clearRootBinding)(r,a,gt)}};return mt(),(0,e.setRootBinding)(r,a,gt),gt}function s(t=document){let n=[];for(let r of(0,e.getRoots)(t,`navigation-menu`))(0,e.hasRootBinding)(r,a)||n.push(o(r));return n}exports.create=s,exports.createNavigationMenu=o;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{clearRootBinding as e,computeFloatingPosition as t,containsWithPortals as n,createDismissLayer as r,createPortalLifecycle as i,createPositionSync as a,createPresenceLifecycle as o,emit as s,ensureId as c,getDataBool as l,getDataEnum as u,getDataNumber as d,getPart as f,getParts as p,getRoots as m,hasRootBinding as h,on as g,reuseRootBinding as ee,setAria as _,setRootBinding as te}from"@data-slot/core";const v=[`start`,`center`,`end`],ne=[`top`,`right`,`bottom`,`left`],y=(e,t)=>t===`start`?{x:e.left,y:e.top}:t===`end`?{x:e.right,y:e.bottom}:{x:e.left+e.width/2,y:e.top+e.height/2},re=(e,t,n)=>{let r=y(n,t);return e===`top`?{x:r.x,y:n.top}:e===`bottom`?{x:r.x,y:n.bottom}:e===`left`?{x:n.left,y:r.y}:{x:n.right,y:r.y}},b=`@data-slot/navigation-menu`;function x(m,h={}){let y=ee(m,b,`[@data-slot/navigation-menu] createNavigationMenu() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(y)return y;let x=h.delayOpen??d(m,`delayOpen`)??0,ie=h.delayClose??d(m,`delayClose`)??0,ae=h.openOnFocus??l(m,`openOnFocus`)??!1,oe=h.side??u(m,`side`,ne)??`bottom`,se=h.align??u(m,`align`,v)??`start`,ce=h.sideOffset??d(m,`sideOffset`)??0,le=h.alignOffset??d(m,`alignOffset`)??0,S=h.safeTriangle??l(m,`safeTriangle`)??!1,C=h.debugSafeTriangle??l(m,`debugSafeTriangle`)??!1,ue=S||C,de=h.onValueChange,fe=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),w=(e,t)=>{`inert`in e&&(e.inert=t)},T=f(m,`navigation-menu-list`),E=p(m,`navigation-menu-item`),D=f(m,`navigation-menu-viewport`),O=f(m,`navigation-menu-indicator`),k=(e,t)=>{let n=e.parentElement;for(;n&&n!==m;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!T||E.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let A=null,j=null,pe=-1,me=null,he=null,M=null,N=!1,P=null,F=null,I=!1,ge=!1,L=null,R=null,z=0,_e=0,B=[],ve=new Map,ye=new Map,be=D?k(D,`navigation-menu-viewport-positioner`):null,xe=D?k(D,`navigation-menu-positioner`):null,V=be??xe,Se=V?k(V,`navigation-menu-portal`):null,H=D?i({content:D,root:m,enabled:!0,wrapperSlot:V?void 0:`navigation-menu-viewport-positioner`,container:V??void 0,mountTarget:V?Se??V:void 0}):null,Ce=()=>{let e=H?.container;e instanceof HTMLElement&&(e.style.position=``,e.style.top=``,e.style.left=``,e.style.width=``,e.style.height=``,e.style.margin=``,e.style.willChange=``,e.style.pointerEvents=``,e.style.transform=``,e.style.removeProperty(`--transform-origin`),e.removeAttribute(`data-instant`))},we=()=>{D?.removeAttribute(`data-instant`);let e=H?.container;e instanceof HTMLElement&&e.removeAttribute(`data-instant`)},Te=D?o({element:D,onExitComplete:()=>{ge||(we(),Ce(),z=0,_e=0,H?.restore(),D.hidden=!0,D.style.pointerEvents=`none`)}}):null,Ee=e=>{if(!D)return;let t=ye.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,ye.set(e,t)),e.parentNode!==D&&D.appendChild(e)},De=e=>{let t=ye.get(e);if(!t||!t.mountedInViewport)return;let n=t.originalParent,r=t.originalNextSibling;n&&n.isConnected?r&&r.parentNode===n?n.insertBefore(e,r):n.appendChild(e):e.remove(),t.mountedInViewport=!1,t.originalParent=null,t.originalNextSibling=null},Oe=()=>{if(!D||!H)return;let e=H.container,t=m.ownerDocument.defaultView??window,n=m.getBoundingClientRect(),r=n.top+t.scrollY+_e,i=n.left+t.scrollX+z;e.style.position=`absolute`,e.style.top=`${r}px`,e.style.left=`${i}px`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`top,left`,e.style.pointerEvents=`none`},U=null,ke=e=>{U?.disconnect(),U=null,!(!D||!e)&&(U=new ResizeObserver(()=>{let t=Ae(e.item,e.content);bt(e.content,e.trigger,t)}),U.observe(e.content))};B.push(()=>U?.disconnect()),B.push(()=>{we(),ve.forEach(e=>e.cleanup()),ve.clear(),ye.forEach((e,t)=>{De(t),t.hidden=!0,t.style.pointerEvents=`none`}),ye.clear(),Ce(),z=0,_e=0,Te?.cleanup(),H?.cleanup()});let W=new Map,Ae=(e,t)=>({side:h.side??u(t,`side`,ne)??u(e,`side`,ne)??oe,align:h.align??u(t,`align`,v)??u(e,`align`,v)??se,sideOffset:h.sideOffset??d(t,`sideOffset`)??d(e,`sideOffset`)??ce,alignOffset:h.alignOffset??d(t,`alignOffset`)??d(e,`alignOffset`)??le}),je=0;E.forEach(e=>{let t=e.dataset.value;if(!t)return;let n=f(e,`navigation-menu-trigger`),r=f(e,`navigation-menu-content`);if(n&&r){W.set(t,{value:t,item:e,trigger:n,content:r,index:je++}),ve.set(r,o({element:r,onExitComplete:()=>{ge||(De(r),r.hidden=!0,r.style.pointerEvents=`none`)}}));let i=fe(t),a=c(n,`nav-menu-trigger-${i}`),s=c(r,`nav-menu-content-${i}`);n.setAttribute(`aria-haspopup`,`true`),n.setAttribute(`aria-controls`,s),r.setAttribute(`aria-labelledby`,a)}});let Me=Array.from(W.values()).map(e=>e.trigger),Ne=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,Pe=e=>{let t=e?.closest(`[data-slot="navigation-menu-item"]`);if(!t)return null;let n=t.dataset.value;if(!n)return null;let r=W.get(n);return!r||r.item!==t?null:r},Fe=e=>{if(e.matches(Ne))return e;let t=e.querySelectorAll(Ne);for(let n of t)if(e.contains(n)&&!n.closest(`[data-slot="navigation-menu-content"]`)&&!(n.hidden||n.closest(`[hidden]`)))return n;return null},G=[],Ie=new Map;E.forEach(e=>{let t=Pe(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};G.push(e),Ie.set(e.element,e),Ie.set(e.item,e);return}let n=Fe(e);if(!n)return;let r={kind:`plain`,element:n};G.push(r),Ie.set(r.element,r)});let Le=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==T;){let e=Ie.get(n);if(e)return e;n=n.parentElement}return null},Re=e=>{let t=Le(e);return t?.kind===`plain`?t:null},ze=e=>{let t=Le(e);return t?.kind===`submenu`?t:null},Be=()=>{let e=m.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},Ve=e=>{try{return e.matches(`:hover`)}catch{return!1}},He=()=>{for(let e of G){if(e.kind===`submenu`){if(Ve(e.item)||Ve(e.trigger))return e;continue}if(Ve(e.element))return e}return null},Ue=(e,t={})=>{let n=m.ownerDocument,r=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(A!==null&&!r&&$(),e.element.focus(),n.activeElement===e.element?(A!==null&&r?Z():X(e.element),!0):!1)},We=(e,t,n={})=>{for(let r=e+t;r>=0&&r<G.length;r+=t){let e=G[r];if(e&&Ue(e,n))return!0}return!1},Ge=(e,t,n={})=>{let r=G.indexOf(e);return r===-1?!1:We(r,t,n)},Ke=(e,t,n={})=>{let r=G.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:We(r,t,n)},qe=e=>{if(!(e instanceof Node)||!T.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||Pe(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},Je=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,Ye=e=>Array.from(e.querySelectorAll(Je)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),Xe=e=>!e.isConnected||e.hidden||e.closest(`[hidden]`)||`disabled`in e&&e.disabled||e.getAttribute(`aria-hidden`)===`true`||e.getAttribute(`tabindex`)===`-1`?!1:e.matches(Je)?!0:e.tabIndex>=0,Ze=e=>{if(m.contains(e)||D?.contains(e))return!0;let t=H?.container;if(t instanceof HTMLElement&&t.contains(e))return!0;for(let{content:t}of W.values())if(t.contains(e))return!0;return!1},Qe=()=>{let e=m.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(Xe(n)&&!Ze(n)&&(m.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},$e=e=>{requestAnimationFrame(()=>{if(A!==e)return;let t=W.get(e);if(!t)return;let n=Ye(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{me&&=(clearTimeout(me),null),he&&=(clearTimeout(he),null)},q=()=>{K(),j=null},et=()=>{P=null,F=null},tt=()=>{R!==null&&(cancelAnimationFrame(R),R=null)},J=null,nt=()=>{if(!D)return null;let e=H?.container;return e instanceof HTMLElement?e:D.parentElement instanceof HTMLElement?D.parentElement:D},rt=()=>{let e=nt();return J||(J=document.createElement(`div`),J.setAttribute(`data-slot`,`navigation-menu-bridge`),J.style.cssText=`position: absolute; pointer-events: auto; z-index: 0; display: none;`,B.push(g(J,`pointerenter`,()=>{K()}),g(J,`pointerleave`,e=>{if(N||A===null)return;let t=e.relatedTarget;yt(t)||t&&n(m,t)||(Q(null),X(null))}))),e&&J.parentElement!==e&&e.insertBefore(J,e.firstChild),J},it=()=>{J&&(J.style.height=`0`,J.style.width=`0`,J.style.top=`0px`,J.style.left=`0px`,J.style.right=`0px`,J.style.bottom=`auto`,J.style.transform=`none`,J.style.clipPath=`none`,J.style.display=`none`)},at=()=>{if(!C)return null;let e=m.ownerDocument.body;return e?(L||(L=m.ownerDocument.createElement(`div`),L.setAttribute(`data-slot`,`navigation-menu-safe-triangle`),L.style.cssText=[`position: fixed`,`pointer-events: none`,`display: none`,`z-index: 2147483647`,`background: rgba(255, 0, 0, 0.18)`,`border: 1px solid rgba(255, 0, 0, 0.45)`].join(`; `)),L.parentElement!==e&&e.appendChild(L),L):null},ot=()=>{L&&(L.style.width=`0`,L.style.height=`0`,L.style.clipPath=`none`,L.style.display=`none`)},Y=()=>{C||ot()},st=e=>{let t=at();if(!t)return;let n=e.apex.x,r=e.apex.y,i=e.edgeA.x,a=e.edgeA.y,o=e.edgeB.x,s=e.edgeB.y,c=Math.min(n,i,o),l=Math.min(r,a,s),u=Math.max(n,i,o),d=Math.max(r,a,s),f=Math.max(1,u-c),p=Math.max(1,d-l),m=(e,t)=>`${(e-c)/f*100}% ${(t-l)/p*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${f}px`,t.style.height=`${p}px`,t.style.clipPath=`polygon(${m(n,r)}, ${m(i,a)}, ${m(o,s)})`},ct=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),lt=(e,t,n,r)=>{let i=ct(e,t,n),a=ct(e,n,r),o=ct(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},ut=(e,t,n)=>{let r=.5;if(n.top>=t.bottom-r)return[{x:n.left,y:n.top},{x:n.right,y:n.top}];if(n.bottom<=t.top+r)return[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}];if(n.left>=t.right-r)return[{x:n.left,y:n.top},{x:n.left,y:n.bottom}];if(n.right<=t.left+r)return[{x:n.right,y:n.top},{x:n.right,y:n.bottom}];let i=[[{x:n.left,y:n.top},{x:n.right,y:n.top}],[{x:n.right,y:n.top},{x:n.right,y:n.bottom}],[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}],[{x:n.left,y:n.top},{x:n.left,y:n.bottom}]],a=([t,n])=>t.y===n.y?Math.abs(e.y-t.y):Math.abs(e.x-t.x),o=i[0],s=a(o);for(let e=1;e<i.length;e++){let t=i[e],n=a(t);n<s&&(o=t,s=n)}return o},dt=()=>A?W.get(A)??null:null,ft=(e,t,n)=>{if(n.width<=0||n.height<=0)return null;let r={x:e.left+e.width/2,y:e.top+e.height*.62},[i,a]=ut(r,t,n);if(i.x===a.x){let e=Math.min(i.y,a.y),t=Math.max(i.y,a.y),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:i.x,y:e+r},a={x:a.x,y:t-r}}else{let e=Math.min(i.x,a.x),t=Math.max(i.x,a.x),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:e+r,y:i.y},a={x:t-r,y:a.y}}return{apex:r,edgeA:i,edgeB:a}},pt=()=>{if(!ue||!D||A===null)return null;let e=dt();if(!e)return null;let t=m.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=D.getBoundingClientRect(),i=e.content.getBoundingClientRect();return ft(n,t,r.width>0&&r.height>0?r:i)},mt=e=>{let t=pt();return t?lt({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},ht=(e,t)=>({x:e.x-t.left,y:e.y-t.top}),gt=e=>{if(e.length<=1)return e.slice();let t=e=>`${e.x.toFixed(3)}:${e.y.toFixed(3)}`,n=new Map;for(let r of e)n.set(t(r),r);let r=Array.from(n.values()).sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x);if(r.length<=2)return r;let i=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),a=[];for(let e of r){for(;a.length>=2&&i(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}let o=[];for(let e=r.length-1;e>=0;e--){let t=r[e];for(;o.length>=2&&i(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return a.pop(),o.pop(),a.concat(o)},_t=e=>{if(e.length<3){it();return}let t=rt(),n=t.parentElement,r=gt(n&&n===H?.container?e.map(e=>({x:e.x-z,y:e.y-_e})):e);if(r.length<3){it();return}let i=Math.min(...r.map(e=>e.x)),a=Math.min(...r.map(e=>e.y)),o=Math.max(...r.map(e=>e.x)),s=Math.max(...r.map(e=>e.y)),c=Math.max(1,o-i),l=Math.max(1,s-a),u=e=>`${(e.x-i)/c*100}% ${(e.y-a)/l*100}%`;t.style.display=`block`,t.style.transform=`none`,t.style.bottom=`auto`,t.style.right=`auto`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.width=`${c}px`,t.style.height=`${l}px`,t.style.clipPath=`polygon(${r.map(u).join(`, `)})`},vt=()=>{if(!C)return;let e=pt();if(!e){ot();return}st(e)},yt=e=>{if(!e)return!1;if(dt()?.content.contains(e)||D?.contains(e)||J?.contains(e))return!0;let t=H?.container;return!!(t instanceof HTMLElement&&t.contains(e))};B.push(Y),B.push(tt),B.push(it),B.push(()=>{ot(),L?.parentElement&&L.parentElement.removeChild(L),L=null});let bt=(e,n,r)=>{D&&requestAnimationFrame(()=>{if(D.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`)return;let i=e.firstElementChild,a=e.lastElementChild,o=i?getComputedStyle(i):null,s=a?getComputedStyle(a):null,c=o&&parseFloat(o.marginTop)||0,l=s&&parseFloat(s.marginBottom)||0,u=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},d=e.getBoundingClientRect(),f=u(d.width,e.scrollWidth,e.offsetWidth,e.clientWidth),p=u(d.height,e.scrollHeight,e.offsetHeight,e.clientHeight)+c+l,h={top:d.top,left:d.left,width:f,height:p,right:d.left+f,bottom:d.top+p},g=getComputedStyle(D),ee=parseFloat(g.marginTop)||0;D.style.setProperty(`--viewport-width`,`${f}px`),D.style.setProperty(`--viewport-height`,`${p}px`);let _=m.getBoundingClientRect(),te=n.getBoundingClientRect(),v=t({anchorRect:te,contentRect:h,side:r.side,align:r.align,sideOffset:r.sideOffset,alignOffset:r.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:ne}),y=v.x-_.left,b=v.y-_.top;z=y,_e=b;let x=re(v.side,v.align,te),ie=x.x-(_.left+y),ae=x.y-(_.top+b),oe=x.x-_.left,se=x.y-_.top,ce=`${ie}px ${ae}px`,le=`${oe}px ${se}px`;D.style.top=`0px`,D.style.left=`0px`,D.style.willChange=`transform,width,height`,D.style.setProperty(`--transform-origin`,ce),e.style.top=`0px`,e.style.left=`0px`,e.style.setProperty(`--transform-origin`,ce),D.setAttribute(`data-side`,v.side),D.setAttribute(`data-align`,v.align),e.setAttribute(`data-side`,v.side),e.setAttribute(`data-align`,v.align);let S=H?.container;S&&S!==D&&(S.setAttribute(`data-side`,v.side),S.setAttribute(`data-align`,v.align),S.style.setProperty(`--transform-origin`,le)),Oe();let C=D.getBoundingClientRect(),de=[],fe=Math.max(0,C.top-_.bottom),w=Math.max(0,_.top-C.bottom),T=Math.max(0,C.left-_.right),E=Math.max(0,_.left-C.right),O=Math.max(0,c+ee),k=Math.max(fe,w,O),A=Math.max(T,E),j=ue?ft(te,_,C):null,pe=(e,t,n,r)=>{n<=0||r<=0||de.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(k>=A&&k>0){let e=Math.max(fe,w,O),t=y,n=w>fe&&w>=O?b+p:b-e,r=f;if(j){let e=Math.min(j.edgeA.x,j.edgeB.x)-_.left,n=Math.max(j.edgeA.x,j.edgeB.x)-_.left;t=e-8,r=n-e+16}pe(t,n,r,e)}else if(A>0){let e=Math.max(T,E),t=b,n=E>T?y+f:y-e,r=p;if(j){let e=Math.min(j.edgeA.y,j.edgeB.y)-_.top,n=Math.max(j.edgeA.y,j.edgeB.y)-_.top;t=e-8,r=n-e+16}pe(n,t,e,r)}if(j){let e=ht(j.apex,_),t=ht(j.edgeA,_),n=ht(j.edgeB,_);de.push(e,t,n)}_t(de),vt()})},xt=(e=dt())=>{if(!e)return;let t=Ae(e.item,e.content);bt(e.content,e.trigger,t)},St=a({observedElements:[m,...Me],isActive:()=>A!==null,ancestorScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{xt()}});B.push(()=>St.stop());let Ct=e=>pe===-1||e>pe?`right`:`left`,X=e=>{if(!O)return;if(M=e,!e){tt(),O.removeAttribute(`data-instant`),O.setAttribute(`data-state`,`hidden`);return}O.getAttribute(`data-state`)!==`visible`&&(tt(),O.setAttribute(`data-instant`,``),R=requestAnimationFrame(()=>{R=requestAnimationFrame(()=>{O.removeAttribute(`data-instant`),R=null})}));let t=T.getBoundingClientRect(),n=e.getBoundingClientRect();O.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),O.style.setProperty(`--indicator-width`,`${n.width}px`),O.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(D&&parseFloat(getComputedStyle(D).marginTop)||0)<1?1:0;O.style.setProperty(`--indicator-height`,`${n.height-r}px`),O.setAttribute(`data-state`,`visible`)},wt=()=>A?W.get(A)?.trigger??null:null,Z=(e=null)=>{let t=wt();if(t){X(t);return}X(e)},Q=(e,t=!1)=>{if(Y(),e===A){e===null?q():K();return}if(!t&&e!==null&&e===j)return;K(),j=e===null?null:e;let r=()=>{let t=A,r=e?W.get(e):null,i=t!==null&&e!==null&&t!==e,a=i&&r?Ct(r.index):null,o=document.activeElement;if(e===null&&o&&t){let e=W.get(t);e&&n(e.content,o)&&e.trigger.focus()}if(W.forEach(({trigger:n,content:r,item:i},o)=>{let s=o===e,c=o===t;if(_(n,`expanded`,s),n.setAttribute(`data-state`,s?`open`:`closed`),i.setAttribute(`data-state`,s?`open`:`closed`),!s){let e=ve.get(r);if(r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),w(r,!0),r.style.pointerEvents=`none`,c&&a){let e=a===`right`?`to-left`:`to-right`;r.setAttribute(`data-motion`,e)}else c&&r.removeAttribute(`data-motion`);c?e?.exit():e?.isExiting||(r.removeAttribute(`data-motion`),De(r),r.hidden=!0)}}),r){if(H?.mount(),D&&(D.hidden=!1),t===null&&Te?.enter(),Ee(r.content),ve.get(r.content)?.enter(),St.start(),a){let e=a===`right`?`from-right`:`from-left`;r.content.setAttribute(`data-motion`,e)}else r.content.removeAttribute(`data-motion`);r.content.setAttribute(`data-state`,`active`),r.content.removeAttribute(`aria-hidden`),w(r.content,!1),r.content.hidden=!1,r.content.style.pointerEvents=`auto`,pe=r.index,xt(r),ke(r),X(r.trigger)}else St.stop(),it(),Y(),Te?.exit(),ke(null);let c=e!==null;if(m.setAttribute(`data-state`,c?`open`:`closed`),a?m.setAttribute(`data-motion`,a===`right`?`from-right`:`from-left`):m.removeAttribute(`data-motion`),D){D.setAttribute(`data-state`,c?`open`:`closed`),D.style.pointerEvents=c?`auto`:`none`;let e=H?.container;c&&!i?(D.setAttribute(`data-instant`,``),e?.setAttribute(`data-instant`,``)):i?we():c||we(),a&&D.style.setProperty(`--motion-direction`,a===`right`?`1`:`-1`)}A=e,j=null,e===null&&X(null),vt(),s(m,`navigation-menu:change`,{value:e}),de?.(e)};t?r():e!==null&&A===null?me=setTimeout(r,x):e!==null&&A!==null?r():he=setTimeout(r,ie)};m.setAttribute(`data-state`,`closed`),D&&(D.setAttribute(`data-state`,`closed`),D.hidden=!0,D.style.pointerEvents=`none`),O&&O.setAttribute(`data-state`,`hidden`),W.forEach(({trigger:e,content:t,item:n})=>{e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&(e.type=`button`),_(e,`expanded`,!1),e.setAttribute(`data-state`,`closed`),e.tabIndex=0,n.setAttribute(`data-state`,`closed`),t.setAttribute(`data-state`,`inactive`),t.setAttribute(`aria-hidden`,`true`),t.tabIndex=-1,w(t,!0),t.hidden=!0,t.style.pointerEvents=`none`}),W.forEach(({item:e,trigger:t},r)=>{B.push(g(t,`pointerenter`,e=>{if(!N){if(A!==r&&mt(e))return;X(t)}})),B.push(g(e,`pointerenter`,e=>{if(!N){if(A!==r&&mt(e))return;Q(r)}})),B.push(g(e,`pointerleave`,e=>{if(j===r&&A===null&&q(),A===r&&!N){let t=e.relatedTarget;if(yt(t))return;(!t||!n(m,t))&&(Q(null),X(null))}})),B.push(g(t,`focus`,()=>{if(P===t){P=null;return}ae&&Q(r,!0),Z(t)})),B.push(g(t,`pointerdown`,()=>{P=t,F=t}),g(t,`keydown`,()=>{F=null})),B.push(g(t,`click`,()=>{let e=F===t;F=null,P=null,q(),A===r&&N?(N=!1,Q(null,!0),X(null)):A===r&&!N?(N=!0,X(t),e||$e(r)):(N=!0,Q(r,!0),X(t),e||$e(r))}))}),B.push(g(T,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=ze(t.target);if(n){if(I=!0,N||A!==n.value&&mt(t))return;X(n.trigger),Q(n.value);return}let r=Re(t.target);if(r){if(I=!0,A!==null){if(N)return;$()}X(r.element);return}A!==null&&(N||qe(t.target)&&$())}),g(T,`click`,e=>{A!==null&&qe(e.target)&&$()})),B.push(g(T,`focusin`,e=>{let t=Re(e.target);if(t){if(A!==null){Z();return}X(t.element)}}),g(m,`pointerenter`,()=>{I=!0}),g(m,`pointerleave`,e=>{let t=e.relatedTarget;if(!yt(t)&&(I=!1,!N)){if(mt(e)){K();return}Q(null),X(null)}}),g(m,`pointerdown`,()=>{Y(),q()}));let Tt=()=>{if(!Be()||A!==null||j!==null||N)return;let e=He();if(I=e!==null||m instanceof HTMLElement&&Ve(m),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};D&&B.push(g(D,`pointerenter`,()=>{Y(),K()}),g(D,`transitionend`,e=>{if(e.target!==D)return;let t=A?W.get(A):null;if(t){let e=Ae(t.item,t.content);bt(t.content,t.trigger,e)}})),W.forEach(({content:e})=>{B.push(g(e,`pointerenter`,()=>{Y(),K()}),g(e,`pointerleave`,e=>{if(N)return;let t=e.relatedTarget;yt(t)||n(m,t)||(Q(null),X(null))}))}),B.push(g(T,`keydown`,e=>{let t=Le(e.target);if(!t)return;let n=G.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`Tab`:if(e.shiftKey||A===null)return;(Ge(t,1,{preserveOpenOnPlain:!0})||Qe())&&e.preventDefault();return;case`ArrowLeft`:r=n-1,r<0&&(r=G.length-1);break;case`ArrowRight`:r=n+1,r>=G.length&&(r=0);break;case`ArrowDown`:if(t.kind===`submenu`){e.preventDefault();let n=t.value;N=!0,Q(n,!0),$e(n)}return;case`Home`:r=0;break;case`End`:r=G.length-1;break;case`Escape`:N=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=G[r];i&&Ue(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:e,trigger:t})=>{B.push(g(e,`keydown`,n=>{let r=n.target,i=Ye(e),a=i.indexOf(r);if(a!==-1)switch(n.key){case`Tab`:if(!n.shiftKey&&a===i.length-1){(Ke(t,1,{preserveOpenOnPlain:!0})||Qe())&&n.preventDefault();return}if(n.shiftKey&&a===0){n.preventDefault(),t.focus();return}return;case`ArrowDown`:case`ArrowRight`:{n.preventDefault();let e=a+1;e<i.length&&i[e]?.focus();break}case`ArrowUp`:case`ArrowLeft`:n.preventDefault(),a===0?t.focus():i[a-1]?.focus();break;case`Escape`:n.preventDefault(),N=!1,Q(null,!0),X(null),t.focus();break}}))});let Et=()=>n(m,document.activeElement)||I||N,$=()=>{Y(),q(),et(),N=!1,Q(null,!0),X(null),vt()};B.push(g(document,`focusin`,e=>{let t=e.target;if(!n(m,t)){if(A!==null){$();return}X(null)}})),B.push(r({root:m,isOpen:()=>A!==null&&Et(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:e=>!!e&&n(m,e)})),B.push(g(window,`resize`,()=>{(A||M)&&requestAnimationFrame(()=>Z(M))}),g(T,`scroll`,()=>{(A||M)&&requestAnimationFrame(()=>Z(M))})),B.push(g(m,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(W.has(t.value)){N=!0,Q(t.value,!0);let e=W.get(t.value);e&&X(e.trigger)}}}));let Dt={get value(){return A},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{ge=!0,q(),et(),B.forEach(e=>e()),B.length=0,e(m,b,Dt)}};return Tt(),te(m,b,Dt),Dt}function ie(e=document){let t=[];for(let n of m(e,`navigation-menu`))h(n,b)||t.push(x(n));return t}export{ie as create,x as createNavigationMenu};
1
+ import{clearRootBinding as e,computeFloatingPosition as t,containsWithPortals as n,createDismissLayer as r,createPortalLifecycle as i,createPositionSync as a,createPresenceLifecycle as o,emit as s,ensureId as c,getDataBool as l,getDataEnum as u,getDataNumber as d,getPart as f,getParts as p,getRoots as m,hasRootBinding as h,on as g,reuseRootBinding as ee,setAria as _,setRootBinding as te}from"@data-slot/core";const v=[`start`,`center`,`end`],ne=[`top`,`right`,`bottom`,`left`],y=(e,t)=>t===`start`?{x:e.left,y:e.top}:t===`end`?{x:e.right,y:e.bottom}:{x:e.left+e.width/2,y:e.top+e.height/2},re=(e,t,n)=>{let r=y(n,t);return e===`top`?{x:r.x,y:n.top}:e===`bottom`?{x:r.x,y:n.bottom}:e===`left`?{x:n.left,y:r.y}:{x:n.right,y:r.y}},b=`@data-slot/navigation-menu`;function x(m,h={}){let y=ee(m,b,`[@data-slot/navigation-menu] createNavigationMenu() called more than once for the same root. Returning the existing controller. Destroy it before rebinding with new options.`);if(y)return y;let x=h.delayOpen??d(m,`delayOpen`)??0,ie=h.delayClose??d(m,`delayClose`)??0,ae=h.openOnFocus??l(m,`openOnFocus`)??!1,oe=h.side??u(m,`side`,ne)??`bottom`,se=h.align??u(m,`align`,v)??`start`,ce=h.sideOffset??d(m,`sideOffset`)??0,le=h.alignOffset??d(m,`alignOffset`)??0,S=h.safeTriangle??l(m,`safeTriangle`)??!1,C=h.debugSafeTriangle??l(m,`debugSafeTriangle`)??!1,ue=S||C,de=h.onValueChange,fe=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),w=(e,t)=>{`inert`in e&&(e.inert=t)},T=f(m,`navigation-menu-list`),E=p(m,`navigation-menu-item`),D=f(m,`navigation-menu-viewport`),O=f(m,`navigation-menu-indicator`),pe=(e,t)=>{let n=e.parentElement;for(;n&&n!==m;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!T||E.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let k=null,A=null,me=-1,he=null,ge=null,_e=null,j=!1,M=null,N=null,P=!1,ve=!1,F=null,I=null,L=null,R=0,z=0,ye=!1,B=!1,V=[],be=new Map,xe=new Map,Se=D?pe(D,`navigation-menu-viewport-positioner`):null,Ce=D?pe(D,`navigation-menu-positioner`):null,H=Se??Ce,we=H?pe(H,`navigation-menu-portal`):null,U=D?i({content:D,root:m,enabled:!0,wrapperSlot:H?void 0:`navigation-menu-viewport-positioner`,container:H??void 0,mountTarget:H?we??H:void 0}):null,Te=()=>{let e=U?.container;e instanceof HTMLElement&&(e.style.position=``,e.style.top=``,e.style.left=``,e.style.width=``,e.style.height=``,e.style.margin=``,e.style.willChange=``,e.style.pointerEvents=``,e.style.transform=``,e.style.removeProperty(`--transform-origin`))},Ee=()=>{L!==null&&(cancelAnimationFrame(L),L=null)},De=()=>{let e=ye||B;D&&(e?D.setAttribute(`data-instant`,``):D.removeAttribute(`data-instant`));let t=U?.container;t instanceof HTMLElement&&(e?t.setAttribute(`data-instant`,``):t.removeAttribute(`data-instant`))},Oe=()=>{Ee(),L=requestAnimationFrame(()=>{L=null,B=!1,De()})},ke=()=>{Ee(),ye=!1,B=!1,De()},Ae=D?o({element:D,onExitComplete:()=>{ve||(ke(),Te(),R=0,z=0,U?.restore(),D.hidden=!0,D.style.pointerEvents=`none`)}}):null,je=e=>{if(!D)return;let t=xe.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,xe.set(e,t)),e.parentNode!==D&&D.appendChild(e)},Me=e=>{let t=xe.get(e);if(!t||!t.mountedInViewport)return;let n=t.originalParent,r=t.originalNextSibling;n&&n.isConnected?r&&r.parentNode===n?n.insertBefore(e,r):n.appendChild(e):e.remove(),t.mountedInViewport=!1,t.originalParent=null,t.originalNextSibling=null},Ne=()=>{if(!D||!U)return;let e=U.container,t=m.ownerDocument.defaultView??window,n=m.getBoundingClientRect(),r=n.top+t.scrollY+z,i=n.left+t.scrollX+R;e.style.position=`absolute`,e.style.top=`${r}px`,e.style.left=`${i}px`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`top,left`,e.style.pointerEvents=`none`},Pe=null,Fe=e=>{Pe?.disconnect(),Pe=null,!(!D||!e)&&(Pe=new ResizeObserver(()=>{let t=Ie(e.item,e.content);Et(e.content,e.trigger,t)}),Pe.observe(e.content))};V.push(()=>Pe?.disconnect()),V.push(()=>{ke(),be.forEach(e=>e.cleanup()),be.clear(),xe.forEach((e,t)=>{Me(t),t.hidden=!0,t.style.pointerEvents=`none`}),xe.clear(),Te(),R=0,z=0,Ae?.cleanup(),U?.cleanup()});let W=new Map,Ie=(e,t)=>({side:h.side??u(t,`side`,ne)??u(e,`side`,ne)??oe,align:h.align??u(t,`align`,v)??u(e,`align`,v)??se,sideOffset:h.sideOffset??d(t,`sideOffset`)??d(e,`sideOffset`)??ce,alignOffset:h.alignOffset??d(t,`alignOffset`)??d(e,`alignOffset`)??le}),Le=0;E.forEach(e=>{let t=e.dataset.value;if(!t)return;let n=f(e,`navigation-menu-trigger`),r=f(e,`navigation-menu-content`);if(n&&r){W.set(t,{value:t,item:e,trigger:n,content:r,index:Le++}),be.set(r,o({element:r,onExitComplete:()=>{ve||(Me(r),r.hidden=!0,r.style.pointerEvents=`none`)}}));let i=fe(t),a=c(n,`nav-menu-trigger-${i}`),s=c(r,`nav-menu-content-${i}`);n.setAttribute(`aria-haspopup`,`true`),n.setAttribute(`aria-controls`,s),r.setAttribute(`aria-labelledby`,a)}});let Re=Array.from(W.values()).map(e=>e.trigger),ze=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,Be=e=>{let t=e?.closest(`[data-slot="navigation-menu-item"]`);if(!t)return null;let n=t.dataset.value;if(!n)return null;let r=W.get(n);return!r||r.item!==t?null:r},Ve=e=>{if(e.matches(ze))return e;let t=e.querySelectorAll(ze);for(let n of t)if(e.contains(n)&&!n.closest(`[data-slot="navigation-menu-content"]`)&&!(n.hidden||n.closest(`[hidden]`)))return n;return null},G=[],He=new Map;E.forEach(e=>{let t=Be(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};G.push(e),He.set(e.element,e),He.set(e.item,e);return}let n=Ve(e);if(!n)return;let r={kind:`plain`,element:n};G.push(r),He.set(r.element,r)});let Ue=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==T;){let e=He.get(n);if(e)return e;n=n.parentElement}return null},We=e=>{let t=Ue(e);return t?.kind===`plain`?t:null},Ge=e=>{let t=Ue(e);return t?.kind===`submenu`?t:null},Ke=()=>{let e=m.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},qe=e=>{try{return e.matches(`:hover`)}catch{return!1}},Je=()=>{for(let e of G){if(e.kind===`submenu`){if(qe(e.item)||qe(e.trigger))return e;continue}if(qe(e.element))return e}return null},Ye=(e,t={})=>{let n=m.ownerDocument,r=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(k!==null&&!r&&$(),e.element.focus(),n.activeElement===e.element?(k!==null&&r?Z():X(e.element),!0):!1)},Xe=(e,t,n={})=>{for(let r=e+t;r>=0&&r<G.length;r+=t){let e=G[r];if(e&&Ye(e,n))return!0}return!1},Ze=(e,t,n={})=>{let r=G.indexOf(e);return r===-1?!1:Xe(r,t,n)},Qe=(e,t,n={})=>{let r=G.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Xe(r,t,n)},$e=e=>{if(!(e instanceof Node)||!T.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||Be(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},et=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,tt=e=>Array.from(e.querySelectorAll(et)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),nt=e=>!e.isConnected||e.hidden||e.closest(`[hidden]`)||`disabled`in e&&e.disabled||e.getAttribute(`aria-hidden`)===`true`||e.getAttribute(`tabindex`)===`-1`?!1:e.matches(et)?!0:e.tabIndex>=0,rt=e=>{if(m.contains(e)||D?.contains(e))return!0;let t=U?.container;if(t instanceof HTMLElement&&t.contains(e))return!0;for(let{content:t}of W.values())if(t.contains(e))return!0;return!1},it=()=>{let e=m.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(nt(n)&&!rt(n)&&(m.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},at=e=>{requestAnimationFrame(()=>{if(k!==e)return;let t=W.get(e);if(!t)return;let n=tt(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{he&&=(clearTimeout(he),null),ge&&=(clearTimeout(ge),null)},q=()=>{K(),A=null},ot=()=>{M=null,N=null},st=()=>{I!==null&&(cancelAnimationFrame(I),I=null)},J=null,ct=()=>{if(!D)return null;let e=U?.container;return e instanceof HTMLElement?e:D.parentElement instanceof HTMLElement?D.parentElement:D},lt=()=>{let e=ct();return J||(J=document.createElement(`div`),J.setAttribute(`data-slot`,`navigation-menu-bridge`),J.style.cssText=`position: absolute; pointer-events: auto; z-index: 0; display: none;`,V.push(g(J,`pointerenter`,()=>{K()}),g(J,`pointerleave`,e=>{if(j||k===null)return;let t=e.relatedTarget;Tt(t)||t&&n(m,t)||(Q(null),X(null))}))),e&&J.parentElement!==e&&e.insertBefore(J,e.firstChild),J},ut=()=>{J&&(J.style.height=`0`,J.style.width=`0`,J.style.top=`0px`,J.style.left=`0px`,J.style.right=`0px`,J.style.bottom=`auto`,J.style.transform=`none`,J.style.clipPath=`none`,J.style.display=`none`)},dt=()=>{if(!C)return null;let e=m.ownerDocument.body;return e?(F||(F=m.ownerDocument.createElement(`div`),F.setAttribute(`data-slot`,`navigation-menu-safe-triangle`),F.style.cssText=[`position: fixed`,`pointer-events: none`,`display: none`,`z-index: 2147483647`,`background: rgba(255, 0, 0, 0.18)`,`border: 1px solid rgba(255, 0, 0, 0.45)`].join(`; `)),F.parentElement!==e&&e.appendChild(F),F):null},ft=()=>{F&&(F.style.width=`0`,F.style.height=`0`,F.style.clipPath=`none`,F.style.display=`none`)},Y=()=>{C||ft()},pt=e=>{let t=dt();if(!t)return;let n=e.apex.x,r=e.apex.y,i=e.edgeA.x,a=e.edgeA.y,o=e.edgeB.x,s=e.edgeB.y,c=Math.min(n,i,o),l=Math.min(r,a,s),u=Math.max(n,i,o),d=Math.max(r,a,s),f=Math.max(1,u-c),p=Math.max(1,d-l),m=(e,t)=>`${(e-c)/f*100}% ${(t-l)/p*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${f}px`,t.style.height=`${p}px`,t.style.clipPath=`polygon(${m(n,r)}, ${m(i,a)}, ${m(o,s)})`},mt=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),ht=(e,t,n,r)=>{let i=mt(e,t,n),a=mt(e,n,r),o=mt(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},gt=(e,t,n)=>{let r=.5;if(n.top>=t.bottom-r)return[{x:n.left,y:n.top},{x:n.right,y:n.top}];if(n.bottom<=t.top+r)return[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}];if(n.left>=t.right-r)return[{x:n.left,y:n.top},{x:n.left,y:n.bottom}];if(n.right<=t.left+r)return[{x:n.right,y:n.top},{x:n.right,y:n.bottom}];let i=[[{x:n.left,y:n.top},{x:n.right,y:n.top}],[{x:n.right,y:n.top},{x:n.right,y:n.bottom}],[{x:n.left,y:n.bottom},{x:n.right,y:n.bottom}],[{x:n.left,y:n.top},{x:n.left,y:n.bottom}]],a=([t,n])=>t.y===n.y?Math.abs(e.y-t.y):Math.abs(e.x-t.x),o=i[0],s=a(o);for(let e=1;e<i.length;e++){let t=i[e],n=a(t);n<s&&(o=t,s=n)}return o},_t=()=>k?W.get(k)??null:null,vt=(e,t,n)=>{if(n.width<=0||n.height<=0)return null;let r={x:e.left+e.width/2,y:e.top+e.height*.62},[i,a]=gt(r,t,n);if(i.x===a.x){let e=Math.min(i.y,a.y),t=Math.max(i.y,a.y),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:i.x,y:e+r},a={x:a.x,y:t-r}}else{let e=Math.min(i.x,a.x),t=Math.max(i.x,a.x),n=t-e,r=n<=28?0:Math.min(10,(n-28)/2);i={x:e+r,y:i.y},a={x:t-r,y:a.y}}return{apex:r,edgeA:i,edgeB:a}},yt=()=>{if(!ue||!D||k===null)return null;let e=_t();if(!e)return null;let t=m.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=D.getBoundingClientRect(),i=e.content.getBoundingClientRect();return vt(n,t,r.width>0&&r.height>0?r:i)},bt=e=>{let t=yt();return t?ht({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},xt=(e,t)=>({x:e.x-t.left,y:e.y-t.top}),St=e=>{if(e.length<=1)return e.slice();let t=e=>`${e.x.toFixed(3)}:${e.y.toFixed(3)}`,n=new Map;for(let r of e)n.set(t(r),r);let r=Array.from(n.values()).sort((e,t)=>e.x===t.x?e.y-t.y:e.x-t.x);if(r.length<=2)return r;let i=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),a=[];for(let e of r){for(;a.length>=2&&i(a[a.length-2],a[a.length-1],e)<=0;)a.pop();a.push(e)}let o=[];for(let e=r.length-1;e>=0;e--){let t=r[e];for(;o.length>=2&&i(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return a.pop(),o.pop(),a.concat(o)},Ct=e=>{if(e.length<3){ut();return}let t=lt(),n=t.parentElement,r=St(n&&n===U?.container?e.map(e=>({x:e.x-R,y:e.y-z})):e);if(r.length<3){ut();return}let i=Math.min(...r.map(e=>e.x)),a=Math.min(...r.map(e=>e.y)),o=Math.max(...r.map(e=>e.x)),s=Math.max(...r.map(e=>e.y)),c=Math.max(1,o-i),l=Math.max(1,s-a),u=e=>`${(e.x-i)/c*100}% ${(e.y-a)/l*100}%`;t.style.display=`block`,t.style.transform=`none`,t.style.bottom=`auto`,t.style.right=`auto`,t.style.left=`${i}px`,t.style.top=`${a}px`,t.style.width=`${c}px`,t.style.height=`${l}px`,t.style.clipPath=`polygon(${r.map(u).join(`, `)})`},wt=()=>{if(!C)return;let e=yt();if(!e){ft();return}pt(e)},Tt=e=>{if(!e)return!1;if(_t()?.content.contains(e)||D?.contains(e)||J?.contains(e))return!0;let t=U?.container;return!!(t instanceof HTMLElement&&t.contains(e))};V.push(Y),V.push(st),V.push(ut),V.push(()=>{ft(),F?.parentElement&&F.parentElement.removeChild(F),F=null});let Et=(e,n,r)=>{D&&requestAnimationFrame(()=>{if(D.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`)return;let i=e.firstElementChild,a=e.lastElementChild,o=i?getComputedStyle(i):null,s=a?getComputedStyle(a):null,c=o&&parseFloat(o.marginTop)||0,l=s&&parseFloat(s.marginBottom)||0,u=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},d=e.getBoundingClientRect(),f=u(d.width,e.scrollWidth,e.offsetWidth,e.clientWidth),p=u(d.height,e.scrollHeight,e.offsetHeight,e.clientHeight)+c+l,h={top:d.top,left:d.left,width:f,height:p,right:d.left+f,bottom:d.top+p},g=getComputedStyle(D),ee=parseFloat(g.marginTop)||0;D.style.setProperty(`--viewport-width`,`${f}px`),D.style.setProperty(`--viewport-height`,`${p}px`);let _=m.getBoundingClientRect(),te=n.getBoundingClientRect(),v=t({anchorRect:te,contentRect:h,side:r.side,align:r.align,sideOffset:r.sideOffset,alignOffset:r.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:ne}),y=v.x-_.left,b=v.y-_.top;R=y,z=b;let x=re(v.side,v.align,te),ie=x.x-(_.left+y),ae=x.y-(_.top+b),oe=x.x-_.left,se=x.y-_.top,ce=`${ie}px ${ae}px`,le=`${oe}px ${se}px`;D.style.top=`0px`,D.style.left=`0px`,D.style.willChange=`transform,width,height`,D.style.setProperty(`--transform-origin`,ce),e.style.top=`0px`,e.style.left=`0px`,e.style.setProperty(`--transform-origin`,ce),D.setAttribute(`data-side`,v.side),D.setAttribute(`data-align`,v.align),e.setAttribute(`data-side`,v.side),e.setAttribute(`data-align`,v.align);let S=U?.container;S&&S!==D&&(S.setAttribute(`data-side`,v.side),S.setAttribute(`data-align`,v.align),S.style.setProperty(`--transform-origin`,le)),Ne();let C=D.getBoundingClientRect(),de=[],fe=Math.max(0,C.top-_.bottom),w=Math.max(0,_.top-C.bottom),T=Math.max(0,C.left-_.right),E=Math.max(0,_.left-C.right),O=Math.max(0,c+ee),pe=Math.max(fe,w,O),k=Math.max(T,E),A=ue?vt(te,_,C):null,me=(e,t,n,r)=>{n<=0||r<=0||de.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(pe>=k&&pe>0){let e=Math.max(fe,w,O),t=y,n=w>fe&&w>=O?b+p:b-e,r=f;if(A){let e=Math.min(A.edgeA.x,A.edgeB.x)-_.left,n=Math.max(A.edgeA.x,A.edgeB.x)-_.left;t=e-8,r=n-e+16}me(t,n,r,e)}else if(k>0){let e=Math.max(T,E),t=b,n=E>T?y+f:y-e,r=p;if(A){let e=Math.min(A.edgeA.y,A.edgeB.y)-_.top,n=Math.max(A.edgeA.y,A.edgeB.y)-_.top;t=e-8,r=n-e+16}me(n,t,e,r)}if(A){let e=xt(A.apex,_),t=xt(A.edgeA,_),n=xt(A.edgeB,_);de.push(e,t,n)}Ct(de),wt()})},Dt=(e=_t())=>{if(!e)return;let t=Ie(e.item,e.content);Et(e.content,e.trigger,t)},Ot=a({observedElements:[m,...Re],isActive:()=>k!==null,ancestorScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{B=!0,De(),Dt(),Oe()}});V.push(()=>Ot.stop());let kt=e=>me===-1||e>me?`right`:`left`,X=e=>{if(!O)return;if(_e=e,!e){st(),O.removeAttribute(`data-instant`),O.setAttribute(`data-state`,`hidden`);return}O.getAttribute(`data-state`)!==`visible`&&(st(),O.setAttribute(`data-instant`,``),I=requestAnimationFrame(()=>{I=requestAnimationFrame(()=>{O.removeAttribute(`data-instant`),I=null})}));let t=T.getBoundingClientRect(),n=e.getBoundingClientRect();O.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),O.style.setProperty(`--indicator-width`,`${n.width}px`),O.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(D&&parseFloat(getComputedStyle(D).marginTop)||0)<1?1:0;O.style.setProperty(`--indicator-height`,`${n.height-r}px`),O.setAttribute(`data-state`,`visible`)},At=()=>k?W.get(k)?.trigger??null:null,Z=(e=null)=>{let t=At();if(t){X(t);return}X(e)},Q=(e,t=!1)=>{if(Y(),e===k){e===null?q():K();return}if(!t&&e!==null&&e===A)return;K(),A=e===null?null:e;let r=()=>{let t=k,r=e?W.get(e):null,i=t!==null&&e!==null&&t!==e,a=i&&r?kt(r.index):null,o=document.activeElement;if(e===null&&o&&t){let e=W.get(t);e&&n(e.content,o)&&e.trigger.focus()}if(W.forEach(({trigger:n,content:r,item:i},o)=>{let s=o===e,c=o===t;if(_(n,`expanded`,s),n.setAttribute(`data-state`,s?`open`:`closed`),i.setAttribute(`data-state`,s?`open`:`closed`),!s){let e=be.get(r);if(r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),w(r,!0),r.style.pointerEvents=`none`,c&&a){let e=a===`right`?`to-left`:`to-right`;r.setAttribute(`data-motion`,e)}else c&&r.removeAttribute(`data-motion`);c?e?.exit():e?.isExiting||(r.removeAttribute(`data-motion`),Me(r),r.hidden=!0)}}),r){if(U?.mount(),D&&(D.hidden=!1),t===null&&Ae?.enter(),je(r.content),be.get(r.content)?.enter(),Ot.start(),a){let e=a===`right`?`from-right`:`from-left`;r.content.setAttribute(`data-motion`,e)}else r.content.removeAttribute(`data-motion`);r.content.setAttribute(`data-state`,`active`),r.content.removeAttribute(`aria-hidden`),w(r.content,!1),r.content.hidden=!1,r.content.style.pointerEvents=`auto`,me=r.index,Dt(r),Fe(r),X(r.trigger)}else Ot.stop(),ut(),Y(),Ae?.exit(),Fe(null);let c=e!==null;m.setAttribute(`data-state`,c?`open`:`closed`),a?m.setAttribute(`data-motion`,a===`right`?`from-right`:`from-left`):m.removeAttribute(`data-motion`),D&&(D.setAttribute(`data-state`,c?`open`:`closed`),D.style.pointerEvents=c?`auto`:`none`,ye=c&&!i,(!c||i)&&(Ee(),B=!1),De(),a&&D.style.setProperty(`--motion-direction`,a===`right`?`1`:`-1`)),k=e,A=null,e===null&&X(null),wt(),s(m,`navigation-menu:change`,{value:e}),de?.(e)};t?r():e!==null&&k===null?he=setTimeout(r,x):e!==null&&k!==null?r():ge=setTimeout(r,ie)};m.setAttribute(`data-state`,`closed`),D&&(D.setAttribute(`data-state`,`closed`),D.hidden=!0,D.style.pointerEvents=`none`),O&&O.setAttribute(`data-state`,`hidden`),W.forEach(({trigger:e,content:t,item:n})=>{e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&(e.type=`button`),_(e,`expanded`,!1),e.setAttribute(`data-state`,`closed`),e.tabIndex=0,n.setAttribute(`data-state`,`closed`),t.setAttribute(`data-state`,`inactive`),t.setAttribute(`aria-hidden`,`true`),t.tabIndex=-1,w(t,!0),t.hidden=!0,t.style.pointerEvents=`none`}),W.forEach(({item:e,trigger:t},r)=>{V.push(g(t,`pointerenter`,e=>{if(!j){if(k!==r&&bt(e))return;X(t)}})),V.push(g(e,`pointerenter`,e=>{if(!j){if(k!==r&&bt(e))return;Q(r)}})),V.push(g(e,`pointerleave`,e=>{if(A===r&&k===null&&q(),k===r&&!j){let t=e.relatedTarget;if(Tt(t))return;(!t||!n(m,t))&&(Q(null),X(null))}})),V.push(g(t,`focus`,()=>{if(M===t){M=null;return}ae&&Q(r,!0),Z(t)})),V.push(g(t,`pointerdown`,()=>{M=t,N=t}),g(t,`keydown`,()=>{N=null})),V.push(g(t,`click`,()=>{let e=N===t;N=null,M=null,q(),k===r&&j?(j=!1,Q(null,!0),X(null)):k===r&&!j?(j=!0,X(t),e||at(r)):(j=!0,Q(r,!0),X(t),e||at(r))}))}),V.push(g(T,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=Ge(t.target);if(n){if(P=!0,j||k!==n.value&&bt(t))return;X(n.trigger),Q(n.value);return}let r=We(t.target);if(r){if(P=!0,k!==null){if(j)return;$()}X(r.element);return}k!==null&&(j||$e(t.target)&&$())}),g(T,`click`,e=>{k!==null&&$e(e.target)&&$()})),V.push(g(T,`focusin`,e=>{let t=We(e.target);if(t){if(k!==null){Z();return}X(t.element)}}),g(m,`pointerenter`,()=>{P=!0}),g(m,`pointerleave`,e=>{let t=e.relatedTarget;if(!Tt(t)&&(P=!1,!j)){if(bt(e)){K();return}Q(null),X(null)}}),g(m,`pointerdown`,()=>{Y(),q()}));let jt=()=>{if(!Ke()||k!==null||A!==null||j)return;let e=Je();if(P=e!==null||m instanceof HTMLElement&&qe(m),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};D&&V.push(g(D,`pointerenter`,()=>{Y(),K()}),g(D,`transitionend`,e=>{if(e.target!==D)return;let t=k?W.get(k):null;if(t){let e=Ie(t.item,t.content);Et(t.content,t.trigger,e)}})),W.forEach(({content:e})=>{V.push(g(e,`pointerenter`,()=>{Y(),K()}),g(e,`pointerleave`,e=>{if(j)return;let t=e.relatedTarget;Tt(t)||n(m,t)||(Q(null),X(null))}))}),V.push(g(T,`keydown`,e=>{let t=Ue(e.target);if(!t)return;let n=G.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`Tab`:if(e.shiftKey||k===null)return;(Ze(t,1,{preserveOpenOnPlain:!0})||it())&&e.preventDefault();return;case`ArrowLeft`:r=n-1,r<0&&(r=G.length-1);break;case`ArrowRight`:r=n+1,r>=G.length&&(r=0);break;case`ArrowDown`:if(t.kind===`submenu`){e.preventDefault();let n=t.value;j=!0,Q(n,!0),at(n)}return;case`Home`:r=0;break;case`End`:r=G.length-1;break;case`Escape`:j=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=G[r];i&&Ye(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:e,trigger:t})=>{V.push(g(e,`keydown`,n=>{let r=n.target,i=tt(e),a=i.indexOf(r);if(a!==-1)switch(n.key){case`Tab`:if(!n.shiftKey&&a===i.length-1){(Qe(t,1,{preserveOpenOnPlain:!0})||it())&&n.preventDefault();return}if(n.shiftKey&&a===0){n.preventDefault(),t.focus();return}return;case`ArrowDown`:case`ArrowRight`:{n.preventDefault();let e=a+1;e<i.length&&i[e]?.focus();break}case`ArrowUp`:case`ArrowLeft`:n.preventDefault(),a===0?t.focus():i[a-1]?.focus();break;case`Escape`:n.preventDefault(),j=!1,Q(null,!0),X(null),t.focus();break}}))});let Mt=()=>n(m,document.activeElement)||P||j,$=()=>{Y(),q(),ot(),j=!1,Q(null,!0),X(null),wt()};V.push(g(document,`focusin`,e=>{let t=e.target;if(!n(m,t)){if(k!==null){$();return}X(null)}})),V.push(r({root:m,isOpen:()=>k!==null&&Mt(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:e=>!!e&&n(m,e)})),V.push(g(window,`resize`,()=>{(k||_e)&&requestAnimationFrame(()=>Z(_e))}),g(T,`scroll`,()=>{(k||_e)&&requestAnimationFrame(()=>Z(_e))})),V.push(g(m,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(W.has(t.value)){j=!0,Q(t.value,!0);let e=W.get(t.value);e&&X(e.trigger)}}}));let Nt={get value(){return k},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{ve=!0,q(),ot(),V.forEach(e=>e()),V.length=0,e(m,b,Nt)}};return jt(),te(m,b,Nt),Nt}function ie(e=document){let t=[];for(let n of m(e,`navigation-menu`))h(n,b)||t.push(x(n));return t}export{ie as create,x as createNavigationMenu};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-slot/navigation-menu",
3
- "version": "0.2.143",
3
+ "version": "0.2.144",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.cjs",
@@ -35,6 +35,6 @@
35
35
  ],
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
- "@data-slot/core": "0.2.143"
38
+ "@data-slot/core": "0.2.144"
39
39
  }
40
40
  }