@data-slot/navigation-menu 0.2.147 → 0.2.148

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
@@ -239,38 +239,33 @@ suppressing exit animations.
239
239
 
240
240
  ### Motion Animations
241
241
 
242
- Content panels receive `data-motion` attributes for directional enter/exit animations.
243
- Both content and viewport also receive `data-starting-style` / `data-ending-style` markers from
244
- presence lifecycle hooks, so you can style smooth fade/scale transitions before unmount.
242
+ Content panels receive Base-style `data-activation-direction="left|right|up|down"` attributes
243
+ during directional switches. Combine that with `data-starting-style` / `data-ending-style`
244
+ markers from the presence lifecycle to style directional enter/exit animations before unmount.
245
+
246
+ `data-motion` and `--motion-direction` are still written for backward compatibility with older
247
+ examples, but they are legacy surfaces and will be removed in the next major version.
245
248
 
246
249
  For exit animations, avoid CSS that force-hides content immediately by `data-state`
247
250
  (for example `display: none` on non-active panels), because that bypasses the presence lifecycle.
248
251
 
249
252
  ```css
250
- /* Entering from right */
251
- [data-slot="navigation-menu-content"][data-motion="from-right"] {
252
- animation: slideFromRight 0.2s;
253
- }
254
-
255
- /* Exiting to left */
256
- [data-slot="navigation-menu-content"][data-motion="to-left"] {
257
- animation: slideToLeft 0.2s;
258
- }
259
-
260
- /* Presence lifecycle helpers */
261
- [data-slot="navigation-menu-content"][data-ending-style],
262
- [data-slot="navigation-menu-viewport"][data-ending-style] {
253
+ /* Entering from the right */
254
+ [data-slot="navigation-menu-content"][data-starting-style][data-activation-direction="right"] {
263
255
  opacity: 0;
256
+ transform: translateX(1rem);
264
257
  }
265
258
 
266
- @keyframes slideFromRight {
267
- from { transform: translateX(100%); opacity: 0; }
268
- to { transform: translateX(0); opacity: 1; }
259
+ /* Exiting to the left */
260
+ [data-slot="navigation-menu-content"][data-ending-style][data-activation-direction="right"] {
261
+ opacity: 0;
262
+ transform: translateX(-1rem);
269
263
  }
270
264
 
271
- @keyframes slideToLeft {
272
- from { transform: translateX(0); opacity: 1; }
273
- to { transform: translateX(-100%); opacity: 0; }
265
+ [data-slot="navigation-menu-content"] {
266
+ transition:
267
+ opacity 175ms ease,
268
+ transform 350ms cubic-bezier(0.4, 0, 0.2, 1);
274
269
  }
275
270
  ```
276
271
 
@@ -285,7 +280,7 @@ For exit animations, avoid CSS that force-hides content immediately by `data-sta
285
280
  | `--indicator-width` | indicator | Width of hovered trigger |
286
281
  | `--indicator-top` | indicator | Top offset from list |
287
282
  | `--indicator-height` | indicator | Height of hovered trigger |
288
- | `--motion-direction` | viewport | `1` (right) or `-1` (left) |
283
+ | `--motion-direction` | viewport | Legacy compatibility variable: `1` (right) or `-1` (left) |
289
284
 
290
285
  ## Keyboard Navigation
291
286
 
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=[`absolute`,`fixed`],i=(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},a=(e,t,n)=>{let r=i(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}},o=`@data-slot/navigation-menu`;function s(i,s={}){let c=(0,e.reuseRootBinding)(i,o,`[@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(c)return c;let l=s.delayOpen??(0,e.getDataNumber)(i,`delayOpen`)??0,u=s.delayClose??(0,e.getDataNumber)(i,`delayClose`)??0,ee=s.openOnFocus??(0,e.getDataBool)(i,`openOnFocus`)??!1,te=s.side??(0,e.getDataEnum)(i,`side`,n)??`bottom`,d=s.align??(0,e.getDataEnum)(i,`align`,t)??`start`,f=s.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??0,p=s.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??0,m=s.positionMethod??(0,e.getDataEnum)(i,`positionMethod`,r)??`absolute`,ne=s.safeTriangle??(0,e.getDataBool)(i,`safeTriangle`)??!1,re=s.debugSafeTriangle??(0,e.getDataBool)(i,`debugSafeTriangle`)??!1,ie=ne||re,ae=s.onValueChange,h=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),g=(e,t)=>{`inert`in e&&(e.inert=t)},_=(0,e.getPart)(i,`navigation-menu-list`),v=(0,e.getParts)(i,`navigation-menu-item`),y=(0,e.getPart)(i,`navigation-menu-viewport`),b=(0,e.getPart)(i,`navigation-menu-indicator`),x=(e,t)=>{let n=e.parentElement;for(;n&&n!==i;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!_||v.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let S=null,C=null,oe=-1,se=null,w=null,T=null,E=!1,D=null,O=null,k=!1,A=!1,j=null,M=null,N=null,P=0,F=0,I=!1,L=!1,R=[],z=new Map,B=new Map,ce=y?x(y,`navigation-menu-viewport-positioner`):null,le=y?x(y,`navigation-menu-positioner`):null,V=ce??le,ue=V?x(V,`navigation-menu-portal`):null,H=y?(0,e.createPortalLifecycle)({content:y,root:i,enabled:!0,wrapperSlot:V?void 0:`navigation-menu-viewport-positioner`,container:V??void 0,mountTarget:V?ue??V:void 0}):null,de=()=>{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`))},fe=()=>{N!==null&&(cancelAnimationFrame(N),N=null)},pe=()=>{let e=I||L;y&&(e?y.setAttribute(`data-instant`,``):y.removeAttribute(`data-instant`));let t=H?.container;t instanceof HTMLElement&&(e?t.setAttribute(`data-instant`,``):t.removeAttribute(`data-instant`))},me=()=>{fe(),N=requestAnimationFrame(()=>{N=null,L=!1,pe()})},he=()=>{fe(),I=!1,L=!1,pe()},ge=y?(0,e.createPresenceLifecycle)({element:y,onExitComplete:()=>{A||(he(),de(),P=0,F=0,H?.restore(),y.hidden=!0,y.style.pointerEvents=`none`)}}):null,_e=e=>{if(!y)return;let t=B.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,B.set(e,t)),e.parentNode!==y&&y.appendChild(e)},ve=e=>{let t=B.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},ye=()=>{if(!y||!H)return;let e=H.container,t=i.ownerDocument.defaultView??window,n=i.getBoundingClientRect(),r=m===`fixed`,a=n.top+F+(r?0:t.scrollY),o=n.left+P+(r?0:t.scrollX);e.style.position=m,e.style.top=`${a}px`,e.style.left=`${o}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,be=e=>{U?.disconnect(),U=null,!(!y||!e)&&(U=new ResizeObserver(()=>{let t=xe(e.item,e.content);ft(e.content,e.trigger,t)}),U.observe(e.content))};R.push(()=>U?.disconnect()),R.push(()=>{he(),z.forEach(e=>e.cleanup()),z.clear(),B.forEach((e,t)=>{ve(t),t.hidden=!0,t.style.pointerEvents=`none`}),B.clear(),de(),P=0,F=0,ge?.cleanup(),H?.cleanup()});let W=new Map,xe=(r,i)=>({side:s.side??(0,e.getDataEnum)(i,`side`,n)??(0,e.getDataEnum)(r,`side`,n)??te,align:s.align??(0,e.getDataEnum)(i,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??d,sideOffset:s.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??f,alignOffset:s.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??p}),Se=0;v.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){W.set(n,{value:n,item:t,trigger:r,content:i,index:Se++}),z.set(i,(0,e.createPresenceLifecycle)({element:i,onExitComplete:()=>{A||(ve(i),i.hidden=!0,i.style.pointerEvents=`none`)}}));let a=h(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 Ce=Array.from(W.values()).map(e=>e.trigger),we=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,Te=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},Ee=e=>{if(e.matches(we))return e;let t=e.querySelectorAll(we);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=[],De=new Map;v.forEach(e=>{let t=Te(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};G.push(e),De.set(e.element,e),De.set(e.item,e);return}let n=Ee(e);if(!n)return;let r={kind:`plain`,element:n};G.push(r),De.set(r.element,r)});let Oe=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==_;){let e=De.get(n);if(e)return e;n=n.parentElement}return null},ke=e=>{let t=Oe(e);return t?.kind===`plain`?t:null},Ae=e=>{let t=Oe(e);return t?.kind===`submenu`?t:null},je=()=>{let e=i.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},Me=e=>{try{return e.matches(`:hover`)}catch{return!1}},Ne=()=>{for(let e of G){if(e.kind===`submenu`){if(Me(e.item)||Me(e.trigger))return e;continue}if(Me(e.element))return e}return null},Pe=(e,t={})=>{let n=i.ownerDocument,r=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(S!==null&&!r&&$(),e.element.focus(),n.activeElement===e.element?(S!==null&&r?Z():X(e.element),!0):!1)},Fe=(e,t,n={})=>{for(let r=e+t;r>=0&&r<G.length;r+=t){let e=G[r];if(e&&Pe(e,n))return!0}return!1},Ie=(e,t,n={})=>{let r=G.indexOf(e);return r===-1?!1:Fe(r,t,n)},Le=(e,t,n={})=>{let r=G.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Fe(r,t,n)},Re=e=>{if(!(e instanceof Node)||!_.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||Te(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},ze=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,Be=e=>Array.from(e.querySelectorAll(ze)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),Ve=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(ze)?!0:e.tabIndex>=0,He=e=>{if(i.contains(e)||y?.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},Ue=()=>{let e=i.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(Ve(n)&&!He(n)&&(i.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},We=e=>{requestAnimationFrame(()=>{if(S!==e)return;let t=W.get(e);if(!t)return;let n=Be(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{se&&=(clearTimeout(se),null),w&&=(clearTimeout(w),null)},q=()=>{K(),C=null},Ge=()=>{D=null,O=null},Ke=()=>{M!==null&&(cancelAnimationFrame(M),M=null)},J=null,qe=()=>{if(!y)return null;let e=H?.container;return e instanceof HTMLElement?e:y.parentElement instanceof HTMLElement?y.parentElement:y},Je=()=>{let t=qe();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;`,R.push((0,e.on)(J,`pointerenter`,()=>{K()}),(0,e.on)(J,`pointerleave`,t=>{if(E||S===null)return;let n=t.relatedTarget;ut(n)||n&&(0,e.containsWithPortals)(i,n)||(Q(null),X(null))}))),t&&J.parentElement!==t&&t.insertBefore(J,t.firstChild),J},Ye=()=>{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`)},Xe=()=>{if(!re)return null;let e=i.ownerDocument.body;return e?(j||(j=i.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},Ze=()=>{j&&(j.style.width=`0`,j.style.height=`0`,j.style.clipPath=`none`,j.style.display=`none`)},Y=()=>{re||Ze()},Qe=e=>{let t=Xe();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),te=Math.max(1,u-c),d=Math.max(1,ee-l),f=(e,t)=>`${(e-c)/te*100}% ${(t-l)/d*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${te}px`,t.style.height=`${d}px`,t.style.clipPath=`polygon(${f(n,r)}, ${f(i,a)}, ${f(o,s)})`},$e=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),et=(e,t,n,r)=>{let i=$e(e,t,n),a=$e(e,n,r),o=$e(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},tt=(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},nt=()=>S?W.get(S)??null:null,rt=(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]=tt(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}},it=()=>{if(!ie||!y||S===null)return null;let e=nt();if(!e)return null;let t=i.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=y.getBoundingClientRect(),a=e.content.getBoundingClientRect();return rt(n,t,r.width>0&&r.height>0?r:a)},at=e=>{let t=it();return t?et({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},ot=(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){Ye();return}let t=Je(),n=t.parentElement,r=st(n&&n===H?.container?e.map(e=>({x:e.x-P,y:e.y-F})):e);if(r.length<3){Ye();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(`, `)})`},lt=()=>{if(!re)return;let e=it();if(!e){Ze();return}Qe(e)},ut=e=>{if(!e)return!1;if(nt()?.content.contains(e)||y?.contains(e)||J?.contains(e))return!0;let t=H?.container;return!!(t instanceof HTMLElement&&t.contains(e))};R.push(Y),R.push(Ke),R.push(Ye),R.push(()=>{Ze(),j?.parentElement&&j.parentElement.removeChild(j),j=null});let dt=(t,r,o)=>{if(!y||y.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,te=u&&parseFloat(u.marginBottom)||0,d=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},f=t.getBoundingClientRect(),p=d(f.width,t.scrollWidth,t.offsetWidth,t.clientWidth),m=d(f.height,t.scrollHeight,t.offsetHeight,t.clientHeight)+ee+te,ne={top:f.top,left:f.left,width:p,height:m,right:f.left+p,bottom:f.top+m},re=getComputedStyle(y),ae=parseFloat(re.marginTop)||0;y.style.setProperty(`--viewport-width`,`${p}px`),y.style.setProperty(`--viewport-height`,`${m}px`);let h=i.getBoundingClientRect(),g=r.getBoundingClientRect(),_=(0,e.computeFloatingPosition)({anchorRect:g,contentRect:ne,side:o.side,align:o.align,sideOffset:o.sideOffset,alignOffset:o.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:n}),v=_.x-h.left,b=_.y-h.top;P=v,F=b;let x=a(_.side,_.align,g),S=x.x-(h.left+v),C=x.y-(h.top+b),oe=x.x-h.left,se=x.y-h.top,w=`${S}px ${C}px`,T=`${oe}px ${se}px`;y.style.top=`0px`,y.style.left=`0px`,y.style.willChange=`transform,width,height`,y.style.setProperty(`--transform-origin`,w),t.style.top=`0px`,t.style.left=`0px`,t.style.setProperty(`--transform-origin`,w),y.setAttribute(`data-side`,_.side),y.setAttribute(`data-align`,_.align),t.setAttribute(`data-side`,_.side),t.setAttribute(`data-align`,_.align);let E=H?.container;E&&E!==y&&(E.setAttribute(`data-side`,_.side),E.setAttribute(`data-align`,_.align),E.style.setProperty(`--transform-origin`,T)),ye();let D=y.getBoundingClientRect(),O=[],k=Math.max(0,D.top-h.bottom),A=Math.max(0,h.top-D.bottom),j=Math.max(0,D.left-h.right),M=Math.max(0,h.left-D.right),N=Math.max(0,ee+ae),I=Math.max(k,A,N),L=Math.max(j,M),R=ie?rt(g,h,D):null,z=(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,N),t=v,n=A>k&&A>=N?b+m:b-e,r=p;if(R){let e=Math.min(R.edgeA.x,R.edgeB.x)-h.left,n=Math.max(R.edgeA.x,R.edgeB.x)-h.left;t=e-8,r=n-e+16}z(t,n,r,e)}else if(L>0){let e=Math.max(j,M),t=b,n=M>j?v+p:v-e,r=m;if(R){let e=Math.min(R.edgeA.y,R.edgeB.y)-h.top,n=Math.max(R.edgeA.y,R.edgeB.y)-h.top;t=e-8,r=n-e+16}z(n,t,e,r)}if(R){let e=ot(R.apex,h),t=ot(R.edgeA,h),n=ot(R.edgeB,h);O.push(e,t,n)}ct(O),lt()},ft=(e,t,n,r={})=>{if(!y)return;let i=()=>{dt(e,t,n)};if(r.defer===!1){i();return}requestAnimationFrame(()=>{y.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`||i()})},pt=(e=nt(),t={})=>{if(!e)return;let n=xe(e.item,e.content);ft(e.content,e.trigger,n,t)},mt=(0,e.createPositionSync)({observedElements:[i,...Ce],isActive:()=>S!==null,ancestorScroll:!0,syncOnScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{L=!0,pe(),pt(void 0,{defer:!1}),me()}});R.push(()=>mt.stop());let ht=e=>oe===-1||e>oe?`right`:`left`,X=e=>{if(!b)return;if(T=e,!e){Ke(),b.removeAttribute(`data-instant`),b.setAttribute(`data-state`,`hidden`);return}b.getAttribute(`data-state`)!==`visible`&&(Ke(),b.setAttribute(`data-instant`,``),M=requestAnimationFrame(()=>{M=requestAnimationFrame(()=>{b.removeAttribute(`data-instant`),M=null})}));let t=_.getBoundingClientRect(),n=e.getBoundingClientRect();b.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),b.style.setProperty(`--indicator-width`,`${n.width}px`),b.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(y&&parseFloat(getComputedStyle(y).marginTop)||0)<1?1:0;b.style.setProperty(`--indicator-height`,`${n.height-r}px`),b.setAttribute(`data-state`,`visible`)},gt=()=>S?W.get(S)?.trigger??null:null,Z=(e=null)=>{let t=gt();if(t){X(t);return}X(e)},Q=(t,n=!1)=>{if(Y(),t===S){t===null?q():K();return}if(!n&&t!==null&&t===C)return;K(),C=t===null?null:t;let r=()=>{let n=S,r=t?W.get(t):null,a=n!==null&&t!==null&&n!==t,o=a&&r?ht(r.index):null,s=document.activeElement;if(t===null&&s&&n){let t=W.get(n);t&&(0,e.containsWithPortals)(t.content,s)&&t.trigger.focus()}if(W.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=z.get(i);if(i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),g(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`),ve(i),i.hidden=!0)}}),r){if(H?.mount(),y&&(y.hidden=!1),n===null&&ge?.enter(),_e(r.content),z.get(r.content)?.enter(),mt.start(),o){let e=o===`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`),g(r.content,!1),r.content.hidden=!1,r.content.style.pointerEvents=`auto`,oe=r.index,pt(r),be(r),X(r.trigger)}else mt.stop(),Ye(),Y(),ge?.exit(),be(null);let c=t!==null;i.setAttribute(`data-state`,c?`open`:`closed`),o?i.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):i.removeAttribute(`data-motion`),y&&(y.setAttribute(`data-state`,c?`open`:`closed`),y.style.pointerEvents=c?`auto`:`none`,I=c&&!a,(!c||a)&&(fe(),L=!1),pe(),o&&y.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),S=t,C=null,t===null&&X(null),lt(),(0,e.emit)(i,`navigation-menu:change`,{value:t}),ae?.(t)};n?r():t!==null&&S===null?se=setTimeout(r,l):t!==null&&S!==null?r():w=setTimeout(r,u)};i.setAttribute(`data-state`,`closed`),y&&(y.setAttribute(`data-state`,`closed`),y.hidden=!0,y.style.pointerEvents=`none`),b&&b.setAttribute(`data-state`,`hidden`),W.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,g(n,!0),n.hidden=!0,n.style.pointerEvents=`none`}),W.forEach(({item:t,trigger:n},r)=>{R.push((0,e.on)(n,`pointerenter`,e=>{if(!E){if(S!==r&&at(e))return;X(n)}})),R.push((0,e.on)(t,`pointerenter`,e=>{if(!E){if(S!==r&&at(e))return;Q(r)}})),R.push((0,e.on)(t,`pointerleave`,t=>{if(C===r&&S===null&&q(),S===r&&!E){let n=t.relatedTarget;if(ut(n))return;(!n||!(0,e.containsWithPortals)(i,n))&&(Q(null),X(null))}})),R.push((0,e.on)(n,`focus`,()=>{if(D===n){D=null;return}ee&&Q(r,!0),Z(n)})),R.push((0,e.on)(n,`pointerdown`,()=>{D=n,O=n}),(0,e.on)(n,`keydown`,()=>{O=null})),R.push((0,e.on)(n,`click`,()=>{let e=O===n;O=null,D=null,q(),S===r&&E?(E=!1,Q(null,!0),X(null)):S===r&&!E?(E=!0,X(n),e||We(r)):(E=!0,Q(r,!0),X(n),e||We(r))}))}),R.push((0,e.on)(_,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=Ae(t.target);if(n){if(k=!0,E||S!==n.value&&at(t))return;X(n.trigger),Q(n.value);return}let r=ke(t.target);if(r){if(k=!0,S!==null){if(E)return;$()}X(r.element);return}S!==null&&(E||Re(t.target)&&$())}),(0,e.on)(_,`click`,e=>{S!==null&&Re(e.target)&&$()})),R.push((0,e.on)(_,`focusin`,e=>{let t=ke(e.target);if(t){if(S!==null){Z();return}X(t.element)}}),(0,e.on)(i,`pointerenter`,()=>{k=!0}),(0,e.on)(i,`pointerleave`,e=>{let t=e.relatedTarget;if(!ut(t)&&(k=!1,!E)){if(at(e)){K();return}Q(null),X(null)}}),(0,e.on)(i,`pointerdown`,()=>{Y(),q()}));let _t=()=>{if(!je()||S!==null||C!==null||E)return;let e=Ne();if(k=e!==null||i instanceof HTMLElement&&Me(i),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};y&&R.push((0,e.on)(y,`pointerenter`,()=>{Y(),K()}),(0,e.on)(y,`transitionend`,e=>{if(e.target!==y)return;let t=S?W.get(S):null;if(t){let e=xe(t.item,t.content);ft(t.content,t.trigger,e)}})),W.forEach(({content:t})=>{R.push((0,e.on)(t,`pointerenter`,()=>{Y(),K()}),(0,e.on)(t,`pointerleave`,t=>{if(E)return;let n=t.relatedTarget;ut(n)||(0,e.containsWithPortals)(i,n)||(Q(null),X(null))}))}),R.push((0,e.on)(_,`keydown`,e=>{let t=Oe(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||S===null)return;(Ie(t,1,{preserveOpenOnPlain:!0})||Ue())&&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;E=!0,Q(n,!0),We(n)}return;case`Home`:r=0;break;case`End`:r=G.length-1;break;case`Escape`:E=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=G[r];i&&Pe(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:t,trigger:n})=>{R.push((0,e.on)(t,`keydown`,e=>{let r=e.target,i=Be(t),a=i.indexOf(r);if(a!==-1)switch(e.key){case`Tab`:if(!e.shiftKey&&a===i.length-1){(Le(n,1,{preserveOpenOnPlain:!0})||Ue())&&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 vt=()=>(0,e.containsWithPortals)(i,document.activeElement)||k||E,$=()=>{Y(),q(),Ge(),E=!1,Q(null,!0),X(null),lt()};R.push((0,e.on)(document,`focusin`,t=>{let n=t.target;if(!(0,e.containsWithPortals)(i,n)){if(S!==null){$();return}X(null)}})),R.push((0,e.createDismissLayer)({root:i,isOpen:()=>S!==null&&vt(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(i,t)})),R.push((0,e.on)(window,`resize`,()=>{(S||T)&&requestAnimationFrame(()=>Z(T))}),(0,e.on)(_,`scroll`,()=>{(S||T)&&requestAnimationFrame(()=>Z(T))})),R.push((0,e.on)(i,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(W.has(t.value)){E=!0,Q(t.value,!0);let e=W.get(t.value);e&&X(e.trigger)}}}));let yt={get value(){return S},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{A=!0,q(),Ge(),R.forEach(e=>e()),R.length=0,(0,e.clearRootBinding)(i,o,yt)}};return _t(),(0,e.setRootBinding)(i,o,yt),yt}function c(t=document){let n=[];for(let r of(0,e.getRoots)(t,`navigation-menu`))(0,e.hasRootBinding)(r,o)||n.push(s(r));return n}exports.create=c,exports.createNavigationMenu=s;
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=[`absolute`,`fixed`],i=(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},a=(e,t,n)=>{let r=i(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}},o=`@data-slot/navigation-menu`;function s(i,s={}){let c=(0,e.reuseRootBinding)(i,o,`[@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(c)return c;let l=s.delayOpen??(0,e.getDataNumber)(i,`delayOpen`)??0,u=s.delayClose??(0,e.getDataNumber)(i,`delayClose`)??0,ee=s.openOnFocus??(0,e.getDataBool)(i,`openOnFocus`)??!1,te=s.side??(0,e.getDataEnum)(i,`side`,n)??`bottom`,d=s.align??(0,e.getDataEnum)(i,`align`,t)??`start`,f=s.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??0,p=s.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??0,m=s.positionMethod??(0,e.getDataEnum)(i,`positionMethod`,r)??`absolute`,ne=s.safeTriangle??(0,e.getDataBool)(i,`safeTriangle`)??!1,h=s.debugSafeTriangle??(0,e.getDataBool)(i,`debugSafeTriangle`)??!1,re=ne||h,ie=s.onValueChange,g=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),_=(e,t)=>{`inert`in e&&(e.inert=t)},v=(0,e.getPart)(i,`navigation-menu-list`),y=(0,e.getParts)(i,`navigation-menu-item`),b=(0,e.getPart)(i,`navigation-menu-viewport`),x=(0,e.getPart)(i,`navigation-menu-indicator`),S=(e,t)=>{let n=e.parentElement;for(;n&&n!==i;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!v||y.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let C=null,w=null,ae=null,oe=null,T=null,E=!1,D=null,O=null,k=!1,A=!1,j=null,M=null,N=null,P=0,F=0,I=!1,L=!1,R=[],z=new Map,B=new Map,se=b?S(b,`navigation-menu-viewport-positioner`):null,ce=b?S(b,`navigation-menu-positioner`):null,V=se??ce,le=V?S(V,`navigation-menu-portal`):null,H=b?(0,e.createPortalLifecycle)({content:b,root:i,enabled:!0,wrapperSlot:V?void 0:`navigation-menu-viewport-positioner`,container:V??void 0,mountTarget:V?le??V:void 0}):null,ue=()=>{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`))},de=()=>{N!==null&&(cancelAnimationFrame(N),N=null)},fe=()=>{let e=I||L;b&&(e?b.setAttribute(`data-instant`,``):b.removeAttribute(`data-instant`));let t=H?.container;t instanceof HTMLElement&&(e?t.setAttribute(`data-instant`,``):t.removeAttribute(`data-instant`))},pe=()=>{de(),N=requestAnimationFrame(()=>{N=null,L=!1,fe()})},me=()=>{de(),I=!1,L=!1,fe()},he=b?(0,e.createPresenceLifecycle)({element:b,onExitComplete:()=>{A||(me(),ue(),P=0,F=0,H?.restore(),b.hidden=!0,b.style.pointerEvents=`none`)}}):null,ge=e=>{if(!b)return;let t=B.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,B.set(e,t)),e.parentNode!==b&&b.appendChild(e)},_e=e=>{let t=B.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(!b||!H)return;let e=H.container,t=i.ownerDocument.defaultView??window,n=i.getBoundingClientRect(),r=m===`fixed`,a=n.top+F+(r?0:t.scrollY),o=n.left+P+(r?0:t.scrollX);e.style.position=m,e.style.top=`${a}px`,e.style.left=`${o}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,ye=e=>{U?.disconnect(),U=null,!(!b||!e)&&(U=new ResizeObserver(()=>{let t=be(e.item,e.content);ut(e.content,e.trigger,t)}),U.observe(e.content))};R.push(()=>U?.disconnect()),R.push(()=>{me(),z.forEach(e=>e.cleanup()),z.clear(),B.forEach((e,t)=>{_e(t),t.hidden=!0,t.style.pointerEvents=`none`}),B.clear(),ue(),P=0,F=0,he?.cleanup(),H?.cleanup()});let W=new Map,be=(r,i)=>({side:s.side??(0,e.getDataEnum)(i,`side`,n)??(0,e.getDataEnum)(r,`side`,n)??te,align:s.align??(0,e.getDataEnum)(i,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??d,sideOffset:s.sideOffset??(0,e.getDataNumber)(i,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??f,alignOffset:s.alignOffset??(0,e.getDataNumber)(i,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??p});y.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){W.set(n,{value:n,item:t,trigger:r,content:i}),z.set(i,(0,e.createPresenceLifecycle)({element:i,onExitComplete:()=>{A||(i.removeAttribute(`data-activation-direction`),i.removeAttribute(`data-motion`),_e(i),i.hidden=!0,i.style.pointerEvents=`none`)}}));let a=g(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 xe=Array.from(W.values()).map(e=>e.trigger),Se=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,Ce=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},we=e=>{if(e.matches(Se))return e;let t=e.querySelectorAll(Se);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=[],Te=new Map;y.forEach(e=>{let t=Ce(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};G.push(e),Te.set(e.element,e),Te.set(e.item,e);return}let n=we(e);if(!n)return;let r={kind:`plain`,element:n};G.push(r),Te.set(r.element,r)});let Ee=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==v;){let e=Te.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=i.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 G){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=i.ownerDocument,r=t.preserveOpenOnPlain??!1;return e.kind===`submenu`?(e.trigger.focus(),n.activeElement===e.trigger?(Z(e.trigger),!0):!1):(C!==null&&!r&&$(),e.element.focus(),n.activeElement===e.element?(C!==null&&r?Z():X(e.element),!0):!1)},Ne=(e,t,n={})=>{for(let r=e+t;r>=0&&r<G.length;r+=t){let e=G[r];if(e&&Me(e,n))return!0}return!1},Pe=(e,t,n={})=>{let r=G.indexOf(e);return r===-1?!1:Ne(r,t,n)},Fe=(e,t,n={})=>{let r=G.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Ne(r,t,n)},Ie=e=>{if(!(e instanceof Node)||!v.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||Ce(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(i.contains(e)||b?.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},Ve=()=>{let e=i.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(ze(n)&&!Be(n)&&(i.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},He=e=>{requestAnimationFrame(()=>{if(C!==e)return;let t=W.get(e);if(!t)return;let n=Re(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{ae&&=(clearTimeout(ae),null),oe&&=(clearTimeout(oe),null)},q=()=>{K(),w=null},Ue=()=>{D=null,O=null},We=()=>{M!==null&&(cancelAnimationFrame(M),M=null)},J=null,Ge=()=>{if(!b)return null;let e=H?.container;return e instanceof HTMLElement?e:b.parentElement instanceof HTMLElement?b.parentElement:b},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;`,R.push((0,e.on)(J,`pointerenter`,()=>{K()}),(0,e.on)(J,`pointerleave`,t=>{if(E||C===null)return;let n=t.relatedTarget;ct(n)||n&&(0,e.containsWithPortals)(i,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=i.ownerDocument.body;return e?(j||(j=i.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},Ye=()=>{j&&(j.style.width=`0`,j.style.height=`0`,j.style.clipPath=`none`,j.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),te=Math.max(1,u-c),d=Math.max(1,ee-l),f=(e,t)=>`${(e-c)/te*100}% ${(t-l)/d*100}%`;t.style.display=`block`,t.style.left=`${c}px`,t.style.top=`${l}px`,t.style.width=`${te}px`,t.style.height=`${d}px`,t.style.clipPath=`polygon(${f(n,r)}, ${f(i,a)}, ${f(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=()=>C?W.get(C)??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(!re||!b||C===null)return null;let e=et();if(!e)return null;let t=i.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=b.getBoundingClientRect(),a=e.content.getBoundingClientRect();return tt(n,t,r.width>0&&r.height>0?r: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===H?.container?e.map(e=>({x:e.x-P,y:e.y-F})):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)||b?.contains(e)||J?.contains(e))return!0;let t=H?.container;return!!(t instanceof HTMLElement&&t.contains(e))};R.push(Y),R.push(We),R.push(qe),R.push(()=>{Ye(),j?.parentElement&&j.parentElement.removeChild(j),j=null});let lt=(t,r,o)=>{if(!b||b.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,te=u&&parseFloat(u.marginBottom)||0,d=(...e)=>{let t=0;for(let n of e)Number.isFinite(n)&&(t=Math.max(t,n));return t},f=t.getBoundingClientRect(),p=d(f.width,t.scrollWidth,t.offsetWidth,t.clientWidth),m=d(f.height,t.scrollHeight,t.offsetHeight,t.clientHeight)+ee+te,ne={top:f.top,left:f.left,width:p,height:m,right:f.left+p,bottom:f.top+m},h=getComputedStyle(b),ie=parseFloat(h.marginTop)||0;b.style.setProperty(`--viewport-width`,`${p}px`),b.style.setProperty(`--viewport-height`,`${m}px`);let g=i.getBoundingClientRect(),_=r.getBoundingClientRect(),v=(0,e.computeFloatingPosition)({anchorRect:_,contentRect:ne,side:o.side,align:o.align,sideOffset:o.sideOffset,alignOffset:o.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:n}),y=v.x-g.left,x=v.y-g.top;P=y,F=x;let S=a(v.side,v.align,_),C=S.x-(g.left+y),w=S.y-(g.top+x),ae=S.x-g.left,oe=S.y-g.top,T=`${C}px ${w}px`,E=`${ae}px ${oe}px`;b.style.top=`0px`,b.style.left=`0px`,b.style.willChange=`transform,width,height`,b.style.setProperty(`--transform-origin`,T),t.style.top=`0px`,t.style.left=`0px`,t.style.setProperty(`--transform-origin`,T),b.setAttribute(`data-side`,v.side),b.setAttribute(`data-align`,v.align),t.setAttribute(`data-side`,v.side),t.setAttribute(`data-align`,v.align);let D=H?.container;D&&D!==b&&(D.setAttribute(`data-side`,v.side),D.setAttribute(`data-align`,v.align),D.style.setProperty(`--transform-origin`,E)),ve();let O=b.getBoundingClientRect(),k=[],A=Math.max(0,O.top-g.bottom),j=Math.max(0,g.top-O.bottom),M=Math.max(0,O.left-g.right),N=Math.max(0,g.left-O.right),I=Math.max(0,ee+ie),L=Math.max(A,j,I),R=Math.max(M,N),z=re?tt(_,g,O):null,B=(e,t,n,r)=>{n<=0||r<=0||k.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(L>=R&&L>0){let e=Math.max(A,j,I),t=y,n=j>A&&j>=I?x+m:x-e,r=p;if(z){let e=Math.min(z.edgeA.x,z.edgeB.x)-g.left,n=Math.max(z.edgeA.x,z.edgeB.x)-g.left;t=e-8,r=n-e+16}B(t,n,r,e)}else if(R>0){let e=Math.max(M,N),t=x,n=N>M?y+p:y-e,r=m;if(z){let e=Math.min(z.edgeA.y,z.edgeB.y)-g.top,n=Math.max(z.edgeA.y,z.edgeB.y)-g.top;t=e-8,r=n-e+16}B(n,t,e,r)}if(z){let e=it(z.apex,g),t=it(z.edgeA,g),n=it(z.edgeB,g);k.push(e,t,n)}ot(k),st()},ut=(e,t,n,r={})=>{if(!b)return;let i=()=>{lt(e,t,n)};if(r.defer===!1){i();return}requestAnimationFrame(()=>{b.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`||i()})},dt=(e=et(),t={})=>{if(!e)return;let n=be(e.item,e.content);ut(e.content,e.trigger,n,t)},ft=(0,e.createPositionSync)({observedElements:[i,...xe],isActive:()=>C!==null,ancestorScroll:!0,syncOnScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{L=!0,fe(),dt(void 0,{defer:!1}),pe()}});R.push(()=>ft.stop());let pt=(e,t)=>{let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.left-n.left,a=r.top-n.top;return i===0&&a===0?null:Math.abs(i)>=Math.abs(a)&&i!==0?i>0?`right`:`left`:a===0?null:a>0?`down`:`up`},mt=e=>e===`left`||e===`right`?e:null,X=e=>{if(!x)return;if(T=e,!e){We(),x.removeAttribute(`data-instant`),x.setAttribute(`data-state`,`hidden`);return}x.getAttribute(`data-state`)!==`visible`&&(We(),x.setAttribute(`data-instant`,``),M=requestAnimationFrame(()=>{M=requestAnimationFrame(()=>{x.removeAttribute(`data-instant`),M=null})}));let t=v.getBoundingClientRect(),n=e.getBoundingClientRect();x.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),x.style.setProperty(`--indicator-width`,`${n.width}px`),x.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(b&&parseFloat(getComputedStyle(b).marginTop)||0)<1?1:0;x.style.setProperty(`--indicator-height`,`${n.height-r}px`),x.setAttribute(`data-state`,`visible`)},ht=()=>C?W.get(C)?.trigger??null:null,Z=(e=null)=>{let t=ht();if(t){X(t);return}X(e)},Q=(t,n=!1)=>{if(Y(),t===C){t===null?q():K();return}if(!n&&t!==null&&t===w)return;K(),w=t===null?null:t;let r=()=>{let n=C,r=n?W.get(n):null,a=t?W.get(t):null,o=n!==null&&t!==null&&n!==t,s=o&&r&&a?pt(r.trigger,a.trigger):null,c=mt(s),l=document.activeElement;if(t===null&&l&&n&&r&&(0,e.containsWithPortals)(r.content,l)&&r.trigger.focus(),W.forEach(({trigger:r,content:i,item:a},o)=>{let l=o===t,u=o===n;if((0,e.setAria)(r,`expanded`,l),r.setAttribute(`data-state`,l?`open`:`closed`),a.setAttribute(`data-state`,l?`open`:`closed`),!l){let e=z.get(i);if(i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),_(i,!0),i.style.pointerEvents=`none`,u&&s?i.setAttribute(`data-activation-direction`,s):u&&i.removeAttribute(`data-activation-direction`),u&&c){let e=c===`right`?`to-left`:`to-right`;i.setAttribute(`data-motion`,e)}else u&&i.removeAttribute(`data-motion`);u?e?.exit():e?.isExiting||(i.removeAttribute(`data-activation-direction`),i.removeAttribute(`data-motion`),_e(i),i.hidden=!0)}}),a){if(H?.mount(),b&&(b.hidden=!1),n===null&&he?.enter(),ge(a.content),z.get(a.content)?.enter(),ft.start(),s?a.content.setAttribute(`data-activation-direction`,s):a.content.removeAttribute(`data-activation-direction`),c){let e=c===`right`?`from-right`:`from-left`;a.content.setAttribute(`data-motion`,e)}else a.content.removeAttribute(`data-motion`);a.content.setAttribute(`data-state`,`active`),a.content.removeAttribute(`aria-hidden`),_(a.content,!1),a.content.hidden=!1,a.content.style.pointerEvents=`auto`,dt(a),ye(a),X(a.trigger)}else ft.stop(),qe(),Y(),he?.exit(),ye(null);let u=t!==null;i.setAttribute(`data-state`,u?`open`:`closed`),c?i.setAttribute(`data-motion`,c===`right`?`from-right`:`from-left`):i.removeAttribute(`data-motion`),b&&(b.setAttribute(`data-state`,u?`open`:`closed`),b.style.pointerEvents=u?`auto`:`none`,I=u&&!o,(!u||o)&&(de(),L=!1),fe(),c?b.style.setProperty(`--motion-direction`,c===`right`?`1`:`-1`):b.style.removeProperty(`--motion-direction`)),C=t,w=null,t===null&&X(null),st(),(0,e.emit)(i,`navigation-menu:change`,{value:t}),ie?.(t)};n?r():t!==null&&C===null?ae=setTimeout(r,l):t!==null&&C!==null?r():oe=setTimeout(r,u)};i.setAttribute(`data-state`,`closed`),b&&(b.setAttribute(`data-state`,`closed`),b.hidden=!0,b.style.pointerEvents=`none`),x&&x.setAttribute(`data-state`,`hidden`),W.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,_(n,!0),n.hidden=!0,n.style.pointerEvents=`none`}),W.forEach(({item:t,trigger:n},r)=>{R.push((0,e.on)(n,`pointerenter`,e=>{if(!E){if(C!==r&&rt(e))return;X(n)}})),R.push((0,e.on)(t,`pointerenter`,e=>{if(!E){if(C!==r&&rt(e))return;Q(r)}})),R.push((0,e.on)(t,`pointerleave`,t=>{if(w===r&&C===null&&q(),C===r&&!E){let n=t.relatedTarget;if(ct(n))return;(!n||!(0,e.containsWithPortals)(i,n))&&(Q(null),X(null))}})),R.push((0,e.on)(n,`focus`,()=>{if(D===n){D=null;return}ee&&Q(r,!0),Z(n)})),R.push((0,e.on)(n,`pointerdown`,()=>{D=n,O=n}),(0,e.on)(n,`keydown`,()=>{O=null})),R.push((0,e.on)(n,`click`,()=>{let e=O===n;O=null,D=null,q(),C===r&&E?(E=!1,Q(null,!0),X(null)):C===r&&!E?(E=!0,X(n),e||He(r)):(E=!0,Q(r,!0),X(n),e||He(r))}))}),R.push((0,e.on)(v,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=Oe(t.target);if(n){if(k=!0,E||C!==n.value&&rt(t))return;X(n.trigger),Q(n.value);return}let r=De(t.target);if(r){if(k=!0,C!==null){if(E)return;$()}X(r.element);return}C!==null&&(E||Ie(t.target)&&$())}),(0,e.on)(v,`click`,e=>{C!==null&&Ie(e.target)&&$()})),R.push((0,e.on)(v,`focusin`,e=>{let t=De(e.target);if(t){if(C!==null){Z();return}X(t.element)}}),(0,e.on)(i,`pointerenter`,()=>{k=!0}),(0,e.on)(i,`pointerleave`,e=>{let t=e.relatedTarget;if(!ct(t)&&(k=!1,!E)){if(rt(e)){K();return}Q(null),X(null)}}),(0,e.on)(i,`pointerdown`,()=>{Y(),q()}));let gt=()=>{if(!ke()||C!==null||w!==null||E)return;let e=je();if(k=e!==null||i instanceof HTMLElement&&Ae(i),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};b&&R.push((0,e.on)(b,`pointerenter`,()=>{Y(),K()}),(0,e.on)(b,`transitionend`,e=>{if(e.target!==b)return;let t=C?W.get(C):null;if(t){let e=be(t.item,t.content);ut(t.content,t.trigger,e)}})),W.forEach(({content:t})=>{R.push((0,e.on)(t,`pointerenter`,()=>{Y(),K()}),(0,e.on)(t,`pointerleave`,t=>{if(E)return;let n=t.relatedTarget;ct(n)||(0,e.containsWithPortals)(i,n)||(Q(null),X(null))}))}),R.push((0,e.on)(v,`keydown`,e=>{let t=Ee(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||C===null)return;(Pe(t,1,{preserveOpenOnPlain:!0})||Ve())&&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;E=!0,Q(n,!0),He(n)}return;case`Home`:r=0;break;case`End`:r=G.length-1;break;case`Escape`:E=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=G[r];i&&Me(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:t,trigger:n})=>{R.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(),E=!1,Q(null,!0),X(null),n.focus();break}}))});let _t=()=>(0,e.containsWithPortals)(i,document.activeElement)||k||E,$=()=>{Y(),q(),Ue(),E=!1,Q(null,!0),X(null),st()};R.push((0,e.on)(document,`focusin`,t=>{let n=t.target;if(!(0,e.containsWithPortals)(i,n)){if(C!==null){$();return}X(null)}})),R.push((0,e.createDismissLayer)({root:i,isOpen:()=>C!==null&&_t(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(i,t)})),R.push((0,e.on)(window,`resize`,()=>{(C||T)&&requestAnimationFrame(()=>Z(T))}),(0,e.on)(v,`scroll`,()=>{(C||T)&&requestAnimationFrame(()=>Z(T))})),R.push((0,e.on)(i,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(W.has(t.value)){E=!0,Q(t.value,!0);let e=W.get(t.value);e&&X(e.trigger)}}}));let vt={get value(){return C},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{A=!0,q(),Ue(),R.forEach(e=>e()),R.length=0,(0,e.clearRootBinding)(i,o,vt)}};return gt(),(0,e.setRootBinding)(i,o,vt),vt}function c(t=document){let n=[];for(let r of(0,e.getRoots)(t,`navigation-menu`))(0,e.hasRootBinding)(r,o)||n.push(s(r));return n}exports.create=c,exports.createNavigationMenu=s;
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=[`absolute`,`fixed`],b=(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=b(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}},x=`@data-slot/navigation-menu`;function ie(m,h={}){let b=ee(m,x,`[@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(b)return b;let ie=h.delayOpen??d(m,`delayOpen`)??0,ae=h.delayClose??d(m,`delayClose`)??0,oe=h.openOnFocus??l(m,`openOnFocus`)??!1,se=h.side??u(m,`side`,ne)??`bottom`,ce=h.align??u(m,`align`,v)??`start`,le=h.sideOffset??d(m,`sideOffset`)??0,S=h.alignOffset??d(m,`alignOffset`)??0,C=h.positionMethod??u(m,`positionMethod`,y)??`absolute`,ue=h.safeTriangle??l(m,`safeTriangle`)??!1,w=h.debugSafeTriangle??l(m,`debugSafeTriangle`)??!1,de=ue||w,fe=h.onValueChange,pe=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),T=(e,t)=>{`inert`in e&&(e.inert=t)},E=f(m,`navigation-menu-list`),me=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(!E||me.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let A=null,j=null,he=-1,ge=null,_e=null,ve=null,M=!1,ye=null,be=null,N=!1,xe=!1,P=null,F=null,Se=null,I=0,L=0,Ce=!1,R=!1,z=[],B=new Map,V=new Map,we=D?k(D,`navigation-menu-viewport-positioner`):null,Te=D?k(D,`navigation-menu-positioner`):null,H=we??Te,Ee=H?k(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?Ee??H:void 0}):null,De=()=>{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`))},Oe=()=>{Se!==null&&(cancelAnimationFrame(Se),Se=null)},ke=()=>{let e=Ce||R;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`))},Ae=()=>{Oe(),Se=requestAnimationFrame(()=>{Se=null,R=!1,ke()})},je=()=>{Oe(),Ce=!1,R=!1,ke()},Me=D?o({element:D,onExitComplete:()=>{xe||(je(),De(),I=0,L=0,U?.restore(),D.hidden=!0,D.style.pointerEvents=`none`)}}):null,Ne=e=>{if(!D)return;let t=V.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,V.set(e,t)),e.parentNode!==D&&D.appendChild(e)},Pe=e=>{let t=V.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},Fe=()=>{if(!D||!U)return;let e=U.container,t=m.ownerDocument.defaultView??window,n=m.getBoundingClientRect(),r=C===`fixed`,i=n.top+L+(r?0:t.scrollY),a=n.left+I+(r?0:t.scrollX);e.style.position=C,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`},Ie=null,Le=e=>{Ie?.disconnect(),Ie=null,!(!D||!e)&&(Ie=new ResizeObserver(()=>{let t=Re(e.item,e.content);kt(e.content,e.trigger,t)}),Ie.observe(e.content))};z.push(()=>Ie?.disconnect()),z.push(()=>{je(),B.forEach(e=>e.cleanup()),B.clear(),V.forEach((e,t)=>{Pe(t),t.hidden=!0,t.style.pointerEvents=`none`}),V.clear(),De(),I=0,L=0,Me?.cleanup(),U?.cleanup()});let W=new Map,Re=(e,t)=>({side:h.side??u(t,`side`,ne)??u(e,`side`,ne)??se,align:h.align??u(t,`align`,v)??u(e,`align`,v)??ce,sideOffset:h.sideOffset??d(t,`sideOffset`)??d(e,`sideOffset`)??le,alignOffset:h.alignOffset??d(t,`alignOffset`)??d(e,`alignOffset`)??S}),ze=0;me.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:ze++}),B.set(r,o({element:r,onExitComplete:()=>{xe||(Pe(r),r.hidden=!0,r.style.pointerEvents=`none`)}}));let i=pe(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 Be=Array.from(W.values()).map(e=>e.trigger),Ve=`a[href], button:not([disabled]), [role="link"], [role="button"], [tabindex]:not([tabindex="-1"])`,He=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},Ue=e=>{if(e.matches(Ve))return e;let t=e.querySelectorAll(Ve);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=[],We=new Map;me.forEach(e=>{let t=He(e);if(t){let e={kind:`submenu`,element:t.trigger,item:t.item,value:t.value,trigger:t.trigger};G.push(e),We.set(e.element,e),We.set(e.item,e);return}let n=Ue(e);if(!n)return;let r={kind:`plain`,element:n};G.push(r),We.set(r.element,r)});let Ge=e=>{let t=e instanceof HTMLElement?e:null;if(!t)return null;let n=t;for(;n&&n!==E;){let e=We.get(n);if(e)return e;n=n.parentElement}return null},Ke=e=>{let t=Ge(e);return t?.kind===`plain`?t:null},qe=e=>{let t=Ge(e);return t?.kind===`submenu`?t:null},Je=()=>{let e=m.ownerDocument.defaultView;if(!e?.matchMedia)return!0;try{return e.matchMedia(`(any-hover: hover)`).matches}catch{return!0}},Ye=e=>{try{return e.matches(`:hover`)}catch{return!1}},Xe=()=>{for(let e of G){if(e.kind===`submenu`){if(Ye(e.item)||Ye(e.trigger))return e;continue}if(Ye(e.element))return e}return null},Ze=(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)},Qe=(e,t,n={})=>{for(let r=e+t;r>=0&&r<G.length;r+=t){let e=G[r];if(e&&Ze(e,n))return!0}return!1},$e=(e,t,n={})=>{let r=G.indexOf(e);return r===-1?!1:Qe(r,t,n)},et=(e,t,n={})=>{let r=G.findIndex(t=>t.kind===`submenu`&&t.trigger===e);return r===-1?!1:Qe(r,t,n)},tt=e=>{if(!(e instanceof Node)||!E.contains(e))return!1;let t=e instanceof HTMLElement?e:e.parentElement;return!t||t.closest(`[data-slot="navigation-menu-indicator"]`)||He(t)?!1:t.closest(`[data-slot="navigation-menu-item"]`)?!0:!!t.closest(`a[href], button, [role='link'], [role='button']`)},nt=`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`,rt=e=>Array.from(e.querySelectorAll(nt)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),it=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(nt)?!0:e.tabIndex>=0,at=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},ot=()=>{let e=m.ownerDocument,t=Array.from(e.querySelectorAll(`*`));for(let n of t)if(it(n)&&!at(n)&&(m.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)!==0&&(n.focus(),e.activeElement===n))return!0;return!1},st=e=>{requestAnimationFrame(()=>{if(A!==e)return;let t=W.get(e);if(!t)return;let n=rt(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{ge&&=(clearTimeout(ge),null),_e&&=(clearTimeout(_e),null)},q=()=>{K(),j=null},ct=()=>{ye=null,be=null},lt=()=>{F!==null&&(cancelAnimationFrame(F),F=null)},J=null,ut=()=>{if(!D)return null;let e=U?.container;return e instanceof HTMLElement?e:D.parentElement instanceof HTMLElement?D.parentElement:D},dt=()=>{let e=ut();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;`,z.push(g(J,`pointerenter`,()=>{K()}),g(J,`pointerleave`,e=>{if(M||A===null)return;let t=e.relatedTarget;Dt(t)||t&&n(m,t)||(Q(null),X(null))}))),e&&J.parentElement!==e&&e.insertBefore(J,e.firstChild),J},ft=()=>{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`)},pt=()=>{if(!w)return null;let e=m.ownerDocument.body;return e?(P||(P=m.ownerDocument.createElement(`div`),P.setAttribute(`data-slot`,`navigation-menu-safe-triangle`),P.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(`; `)),P.parentElement!==e&&e.appendChild(P),P):null},mt=()=>{P&&(P.style.width=`0`,P.style.height=`0`,P.style.clipPath=`none`,P.style.display=`none`)},Y=()=>{w||mt()},ht=e=>{let t=pt();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)})`},gt=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),_t=(e,t,n,r)=>{let i=gt(e,t,n),a=gt(e,n,r),o=gt(e,r,t);return!((i<0||a<0||o<0)&&(i>0||a>0||o>0))},vt=(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},yt=()=>A?W.get(A)??null:null,bt=(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]=vt(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}},xt=()=>{if(!de||!D||A===null)return null;let e=yt();if(!e)return null;let t=m.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=D.getBoundingClientRect(),i=e.content.getBoundingClientRect();return bt(n,t,r.width>0&&r.height>0?r:i)},St=e=>{let t=xt();return t?_t({x:e.clientX,y:e.clientY},t.apex,t.edgeA,t.edgeB):!1},Ct=(e,t)=>({x:e.x-t.left,y:e.y-t.top}),wt=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)},Tt=e=>{if(e.length<3){ft();return}let t=dt(),n=t.parentElement,r=wt(n&&n===U?.container?e.map(e=>({x:e.x-I,y:e.y-L})):e);if(r.length<3){ft();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(`, `)})`},Et=()=>{if(!w)return;let e=xt();if(!e){mt();return}ht(e)},Dt=e=>{if(!e)return!1;if(yt()?.content.contains(e)||D?.contains(e)||J?.contains(e))return!0;let t=U?.container;return!!(t instanceof HTMLElement&&t.contains(e))};z.push(Y),z.push(lt),z.push(ft),z.push(()=>{mt(),P?.parentElement&&P.parentElement.removeChild(P),P=null});let Ot=(e,n,r)=>{if(!D||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;I=y,L=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)),Fe();let C=D.getBoundingClientRect(),ue=[],w=Math.max(0,C.top-_.bottom),fe=Math.max(0,_.top-C.bottom),pe=Math.max(0,C.left-_.right),T=Math.max(0,_.left-C.right),E=Math.max(0,c+ee),me=Math.max(w,fe,E),O=Math.max(pe,T),k=de?bt(te,_,C):null,A=(e,t,n,r)=>{n<=0||r<=0||ue.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(me>=O&&me>0){let e=Math.max(w,fe,E),t=y,n=fe>w&&fe>=E?b+p:b-e,r=f;if(k){let e=Math.min(k.edgeA.x,k.edgeB.x)-_.left,n=Math.max(k.edgeA.x,k.edgeB.x)-_.left;t=e-8,r=n-e+16}A(t,n,r,e)}else if(O>0){let e=Math.max(pe,T),t=b,n=T>pe?y+f:y-e,r=p;if(k){let e=Math.min(k.edgeA.y,k.edgeB.y)-_.top,n=Math.max(k.edgeA.y,k.edgeB.y)-_.top;t=e-8,r=n-e+16}A(n,t,e,r)}if(k){let e=Ct(k.apex,_),t=Ct(k.edgeA,_),n=Ct(k.edgeB,_);ue.push(e,t,n)}Tt(ue),Et()},kt=(e,t,n,r={})=>{if(!D)return;let i=()=>{Ot(e,t,n)};if(r.defer===!1){i();return}requestAnimationFrame(()=>{D.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`||i()})},At=(e=yt(),t={})=>{if(!e)return;let n=Re(e.item,e.content);kt(e.content,e.trigger,n,t)},jt=a({observedElements:[m,...Be],isActive:()=>A!==null,ancestorScroll:!0,syncOnScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{R=!0,ke(),At(void 0,{defer:!1}),Ae()}});z.push(()=>jt.stop());let Mt=e=>he===-1||e>he?`right`:`left`,X=e=>{if(!O)return;if(ve=e,!e){lt(),O.removeAttribute(`data-instant`),O.setAttribute(`data-state`,`hidden`);return}O.getAttribute(`data-state`)!==`visible`&&(lt(),O.setAttribute(`data-instant`,``),F=requestAnimationFrame(()=>{F=requestAnimationFrame(()=>{O.removeAttribute(`data-instant`),F=null})}));let t=E.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`)},Nt=()=>A?W.get(A)?.trigger??null:null,Z=(e=null)=>{let t=Nt();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?Mt(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=B.get(r);if(r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),T(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`),Pe(r),r.hidden=!0)}}),r){if(U?.mount(),D&&(D.hidden=!1),t===null&&Me?.enter(),Ne(r.content),B.get(r.content)?.enter(),jt.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`),T(r.content,!1),r.content.hidden=!1,r.content.style.pointerEvents=`auto`,he=r.index,At(r),Le(r),X(r.trigger)}else jt.stop(),ft(),Y(),Me?.exit(),Le(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`,Ce=c&&!i,(!c||i)&&(Oe(),R=!1),ke(),a&&D.style.setProperty(`--motion-direction`,a===`right`?`1`:`-1`)),A=e,j=null,e===null&&X(null),Et(),s(m,`navigation-menu:change`,{value:e}),fe?.(e)};t?r():e!==null&&A===null?ge=setTimeout(r,ie):e!==null&&A!==null?r():_e=setTimeout(r,ae)};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,T(t,!0),t.hidden=!0,t.style.pointerEvents=`none`}),W.forEach(({item:e,trigger:t},r)=>{z.push(g(t,`pointerenter`,e=>{if(!M){if(A!==r&&St(e))return;X(t)}})),z.push(g(e,`pointerenter`,e=>{if(!M){if(A!==r&&St(e))return;Q(r)}})),z.push(g(e,`pointerleave`,e=>{if(j===r&&A===null&&q(),A===r&&!M){let t=e.relatedTarget;if(Dt(t))return;(!t||!n(m,t))&&(Q(null),X(null))}})),z.push(g(t,`focus`,()=>{if(ye===t){ye=null;return}oe&&Q(r,!0),Z(t)})),z.push(g(t,`pointerdown`,()=>{ye=t,be=t}),g(t,`keydown`,()=>{be=null})),z.push(g(t,`click`,()=>{let e=be===t;be=null,ye=null,q(),A===r&&M?(M=!1,Q(null,!0),X(null)):A===r&&!M?(M=!0,X(t),e||st(r)):(M=!0,Q(r,!0),X(t),e||st(r))}))}),z.push(g(E,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=qe(t.target);if(n){if(N=!0,M||A!==n.value&&St(t))return;X(n.trigger),Q(n.value);return}let r=Ke(t.target);if(r){if(N=!0,A!==null){if(M)return;$()}X(r.element);return}A!==null&&(M||tt(t.target)&&$())}),g(E,`click`,e=>{A!==null&&tt(e.target)&&$()})),z.push(g(E,`focusin`,e=>{let t=Ke(e.target);if(t){if(A!==null){Z();return}X(t.element)}}),g(m,`pointerenter`,()=>{N=!0}),g(m,`pointerleave`,e=>{let t=e.relatedTarget;if(!Dt(t)&&(N=!1,!M)){if(St(e)){K();return}Q(null),X(null)}}),g(m,`pointerdown`,()=>{Y(),q()}));let Pt=()=>{if(!Je()||A!==null||j!==null||M)return;let e=Xe();if(N=e!==null||m instanceof HTMLElement&&Ye(m),e){if(e.kind===`submenu`){Q(e.value,!0);return}X(e.element)}};D&&z.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=Re(t.item,t.content);kt(t.content,t.trigger,e)}})),W.forEach(({content:e})=>{z.push(g(e,`pointerenter`,()=>{Y(),K()}),g(e,`pointerleave`,e=>{if(M)return;let t=e.relatedTarget;Dt(t)||n(m,t)||(Q(null),X(null))}))}),z.push(g(E,`keydown`,e=>{let t=Ge(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;($e(t,1,{preserveOpenOnPlain:!0})||ot())&&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;M=!0,Q(n,!0),st(n)}return;case`Home`:r=0;break;case`End`:r=G.length-1;break;case`Escape`:M=!1,Q(null,!0),X(null);return;default:return}e.preventDefault();let i=G[r];i&&Ze(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:e,trigger:t})=>{z.push(g(e,`keydown`,n=>{let r=n.target,i=rt(e),a=i.indexOf(r);if(a!==-1)switch(n.key){case`Tab`:if(!n.shiftKey&&a===i.length-1){(et(t,1,{preserveOpenOnPlain:!0})||ot())&&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(),M=!1,Q(null,!0),X(null),t.focus();break}}))});let Ft=()=>n(m,document.activeElement)||N||M,$=()=>{Y(),q(),ct(),M=!1,Q(null,!0),X(null),Et()};z.push(g(document,`focusin`,e=>{let t=e.target;if(!n(m,t)){if(A!==null){$();return}X(null)}})),z.push(r({root:m,isOpen:()=>A!==null&&Ft(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:e=>!!e&&n(m,e)})),z.push(g(window,`resize`,()=>{(A||ve)&&requestAnimationFrame(()=>Z(ve))}),g(E,`scroll`,()=>{(A||ve)&&requestAnimationFrame(()=>Z(ve))})),z.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)){M=!0,Q(t.value,!0);let e=W.get(t.value);e&&X(e.trigger)}}}));let It={get value(){return A},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{xe=!0,q(),ct(),z.forEach(e=>e()),z.length=0,e(m,x,It)}};return Pt(),te(m,x,It),It}function ae(e=document){let t=[];for(let n of m(e,`navigation-menu`))h(n,x)||t.push(ie(n));return t}export{ae as create,ie 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=[`absolute`,`fixed`],b=(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=b(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}},x=`@data-slot/navigation-menu`;function ie(m,h={}){let b=ee(m,x,`[@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(b)return b;let ie=h.delayOpen??d(m,`delayOpen`)??0,ae=h.delayClose??d(m,`delayClose`)??0,oe=h.openOnFocus??l(m,`openOnFocus`)??!1,se=h.side??u(m,`side`,ne)??`bottom`,ce=h.align??u(m,`align`,v)??`start`,le=h.sideOffset??d(m,`sideOffset`)??0,S=h.alignOffset??d(m,`alignOffset`)??0,C=h.positionMethod??u(m,`positionMethod`,y)??`absolute`,ue=h.safeTriangle??l(m,`safeTriangle`)??!1,w=h.debugSafeTriangle??l(m,`debugSafeTriangle`)??!1,de=ue||w,fe=h.onValueChange,pe=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),T=(e,t)=>{`inert`in e&&(e.inert=t)},E=f(m,`navigation-menu-list`),D=p(m,`navigation-menu-item`),O=f(m,`navigation-menu-viewport`),k=f(m,`navigation-menu-indicator`),A=(e,t)=>{let n=e.parentElement;for(;n&&n!==m;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!E||D.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let j=null,M=null,me=null,he=null,ge=null,N=!1,_e=null,ve=null,P=!1,ye=!1,F=null,I=null,be=null,L=0,R=0,xe=!1,z=!1,B=[],V=new Map,Se=new Map,Ce=O?A(O,`navigation-menu-viewport-positioner`):null,we=O?A(O,`navigation-menu-positioner`):null,H=Ce??we,Te=H?A(H,`navigation-menu-portal`):null,U=O?i({content:O,root:m,enabled:!0,wrapperSlot:H?void 0:`navigation-menu-viewport-positioner`,container:H??void 0,mountTarget:H?Te??H:void 0}):null,Ee=()=>{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`))},De=()=>{be!==null&&(cancelAnimationFrame(be),be=null)},Oe=()=>{let e=xe||z;O&&(e?O.setAttribute(`data-instant`,``):O.removeAttribute(`data-instant`));let t=U?.container;t instanceof HTMLElement&&(e?t.setAttribute(`data-instant`,``):t.removeAttribute(`data-instant`))},ke=()=>{De(),be=requestAnimationFrame(()=>{be=null,z=!1,Oe()})},Ae=()=>{De(),xe=!1,z=!1,Oe()},je=O?o({element:O,onExitComplete:()=>{ye||(Ae(),Ee(),L=0,R=0,U?.restore(),O.hidden=!0,O.style.pointerEvents=`none`)}}):null,Me=e=>{if(!O)return;let t=Se.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,Se.set(e,t)),e.parentNode!==O&&O.appendChild(e)},Ne=e=>{let t=Se.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},Pe=()=>{if(!O||!U)return;let e=U.container,t=m.ownerDocument.defaultView??window,n=m.getBoundingClientRect(),r=C===`fixed`,i=n.top+R+(r?0:t.scrollY),a=n.left+L+(r?0:t.scrollX);e.style.position=C,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`},Fe=null,Ie=e=>{Fe?.disconnect(),Fe=null,!(!O||!e)&&(Fe=new ResizeObserver(()=>{let t=Le(e.item,e.content);Dt(e.content,e.trigger,t)}),Fe.observe(e.content))};B.push(()=>Fe?.disconnect()),B.push(()=>{Ae(),V.forEach(e=>e.cleanup()),V.clear(),Se.forEach((e,t)=>{Ne(t),t.hidden=!0,t.style.pointerEvents=`none`}),Se.clear(),Ee(),L=0,R=0,je?.cleanup(),U?.cleanup()});let W=new Map,Le=(e,t)=>({side:h.side??u(t,`side`,ne)??u(e,`side`,ne)??se,align:h.align??u(t,`align`,v)??u(e,`align`,v)??ce,sideOffset:h.sideOffset??d(t,`sideOffset`)??d(e,`sideOffset`)??le,alignOffset:h.alignOffset??d(t,`alignOffset`)??d(e,`alignOffset`)??S});D.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}),V.set(r,o({element:r,onExitComplete:()=>{ye||(r.removeAttribute(`data-activation-direction`),r.removeAttribute(`data-motion`),Ne(r),r.hidden=!0,r.style.pointerEvents=`none`)}}));let i=pe(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;D.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!==E;){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):(j!==null&&!r&&$(),e.element.focus(),n.activeElement===e.element?(j!==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)||!E.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)||O?.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(j!==e)return;let t=W.get(e);if(!t)return;let n=tt(t.content)[0];n?n.focus():t.content.focus()})},K=()=>{me&&=(clearTimeout(me),null),he&&=(clearTimeout(he),null)},q=()=>{K(),M=null},ot=()=>{_e=null,ve=null},st=()=>{I!==null&&(cancelAnimationFrame(I),I=null)},J=null,ct=()=>{if(!O)return null;let e=U?.container;return e instanceof HTMLElement?e:O.parentElement instanceof HTMLElement?O.parentElement:O},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;`,B.push(g(J,`pointerenter`,()=>{K()}),g(J,`pointerleave`,e=>{if(N||j===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(!w)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=()=>{w||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=()=>j?W.get(j)??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(!de||!O||j===null)return null;let e=_t();if(!e)return null;let t=m.getBoundingClientRect(),n=e.trigger.getBoundingClientRect(),r=O.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-L,y:e.y-R})):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(!w)return;let e=yt();if(!e){ft();return}pt(e)},Tt=e=>{if(!e)return!1;if(_t()?.content.contains(e)||O?.contains(e)||J?.contains(e))return!0;let t=U?.container;return!!(t instanceof HTMLElement&&t.contains(e))};B.push(Y),B.push(st),B.push(ut),B.push(()=>{ft(),F?.parentElement&&F.parentElement.removeChild(F),F=null});let Et=(e,n,r)=>{if(!O||O.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(O),ee=parseFloat(g.marginTop)||0;O.style.setProperty(`--viewport-width`,`${f}px`),O.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;L=y,R=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`;O.style.top=`0px`,O.style.left=`0px`,O.style.willChange=`transform,width,height`,O.style.setProperty(`--transform-origin`,ce),e.style.top=`0px`,e.style.left=`0px`,e.style.setProperty(`--transform-origin`,ce),O.setAttribute(`data-side`,v.side),O.setAttribute(`data-align`,v.align),e.setAttribute(`data-side`,v.side),e.setAttribute(`data-align`,v.align);let S=U?.container;S&&S!==O&&(S.setAttribute(`data-side`,v.side),S.setAttribute(`data-align`,v.align),S.style.setProperty(`--transform-origin`,le)),Pe();let C=O.getBoundingClientRect(),ue=[],w=Math.max(0,C.top-_.bottom),fe=Math.max(0,_.top-C.bottom),pe=Math.max(0,C.left-_.right),T=Math.max(0,_.left-C.right),E=Math.max(0,c+ee),D=Math.max(w,fe,E),k=Math.max(pe,T),A=de?vt(te,_,C):null,j=(e,t,n,r)=>{n<=0||r<=0||ue.push({x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+r},{x:e,y:t+r})};if(D>=k&&D>0){let e=Math.max(w,fe,E),t=y,n=fe>w&&fe>=E?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}j(t,n,r,e)}else if(k>0){let e=Math.max(pe,T),t=b,n=T>pe?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}j(n,t,e,r)}if(A){let e=xt(A.apex,_),t=xt(A.edgeA,_),n=xt(A.edgeB,_);ue.push(e,t,n)}Ct(ue),wt()},Dt=(e,t,n,r={})=>{if(!O)return;let i=()=>{Et(e,t,n)};if(r.defer===!1){i();return}requestAnimationFrame(()=>{O.getAttribute(`data-state`)!==`open`||e.getAttribute(`data-state`)!==`active`||i()})},Ot=(e=_t(),t={})=>{if(!e)return;let n=Le(e.item,e.content);Dt(e.content,e.trigger,n,t)},kt=a({observedElements:[m,...Re],isActive:()=>j!==null,ancestorScroll:!0,syncOnScroll:!0,ancestorResize:!0,elementResize:!0,layoutShift:!0,onUpdate:()=>{z=!0,Oe(),Ot(void 0,{defer:!1}),ke()}});B.push(()=>kt.stop());let At=(e,t)=>{let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=r.left-n.left,a=r.top-n.top;return i===0&&a===0?null:Math.abs(i)>=Math.abs(a)&&i!==0?i>0?`right`:`left`:a===0?null:a>0?`down`:`up`},jt=e=>e===`left`||e===`right`?e:null,X=e=>{if(!k)return;if(ge=e,!e){st(),k.removeAttribute(`data-instant`),k.setAttribute(`data-state`,`hidden`);return}k.getAttribute(`data-state`)!==`visible`&&(st(),k.setAttribute(`data-instant`,``),I=requestAnimationFrame(()=>{I=requestAnimationFrame(()=>{k.removeAttribute(`data-instant`),I=null})}));let t=E.getBoundingClientRect(),n=e.getBoundingClientRect();k.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),k.style.setProperty(`--indicator-width`,`${n.width}px`),k.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(O&&parseFloat(getComputedStyle(O).marginTop)||0)<1?1:0;k.style.setProperty(`--indicator-height`,`${n.height-r}px`),k.setAttribute(`data-state`,`visible`)},Mt=()=>j?W.get(j)?.trigger??null:null,Z=(e=null)=>{let t=Mt();if(t){X(t);return}X(e)},Q=(e,t=!1)=>{if(Y(),e===j){e===null?q():K();return}if(!t&&e!==null&&e===M)return;K(),M=e===null?null:e;let r=()=>{let t=j,r=t?W.get(t):null,i=e?W.get(e):null,a=t!==null&&e!==null&&t!==e,o=a&&r&&i?At(r.trigger,i.trigger):null,c=jt(o),l=document.activeElement;if(e===null&&l&&t&&r&&n(r.content,l)&&r.trigger.focus(),W.forEach(({trigger:n,content:r,item:i},a)=>{let s=a===e,l=a===t;if(_(n,`expanded`,s),n.setAttribute(`data-state`,s?`open`:`closed`),i.setAttribute(`data-state`,s?`open`:`closed`),!s){let e=V.get(r);if(r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),T(r,!0),r.style.pointerEvents=`none`,l&&o?r.setAttribute(`data-activation-direction`,o):l&&r.removeAttribute(`data-activation-direction`),l&&c){let e=c===`right`?`to-left`:`to-right`;r.setAttribute(`data-motion`,e)}else l&&r.removeAttribute(`data-motion`);l?e?.exit():e?.isExiting||(r.removeAttribute(`data-activation-direction`),r.removeAttribute(`data-motion`),Ne(r),r.hidden=!0)}}),i){if(U?.mount(),O&&(O.hidden=!1),t===null&&je?.enter(),Me(i.content),V.get(i.content)?.enter(),kt.start(),o?i.content.setAttribute(`data-activation-direction`,o):i.content.removeAttribute(`data-activation-direction`),c){let e=c===`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`),T(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,Ot(i),Ie(i),X(i.trigger)}else kt.stop(),ut(),Y(),je?.exit(),Ie(null);let u=e!==null;m.setAttribute(`data-state`,u?`open`:`closed`),c?m.setAttribute(`data-motion`,c===`right`?`from-right`:`from-left`):m.removeAttribute(`data-motion`),O&&(O.setAttribute(`data-state`,u?`open`:`closed`),O.style.pointerEvents=u?`auto`:`none`,xe=u&&!a,(!u||a)&&(De(),z=!1),Oe(),c?O.style.setProperty(`--motion-direction`,c===`right`?`1`:`-1`):O.style.removeProperty(`--motion-direction`)),j=e,M=null,e===null&&X(null),wt(),s(m,`navigation-menu:change`,{value:e}),fe?.(e)};t?r():e!==null&&j===null?me=setTimeout(r,ie):e!==null&&j!==null?r():he=setTimeout(r,ae)};m.setAttribute(`data-state`,`closed`),O&&(O.setAttribute(`data-state`,`closed`),O.hidden=!0,O.style.pointerEvents=`none`),k&&k.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,T(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(j!==r&&bt(e))return;X(t)}})),B.push(g(e,`pointerenter`,e=>{if(!N){if(j!==r&&bt(e))return;Q(r)}})),B.push(g(e,`pointerleave`,e=>{if(M===r&&j===null&&q(),j===r&&!N){let t=e.relatedTarget;if(Tt(t))return;(!t||!n(m,t))&&(Q(null),X(null))}})),B.push(g(t,`focus`,()=>{if(_e===t){_e=null;return}oe&&Q(r,!0),Z(t)})),B.push(g(t,`pointerdown`,()=>{_e=t,ve=t}),g(t,`keydown`,()=>{ve=null})),B.push(g(t,`click`,()=>{let e=ve===t;ve=null,_e=null,q(),j===r&&N?(N=!1,Q(null,!0),X(null)):j===r&&!N?(N=!0,X(t),e||at(r)):(N=!0,Q(r,!0),X(t),e||at(r))}))}),B.push(g(E,`pointerover`,e=>{let t=e;if(t.pointerType===`touch`)return;let n=Ge(t.target);if(n){if(P=!0,N||j!==n.value&&bt(t))return;X(n.trigger),Q(n.value);return}let r=We(t.target);if(r){if(P=!0,j!==null){if(N)return;$()}X(r.element);return}j!==null&&(N||$e(t.target)&&$())}),g(E,`click`,e=>{j!==null&&$e(e.target)&&$()})),B.push(g(E,`focusin`,e=>{let t=We(e.target);if(t){if(j!==null){Z();return}X(t.element)}}),g(m,`pointerenter`,()=>{P=!0}),g(m,`pointerleave`,e=>{let t=e.relatedTarget;if(!Tt(t)&&(P=!1,!N)){if(bt(e)){K();return}Q(null),X(null)}}),g(m,`pointerdown`,()=>{Y(),q()}));let Nt=()=>{if(!Ke()||j!==null||M!==null||N)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)}};O&&B.push(g(O,`pointerenter`,()=>{Y(),K()}),g(O,`transitionend`,e=>{if(e.target!==O)return;let t=j?W.get(j):null;if(t){let e=Le(t.item,t.content);Dt(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;Tt(t)||n(m,t)||(Q(null),X(null))}))}),B.push(g(E,`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||j===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;N=!0,Q(n,!0),at(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&&Ye(i,{preserveOpenOnPlain:!0})})),W.forEach(({content:e,trigger:t})=>{B.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(),N=!1,Q(null,!0),X(null),t.focus();break}}))});let Pt=()=>n(m,document.activeElement)||P||N,$=()=>{Y(),q(),ot(),N=!1,Q(null,!0),X(null),wt()};B.push(g(document,`focusin`,e=>{let t=e.target;if(!n(m,t)){if(j!==null){$();return}X(null)}})),B.push(r({root:m,isOpen:()=>j!==null&&Pt(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:e=>!!e&&n(m,e)})),B.push(g(window,`resize`,()=>{(j||ge)&&requestAnimationFrame(()=>Z(ge))}),g(E,`scroll`,()=>{(j||ge)&&requestAnimationFrame(()=>Z(ge))})),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 Ft={get value(){return j},open:e=>Q(e,!0),close:()=>$(),destroy:()=>{ye=!0,q(),ot(),B.forEach(e=>e()),B.length=0,e(m,x,Ft)}};return Nt(),te(m,x,Ft),Ft}function ae(e=document){let t=[];for(let n of m(e,`navigation-menu`))h(n,x)||t.push(ie(n));return t}export{ae as create,ie as createNavigationMenu};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-slot/navigation-menu",
3
- "version": "0.2.147",
3
+ "version": "0.2.148",
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.147"
38
+ "@data-slot/core": "0.2.148"
39
39
  }
40
40
  }