@data-slot/navigation-menu 0.2.56 → 0.2.58
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
|
@@ -72,6 +72,10 @@ const menu = createNavigationMenu(element, {
|
|
|
72
72
|
| `delayOpen` | `number` | `200` | Delay before opening on hover (ms) |
|
|
73
73
|
| `delayClose` | `number` | `150` | Delay before closing on mouse leave (ms) |
|
|
74
74
|
| `openOnFocus` | `boolean` | `true` | Whether focusing a trigger opens its content |
|
|
75
|
+
| `side` | `"top" \| "right" \| "bottom" \| "left"` | `"bottom"` | Viewport side relative to trigger |
|
|
76
|
+
| `align` | `"start" \| "center" \| "end"` | `"start"` | Viewport alignment on cross-axis |
|
|
77
|
+
| `sideOffset` | `number` | `0` | Distance from trigger to viewport (px) |
|
|
78
|
+
| `alignOffset` | `number` | `0` | Cross-axis alignment offset (px) |
|
|
75
79
|
| `onValueChange` | `(value: string \| null) => void` | `undefined` | Callback when active item changes |
|
|
76
80
|
|
|
77
81
|
### Data Attributes
|
|
@@ -83,19 +87,25 @@ Options can also be set via data attributes on the root element. JS options take
|
|
|
83
87
|
| `data-delay-open` | number | `200` | Delay before opening on hover (ms) |
|
|
84
88
|
| `data-delay-close` | number | `150` | Delay before closing on mouse leave (ms) |
|
|
85
89
|
| `data-open-on-focus` | boolean | `true` | Whether focusing a trigger opens its content |
|
|
90
|
+
| `data-side` | string | `"bottom"` | Side: `"top"`, `"right"`, `"bottom"`, `"left"` |
|
|
86
91
|
| `data-align` | string | `"start"` | Viewport alignment: `"start"`, `"center"`, or `"end"` |
|
|
92
|
+
| `data-side-offset` | number | `0` | Distance from trigger to viewport (px) |
|
|
93
|
+
| `data-align-offset` | number | `0` | Cross-axis alignment offset (px) |
|
|
87
94
|
|
|
88
95
|
Boolean attributes: present or `"true"` = true, `"false"` = false, absent = default.
|
|
89
96
|
|
|
90
|
-
|
|
97
|
+
Placement attributes (`data-side`, `data-align`, `data-side-offset`, `data-align-offset`) control
|
|
98
|
+
how the viewport is positioned relative to the active trigger:
|
|
91
99
|
- `start` - Align viewport left edge with trigger left edge (default)
|
|
92
100
|
- `center` - Center viewport under trigger
|
|
93
101
|
- `end` - Align viewport right edge with trigger right edge
|
|
94
102
|
|
|
95
103
|
Can be set on:
|
|
96
|
-
1. `navigation-menu-
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
1. `navigation-menu-viewport-positioner` (or legacy `navigation-menu-positioner`) (highest priority)
|
|
105
|
+
: Legacy `navigation-menu-positioner` is supported both as a viewport wrapper and as a content wrapper.
|
|
106
|
+
2. `navigation-menu-content`
|
|
107
|
+
3. `navigation-menu-item`
|
|
108
|
+
4. `navigation-menu` root (lowest priority, applies to all items)
|
|
99
109
|
|
|
100
110
|
```html
|
|
101
111
|
<!-- Faster hover response, no auto-open on focus -->
|
|
@@ -145,17 +155,18 @@ Can be set on:
|
|
|
145
155
|
|
|
146
156
|
- `navigation-menu-indicator` - Animated highlight that follows the hovered trigger
|
|
147
157
|
- `navigation-menu-viewport` - Container for content with size transitions
|
|
148
|
-
- `navigation-menu-positioner` - Positioning wrapper for active content (generated if not authored)
|
|
149
158
|
- `navigation-menu-viewport-positioner` - Positioning wrapper for viewport (generated if not authored)
|
|
150
159
|
- `navigation-menu-portal` - Optional authored portal wrapper that can contain positioners
|
|
151
160
|
|
|
152
161
|
## Styling
|
|
153
162
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
Otherwise,
|
|
157
|
-
|
|
158
|
-
|
|
163
|
+
`navigation-menu-viewport` is portaled to `document.body` while open. If authored
|
|
164
|
+
`navigation-menu-portal` / `navigation-menu-viewport-positioner` slots are present, they are
|
|
165
|
+
reused. Otherwise, a `navigation-menu-viewport-positioner` wrapper is generated and positioned
|
|
166
|
+
at the navigation root so submenu layers are not clipped by local stacking contexts.
|
|
167
|
+
|
|
168
|
+
The active `navigation-menu-content` panel is mounted inside `navigation-menu-viewport` while open
|
|
169
|
+
and restored to its original markup location when inactive/closed.
|
|
159
170
|
|
|
160
171
|
### Basic Styling
|
|
161
172
|
|
|
@@ -171,10 +182,11 @@ stacking contexts.
|
|
|
171
182
|
|
|
172
183
|
/* Viewport sizing and positioning */
|
|
173
184
|
[data-slot="navigation-menu-viewport"] {
|
|
185
|
+
top: var(--viewport-top, 100%);
|
|
174
186
|
left: var(--viewport-left, 0);
|
|
175
187
|
width: var(--viewport-width);
|
|
176
188
|
height: var(--viewport-height);
|
|
177
|
-
transition: left 0.3s, width 0.3s, height 0.3s;
|
|
189
|
+
transition: top 0.3s, left 0.3s, width 0.3s, height 0.3s;
|
|
178
190
|
}
|
|
179
191
|
|
|
180
192
|
/* Skip animation on initial open */
|
|
@@ -193,7 +205,9 @@ stacking contexts.
|
|
|
193
205
|
|
|
194
206
|
### Motion Animations
|
|
195
207
|
|
|
196
|
-
Content panels receive `data-motion` attributes for enter/exit animations
|
|
208
|
+
Content panels receive `data-motion` attributes for directional enter/exit animations.
|
|
209
|
+
Both content and viewport also receive `data-starting-style` / `data-ending-style` markers from
|
|
210
|
+
presence lifecycle hooks, so you can style smooth fade/scale transitions before unmount.
|
|
197
211
|
|
|
198
212
|
```css
|
|
199
213
|
/* Entering from right */
|
|
@@ -206,6 +220,12 @@ Content panels receive `data-motion` attributes for enter/exit animations:
|
|
|
206
220
|
animation: slideToLeft 0.2s;
|
|
207
221
|
}
|
|
208
222
|
|
|
223
|
+
/* Presence lifecycle helpers */
|
|
224
|
+
[data-slot="navigation-menu-content"][data-ending-style],
|
|
225
|
+
[data-slot="navigation-menu-viewport"][data-ending-style] {
|
|
226
|
+
opacity: 0;
|
|
227
|
+
}
|
|
228
|
+
|
|
209
229
|
@keyframes slideFromRight {
|
|
210
230
|
from { transform: translateX(100%); opacity: 0; }
|
|
211
231
|
to { transform: translateX(0); opacity: 1; }
|
|
@@ -221,6 +241,7 @@ Content panels receive `data-motion` attributes for enter/exit animations:
|
|
|
221
241
|
|
|
222
242
|
| Variable | Element | Description |
|
|
223
243
|
|----------|---------|-------------|
|
|
244
|
+
| `--viewport-top` | viewport | Top offset based on side/sideOffset |
|
|
224
245
|
| `--viewport-left` | viewport | Left offset based on alignment |
|
|
225
246
|
| `--viewport-width` | viewport | Width of active content |
|
|
226
247
|
| `--viewport-height` | viewport | Height of active content |
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
2
|
/** Alignment of the viewport relative to the trigger */
|
|
3
3
|
type Align = "start" | "center" | "end";
|
|
4
|
+
declare const SIDES: readonly ["top", "right", "bottom", "left"];
|
|
5
|
+
type Side = (typeof SIDES)[number];
|
|
4
6
|
interface NavigationMenuOptions {
|
|
5
7
|
/** Delay before opening on hover (ms) */
|
|
6
8
|
delayOpen?: number;
|
|
@@ -8,6 +10,14 @@ interface NavigationMenuOptions {
|
|
|
8
10
|
delayClose?: number;
|
|
9
11
|
/** Whether focusing a trigger opens its content (default: true) */
|
|
10
12
|
openOnFocus?: boolean;
|
|
13
|
+
/** Preferred side of viewport relative to trigger */
|
|
14
|
+
side?: Side;
|
|
15
|
+
/** Alignment of viewport relative to trigger */
|
|
16
|
+
align?: Align;
|
|
17
|
+
/** Distance from trigger to viewport (px) */
|
|
18
|
+
sideOffset?: number;
|
|
19
|
+
/** Offset along alignment axis (px) */
|
|
20
|
+
alignOffset?: number;
|
|
11
21
|
/** Callback when active item changes */
|
|
12
22
|
onValueChange?: (value: string | null) => void;
|
|
13
23
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
2
|
/** Alignment of the viewport relative to the trigger */
|
|
3
3
|
type Align = "start" | "center" | "end";
|
|
4
|
+
declare const SIDES: readonly ["top", "right", "bottom", "left"];
|
|
5
|
+
type Side = (typeof SIDES)[number];
|
|
4
6
|
interface NavigationMenuOptions {
|
|
5
7
|
/** Delay before opening on hover (ms) */
|
|
6
8
|
delayOpen?: number;
|
|
@@ -8,6 +10,14 @@ interface NavigationMenuOptions {
|
|
|
8
10
|
delayClose?: number;
|
|
9
11
|
/** Whether focusing a trigger opens its content (default: true) */
|
|
10
12
|
openOnFocus?: boolean;
|
|
13
|
+
/** Preferred side of viewport relative to trigger */
|
|
14
|
+
side?: Side;
|
|
15
|
+
/** Alignment of viewport relative to trigger */
|
|
16
|
+
align?: Align;
|
|
17
|
+
/** Distance from trigger to viewport (px) */
|
|
18
|
+
sideOffset?: number;
|
|
19
|
+
/** Offset along alignment axis (px) */
|
|
20
|
+
alignOffset?: number;
|
|
11
21
|
/** Callback when active item changes */
|
|
12
22
|
onValueChange?: (value: string | null) => void;
|
|
13
23
|
}
|
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`];function n(n,r={}){let i=r.delayOpen??(0,e.getDataNumber)(n,`delayOpen`)??200,a=r.delayClose??(0,e.getDataNumber)(n,`delayClose`)??150,o=r.openOnFocus??(0,e.getDataBool)(n,`openOnFocus`)??!0,s=r.onValueChange,c=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),l=(e,t)=>{`inert`in e&&(e.inert=t)},u=(0,e.getPart)(n,`navigation-menu-list`),d=(0,e.getParts)(n,`navigation-menu-item`),f=(0,e.getPart)(n,`navigation-menu-viewport`),p=(0,e.getPart)(n,`navigation-menu-indicator`),m=(e,t)=>{let r=e.parentElement;for(;r&&r!==n;){if(r.getAttribute(`data-slot`)===t)return r;r=r.parentElement}return null};if(!u||d.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let h=null,g=null,_=-1,v=null,y=null,b=null,x=!1,S=!1,C=!1,w=[],T=new Map,E=new Set,D=f?m(f,`navigation-menu-viewport-positioner`):null,O=D?m(D,`navigation-menu-portal`):null,k=f?(0,e.createPortalLifecycle)({content:f,root:n,enabled:!0,wrapperSlot:D?void 0:`navigation-menu-viewport-positioner`,container:D??void 0,mountTarget:D?O??D:void 0}):null,A=e=>{let t=T.get(e);if(!t)return;let r=t.container,i=n.ownerDocument.defaultView??window,a=n.getBoundingClientRect();r.style.position=`absolute`,r.style.top=`0px`,r.style.left=`0px`,r.style.transform=`translate3d(${a.left+i.scrollX}px, ${a.top+i.scrollY}px, 0)`,r.style.width=`${a.width}px`,r.style.height=`${a.height}px`,r.style.margin=`0`,r.style.willChange=`transform`,r.style.pointerEvents=`none`},j=()=>{if(!f||!k)return;let e=k.container,t=n.ownerDocument.defaultView??window,r=n.getBoundingClientRect();e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${r.left+t.scrollX}px, ${r.top+t.scrollY}px, 0)`,e.style.width=`${r.width}px`,e.style.height=`${r.height}px`,e.style.margin=`0`,e.style.willChange=`transform`,e.style.pointerEvents=`none`},M=null,N=e=>{M?.disconnect(),M=null,!(!f||!e)&&(M=new ResizeObserver(()=>H(e.content,e.trigger,e.align)),M.observe(e.content))};w.push(()=>M?.disconnect()),w.push(()=>{T.forEach(e=>e.cleanup()),T.clear(),k?.cleanup()});let P=new Map,F=0;d.forEach(r=>{let i=r.dataset.value;if(!i)return;let a=(0,e.getPart)(r,`navigation-menu-trigger`),o=(0,e.getPart)(r,`navigation-menu-content`);if(a&&o){let s=(0,e.getDataEnum)(o,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??(0,e.getDataEnum)(n,`align`,t)??`start`;P.set(i,{item:r,trigger:a,content:o,index:F++,align:s});let l=m(o,`navigation-menu-positioner`);l&&E.has(l)&&(l=null),l&&E.add(l);let u=l?m(l,`navigation-menu-portal`):null;T.set(o,(0,e.createPortalLifecycle)({content:o,root:n,enabled:!0,wrapperSlot:l?void 0:`navigation-menu-positioner`,container:l??void 0,mountTarget:l?u??l:void 0}));let d=c(i),f=(0,e.ensureId)(a,`nav-menu-trigger-${d}`),p=(0,e.ensureId)(o,`nav-menu-content-${d}`);a.setAttribute(`aria-haspopup`,`true`),a.setAttribute(`aria-controls`,p),o.setAttribute(`aria-labelledby`,f)}});let I=Array.from(P.values()).map(e=>e.trigger),L=new Map;for(let[e,t]of P)L.set(t.trigger,e);let R=e=>Array.from(e.querySelectorAll(`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),z=()=>{v&&=(clearTimeout(v),null),y&&=(clearTimeout(y),null)},B=null,V=()=>(B||(B=document.createElement(`div`),B.setAttribute(`data-slot`,`navigation-menu-bridge`),B.style.cssText=`position: absolute; left: 0; right: 0; top: 0; pointer-events: auto; z-index: -1;`,f&&f.insertBefore(B,f.firstChild),w.push((0,e.on)(B,`pointerenter`,()=>{z()}))),B),H=(e,t,r)=>{f&&requestAnimationFrame(()=>{let i=e.firstElementChild,a=i?.getBoundingClientRect(),o=i?getComputedStyle(i):null,s=o&&parseFloat(o.marginTop)||0,c=o&&parseFloat(o.marginBottom)||0,l=a??e.getBoundingClientRect(),u=l.height+s+c,d=getComputedStyle(f),p=parseFloat(d.marginTop)||0,m=e.getBoundingClientRect();f.style.setProperty(`--viewport-width`,`${m.width}px`),f.style.setProperty(`--viewport-height`,`${u}px`);let h=n.getBoundingClientRect(),g=t.getBoundingClientRect(),_;_=r===`center`?g.left-h.left+g.width/2-l.width/2:r===`end`?g.right-h.left-l.width:g.left-h.left,f.style.setProperty(`--viewport-left`,`${_}px`),f.style.left=`${_}px`,e.style.left=`${_}px`,A(e),j();let v=s+p;if(v>0){let e=V();e.style.height=`${v}px`,e.style.transform=`translateY(-${v}px)`}else B&&(B.style.height=`0`)})},U=e=>_===-1||e>_?`right`:`left`,W=e=>{if(!p)return;if(b=e,!e){p.setAttribute(`data-state`,`hidden`);return}let t=u.getBoundingClientRect(),n=e.getBoundingClientRect();p.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),p.style.setProperty(`--indicator-width`,`${n.width}px`),p.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(f&&parseFloat(getComputedStyle(f).marginTop)||0)<1?1:0;p.style.setProperty(`--indicator-height`,`${n.height-r}px`),p.setAttribute(`data-state`,`visible`)},G=(t,r=!1)=>{if(t===h){z();return}if(t!==null&&t===g){z();return}z(),g=t===null?null:t;let o=()=>{let r=h,i=t?P.get(t):null,a=r!==null&&t!==null&&r!==t,o=a&&i?U(i.index):null,c=document.activeElement;if(t===null&&c&&(0,e.containsWithPortals)(n,c)){let e=r?P.get(r)?.trigger:null;e&&e.focus()}if(P.forEach(({trigger:n,content:i,item:a},s)=>{let c=s===t,u=s===r;if((0,e.setAria)(n,`expanded`,c),n.setAttribute(`data-state`,c?`open`:`closed`),c||u&&t===null?n.tabIndex=0:n.tabIndex=-1,a.setAttribute(`data-state`,c?`open`:`closed`),!c)if(T.get(i)?.restore(),i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),l(i,!0),i.hidden=!0,u&&o){let e=o===`right`?`to-left`:`to-right`;i.setAttribute(`data-motion`,e)}else i.removeAttribute(`data-motion`)}),i){if(k?.mount(),T.get(i.content)?.mount(),o){let e=o===`right`?`from-right`:`from-left`;i.content.setAttribute(`data-motion`,e)}else i.content.removeAttribute(`data-motion`);i.content.setAttribute(`data-state`,`active`),i.content.removeAttribute(`aria-hidden`),l(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,_=i.index,H(i.content,i.trigger,i.align),N(i),W(i.trigger)}else k?.restore(),N(null);let u=t!==null;n.setAttribute(`data-state`,u?`open`:`closed`),o?n.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):n.removeAttribute(`data-motion`),f&&(f.setAttribute(`data-state`,u?`open`:`closed`),f.style.pointerEvents=u?`auto`:`none`,u&&!a?f.setAttribute(`data-instant`,``):a&&f.removeAttribute(`data-instant`),o&&f.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),h=t,g=null,t===null&&W(null),(0,e.emit)(n,`navigation-menu:change`,{value:t}),s?.(t)};r?o():t!==null&&h===null?v=setTimeout(o,i):t!==null&&h!==null?o():y=setTimeout(o,a)};n.setAttribute(`data-state`,`closed`),f&&f.setAttribute(`data-state`,`closed`),p&&p.setAttribute(`data-state`,`hidden`),P.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=t===I[0]?0:-1,r.setAttribute(`data-state`,`closed`),n.setAttribute(`data-state`,`inactive`),n.setAttribute(`aria-hidden`,`true`),n.tabIndex=-1,l(n,!0),n.hidden=!0}),P.forEach(({item:t,trigger:n},r)=>{w.push((0,e.on)(n,`pointerenter`,()=>{x||W(n)})),w.push((0,e.on)(t,`pointerenter`,()=>{x||G(r)})),w.push((0,e.on)(t,`pointerleave`,()=>{g===r&&h===null&&(z(),g=null)})),w.push((0,e.on)(n,`focus`,()=>{S||(o&&G(r,!0),W(n))})),w.push((0,e.on)(n,`pointerdown`,()=>{S=!0})),w.push((0,e.on)(n,`click`,()=>{z(),h===r&&x?(x=!1,G(null,!0),W(null)):h===r&&!x?(x=!0,W(n)):(x=!0,G(r,!0),W(n)),S=!1}))}),w.push((0,e.on)(n,`pointerenter`,()=>{C=!0}),(0,e.on)(n,`pointerleave`,t=>{let r=t.relatedTarget;(0,e.containsWithPortals)(n,r)||(C=!1,x||(G(null),W(null)))}),(0,e.on)(n,`pointerdown`,z)),f&&w.push((0,e.on)(f,`pointerenter`,()=>{z()}),(0,e.on)(f,`transitionend`,e=>{if(e.target!==f)return;let t=h?P.get(h):null;t&&H(t.content,t.trigger,t.align)})),P.forEach(({content:t})=>{w.push((0,e.on)(t,`pointerenter`,()=>{z()}),(0,e.on)(t,`pointerleave`,t=>{if(x)return;let r=t.relatedTarget;(0,e.containsWithPortals)(n,r)||(G(null),W(null))}))}),w.push((0,e.on)(u,`keydown`,e=>{let t=e.target,n=I.indexOf(t);if(n===-1)return;let r=L.get(t)??null,i=n;switch(e.key){case`ArrowLeft`:i=n-1,i<0&&(i=I.length-1);break;case`ArrowRight`:i=n+1,i>=I.length&&(i=0);break;case`ArrowDown`:e.preventDefault(),r&&(x=!0,G(r,!0),requestAnimationFrame(()=>{let e=P.get(r);if(!e)return;let t=R(e.content)[0];t?t.focus():e.content.focus()}));return;case`Home`:i=0;break;case`End`:i=I.length-1;break;case`Escape`:x=!1,G(null,!0),W(null);return;default:return}e.preventDefault();let a=I[i];a&&(I.forEach(e=>e.tabIndex=e===a?0:-1),a.focus(),W(a))})),P.forEach(({content:t,trigger:n})=>{w.push((0,e.on)(t,`keydown`,e=>{let r=e.target,i=R(t),a=i.indexOf(r);if(a!==-1)switch(e.key){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(),x=!1,G(null,!0),W(null),n.focus();break}}))});let K=()=>(0,e.containsWithPortals)(n,document.activeElement)||C||x,q=()=>{x=!1,G(null,!0),W(null)};return w.push((0,e.on)(document,`pointerup`,()=>{S=!1},{capture:!0}),(0,e.on)(document,`pointercancel`,()=>{S=!1},{capture:!0})),w.push((0,e.on)(document,`focusin`,t=>{h!==null&&((0,e.containsWithPortals)(n,t.target)||q())})),w.push((0,e.createDismissLayer)({root:n,isOpen:()=>h!==null&&K(),onDismiss:q,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(n,t)})),w.push((0,e.on)(window,`resize`,()=>{if(h&&requestAnimationFrame(()=>j()),h){let e=P.get(h);e&&requestAnimationFrame(()=>A(e.content))}b&&requestAnimationFrame(()=>W(b))}),(0,e.on)(u,`scroll`,()=>{b&&requestAnimationFrame(()=>W(b))})),w.push((0,e.on)(n,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)q();else if(P.has(t.value)){x=!0,G(t.value,!0);let e=P.get(t.value);e&&W(e.trigger)}}})),{get value(){return h},open:e=>G(e,!0),close:()=>G(null,!0),destroy:()=>{z(),w.forEach(e=>e()),w.length=0}}}const r=new WeakSet;function i(t=document){let i=[];for(let a of(0,e.getRoots)(t,`navigation-menu`))r.has(a)||(r.add(a),i.push(n(a)));return i}exports.create=i,exports.createNavigationMenu=n;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@data-slot/core`);const t=[`start`,`center`,`end`],n=[`top`,`right`,`bottom`,`left`];function r(r,i={}){let a=i.delayOpen??(0,e.getDataNumber)(r,`delayOpen`)??200,o=i.delayClose??(0,e.getDataNumber)(r,`delayClose`)??150,s=i.openOnFocus??(0,e.getDataBool)(r,`openOnFocus`)??!0,c=i.side??(0,e.getDataEnum)(r,`side`,n)??`bottom`,l=i.align??(0,e.getDataEnum)(r,`align`,t)??`start`,u=i.sideOffset??(0,e.getDataNumber)(r,`sideOffset`)??0,d=i.alignOffset??(0,e.getDataNumber)(r,`alignOffset`)??0,f=i.onValueChange,p=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),m=(e,t)=>{`inert`in e&&(e.inert=t)},h=(0,e.getPart)(r,`navigation-menu-list`),g=(0,e.getParts)(r,`navigation-menu-item`),_=(0,e.getPart)(r,`navigation-menu-viewport`),v=(0,e.getPart)(r,`navigation-menu-indicator`),y=(e,t)=>{let n=e.parentElement;for(;n&&n!==r;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!h||g.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let b=null,x=null,S=-1,C=null,w=null,T=null,E=!1,D=!1,O=!1,k=!1,A=[],j=new Map,M=new Map,ee=_?y(_,`navigation-menu-viewport-positioner`):null,N=_?y(_,`navigation-menu-positioner`):null,P=ee??N,F=P?y(P,`navigation-menu-portal`):null,I=_?(0,e.createPortalLifecycle)({content:_,root:r,enabled:!0,wrapperSlot:P?void 0:`navigation-menu-viewport-positioner`,container:P??void 0,mountTarget:P?F??P:void 0}):null,L=_?(0,e.createPresenceLifecycle)({element:_,onExitComplete:()=>{k||(I?.restore(),_.hidden=!0,_.style.pointerEvents=`none`)}}):null,R=e=>{if(!_)return;let t=M.get(e)??{originalParent:null,originalNextSibling:null,mountedInViewport:!1};t.mountedInViewport||(t.originalParent=e.parentNode,t.originalNextSibling=e.nextSibling,t.mountedInViewport=!0,M.set(e,t)),e.parentNode!==_&&_.appendChild(e)},z=e=>{let t=M.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},B=()=>{if(!_||!I)return;let e=I.container,t=r.ownerDocument.defaultView??window,n=r.getBoundingClientRect();e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${n.left+t.scrollX}px, ${n.top+t.scrollY}px, 0)`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`transform`,e.style.pointerEvents=`none`},V=null,H=e=>{V?.disconnect(),V=null,!(!_||!e)&&(V=new ResizeObserver(()=>{let t=W(e.item,e.content,e.contentPositioner);X(e.content,e.trigger,t)}),V.observe(e.content))};A.push(()=>V?.disconnect()),A.push(()=>{j.forEach(e=>e.cleanup()),j.clear(),M.forEach((e,t)=>{z(t),t.hidden=!0,t.style.pointerEvents=`none`}),M.clear(),L?.cleanup(),I?.cleanup()});let U=new Map,W=(r,a,o)=>{let s=[I?.container instanceof HTMLElement&&I.container!==_?I.container:null,P,o],f=(t,n)=>{for(let r of s){if(!r)continue;let i=(0,e.getDataEnum)(r,t,n);if(i!=null)return i}return null},p=t=>{for(let n of s){if(!n)continue;let r=(0,e.getDataNumber)(n,t);if(r!=null)return r}return null},m=f(`side`,n),h=f(`align`,t),g=p(`sideOffset`),v=p(`alignOffset`);return{side:i.side??m??(0,e.getDataEnum)(a,`side`,n)??(0,e.getDataEnum)(r,`side`,n)??c,align:i.align??h??(0,e.getDataEnum)(a,`align`,t)??(0,e.getDataEnum)(r,`align`,t)??l,sideOffset:i.sideOffset??g??(0,e.getDataNumber)(a,`sideOffset`)??(0,e.getDataNumber)(r,`sideOffset`)??u,alignOffset:i.alignOffset??v??(0,e.getDataNumber)(a,`alignOffset`)??(0,e.getDataNumber)(r,`alignOffset`)??d}},te=0;g.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){let a=y(i,`navigation-menu-positioner`);U.set(n,{item:t,trigger:r,content:i,contentPositioner:a,index:te++}),j.set(i,(0,e.createPresenceLifecycle)({element:i,onExitComplete:()=>{k||(z(i),i.hidden=!0,i.style.pointerEvents=`none`)}}));let o=p(n),s=(0,e.ensureId)(r,`nav-menu-trigger-${o}`),c=(0,e.ensureId)(i,`nav-menu-content-${o}`);r.setAttribute(`aria-haspopup`,`true`),r.setAttribute(`aria-controls`,c),i.setAttribute(`aria-labelledby`,s)}});let G=Array.from(U.values()).map(e=>e.trigger),K=new Map;for(let[e,t]of U)K.set(t.trigger,e);let q=e=>Array.from(e.querySelectorAll(`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),J=()=>{C&&=(clearTimeout(C),null),w&&=(clearTimeout(w),null)},Y=null,ne=()=>{if(!_)return null;let e=I?.container;return e instanceof HTMLElement?e:_.parentElement instanceof HTMLElement?_.parentElement:_},re=()=>{let t=ne();return Y||(Y=document.createElement(`div`),Y.setAttribute(`data-slot`,`navigation-menu-bridge`),Y.style.cssText=`position: absolute; pointer-events: auto; z-index: 0;`,A.push((0,e.on)(Y,`pointerenter`,()=>{J()}))),t&&Y.parentElement!==t&&t.insertBefore(Y,t.firstChild),Y},X=(t,i,a)=>{_&&requestAnimationFrame(()=>{let o=t.firstElementChild,s=o?.getBoundingClientRect(),c=o?getComputedStyle(o):null,l=c&&parseFloat(c.marginTop)||0,u=c&&parseFloat(c.marginBottom)||0,d=s??t.getBoundingClientRect(),f=d.height+l+u,p=getComputedStyle(_),m=parseFloat(p.marginTop)||0,h=t.getBoundingClientRect();_.style.setProperty(`--viewport-width`,`${h.width}px`),_.style.setProperty(`--viewport-height`,`${f}px`);let g=r.getBoundingClientRect(),v=(0,e.computeFloatingPosition)({anchorRect:i.getBoundingClientRect(),contentRect:d,side:a.side,align:a.align,sideOffset:a.sideOffset,alignOffset:a.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:n}),y=v.x-g.left,b=v.y-g.top;_.style.setProperty(`--viewport-top`,`${b}px`),_.style.setProperty(`--viewport-left`,`${y}px`),_.style.top=`${b}px`,_.style.left=`${y}px`,t.style.top=`0px`,t.style.left=`0px`,_.setAttribute(`data-side`,v.side),_.setAttribute(`data-align`,v.align),t.setAttribute(`data-side`,v.side),t.setAttribute(`data-align`,v.align);let x=I?.container;x&&x!==_&&(x.setAttribute(`data-side`,v.side),x.setAttribute(`data-align`,v.align)),B();let S=_.getBoundingClientRect(),C=Math.max(0,S.top-g.bottom),w=Math.max(0,g.top-S.bottom),T=Math.max(0,S.left-g.right),E=Math.max(0,g.left-S.right),D=Math.max(0,l+m),O=Math.max(C,w,D),k=Math.max(T,E);if(Math.max(O,k)>0){let e=re();if(e.style.transform=`none`,e.style.bottom=`auto`,e.style.right=`auto`,O>=k){let t=Math.max(C,w,D);e.style.width=`${h.width}px`,e.style.height=`${t}px`,e.style.left=`${y}px`,w>C&&w>=D?e.style.top=`${b+f}px`:e.style.top=`${b-t}px`}else{let t=Math.max(T,E);e.style.height=`${f}px`,e.style.width=`${t}px`,e.style.top=`${b}px`,E>T?e.style.left=`${y+h.width}px`:e.style.left=`${y-t}px`}}else Y&&(Y.style.height=`0`,Y.style.width=`0`,Y.style.top=`0px`,Y.style.left=`0px`,Y.style.right=`0px`,Y.style.bottom=`auto`,Y.style.transform=`none`)})},ie=e=>S===-1||e>S?`right`:`left`,Z=e=>{if(!v)return;if(T=e,!e){v.setAttribute(`data-state`,`hidden`);return}let t=h.getBoundingClientRect(),n=e.getBoundingClientRect();v.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),v.style.setProperty(`--indicator-width`,`${n.width}px`),v.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(_&&parseFloat(getComputedStyle(_).marginTop)||0)<1?1:0;v.style.setProperty(`--indicator-height`,`${n.height-r}px`),v.setAttribute(`data-state`,`visible`)},Q=(t,n=!1)=>{if(t===b){J();return}if(t!==null&&t===x){J();return}J(),x=t===null?null:t;let i=()=>{let n=b,i=t?U.get(t):null,a=n!==null&&t!==null&&n!==t,o=a&&i?ie(i.index):null,s=document.activeElement;if(t===null&&s&&(0,e.containsWithPortals)(r,s)){let e=n?U.get(n)?.trigger:null;e&&e.focus()}if(U.forEach(({trigger:r,content:i,item:a},s)=>{let c=s===t,l=s===n;if((0,e.setAria)(r,`expanded`,c),r.setAttribute(`data-state`,c?`open`:`closed`),c||l&&t===null?r.tabIndex=0:r.tabIndex=-1,a.setAttribute(`data-state`,c?`open`:`closed`),!c){let e=j.get(i);if(i.setAttribute(`data-state`,`inactive`),i.setAttribute(`aria-hidden`,`true`),m(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`),z(i),i.hidden=!0)}}),i){if(I?.mount(),_&&(_.hidden=!1),n===null&&L?.enter(),R(i.content),j.get(i.content)?.enter(),o){let e=o===`right`?`from-right`:`from-left`;i.content.setAttribute(`data-motion`,e)}else i.content.removeAttribute(`data-motion`);i.content.setAttribute(`data-state`,`active`),i.content.removeAttribute(`aria-hidden`),m(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,S=i.index;let e=W(i.item,i.content,i.contentPositioner);X(i.content,i.trigger,e),H(i),Z(i.trigger)}else L?.exit(),H(null);let c=t!==null;r.setAttribute(`data-state`,c?`open`:`closed`),o?r.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):r.removeAttribute(`data-motion`),_&&(_.setAttribute(`data-state`,c?`open`:`closed`),_.style.pointerEvents=c?`auto`:`none`,c&&!a?_.setAttribute(`data-instant`,``):a&&_.removeAttribute(`data-instant`),o&&_.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),b=t,x=null,t===null&&Z(null),(0,e.emit)(r,`navigation-menu:change`,{value:t}),f?.(t)};n?i():t!==null&&b===null?C=setTimeout(i,a):t!==null&&b!==null?i():w=setTimeout(i,o)};r.setAttribute(`data-state`,`closed`),_&&(_.setAttribute(`data-state`,`closed`),_.hidden=!0,_.style.pointerEvents=`none`),v&&v.setAttribute(`data-state`,`hidden`),U.forEach(({trigger:t,content:n,item:r})=>{t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),(0,e.setAria)(t,`expanded`,!1),t.setAttribute(`data-state`,`closed`),t.tabIndex=t===G[0]?0:-1,r.setAttribute(`data-state`,`closed`),n.setAttribute(`data-state`,`inactive`),n.setAttribute(`aria-hidden`,`true`),n.tabIndex=-1,m(n,!0),n.hidden=!0,n.style.pointerEvents=`none`}),U.forEach(({item:t,trigger:n},r)=>{A.push((0,e.on)(n,`pointerenter`,()=>{E||Z(n)})),A.push((0,e.on)(t,`pointerenter`,()=>{E||Q(r)})),A.push((0,e.on)(t,`pointerleave`,()=>{x===r&&b===null&&(J(),x=null)})),A.push((0,e.on)(n,`focus`,()=>{D||(s&&Q(r,!0),Z(n))})),A.push((0,e.on)(n,`pointerdown`,()=>{D=!0})),A.push((0,e.on)(n,`click`,()=>{J(),b===r&&E?(E=!1,Q(null,!0),Z(null)):b===r&&!E?(E=!0,Z(n)):(E=!0,Q(r,!0),Z(n)),D=!1}))}),A.push((0,e.on)(r,`pointerenter`,()=>{O=!0}),(0,e.on)(r,`pointerleave`,t=>{let n=t.relatedTarget;(0,e.containsWithPortals)(r,n)||(O=!1,E||(Q(null),Z(null)))}),(0,e.on)(r,`pointerdown`,J)),_&&A.push((0,e.on)(_,`pointerenter`,()=>{J()}),(0,e.on)(_,`transitionend`,e=>{if(e.target!==_)return;let t=b?U.get(b):null;if(t){let e=W(t.item,t.content,t.contentPositioner);X(t.content,t.trigger,e)}})),U.forEach(({content:t})=>{A.push((0,e.on)(t,`pointerenter`,()=>{J()}),(0,e.on)(t,`pointerleave`,t=>{if(E)return;let n=t.relatedTarget;(0,e.containsWithPortals)(r,n)||(Q(null),Z(null))}))}),A.push((0,e.on)(h,`keydown`,e=>{let t=e.target,n=G.indexOf(t);if(n===-1)return;let r=K.get(t)??null,i=n;switch(e.key){case`ArrowLeft`:i=n-1,i<0&&(i=G.length-1);break;case`ArrowRight`:i=n+1,i>=G.length&&(i=0);break;case`ArrowDown`:e.preventDefault(),r&&(E=!0,Q(r,!0),requestAnimationFrame(()=>{let e=U.get(r);if(!e)return;let t=q(e.content)[0];t?t.focus():e.content.focus()}));return;case`Home`:i=0;break;case`End`:i=G.length-1;break;case`Escape`:E=!1,Q(null,!0),Z(null);return;default:return}e.preventDefault();let a=G[i];a&&(G.forEach(e=>e.tabIndex=e===a?0:-1),a.focus(),Z(a))})),U.forEach(({content:t,trigger:n})=>{A.push((0,e.on)(t,`keydown`,e=>{let r=e.target,i=q(t),a=i.indexOf(r);if(a!==-1)switch(e.key){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),Z(null),n.focus();break}}))});let ae=()=>(0,e.containsWithPortals)(r,document.activeElement)||O||E,$=()=>{E=!1,Q(null,!0),Z(null)};return A.push((0,e.on)(document,`pointerup`,()=>{D=!1},{capture:!0}),(0,e.on)(document,`pointercancel`,()=>{D=!1},{capture:!0})),A.push((0,e.on)(document,`focusin`,t=>{b!==null&&((0,e.containsWithPortals)(r,t.target)||$())})),A.push((0,e.createDismissLayer)({root:r,isOpen:()=>b!==null&&ae(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&(0,e.containsWithPortals)(r,t)})),A.push((0,e.on)(window,`resize`,()=>{b&&requestAnimationFrame(()=>B()),T&&requestAnimationFrame(()=>Z(T))}),(0,e.on)(h,`scroll`,()=>{T&&requestAnimationFrame(()=>Z(T))})),A.push((0,e.on)(r,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(U.has(t.value)){E=!0,Q(t.value,!0);let e=U.get(t.value);e&&Z(e.trigger)}}})),{get value(){return b},open:e=>Q(e,!0),close:()=>Q(null,!0),destroy:()=>{k=!0,J(),A.forEach(e=>e()),A.length=0}}}const i=new WeakSet;function a(t=document){let n=[];for(let a of(0,e.getRoots)(t,`navigation-menu`))i.has(a)||(i.add(a),n.push(r(a)));return n}exports.create=a,exports.createNavigationMenu=r;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{containsWithPortals as e,createDismissLayer as t,createPortalLifecycle as n,emit as r,ensureId as i,getDataBool as a,getDataEnum as o,getDataNumber as s,getPart as c,getParts as l,getRoots as u,on as d,setAria as f}from"@data-slot/core";const p=[`start`,`center`,`end`];function m(u,m={}){let h=m.delayOpen??s(u,`delayOpen`)??200,g=m.delayClose??s(u,`delayClose`)??150,_=m.openOnFocus??a(u,`openOnFocus`)??!0,ee=m.onValueChange,v=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),y=(e,t)=>{`inert`in e&&(e.inert=t)},b=c(u,`navigation-menu-list`),x=l(u,`navigation-menu-item`),S=c(u,`navigation-menu-viewport`),C=c(u,`navigation-menu-indicator`),w=(e,t)=>{let n=e.parentElement;for(;n&&n!==u;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!b||x.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let T=null,E=null,D=-1,O=null,k=null,A=null,j=!1,M=!1,N=!1,P=[],F=new Map,I=new Set,L=S?w(S,`navigation-menu-viewport-positioner`):null,R=L?w(L,`navigation-menu-portal`):null,z=S?n({content:S,root:u,enabled:!0,wrapperSlot:L?void 0:`navigation-menu-viewport-positioner`,container:L??void 0,mountTarget:L?R??L:void 0}):null,B=e=>{let t=F.get(e);if(!t)return;let n=t.container,r=u.ownerDocument.defaultView??window,i=u.getBoundingClientRect();n.style.position=`absolute`,n.style.top=`0px`,n.style.left=`0px`,n.style.transform=`translate3d(${i.left+r.scrollX}px, ${i.top+r.scrollY}px, 0)`,n.style.width=`${i.width}px`,n.style.height=`${i.height}px`,n.style.margin=`0`,n.style.willChange=`transform`,n.style.pointerEvents=`none`},V=()=>{if(!S||!z)return;let e=z.container,t=u.ownerDocument.defaultView??window,n=u.getBoundingClientRect();e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${n.left+t.scrollX}px, ${n.top+t.scrollY}px, 0)`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`transform`,e.style.pointerEvents=`none`},H=null,U=e=>{H?.disconnect(),H=null,!(!S||!e)&&(H=new ResizeObserver(()=>X(e.content,e.trigger,e.align)),H.observe(e.content))};P.push(()=>H?.disconnect()),P.push(()=>{F.forEach(e=>e.cleanup()),F.clear(),z?.cleanup()});let W=new Map,te=0;x.forEach(e=>{let t=e.dataset.value;if(!t)return;let r=c(e,`navigation-menu-trigger`),a=c(e,`navigation-menu-content`);if(r&&a){let s=o(a,`align`,p)??o(e,`align`,p)??o(u,`align`,p)??`start`;W.set(t,{item:e,trigger:r,content:a,index:te++,align:s});let c=w(a,`navigation-menu-positioner`);c&&I.has(c)&&(c=null),c&&I.add(c);let l=c?w(c,`navigation-menu-portal`):null;F.set(a,n({content:a,root:u,enabled:!0,wrapperSlot:c?void 0:`navigation-menu-positioner`,container:c??void 0,mountTarget:c?l??c:void 0}));let d=v(t),f=i(r,`nav-menu-trigger-${d}`),m=i(a,`nav-menu-content-${d}`);r.setAttribute(`aria-haspopup`,`true`),r.setAttribute(`aria-controls`,m),a.setAttribute(`aria-labelledby`,f)}});let G=Array.from(W.values()).map(e=>e.trigger),K=new Map;for(let[e,t]of W)K.set(t.trigger,e);let q=e=>Array.from(e.querySelectorAll(`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),J=()=>{O&&=(clearTimeout(O),null),k&&=(clearTimeout(k),null)},Y=null,ne=()=>(Y||(Y=document.createElement(`div`),Y.setAttribute(`data-slot`,`navigation-menu-bridge`),Y.style.cssText=`position: absolute; left: 0; right: 0; top: 0; pointer-events: auto; z-index: -1;`,S&&S.insertBefore(Y,S.firstChild),P.push(d(Y,`pointerenter`,()=>{J()}))),Y),X=(e,t,n)=>{S&&requestAnimationFrame(()=>{let r=e.firstElementChild,i=r?.getBoundingClientRect(),a=r?getComputedStyle(r):null,o=a&&parseFloat(a.marginTop)||0,s=a&&parseFloat(a.marginBottom)||0,c=i??e.getBoundingClientRect(),l=c.height+o+s,d=getComputedStyle(S),f=parseFloat(d.marginTop)||0,p=e.getBoundingClientRect();S.style.setProperty(`--viewport-width`,`${p.width}px`),S.style.setProperty(`--viewport-height`,`${l}px`);let m=u.getBoundingClientRect(),h=t.getBoundingClientRect(),g;g=n===`center`?h.left-m.left+h.width/2-c.width/2:n===`end`?h.right-m.left-c.width:h.left-m.left,S.style.setProperty(`--viewport-left`,`${g}px`),S.style.left=`${g}px`,e.style.left=`${g}px`,B(e),V();let _=o+f;if(_>0){let e=ne();e.style.height=`${_}px`,e.style.transform=`translateY(-${_}px)`}else Y&&(Y.style.height=`0`)})},re=e=>D===-1||e>D?`right`:`left`,Z=e=>{if(!C)return;if(A=e,!e){C.setAttribute(`data-state`,`hidden`);return}let t=b.getBoundingClientRect(),n=e.getBoundingClientRect();C.style.setProperty(`--indicator-left`,`${n.left-t.left}px`),C.style.setProperty(`--indicator-width`,`${n.width}px`),C.style.setProperty(`--indicator-top`,`${n.top-t.top}px`);let r=(S&&parseFloat(getComputedStyle(S).marginTop)||0)<1?1:0;C.style.setProperty(`--indicator-height`,`${n.height-r}px`),C.setAttribute(`data-state`,`visible`)},Q=(t,n=!1)=>{if(t===T){J();return}if(t!==null&&t===E){J();return}J(),E=t===null?null:t;let i=()=>{let n=T,i=t?W.get(t):null,a=n!==null&&t!==null&&n!==t,o=a&&i?re(i.index):null,s=document.activeElement;if(t===null&&s&&e(u,s)){let e=n?W.get(n)?.trigger:null;e&&e.focus()}if(W.forEach(({trigger:e,content:r,item:i},a)=>{let s=a===t,c=a===n;if(f(e,`expanded`,s),e.setAttribute(`data-state`,s?`open`:`closed`),s||c&&t===null?e.tabIndex=0:e.tabIndex=-1,i.setAttribute(`data-state`,s?`open`:`closed`),!s)if(F.get(r)?.restore(),r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),y(r,!0),r.hidden=!0,c&&o){let e=o===`right`?`to-left`:`to-right`;r.setAttribute(`data-motion`,e)}else r.removeAttribute(`data-motion`)}),i){if(z?.mount(),F.get(i.content)?.mount(),o){let e=o===`right`?`from-right`:`from-left`;i.content.setAttribute(`data-motion`,e)}else i.content.removeAttribute(`data-motion`);i.content.setAttribute(`data-state`,`active`),i.content.removeAttribute(`aria-hidden`),y(i.content,!1),i.content.hidden=!1,i.content.style.pointerEvents=`auto`,D=i.index,X(i.content,i.trigger,i.align),U(i),Z(i.trigger)}else z?.restore(),U(null);let c=t!==null;u.setAttribute(`data-state`,c?`open`:`closed`),o?u.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):u.removeAttribute(`data-motion`),S&&(S.setAttribute(`data-state`,c?`open`:`closed`),S.style.pointerEvents=c?`auto`:`none`,c&&!a?S.setAttribute(`data-instant`,``):a&&S.removeAttribute(`data-instant`),o&&S.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),T=t,E=null,t===null&&Z(null),r(u,`navigation-menu:change`,{value:t}),ee?.(t)};n?i():t!==null&&T===null?O=setTimeout(i,h):t!==null&&T!==null?i():k=setTimeout(i,g)};u.setAttribute(`data-state`,`closed`),S&&S.setAttribute(`data-state`,`closed`),C&&C.setAttribute(`data-state`,`hidden`),W.forEach(({trigger:e,content:t,item:n})=>{e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&(e.type=`button`),f(e,`expanded`,!1),e.setAttribute(`data-state`,`closed`),e.tabIndex=e===G[0]?0:-1,n.setAttribute(`data-state`,`closed`),t.setAttribute(`data-state`,`inactive`),t.setAttribute(`aria-hidden`,`true`),t.tabIndex=-1,y(t,!0),t.hidden=!0}),W.forEach(({item:e,trigger:t},n)=>{P.push(d(t,`pointerenter`,()=>{j||Z(t)})),P.push(d(e,`pointerenter`,()=>{j||Q(n)})),P.push(d(e,`pointerleave`,()=>{E===n&&T===null&&(J(),E=null)})),P.push(d(t,`focus`,()=>{M||(_&&Q(n,!0),Z(t))})),P.push(d(t,`pointerdown`,()=>{M=!0})),P.push(d(t,`click`,()=>{J(),T===n&&j?(j=!1,Q(null,!0),Z(null)):T===n&&!j?(j=!0,Z(t)):(j=!0,Q(n,!0),Z(t)),M=!1}))}),P.push(d(u,`pointerenter`,()=>{N=!0}),d(u,`pointerleave`,t=>{let n=t.relatedTarget;e(u,n)||(N=!1,j||(Q(null),Z(null)))}),d(u,`pointerdown`,J)),S&&P.push(d(S,`pointerenter`,()=>{J()}),d(S,`transitionend`,e=>{if(e.target!==S)return;let t=T?W.get(T):null;t&&X(t.content,t.trigger,t.align)})),W.forEach(({content:t})=>{P.push(d(t,`pointerenter`,()=>{J()}),d(t,`pointerleave`,t=>{if(j)return;let n=t.relatedTarget;e(u,n)||(Q(null),Z(null))}))}),P.push(d(b,`keydown`,e=>{let t=e.target,n=G.indexOf(t);if(n===-1)return;let r=K.get(t)??null,i=n;switch(e.key){case`ArrowLeft`:i=n-1,i<0&&(i=G.length-1);break;case`ArrowRight`:i=n+1,i>=G.length&&(i=0);break;case`ArrowDown`:e.preventDefault(),r&&(j=!0,Q(r,!0),requestAnimationFrame(()=>{let e=W.get(r);if(!e)return;let t=q(e.content)[0];t?t.focus():e.content.focus()}));return;case`Home`:i=0;break;case`End`:i=G.length-1;break;case`Escape`:j=!1,Q(null,!0),Z(null);return;default:return}e.preventDefault();let a=G[i];a&&(G.forEach(e=>e.tabIndex=e===a?0:-1),a.focus(),Z(a))})),W.forEach(({content:e,trigger:t})=>{P.push(d(e,`keydown`,n=>{let r=n.target,i=q(e),a=i.indexOf(r);if(a!==-1)switch(n.key){case`ArrowDown`:case`ArrowRight`:{n.preventDefault();let e=a+1;e<i.length&&i[e]?.focus();break}case`ArrowUp`:case`ArrowLeft`:n.preventDefault(),a===0?t.focus():i[a-1]?.focus();break;case`Escape`:n.preventDefault(),j=!1,Q(null,!0),Z(null),t.focus();break}}))});let ie=()=>e(u,document.activeElement)||N||j,$=()=>{j=!1,Q(null,!0),Z(null)};return P.push(d(document,`pointerup`,()=>{M=!1},{capture:!0}),d(document,`pointercancel`,()=>{M=!1},{capture:!0})),P.push(d(document,`focusin`,t=>{T!==null&&(e(u,t.target)||$())})),P.push(t({root:u,isOpen:()=>T!==null&&ie(),onDismiss:$,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:t=>!!t&&e(u,t)})),P.push(d(window,`resize`,()=>{if(T&&requestAnimationFrame(()=>V()),T){let e=W.get(T);e&&requestAnimationFrame(()=>B(e.content))}A&&requestAnimationFrame(()=>Z(A))}),d(b,`scroll`,()=>{A&&requestAnimationFrame(()=>Z(A))})),P.push(d(u,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)$();else if(W.has(t.value)){j=!0,Q(t.value,!0);let e=W.get(t.value);e&&Z(e.trigger)}}})),{get value(){return T},open:e=>Q(e,!0),close:()=>Q(null,!0),destroy:()=>{J(),P.forEach(e=>e()),P.length=0}}}const h=new WeakSet;function g(e=document){let t=[];for(let n of u(e,`navigation-menu`))h.has(n)||(h.add(n),t.push(m(n)));return t}export{g as create,m as createNavigationMenu};
|
|
1
|
+
import{computeFloatingPosition as e,containsWithPortals as t,createDismissLayer as n,createPortalLifecycle as r,createPresenceLifecycle as i,emit as a,ensureId as o,getDataBool as s,getDataEnum as c,getDataNumber as l,getPart as u,getParts as ee,getRoots as d,on as f,setAria as p}from"@data-slot/core";const m=[`start`,`center`,`end`],h=[`top`,`right`,`bottom`,`left`];function g(d,g={}){let _=g.delayOpen??l(d,`delayOpen`)??200,v=g.delayClose??l(d,`delayClose`)??150,y=g.openOnFocus??s(d,`openOnFocus`)??!0,b=g.side??c(d,`side`,h)??`bottom`,x=g.align??c(d,`align`,m)??`start`,S=g.sideOffset??l(d,`sideOffset`)??0,C=g.alignOffset??l(d,`alignOffset`)??0,w=g.onValueChange,T=e=>e.replace(/[^a-z0-9\-_:.]/gi,`-`),E=(e,t)=>{`inert`in e&&(e.inert=t)},D=u(d,`navigation-menu-list`),te=ee(d,`navigation-menu-item`),O=u(d,`navigation-menu-viewport`),k=u(d,`navigation-menu-indicator`),A=(e,t)=>{let n=e.parentElement;for(;n&&n!==d;){if(n.getAttribute(`data-slot`)===t)return n;n=n.parentElement}return null};if(!D||te.length===0)throw Error(`NavigationMenu requires navigation-menu-list and at least one navigation-menu-item`);let j=null,M=null,N=-1,P=null,F=null,I=null,L=!1,R=!1,ne=!1,re=!1,z=[],B=new Map,V=new Map,ie=O?A(O,`navigation-menu-viewport-positioner`):null,ae=O?A(O,`navigation-menu-positioner`):null,H=ie??ae,oe=H?A(H,`navigation-menu-portal`):null,U=O?r({content:O,root:d,enabled:!0,wrapperSlot:H?void 0:`navigation-menu-viewport-positioner`,container:H??void 0,mountTarget:H?oe??H:void 0}):null,W=O?i({element:O,onExitComplete:()=>{re||(U?.restore(),O.hidden=!0,O.style.pointerEvents=`none`)}}):null,se=e=>{if(!O)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!==O&&O.appendChild(e)},G=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},ce=()=>{if(!O||!U)return;let e=U.container,t=d.ownerDocument.defaultView??window,n=d.getBoundingClientRect();e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${n.left+t.scrollX}px, ${n.top+t.scrollY}px, 0)`,e.style.width=`${n.width}px`,e.style.height=`${n.height}px`,e.style.margin=`0`,e.style.willChange=`transform`,e.style.pointerEvents=`none`},K=null,le=e=>{K?.disconnect(),K=null,!(!O||!e)&&(K=new ResizeObserver(()=>{let t=J(e.item,e.content,e.contentPositioner);he(e.content,e.trigger,t)}),K.observe(e.content))};z.push(()=>K?.disconnect()),z.push(()=>{B.forEach(e=>e.cleanup()),B.clear(),V.forEach((e,t)=>{G(t),t.hidden=!0,t.style.pointerEvents=`none`}),V.clear(),W?.cleanup(),U?.cleanup()});let q=new Map,J=(e,t,n)=>{let r=[U?.container instanceof HTMLElement&&U.container!==O?U.container:null,H,n],i=(e,t)=>{for(let n of r){if(!n)continue;let r=c(n,e,t);if(r!=null)return r}return null},a=e=>{for(let t of r){if(!t)continue;let n=l(t,e);if(n!=null)return n}return null},o=i(`side`,h),s=i(`align`,m),u=a(`sideOffset`),ee=a(`alignOffset`);return{side:g.side??o??c(t,`side`,h)??c(e,`side`,h)??b,align:g.align??s??c(t,`align`,m)??c(e,`align`,m)??x,sideOffset:g.sideOffset??u??l(t,`sideOffset`)??l(e,`sideOffset`)??S,alignOffset:g.alignOffset??ee??l(t,`alignOffset`)??l(e,`alignOffset`)??C}},ue=0;te.forEach(e=>{let t=e.dataset.value;if(!t)return;let n=u(e,`navigation-menu-trigger`),r=u(e,`navigation-menu-content`);if(n&&r){let a=A(r,`navigation-menu-positioner`);q.set(t,{item:e,trigger:n,content:r,contentPositioner:a,index:ue++}),B.set(r,i({element:r,onExitComplete:()=>{re||(G(r),r.hidden=!0,r.style.pointerEvents=`none`)}}));let s=T(t),c=o(n,`nav-menu-trigger-${s}`),l=o(r,`nav-menu-content-${s}`);n.setAttribute(`aria-haspopup`,`true`),n.setAttribute(`aria-controls`,l),r.setAttribute(`aria-labelledby`,c)}});let Y=Array.from(q.values()).map(e=>e.trigger),de=new Map;for(let[e,t]of q)de.set(t.trigger,e);let fe=e=>Array.from(e.querySelectorAll(`a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.hidden&&!e.closest(`[hidden]`)),X=()=>{P&&=(clearTimeout(P),null),F&&=(clearTimeout(F),null)},Z=null,pe=()=>{if(!O)return null;let e=U?.container;return e instanceof HTMLElement?e:O.parentElement instanceof HTMLElement?O.parentElement:O},me=()=>{let e=pe();return Z||(Z=document.createElement(`div`),Z.setAttribute(`data-slot`,`navigation-menu-bridge`),Z.style.cssText=`position: absolute; pointer-events: auto; z-index: 0;`,z.push(f(Z,`pointerenter`,()=>{X()}))),e&&Z.parentElement!==e&&e.insertBefore(Z,e.firstChild),Z},he=(t,n,r)=>{O&&requestAnimationFrame(()=>{let i=t.firstElementChild,a=i?.getBoundingClientRect(),o=i?getComputedStyle(i):null,s=o&&parseFloat(o.marginTop)||0,c=o&&parseFloat(o.marginBottom)||0,l=a??t.getBoundingClientRect(),u=l.height+s+c,ee=getComputedStyle(O),f=parseFloat(ee.marginTop)||0,p=t.getBoundingClientRect();O.style.setProperty(`--viewport-width`,`${p.width}px`),O.style.setProperty(`--viewport-height`,`${u}px`);let m=d.getBoundingClientRect(),g=e({anchorRect:n.getBoundingClientRect(),contentRect:l,side:r.side,align:r.align,sideOffset:r.sideOffset,alignOffset:r.alignOffset,avoidCollisions:!1,collisionPadding:0,allowedSides:h}),_=g.x-m.left,v=g.y-m.top;O.style.setProperty(`--viewport-top`,`${v}px`),O.style.setProperty(`--viewport-left`,`${_}px`),O.style.top=`${v}px`,O.style.left=`${_}px`,t.style.top=`0px`,t.style.left=`0px`,O.setAttribute(`data-side`,g.side),O.setAttribute(`data-align`,g.align),t.setAttribute(`data-side`,g.side),t.setAttribute(`data-align`,g.align);let y=U?.container;y&&y!==O&&(y.setAttribute(`data-side`,g.side),y.setAttribute(`data-align`,g.align)),ce();let b=O.getBoundingClientRect(),x=Math.max(0,b.top-m.bottom),S=Math.max(0,m.top-b.bottom),C=Math.max(0,b.left-m.right),w=Math.max(0,m.left-b.right),T=Math.max(0,s+f),E=Math.max(x,S,T),D=Math.max(C,w);if(Math.max(E,D)>0){let e=me();if(e.style.transform=`none`,e.style.bottom=`auto`,e.style.right=`auto`,E>=D){let t=Math.max(x,S,T);e.style.width=`${p.width}px`,e.style.height=`${t}px`,e.style.left=`${_}px`,S>x&&S>=T?e.style.top=`${v+u}px`:e.style.top=`${v-t}px`}else{let t=Math.max(C,w);e.style.height=`${u}px`,e.style.width=`${t}px`,e.style.top=`${v}px`,w>C?e.style.left=`${_+p.width}px`:e.style.left=`${_-t}px`}}else Z&&(Z.style.height=`0`,Z.style.width=`0`,Z.style.top=`0px`,Z.style.left=`0px`,Z.style.right=`0px`,Z.style.bottom=`auto`,Z.style.transform=`none`)})},ge=e=>N===-1||e>N?`right`:`left`,Q=e=>{if(!k)return;if(I=e,!e){k.setAttribute(`data-state`,`hidden`);return}let t=D.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`)},$=(e,n=!1)=>{if(e===j){X();return}if(e!==null&&e===M){X();return}X(),M=e===null?null:e;let r=()=>{let n=j,r=e?q.get(e):null,i=n!==null&&e!==null&&n!==e,o=i&&r?ge(r.index):null,s=document.activeElement;if(e===null&&s&&t(d,s)){let e=n?q.get(n)?.trigger:null;e&&e.focus()}if(q.forEach(({trigger:t,content:r,item:i},a)=>{let s=a===e,c=a===n;if(p(t,`expanded`,s),t.setAttribute(`data-state`,s?`open`:`closed`),s||c&&e===null?t.tabIndex=0:t.tabIndex=-1,i.setAttribute(`data-state`,s?`open`:`closed`),!s){let e=B.get(r);if(r.setAttribute(`data-state`,`inactive`),r.setAttribute(`aria-hidden`,`true`),E(r,!0),r.style.pointerEvents=`none`,c&&o){let e=o===`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`),G(r),r.hidden=!0)}}),r){if(U?.mount(),O&&(O.hidden=!1),n===null&&W?.enter(),se(r.content),B.get(r.content)?.enter(),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`),E(r.content,!1),r.content.hidden=!1,r.content.style.pointerEvents=`auto`,N=r.index;let e=J(r.item,r.content,r.contentPositioner);he(r.content,r.trigger,e),le(r),Q(r.trigger)}else W?.exit(),le(null);let c=e!==null;d.setAttribute(`data-state`,c?`open`:`closed`),o?d.setAttribute(`data-motion`,o===`right`?`from-right`:`from-left`):d.removeAttribute(`data-motion`),O&&(O.setAttribute(`data-state`,c?`open`:`closed`),O.style.pointerEvents=c?`auto`:`none`,c&&!i?O.setAttribute(`data-instant`,``):i&&O.removeAttribute(`data-instant`),o&&O.style.setProperty(`--motion-direction`,o===`right`?`1`:`-1`)),j=e,M=null,e===null&&Q(null),a(d,`navigation-menu:change`,{value:e}),w?.(e)};n?r():e!==null&&j===null?P=setTimeout(r,_):e!==null&&j!==null?r():F=setTimeout(r,v)};d.setAttribute(`data-state`,`closed`),O&&(O.setAttribute(`data-state`,`closed`),O.hidden=!0,O.style.pointerEvents=`none`),k&&k.setAttribute(`data-state`,`hidden`),q.forEach(({trigger:e,content:t,item:n})=>{e.tagName===`BUTTON`&&!e.hasAttribute(`type`)&&(e.type=`button`),p(e,`expanded`,!1),e.setAttribute(`data-state`,`closed`),e.tabIndex=e===Y[0]?0:-1,n.setAttribute(`data-state`,`closed`),t.setAttribute(`data-state`,`inactive`),t.setAttribute(`aria-hidden`,`true`),t.tabIndex=-1,E(t,!0),t.hidden=!0,t.style.pointerEvents=`none`}),q.forEach(({item:e,trigger:t},n)=>{z.push(f(t,`pointerenter`,()=>{L||Q(t)})),z.push(f(e,`pointerenter`,()=>{L||$(n)})),z.push(f(e,`pointerleave`,()=>{M===n&&j===null&&(X(),M=null)})),z.push(f(t,`focus`,()=>{R||(y&&$(n,!0),Q(t))})),z.push(f(t,`pointerdown`,()=>{R=!0})),z.push(f(t,`click`,()=>{X(),j===n&&L?(L=!1,$(null,!0),Q(null)):j===n&&!L?(L=!0,Q(t)):(L=!0,$(n,!0),Q(t)),R=!1}))}),z.push(f(d,`pointerenter`,()=>{ne=!0}),f(d,`pointerleave`,e=>{let n=e.relatedTarget;t(d,n)||(ne=!1,L||($(null),Q(null)))}),f(d,`pointerdown`,X)),O&&z.push(f(O,`pointerenter`,()=>{X()}),f(O,`transitionend`,e=>{if(e.target!==O)return;let t=j?q.get(j):null;if(t){let e=J(t.item,t.content,t.contentPositioner);he(t.content,t.trigger,e)}})),q.forEach(({content:e})=>{z.push(f(e,`pointerenter`,()=>{X()}),f(e,`pointerleave`,e=>{if(L)return;let n=e.relatedTarget;t(d,n)||($(null),Q(null))}))}),z.push(f(D,`keydown`,e=>{let t=e.target,n=Y.indexOf(t);if(n===-1)return;let r=de.get(t)??null,i=n;switch(e.key){case`ArrowLeft`:i=n-1,i<0&&(i=Y.length-1);break;case`ArrowRight`:i=n+1,i>=Y.length&&(i=0);break;case`ArrowDown`:e.preventDefault(),r&&(L=!0,$(r,!0),requestAnimationFrame(()=>{let e=q.get(r);if(!e)return;let t=fe(e.content)[0];t?t.focus():e.content.focus()}));return;case`Home`:i=0;break;case`End`:i=Y.length-1;break;case`Escape`:L=!1,$(null,!0),Q(null);return;default:return}e.preventDefault();let a=Y[i];a&&(Y.forEach(e=>e.tabIndex=e===a?0:-1),a.focus(),Q(a))})),q.forEach(({content:e,trigger:t})=>{z.push(f(e,`keydown`,n=>{let r=n.target,i=fe(e),a=i.indexOf(r);if(a!==-1)switch(n.key){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(),L=!1,$(null,!0),Q(null),t.focus();break}}))});let _e=()=>t(d,document.activeElement)||ne||L,ve=()=>{L=!1,$(null,!0),Q(null)};return z.push(f(document,`pointerup`,()=>{R=!1},{capture:!0}),f(document,`pointercancel`,()=>{R=!1},{capture:!0})),z.push(f(document,`focusin`,e=>{j!==null&&(t(d,e.target)||ve())})),z.push(n({root:d,isOpen:()=>j!==null&&_e(),onDismiss:ve,closeOnClickOutside:!0,closeOnEscape:!0,preventEscapeDefault:!1,isInside:e=>!!e&&t(d,e)})),z.push(f(window,`resize`,()=>{j&&requestAnimationFrame(()=>ce()),I&&requestAnimationFrame(()=>Q(I))}),f(D,`scroll`,()=>{I&&requestAnimationFrame(()=>Q(I))})),z.push(f(d,`navigation-menu:set`,e=>{let t=e.detail;if(t?.value!==void 0){if(t.value===null)ve();else if(q.has(t.value)){L=!0,$(t.value,!0);let e=q.get(t.value);e&&Q(e.trigger)}}})),{get value(){return j},open:e=>$(e,!0),close:()=>$(null,!0),destroy:()=>{re=!0,X(),z.forEach(e=>e()),z.length=0}}}const _=new WeakSet;function v(e=document){let t=[];for(let n of d(e,`navigation-menu`))_.has(n)||(_.add(n),t.push(g(n)));return t}export{v as create,g as createNavigationMenu};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@data-slot/navigation-menu",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.58",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -39,6 +39,6 @@
|
|
|
39
39
|
],
|
|
40
40
|
"license": "MIT",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@data-slot/core": "0.2.
|
|
42
|
+
"@data-slot/core": "0.2.58"
|
|
43
43
|
}
|
|
44
44
|
}
|