@contentful/f36-menu 4.0.1-beta.2543 → 4.0.1-beta.2590
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/dist/main.js +140 -56
- package/dist/main.js.map +1 -1
- package/dist/module.js +140 -56
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +538 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
package/dist/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var $6ZrLO$react = require("react");
|
|
2
2
|
var $6ZrLO$contentfulf36core = require("@contentful/f36-core");
|
|
3
|
-
var $6ZrLO$contentfulf36utils = require("@contentful/f36-utils");
|
|
4
3
|
var $6ZrLO$contentfulf36popover = require("@contentful/f36-popover");
|
|
4
|
+
var $6ZrLO$reactjsxruntime = require("react/jsx-runtime");
|
|
5
5
|
var $6ZrLO$emotion = require("emotion");
|
|
6
6
|
var $6ZrLO$contentfulf36tokens = require("@contentful/f36-tokens");
|
|
7
7
|
var $6ZrLO$contentfulf36typography = require("@contentful/f36-typography");
|
|
@@ -26,6 +26,60 @@ $parcel$export(module.exports, "SubmenuTrigger", () => $68e427819b978177$export$
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
const $9abfe5cafeb7e9d3$var$ARROW_KEY_TYPES = {
|
|
30
|
+
vertical: {
|
|
31
|
+
prev: 'ArrowUp',
|
|
32
|
+
next: 'ArrowDown'
|
|
33
|
+
},
|
|
34
|
+
horizontal: {
|
|
35
|
+
prev: 'ArrowLeft',
|
|
36
|
+
next: 'ArrowRight'
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const $9abfe5cafeb7e9d3$export$e8d01079a7f85a7 = ({ itemsContainerRef: itemsContainerRef , itemsSelector: itemsSelector , keyType: keyType = 'vertical' })=>{
|
|
40
|
+
const [focusedIndex, setFocusedIndex] = $6ZrLO$react.useState(0);
|
|
41
|
+
const handleArrowsKeyDown = $6ZrLO$react.useCallback((event)=>{
|
|
42
|
+
const container = itemsContainerRef.current;
|
|
43
|
+
if (!container) return;
|
|
44
|
+
const items = container.querySelectorAll(itemsSelector);
|
|
45
|
+
if (items.length === 0) return;
|
|
46
|
+
const lastItemIndex = items.length - 1;
|
|
47
|
+
const focusFirstItem = ()=>setFocusedIndex(0)
|
|
48
|
+
;
|
|
49
|
+
const focusLastItem = ()=>setFocusedIndex(lastItemIndex)
|
|
50
|
+
;
|
|
51
|
+
const focusNextItem = ()=>{
|
|
52
|
+
if (focusedIndex === lastItemIndex) focusFirstItem();
|
|
53
|
+
else setFocusedIndex(focusedIndex + 1);
|
|
54
|
+
};
|
|
55
|
+
const focusPrevItem = ()=>{
|
|
56
|
+
if (focusedIndex === 0) focusLastItem();
|
|
57
|
+
else setFocusedIndex(focusedIndex - 1);
|
|
58
|
+
};
|
|
59
|
+
const keyToFnMap = {
|
|
60
|
+
[$9abfe5cafeb7e9d3$var$ARROW_KEY_TYPES[keyType].next]: focusNextItem,
|
|
61
|
+
[$9abfe5cafeb7e9d3$var$ARROW_KEY_TYPES[keyType].prev]: focusPrevItem
|
|
62
|
+
};
|
|
63
|
+
const fn = keyToFnMap[event.key];
|
|
64
|
+
if (fn) {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
fn();
|
|
67
|
+
}
|
|
68
|
+
}, [
|
|
69
|
+
focusedIndex,
|
|
70
|
+
itemsSelector,
|
|
71
|
+
itemsContainerRef,
|
|
72
|
+
keyType
|
|
73
|
+
]);
|
|
74
|
+
return {
|
|
75
|
+
focusedIndex: focusedIndex,
|
|
76
|
+
handleArrowsKeyDown: handleArrowsKeyDown,
|
|
77
|
+
setFocusedIndex: setFocusedIndex
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
29
83
|
|
|
30
84
|
const $31bc1b2a74a830dc$var$MenuContext = $parcel$interopDefault($6ZrLO$react).createContext(undefined);
|
|
31
85
|
const $31bc1b2a74a830dc$export$21c7ab35b39f78ec = ()=>{
|
|
@@ -43,7 +97,7 @@ function $453ff7c40e833219$export$d9b273488cd8ce6f(props) {
|
|
|
43
97
|
const triggerRef = $6ZrLO$react.useRef(null);
|
|
44
98
|
const menuListRef = $6ZrLO$react.useRef(null);
|
|
45
99
|
const menuId = $6ZrLO$contentfulf36core.useId(null, 'menu');
|
|
46
|
-
const { focusedIndex: focusedIndex , handleArrowsKeyDown: handleArrowsKeyDown , setFocusedIndex: setFocusedIndex } = $
|
|
100
|
+
const { focusedIndex: focusedIndex , handleArrowsKeyDown: handleArrowsKeyDown , setFocusedIndex: setFocusedIndex } = $9abfe5cafeb7e9d3$export$e8d01079a7f85a7({
|
|
47
101
|
itemsContainerRef: menuListRef,
|
|
48
102
|
itemsSelector: $453ff7c40e833219$var$MENU_ITEMS_SELECTOR
|
|
49
103
|
});
|
|
@@ -177,17 +231,19 @@ function $453ff7c40e833219$export$d9b273488cd8ce6f(props) {
|
|
|
177
231
|
isControlled,
|
|
178
232
|
onOpen
|
|
179
233
|
]);
|
|
180
|
-
return(/*#__PURE__*/ $
|
|
181
|
-
value: contextValue
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
234
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($31bc1b2a74a830dc$export$2cad3fd48ac06579, {
|
|
235
|
+
value: contextValue,
|
|
236
|
+
children: /*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($6ZrLO$contentfulf36popover.Popover, {
|
|
237
|
+
...otherProps,
|
|
238
|
+
isOpen: isOpen,
|
|
239
|
+
onClose: handleClose,
|
|
240
|
+
id: menuId,
|
|
241
|
+
closeOnEsc: closeOnEsc,
|
|
242
|
+
autoFocus: false,
|
|
243
|
+
closeOnBlur: false,
|
|
244
|
+
children: children
|
|
245
|
+
})
|
|
246
|
+
}));
|
|
191
247
|
}
|
|
192
248
|
const $453ff7c40e833219$var$useMenuOpenState = (props)=>{
|
|
193
249
|
const { isOpen: isOpen , defaultIsOpen: defaultIsOpen , onOpen: onOpen , onClose: onClose } = props;
|
|
@@ -221,6 +277,7 @@ const $453ff7c40e833219$var$useMenuOpenState = (props)=>{
|
|
|
221
277
|
|
|
222
278
|
|
|
223
279
|
|
|
280
|
+
|
|
224
281
|
const $62b35dc82bb7def8$var$SubmenuContext = $parcel$interopDefault($6ZrLO$react).createContext(undefined);
|
|
225
282
|
const $62b35dc82bb7def8$export$958673a266cbe049 = ()=>{
|
|
226
283
|
const context = $parcel$interopDefault($6ZrLO$react).useContext($62b35dc82bb7def8$var$SubmenuContext);
|
|
@@ -269,14 +326,16 @@ const $ce9788dc1cd48a1b$export$10ce7613b0465b57 = (props)=>({
|
|
|
269
326
|
|
|
270
327
|
|
|
271
328
|
|
|
329
|
+
|
|
272
330
|
const $77fa76994469c42b$export$77451990ddb9d17c = (props)=>{
|
|
273
331
|
const { children: children , testId: testId = 'cf-ui-menu-list-header' , className: className , ...otherProps } = props;
|
|
274
332
|
const styles = $ce9788dc1cd48a1b$export$396ce14bde1b7929();
|
|
275
|
-
return(/*#__PURE__*/ $
|
|
333
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx("div", {
|
|
276
334
|
"data-test-id": testId,
|
|
277
335
|
className: $6ZrLO$emotion.cx(styles, className),
|
|
278
|
-
...otherProps
|
|
279
|
-
|
|
336
|
+
...otherProps,
|
|
337
|
+
children: children
|
|
338
|
+
}));
|
|
280
339
|
};
|
|
281
340
|
$77fa76994469c42b$export$77451990ddb9d17c.displayName = 'MenuListHeader';
|
|
282
341
|
|
|
@@ -284,14 +343,16 @@ $77fa76994469c42b$export$77451990ddb9d17c.displayName = 'MenuListHeader';
|
|
|
284
343
|
|
|
285
344
|
|
|
286
345
|
|
|
346
|
+
|
|
287
347
|
const $56409107038e75ac$export$3e8a81e7ad0650f4 = (props)=>{
|
|
288
348
|
const { children: children , testId: testId = 'cf-ui-menu-list-footer' , className: className , ...otherProps } = props;
|
|
289
349
|
const styles = $ce9788dc1cd48a1b$export$fd3dbc8a890448f();
|
|
290
|
-
return(/*#__PURE__*/ $
|
|
350
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx("div", {
|
|
291
351
|
"data-test-id": testId,
|
|
292
352
|
className: $6ZrLO$emotion.cx(styles, className),
|
|
293
|
-
...otherProps
|
|
294
|
-
|
|
353
|
+
...otherProps,
|
|
354
|
+
children: children
|
|
355
|
+
}));
|
|
295
356
|
};
|
|
296
357
|
$56409107038e75ac$export$3e8a81e7ad0650f4.displayName = 'MenuListFooter';
|
|
297
358
|
|
|
@@ -325,13 +386,18 @@ const $c5bfee6901fd5b47$var$_MenuList = (props, ref)=>{
|
|
|
325
386
|
hasStickyFooter: Boolean(footer)
|
|
326
387
|
});
|
|
327
388
|
const extendedOtherProps = submenuContext ? submenuContext.getSubmenuListProps(otherProps) : otherProps;
|
|
328
|
-
return(/*#__PURE__*/ $
|
|
389
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsxs($6ZrLO$contentfulf36popover.Popover.Content, {
|
|
329
390
|
role: "menu",
|
|
330
391
|
...extendedOtherProps,
|
|
331
392
|
...getMenuListProps(extendedOtherProps, ref),
|
|
332
393
|
className: $6ZrLO$emotion.cx(styles.container, className),
|
|
333
|
-
testId: testId
|
|
334
|
-
|
|
394
|
+
testId: testId,
|
|
395
|
+
children: [
|
|
396
|
+
header,
|
|
397
|
+
items,
|
|
398
|
+
footer
|
|
399
|
+
]
|
|
400
|
+
}));
|
|
335
401
|
};
|
|
336
402
|
const $c5bfee6901fd5b47$export$d4c4e98c5044dc8 = /*#__PURE__*/ $parcel$interopDefault($6ZrLO$react).forwardRef($c5bfee6901fd5b47$var$_MenuList);
|
|
337
403
|
|
|
@@ -345,6 +411,7 @@ const $c5bfee6901fd5b47$export$d4c4e98c5044dc8 = /*#__PURE__*/ $parcel$interopDe
|
|
|
345
411
|
|
|
346
412
|
|
|
347
413
|
|
|
414
|
+
|
|
348
415
|
const $f099c69f76c1082f$export$adaad53e003c74d0 = ()=>{
|
|
349
416
|
return {
|
|
350
417
|
root: /*#__PURE__*/ $6ZrLO$emotion.css({
|
|
@@ -397,15 +464,16 @@ function $01d29448a29c05b3$var$_MenuItem(props, ref) {
|
|
|
397
464
|
focusMenuItem
|
|
398
465
|
]);
|
|
399
466
|
const Element = as !== null && as !== void 0 ? as : $01d29448a29c05b3$var$MENU_ITEM_DEFAULT_TAG;
|
|
400
|
-
return(/*#__PURE__*/ $
|
|
467
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx(Element, {
|
|
401
468
|
role: "menuitem",
|
|
402
469
|
...otherProps,
|
|
403
470
|
...getMenuItemProps(otherProps),
|
|
404
471
|
className: $6ZrLO$emotion.cx(styles.root, className),
|
|
405
472
|
"data-test-id": itemTestId,
|
|
406
473
|
ref: $6ZrLO$contentfulf36core.mergeRefs(itemRef, ref),
|
|
407
|
-
tabIndex: -1
|
|
408
|
-
|
|
474
|
+
tabIndex: -1,
|
|
475
|
+
children: props.children
|
|
476
|
+
}));
|
|
409
477
|
}
|
|
410
478
|
const $01d29448a29c05b3$export$2ce376c2cc3355c8 = /*#__PURE__*/ $parcel$interopDefault($6ZrLO$react).forwardRef($01d29448a29c05b3$var$_MenuItem);
|
|
411
479
|
|
|
@@ -413,13 +481,16 @@ const $01d29448a29c05b3$export$2ce376c2cc3355c8 = /*#__PURE__*/ $parcel$interopD
|
|
|
413
481
|
|
|
414
482
|
|
|
415
483
|
|
|
484
|
+
|
|
416
485
|
const $57a0b88402c05a1e$export$27d2ad3c5815583e = (props)=>{
|
|
417
486
|
const child = $parcel$interopDefault($6ZrLO$react).Children.only(props.children);
|
|
418
487
|
const { getTriggerProps: getTriggerProps } = $31bc1b2a74a830dc$export$21c7ab35b39f78ec();
|
|
419
|
-
return(/*#__PURE__*/ $
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
488
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($6ZrLO$contentfulf36popover.Popover.Trigger, {
|
|
489
|
+
children: /*#__PURE__*/ $parcel$interopDefault($6ZrLO$react).cloneElement(child, {
|
|
490
|
+
...getTriggerProps(child.props, child.ref),
|
|
491
|
+
['aria-haspopup']: 'menu'
|
|
492
|
+
})
|
|
493
|
+
}));
|
|
423
494
|
};
|
|
424
495
|
|
|
425
496
|
|
|
@@ -427,6 +498,7 @@ const $57a0b88402c05a1e$export$27d2ad3c5815583e = (props)=>{
|
|
|
427
498
|
|
|
428
499
|
|
|
429
500
|
|
|
501
|
+
|
|
430
502
|
const $f85a558bae23a8bd$export$4605da6f9a8ef405 = ()=>/*#__PURE__*/ $6ZrLO$emotion.css({
|
|
431
503
|
border: 'none',
|
|
432
504
|
width: '100%',
|
|
@@ -440,7 +512,7 @@ const $f85a558bae23a8bd$export$4605da6f9a8ef405 = ()=>/*#__PURE__*/ $6ZrLO$emoti
|
|
|
440
512
|
const $a8d7f8a94ad9b120$export$acb07b4664ac227c = (props)=>{
|
|
441
513
|
const { children: children , testId: testId = 'cf-ui-menu-divider' , className: className , ...otherProps } = props;
|
|
442
514
|
const styles = $f85a558bae23a8bd$export$4605da6f9a8ef405();
|
|
443
|
-
return(/*#__PURE__*/ $
|
|
515
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx("hr", {
|
|
444
516
|
"aria-orientation": "horizontal",
|
|
445
517
|
"data-test-id": testId,
|
|
446
518
|
className: $6ZrLO$emotion.cx(styles, className),
|
|
@@ -453,6 +525,7 @@ const $a8d7f8a94ad9b120$export$acb07b4664ac227c = (props)=>{
|
|
|
453
525
|
|
|
454
526
|
|
|
455
527
|
|
|
528
|
+
|
|
456
529
|
const $80d81cb0da14b65a$export$2698fa8b3a0a79e6 = ()=>/*#__PURE__*/ $6ZrLO$emotion.css({
|
|
457
530
|
textAlign: 'left',
|
|
458
531
|
padding: `${$parcel$interopDefault($6ZrLO$contentfulf36tokens).spacingXs} ${$parcel$interopDefault($6ZrLO$contentfulf36tokens).spacingM}`,
|
|
@@ -468,7 +541,7 @@ const $80d81cb0da14b65a$export$2698fa8b3a0a79e6 = ()=>/*#__PURE__*/ $6ZrLO$emoti
|
|
|
468
541
|
const $a9e47e1a6fcc6dbc$export$5d1e6c648985631e = (props)=>{
|
|
469
542
|
const { children: children , testId: testId = 'cf-ui-menu-section-title' , className: className , ...otherProps } = props;
|
|
470
543
|
const styles = $80d81cb0da14b65a$export$2698fa8b3a0a79e6();
|
|
471
|
-
return(/*#__PURE__*/ $
|
|
544
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($6ZrLO$contentfulf36typography.SectionHeading // Techincally, menus cannot contain headings according to ARIA.
|
|
472
545
|
, {
|
|
473
546
|
// We hide the heading from assistive technology, and only use it
|
|
474
547
|
// as a label
|
|
@@ -476,8 +549,9 @@ const $a9e47e1a6fcc6dbc$export$5d1e6c648985631e = (props)=>{
|
|
|
476
549
|
testId: testId,
|
|
477
550
|
className: $6ZrLO$emotion.cx(styles, className),
|
|
478
551
|
marginBottom: "none",
|
|
479
|
-
...otherProps
|
|
480
|
-
|
|
552
|
+
...otherProps,
|
|
553
|
+
children: children
|
|
554
|
+
}));
|
|
481
555
|
};
|
|
482
556
|
|
|
483
557
|
|
|
@@ -486,6 +560,7 @@ const $a9e47e1a6fcc6dbc$export$5d1e6c648985631e = (props)=>{
|
|
|
486
560
|
|
|
487
561
|
|
|
488
562
|
|
|
563
|
+
|
|
489
564
|
const $d1c454a08dd2b04a$var$SUBMENU_OFFSET = [
|
|
490
565
|
-8,
|
|
491
566
|
2
|
|
@@ -573,18 +648,19 @@ const $d1c454a08dd2b04a$export$49229ebf838c159b = (props)=>{
|
|
|
573
648
|
handleOpen,
|
|
574
649
|
closeAndFocusTrigger
|
|
575
650
|
]);
|
|
576
|
-
return(/*#__PURE__*/ $
|
|
577
|
-
value: contextValue
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
651
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($62b35dc82bb7def8$export$81b3dbd1f003f0c7, {
|
|
652
|
+
value: contextValue,
|
|
653
|
+
children: /*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($453ff7c40e833219$export$d9b273488cd8ce6f, {
|
|
654
|
+
...propsToPropagateToSubmenus,
|
|
655
|
+
...otherProps,
|
|
656
|
+
isOpen: isOpen,
|
|
657
|
+
onClose: handleClose,
|
|
658
|
+
onOpen: handleOpen,
|
|
659
|
+
placement: "right-start",
|
|
660
|
+
offset: $d1c454a08dd2b04a$var$SUBMENU_OFFSET,
|
|
661
|
+
isAutoalignmentEnabled: false
|
|
662
|
+
})
|
|
663
|
+
}));
|
|
588
664
|
};
|
|
589
665
|
|
|
590
666
|
|
|
@@ -596,6 +672,7 @@ const $d1c454a08dd2b04a$export$49229ebf838c159b = (props)=>{
|
|
|
596
672
|
|
|
597
673
|
|
|
598
674
|
|
|
675
|
+
|
|
599
676
|
const $440a5860c5fbe4e7$export$ce276565acbba1c9 = ()=>{
|
|
600
677
|
return {
|
|
601
678
|
root: ({ isActive: isActive })=>/*#__PURE__*/ $6ZrLO$emotion.css({
|
|
@@ -623,17 +700,24 @@ const $68e427819b978177$var$_SubmenuTrigger = (props, ref)=>{
|
|
|
623
700
|
const { className: className , children: children } = props;
|
|
624
701
|
const { getSubmenuTriggerProps: getSubmenuTriggerProps , isOpen: isOpen } = $62b35dc82bb7def8$export$958673a266cbe049();
|
|
625
702
|
const styles = $440a5860c5fbe4e7$export$ce276565acbba1c9();
|
|
626
|
-
return(/*#__PURE__*/ $
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
703
|
+
return(/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($57a0b88402c05a1e$export$27d2ad3c5815583e, {
|
|
704
|
+
children: /*#__PURE__*/ $6ZrLO$reactjsxruntime.jsxs($01d29448a29c05b3$export$2ce376c2cc3355c8, {
|
|
705
|
+
...props,
|
|
706
|
+
...getSubmenuTriggerProps(props, ref),
|
|
707
|
+
className: $6ZrLO$emotion.cx(styles.root({
|
|
708
|
+
isActive: isOpen
|
|
709
|
+
}), className),
|
|
710
|
+
children: [
|
|
711
|
+
/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx("span", {
|
|
712
|
+
className: styles.content,
|
|
713
|
+
children: children
|
|
714
|
+
}),
|
|
715
|
+
/*#__PURE__*/ $6ZrLO$reactjsxruntime.jsx($6ZrLO$contentfulf36icons.ChevronRightIcon, {
|
|
716
|
+
className: styles.icon
|
|
717
|
+
})
|
|
718
|
+
]
|
|
719
|
+
})
|
|
720
|
+
}));
|
|
637
721
|
};
|
|
638
722
|
const $68e427819b978177$export$ecabc99eeffab7ca = /*#__PURE__*/ $parcel$interopDefault($6ZrLO$react).forwardRef($68e427819b978177$var$_SubmenuTrigger);
|
|
639
723
|
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGwBA,KAAA,CAAMuH,iCAAW,GAAG5F,oCAAK,CAAC6F,aAAa,CAA8BL,SAAjD;AAEb,KAAA,CAAMM,yCAAc,OAAS,CAApC;IACE,KAAA,CAAMC,OAAO,GAAG/F,oCAAK,CAACgG,UAAN,CAAiBJ,iCAAjB;IAEhB,EAAA,EAAIG,OAAO,KAAKP,SAAhB,EACE,KAAA,CAAM,GAAA,CAAIS,KAAJ,CAAU,CAAV;IAGR,MAAA,CAAOF,OAAP;AACD,CARM;AAUA,KAAA,CAAMpF,yCAAmB,GAAGiF,iCAAW,CAACM,QAAxC;;;ADxBP,KAAA,CAAMrF,yCAAmB,GAAG,CAA5B;SAyDgBxC,yCAAT,CAAciD,KAAd,EAAgC,CAAvC;IACE,KAAA,CAAM,CAAN,gBACEH,aAAa,GAAG,IADZ,gBAEJC,WAAW,GAAG,IAFV,eAGJC,UAAU,GAAG,IAHT,aAIJE,QAJI,WAKJN,MALI,MAMDO,UAAH,CANI,CAAA,GAOFF,KAPJ;IAQA,KAAA,CAAM,CAAN,SAAQP,MAAF,eAAUU,UAAV,gBAAsBC,WAAtB,iBAAmCC,YAAAA,EAAnC,CAAA,GAAoDC,sCAAgB,CACxEN,KADwE;IAI1E,KAAA,CAAMO,UAAU,GAAGzB,mBAAM,CAAoB,IAApB;IACzB,KAAA,CAAM2B,WAAW,GAAG3B,mBAAM,CAAiB,IAAjB;IAE1B,KAAA,CAAM6B,MAAM,GAAG1B,8BAAK,CAAC,IAAD,EAAO,CAAP;IAEpB,KAAA,CAAM,CAAN,eACE2B,YADI,wBAEJC,mBAFI,oBAGJC,eAAAA,EAHI,CAAA,GAIF5B,+CAAqB,CAAC,CAJpB;QAKJ6B,iBAAiB,EAAEN,WADK;QAExBO,aAAa,EAAEzB,yCAAfyB;IAFwB,CAAD;IAKzBjC,sBAAS,KAAO,CAAhBA;QACE,EAAA,EAAIU,MAAM,IAAIgB,WAAW,CAACQ,OAA1B,EAAmC,CAAnC;YACE,KAAA,CAAMC,SAAS,GAAGT,WAAW,CAACQ,OAAZ,CAAoBE,gBAApB,CAChB5B,yCADgB;YAIlB,EAAA,EAAI2B,SAAS,CAACE,MAAV,GAAmB,CAAnB,IAAwBR,YAAY,GAAGM,SAAS,CAACE,MAArD,EACE,EAAA,AAAA,6CAAA;YACA,EAAA,AAAA,sEAAA;YACAC,UAAU,KAAO,CAAjBA;gBACGH,SAAS,CAACN,YAAD,EAA+BW,KAAzC,CAA+C,CAA/C;oBACEC,aAAa,EAAE,KAAfA;gBAD6C,CAA/C;YAGD,CAJS,EAIP,CAJO;QAMb,CAAA;IACF,CAhBQ,EAgBN,CAAC/B;QAAAA,MAAD;QAASmB,YAAT;IAAA,CAhBM;IAkBT,KAAA,CAAMa,aAAa,GAAG7C,wBAAW,EAC9B8C,IAAD,GAAuB,CADzB;QAEI,KAAA,CAAMR,SAAS,GAAGT,WAAW,CAACQ,OAAZ,CAAoBE,gBAApB,CAChB5B,yCADgB;QAIlB,KAAA,CAAMoC,SAAS,GAAG,CAAC;eAAGT,SAAJ;QAAA,CAAA,CAAeU,SAAf,EACfC,QAAD,GAAcH,IAAI,KAAKG,QADP;;QAIlB,EAAA,EAAIF,SAAS,KAAK,EAAlB,EACEb,eAAe,CAACa,SAAD;IAElB,CAb8B,EAc/B,CAACb;QAAAA,eAAD;IAAA,CAd+B;IAiBjC,KAAA,CAAMgB,oBAAoB,GAAGlD,wBAAW,KAAO,CAA/C;YAEE2B,GAAA;QADAH,WAAW;SACXG,GAAA,GAAAA,UAAU,CAACU,OAAX,cAAAV,GAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,GAAA,CAAoBgB,KAApB,CAA0B,CAA1BhB;YAA4BiB,aAAa,EAAE,IAAfA;QAAF,CAA1B;IACD,CAHuC,EAGrC,CAACpB;QAAAA,WAAD;IAAA,CAHqC;IAKxC,KAAA,CAAM2B,qBAAqB,GAAGnD,wBAAW,EACtCoD,KAAD,GAAgC,CADlC;QAEI,EAAA,EAAIA,KAAK,CAACE,GAAN,KAAc,CAAlB,MAAyB,CAAzB;YACEF,KAAK,CAACG,cAAN;YACAL,oBAAoB;YACpB,MAAA;QACD,CAL6B,AAO9B,CAFC,AAED,EAFC,AAED,6DAFC;QAGDE,KAAK,CAACI,eAAN;QAEA,EAAA,EAAIJ,KAAK,CAACE,GAAN,KAAc,CAAlB,YAA+B,CAA/B;YACEF,KAAK,CAACG,cAAN;YACAL,oBAAoB;YACpB,MAAA;QACD,CAAA;QAEDjB,mBAAmB,CAACmB,KAAD;IACpB,CAlBsC,EAmBvC,CAACF;QAAAA,oBAAD;QAAuBjB,mBAAvB;IAAA,CAnBuC;IAsBzC,KAAA,CAAMwB,YAAY,GAAoBxD,oBAAO;eACpC,CADT;oBAEIY,MADK;oBAELkB,MAFK;2BAGLc,aAHK;YAILa,eAAe,GAAGC,MAAM,GAAG,CAAA;YAAA,CAAV,EAAcC,IAAI,GAAG,IAArB;uBAA+B,CAAhDF;oBACEG,OAAO,GAAGT,KAAD,GAAW,CAApBS;4BAcEF,GAAA;wBAbA,EAAA,AAAA,+DAAA;wBACA,EAAA,AAAA,+DAAA;wBACA,EAAA,AAAA,0EAAA;wBACA,KAAA,CAAMG,iBAAiB,GAAGrC,YAAY,KAAKV,MAA3C;wBAEA,EAAA,GAAK+C,iBAAL;4BACE,EAAA,EAAIjD,MAAJ,EACEW,WAAW;iCAEXD,UAAU;;yBAIdoC,GAAA,GAAAA,MAAM,CAACE,OAAP,cAAAF,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAWP,KAAjB;oBACD,CAhB6C;oBAiB9CW,GAAG,EAAE3D,kCAAS,CAACuB,UAAD,EAAaiC,IAAb;gBAjBgC,CAA/B;;YAmBjBI,gBAAgB,GAAGL,MAAM,GAAG,CAAA;YAAA,CAAV,EAAcC,IAAI,GAAG,IAArB;uBAA+B,CAAjDI;oBACED,GAAG,EAAE3D,kCAAS,CAACyB,WAAD,EAAc+B,IAAd;oBACdK,SAAS,GAAGb,KAAD,GAAW,CAAtBa;4BAEEN,GAAA;wBADAR,qBAAqB,CAACC,KAAD;yBACrBO,GAAA,GAAAA,MAAM,CAACM,SAAP,cAAAN,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAaP,KAAnB;oBACD,CAL8C;oBAM/Cc,MAAM,GAAGd,KAAD,GAAW,CAAnBc;4BACEP,GAAA,EAUE9B,IAAA,EAGAF,IAAA,EAEAwC,IAAA;yBAfFR,GAAA,GAAAA,MAAM,CAACO,MAAP,cAAAP,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAUP,KAAhB;wBAEA,EAAA,GAAKlC,WAAL,EACE,MAAA;wBAGF,KAAA,CAAMiD,aAAa,GAAGf,KAAK,CAACe,aAAN;wBAEtB,KAAA,CAAME,YAAY,GAChBxC,WAAW,CAACQ,OAAZ,KAAwB8B,aAAxB,MACAtC,IAAA,GAAAA,WAAW,CAACQ,OAAZ,cAAAR,IAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAA,CAAqByC,QAArB,CAA8BH,aAA9B;wBACF,KAAA,CAAMI,eAAe,GACnB5C,UAAU,CAACU,OAAX,KAAuB8B,aAAvB,MACAxC,IAAA,GAAAA,UAAU,CAACU,OAAX,cAAAV,IAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAA,CAAoB2C,QAApB,CAA6BH,aAA7B;wBACF,KAAA,CAAMK,eAAe,IACnBL,aAAa,aAAbA,aAAa,KAAbA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,IAAAA,IAAA,GAAAA,aAAa,CAAEM,aAAf,cAAAN,IAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAA,CAA8BO,OAA9B,CAAsCC,UAAtC,MAAqD5C,MADvD;wBAGA,EAAA,EAAIsC,YAAY,IAAIE,eAAhB,IAAmCC,eAAvC,EAAwD,CAAxD;4BACEpB,KAAK,CAACI,eAAN;4BACA,MAAA;wBACD,CAAA;wBAEDhC,WAAW;oBACZ,CAAA;gBA9B8C,CAA/B;;YAgClBoD,gBAAgB,GAAGjB,MAAM,GAAG,CAAA;YAAA,CAAV;uBAAkB,CAApCiB;oBACEf,OAAO,GAAGT,KAAD,GAAW,CAApBS;4BACEF,GAAA;yBAAAA,GAAA,GAAAA,MAAM,CAACE,OAAP,cAAAF,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAWP,KAAjB;wBAEA,KAAA,CAAMyB,gBAAgB,GAAGC,OAAO,CAC7B1B,KAAK,CAAC2B,MAAN,CAA6BC,YAA9B,CAA2C,CAA3C;wBAEF,EAAA,EAAI/D,aAAa,KAAK4D,gBAAtB,EACE3B,oBAAoB;oBAEvB,CAAA;gBAViC,CAAlB;;YAYlB+B,0BAA0B,EAAE,CAA5BA;+BACEhE,aAD0B;6BAE1BC,WAF0B;4BAG1BC,UAAAA;YAH0B,CAAA;QAnEvB,CAAP;OAyEA,CACEY;QAAAA,MADF;QAEElB,MAFF;QAGEsC,qBAHF;QAIElC,aAJF;QAKEO,WALF;QAMED,UANF;QAOEsB,aAPF;QAQE3B,WARF;QASEC,UATF;QAUE+B,oBAVF;QAWEzB,YAXF;QAYEV,MAZF;IAAA,CA1E2C;IA0F7C,MAAA,kEACG,yCAAD;QAAqB,KAAA,EAAO0C,YAAD;wEACxB,mCAAD;WACMnC,UAAJ;QACA,MAAA,EAAQT,MAAD;QACP,OAAA,EAASW,WAAD;QACR,EAAA,EAAIO,MAAD;QACH,UAAA,EAAYZ,UAAD;QAEX,SAAA,EAAW,KAAD;QACV,WAAA,EAAa,KAAD;OAEXE,QAAD;AAIP,CAAA;AAOD,KAAA,CAAMK,sCAAgB,IAAIN,KAAD,GAAkC,CAA3D;IACE,KAAA,CAAM,CAAN,SAAQP,MAAF,kBAAUC,aAAV,WAAyBC,MAAzB,YAAiCC,OAAAA,EAAjC,CAAA,GAA6CI,KAAnD;IACA,KAAA,EAAOgE,WAAD,EAAcC,SAAd,IAA2BtF,qBAAQ,CAACe,aAAa,IAAI,KAAlB;IAEzC,KAAA,CAAMW,YAAY,GAAGZ,MAAM,KAAKyE,SAAhC;IACA,KAAA,CAAMC,WAAW,GAAG9D,YAAY,GAAGZ,MAAH,GAAYuE,WAA5C;IAEA,KAAA,CAAM5D,WAAW,GAAGxB,wBAAW,KAAO,CAAtC;QACE,EAAA,GAAKyB,YAAL,EACE4D,SAAS,CAAC,KAAD;QAEXrE,OAAO,aAAPA,OAAO,KAAPA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,OAAO;IACR,CAL8B,EAK5B,CAACS;QAAAA,YAAD;QAAeT,OAAf;IAAA,CAL4B;IAO/B,KAAA,CAAMO,UAAU,GAAGvB,wBAAW,KAAO,CAArC;QACE,EAAA,GAAKyB,YAAL,EACE4D,SAAS,CAAC,IAAD;QAEXtE,MAAM,aAANA,MAAM,KAANA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,MAAM;IACP,CAL6B,EAK3B,CAACU;QAAAA,YAAD;QAAeV,MAAf;IAAA,CAL2B;IAO9B,MAAA,CAAO,CAAP;QAASF,MAAM,EAAE0E,WAAV;sBAAuB9D,YAAvB;qBAAqCD,WAArC;oBAAkDD,UAAAA;IAAlD,CAAP;AACD,CAtBD;;;;;;;AGlQA,KAAA,CAAM0G,oCAAc,GAAGnI,oCAAK,CAAC6F,aAAa,CACxCL,SADqB;AAIhB,KAAA,CAAMa,yCAAiB,OAAS,CAAvC;IACE,KAAA,CAAMN,OAAO,GAAG/F,oCAAK,CAACgG,UAAN,CAAiBmC,oCAAjB;IAChB,MAAA,CAAOpC,OAAP;AACD,CAHM;AAKA,KAAA,CAAMqC,yCAAsB,GAAGD,oCAAc,CAACjC,QAA9C;;;;;;ACnBA,KAAA,CAAMoC,yCAAmB,OAAS,CAAzC;IACE,MAAA,CAAA,EAAO,AAAP,SAAO,AAAP,EAAO,CAAA,kBAAA,CAAI,CAAX;QACEC,QAAQ,EAAE,CADD;QAETC,GAAG,EAAE,CAFI;QAGTC,IAAI,EAAE,CAHG;QAITC,eAAe,EAAEL,kDAAM,CAACM,UAJf;QAKTC,YAAY,GAAG,UAAA,EAAYP,kDAAM,CAACQ,OAAQ;QAC1CC,OAAO,KAAKT,kDAAM,CAACU,SAAU,CAAA,EAAA;QAC7BC,MAAM,EAAE,IAARA;IAPS,CAAJ;AASR,CAVM;AAYA,KAAA,CAAMC,wCAAmB,OAAS,CAAzC;IACE,MAAA,CAAA,EAAO,AAAP,SAAO,AAAP,EAAO,CAAA,kBAAA,CAAI,CAAX;QACEV,QAAQ,EAAE,CADD;QAETW,MAAM,EAAE,CAFC;QAGTT,IAAI,EAAE,CAHG;QAITC,eAAe,EAAEL,kDAAM,CAACM,UAJf;QAKTQ,SAAS,GAAG,UAAA,EAAYd,kDAAM,CAACQ,OAAQ;QACvCC,OAAO,KAAKT,kDAAM,CAACU,SAAU,CAAA,EAAA;QAC7BC,MAAM,EAAE,IAARA;IAPS,CAAJ;AASR,CAVM;AAYA,KAAA,CAAM1C,yCAAiB,IAAIhF,KAAD,IAG1B,CAHkC;QAIvCwG,SAAS,EAAA,EAAE,AAAF,SAAE,AAAF,EAAE,CAAA,kBAAA,CAAI,CAAfA;YACEsB,SAAS,EAAE,CADE;YAEbb,QAAQ,EAAE,CAFG;YAGbO,OAAO,EAAE,CAHI;YAIbO,UAAU,EAAE/H,KAAK,CAACoG,eAAN,GAAwB,CAAxB,GAA4BW,kDAAM,CAACU,SAJlC;YAKbO,aAAa,EAAEhI,KAAK,CAACqG,eAAN,GAAwB,CAAxB,GAA4BU,kDAAM,CAACU,SAAlDO;QALa,CAAJ;IADN,CAH0B;;;;;;;ACnB1B,KAAA,CAAMhK,yCAAc,IAAmCgC,KAAD,GAAW,CAAxE;IACE,KAAA,CAAM,CAAN,WACEC,QADI,WAEJuF,MAAM,GAAG,CAFL,qCAGJC,SAHI,MAIDvF,UAAH,CAJI,CAAA,GAKFF,KALJ;IAOA,KAAA,CAAMmG,MAAM,GAAGa,yCAAmB;IAElC,MAAA,kEACG,CAAD;QACE,CAAA,eAAcxB,MAAD;QACb,SAAA,EAAW,iBAAA,CAAGW,MAAH,EAAWV,SAAX;WACPvF,UAAJ;OAECD,QAAD;AAGL,CAnBM;AAqBPjC,yCAAc,CAACsH,WAAf,GAA6B,CAA7B;;;;;;ACrBO,KAAA,CAAMrH,yCAAc,IAAmC+B,KAAD,GAAW,CAAxE;IACE,KAAA,CAAM,CAAN,WACEC,QADI,WAEJuF,MAAM,GAAG,CAFL,qCAGJC,SAHI,MAIDvF,UAAH,CAJI,CAAA,GAKFF,KALJ;IAOA,KAAA,CAAMmG,MAAM,GAAGwB,wCAAmB;IAElC,MAAA,kEACG,CAAD;QACE,CAAA,eAAcnC,MAAD;QACb,SAAA,EAAW,iBAAA,CAAGW,MAAH,EAAWV,SAAX;WACPvF,UAAJ;OAECD,QAAD;AAGL,CAnBM;AAqBPhC,yCAAc,CAACqH,WAAf,GAA6B,CAA7B;;;SJfSH,iCAAT,CAAqBC,KAArB,EAA6E,CAAlC;QAC1BA,GAAA;IAAf,MAAA,CAAO1B,OAAO,CAAC0B,KAAK,aAALA,KAAK,KAALA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,IAAAA,GAAA,GAAAA,KAAK,CAAEC,IAAP,cAAAD,GAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,GAAA,CAAaE,WAAd;AACf,CAAA;AAID,KAAA,CAAMC,+BAAS,IAAIvF,KAAD,EAAuB2C,GAAvB,GAA0D,CAA5E;IACE,KAAA,CAAM,CAAN,WACE1C,QADI,WAEJuF,MAAM,GAAG,CAFL,8BAGJC,SAHI,MAIDvF,UAAH,CAJI,CAAA,GAKFF,KALJ;IAOA,KAAA,CAAM,CAAN,mBAAQ4C,gBAAAA,EAAF,CAAA,GAAuB4B,yCAAc;IAC3C,KAAA,CAAMkB,cAAc,GAAGX,yCAAiB;IAExC,GAAA,CAAIY,MAAM,GAA8B,IAAxC;IACA,GAAA,CAAIE,MAAM,GAA8B,IAAxC;IACA,KAAA,CAAMC,KAAK,GAAyB,CAAA,CAApC;IAEApH,oCAAK,CAACqH,QAAN,CAAeC,OAAf,CAAuB/F,QAAvB,GAAkCmF,KAAD,GAAW,CAA5C1G;QACE,GAAA,CAAIuH,WAAW,GAAG,IAAlB;QACA,EAAA,EAAId,iCAAW,CAACC,KAAD,GAAS,CAAxB;YACE,EAAA,EAAIA,KAAK,CAACC,IAAN,CAAWC,WAAX,KAA2BtH,yCAAc,CAACsH,WAA9C,EAA2D,CAA3D;gBACEK,MAAM,GAAIP,KAAK;gBACfa,WAAW,GAAG,KAAd;YACD,CAHD,MAGO,EAAA,EAAIb,KAAK,CAACC,IAAN,CAAWC,WAAX,KAA2BrH,yCAAc,CAACqH,WAA9C,EAA2D,CAAjE;gBACCO,MAAM,GAAIT,KAAK;gBACfa,WAAW,GAAG,KAAd;YACD,CAAA;QACF,CAAA;QACD,EAAA,EAAIA,WAAJ,EACEH,KAAK,CAACI,IAAN,CAAYd,KAAK;IAEpB,CAdD;IAgBA,KAAA,CAAMe,MAAM,GAAGnB,yCAAiB,CAAC,CAAjC;QACEoB,eAAe,EAAE1C,OAAO,CAACiC,MAAD;QACxBU,eAAe,EAAE3C,OAAO,CAACmC,MAAD;IAFO,CAAD;IAKhC,KAAA,CAAMS,kBAAkB,GAAGZ,cAAc,GACrCA,cAAc,CAACa,mBAAf,CAAmCrG,UAAnC,IACAA,UAFJ;IAIA,MAAA,kEACG,mCAAA,CAAQ,OAAT;QACE,IAAA,EAAK,CADP;WAEMoG,kBAAJ;WACI1D,gBAAgB,CAAC0D,kBAAD,EAAqB3D,GAArB;QACpB,SAAA,EAAW,iBAAA,CAAGwD,MAAM,CAACK,SAAV,EAAqBf,SAArB;QACX,MAAA,EAAQD,MAAD;OAENG,MAAD,EACCG,KAAD,EACCD,MAAD;AAGL,CArDD;AAuDO,KAAA,CAAM5I,wCAAQ,iBAAGyB,oCAAK,CAAC+H,UAAN,CAAiBlB,+BAAjB;;;;;;;;;;;;AMxEjB,KAAA,CAAM+C,yCAAiB,OAAS,CAAvC;IACE,MAAA,CAAO,CAAP;QACEY,IAAI,EAAA,EAAE,AAAF,SAAE,AAAF,EAAE,CAAA,kBAAA,CAAI,CAAVA;YACEC,OAAO,EAAE,CADD;YAERC,KAAK,EAAE,CAFC;YAGRC,UAAU,EAAE,CAHJ;YAIRC,MAAM,EAAE,CAJA;YAKRC,MAAM,EAAE,CALA;YAMRC,OAAO,EAAE,CAND;YAORC,QAAQ,EAAE1C,kDAAM,CAAC2C,SAPT;YAQRC,UAAU,EAAE5C,kDAAM,CAAC6C,WARX;YASRC,UAAU,EAAE9C,kDAAM,CAAC+C,gBATX;YAUR7C,QAAQ,EAAE,CAVF;YAWR8C,SAAS,EAAE,CAXH;YAYRvC,OAAO,KAAKT,kDAAM,CAACU,SAAU,CAAA,CAAA,EAAGV,kDAAM,CAACiD,QAAS;YAChDC,SAAS,EAAE,CAbH;YAcRC,UAAU,EAAE,CAdJ;YAeRC,MAAM,EAAE,CAfA;YAgBRC,OAAO,EAAE,CAhBD;YAiBRC,QAAQ,EAAE,CAjBF;YAkBRC,cAAc,EAAE,CAlBR;YAmBRC,KAAK,EAAExD,kDAAM,CAACyD,OAnBN;YAqBR,CAAA,mBAAoB,CAApB;gBACEpD,eAAe,EAAEL,kDAAM,CAAC0D,OAAxBrD;YADkB,CArBZ;YAwBR,CAAA,WAAY,CAAZ;gBACEA,eAAe,EAAEL,kDAAM,CAAC2D,OAAxBtD;YADU,CAxBJ;YA2BR,CAAA,aAAc,CAAd;gBACEuD,OAAO,EAAE,GADG;gBAEZR,MAAM,EAAE,CAARA;YAFY,CAAA;QA3BN,CAAJ;IADD,CAAP;AAkCD,CAnCM;;;ADSP,KAAA,CAAM5B,2CAAqB,GAAG,CAA9B;SAgBSM,+BAAS,CAChB7I,KADF,EAEE2C,GAFF,EAGE,CAHF;IAIE,KAAA,CAAM,CAAN,SAAQ6C,MAAF,cAAUC,SAAV,OAAqBgD,EAArB,uBAAyBC,kBAAzB,MAAgDxI,UAAH,CAA7C,CAAA,GAA+DF,KAArE;IAEA,KAAA,CAAM8I,EAAE,GAAG7J,8BAAK,CAAC,IAAD,EAAO,CAAP;IAChB,KAAA,CAAM8J,UAAU,GAAGvD,MAAM,KAAK,MAAA,EAAQsD,EAAG;IACzC,KAAA,CAAM3C,MAAM,GAAGmC,yCAAiB;IAEhC,KAAA,CAAM,CAAN,mBAAQ9E,gBAAF,kBAAoB/B,aAAAA,EAApB,CAAA,GAAsC+C,yCAAc;IAE1D,KAAA,CAAMwE,OAAO,GAAGlK,mBAAM,CAAc,IAAd;IACtBC,sBAAS,KAAO,CAAhBA;QACE,EAAA,EAAI2J,kBAAkB,IAAIM,OAAO,CAAC/H,OAAlC,EACEQ,aAAa,CAACuH,OAAO,CAAC/H,OAAT;IAEhB,CAJQ,EAIN,CAACyH;QAAAA,kBAAD;QAAqBjH,aAArB;IAAA,CAJM;IAMT,KAAA,CAAMwH,OAAO,GAAIR,EAAE,aAAFA,EAAE,cAAFA,EAAE,GAAIF,2CAAP;IAEhB,MAAA,kEACG,OAAD;QACE,IAAA,EAAK,CADP;WAEMrI,UAAJ;WACIsD,gBAAgB,CAACtD,UAAD;QACpB,SAAA,EAAW,iBAAA,CAAGiG,MAAM,CAAC+C,IAAV,EAAgBzD,SAAhB;QACX,CAAA,eAAcsD,UAAD;QACb,GAAA,EAAK/J,kCAAS,CAACgK,OAAD,EAAUrG,GAAV;QACd,QAAA,EAAU,EAAD;OAER3C,KAAK,CAACC,QAAP;AAGL,CAAA;AAEM,KAAA,CAAM9C,yCAAQ,iBAGjBuB,oCAAK,CAAC+H,UAAN,CAAiBoC,+BAAjB;;;;;;AE3DG,KAAA,CAAMxL,yCAAW,IAAI2C,KAAD,GAA6B,CAAxD;IACE,KAAA,CAAMoF,KAAK,GAAG1G,oCAAK,CAACqH,QAAN,CAAe6E,IAAf,CAAoB5K,KAAK,CAACC,QAA1B;IACd,KAAA,CAAM,CAAN,kBAAQqC,eAAAA,EAAF,CAAA,GAAsBkC,yCAAc;IAE1C,MAAA,kEACG,mCAAA,CAAQ,OAAT,sBACG9F,oCAAK,CAACmM,YAAN,CAAmBzF,KAAnB,EAA0B,CAAA;WACtB9C,eAAe,CAAC8C,KAAK,CAACpF,KAAP,EAAcoF,KAAK,CAACzC,GAApB;SACjB,CAAD,iBAAmB,CAAnB;IAFyB,CAA1B;AAMN,CAZM;;;;;;;AELA,KAAA,CAAMmI,yCAAoB,OAAG,EAClC,AADkC,SAClC,AADkC,EAClC,CAAA,kBAAA,CAAI,CADN;QAEIxB,MAAM,EAAE,CADN;QAEFF,KAAK,EAAE,CAFL;QAGF2B,MAAM,EAAE,CAHN;QAIF1B,UAAU,EAAEtC,kDAAM,CAACQ,OAJjB;QAKFgC,MAAM,KAAKxC,kDAAM,CAACU,SAAU,CAA5B8B,EAAAA;IALE,CAAJ;;;;ADGK,KAAA,CAAMhM,yCAAW,IAAIyC,KAAD,GAA6B,CAAxD;IACE,KAAA,CAAM,CAAN,WACEC,QADI,WAEJuF,MAAM,GAAG,CAFL,iCAGJC,SAHI,MAIDvF,UAAH,CAJI,CAAA,GAKFF,KALJ;IAOA,KAAA,CAAMmG,MAAM,GAAG2E,yCAAoB;IAEnC,MAAA,kEACG,CAAD;QACE,CAAA,mBAAiB,CADnB;QAEE,CAAA,eAActF,MAAD;QACb,SAAA,EAAW,iBAAA,CAAGW,MAAH,EAAWV,SAAX;WACPvF,UAAJ;;AAGL,CAlBM;;;;;;;AGJA,KAAA,CAAM8K,yCAAyB,OAAG,EACvC,AADuC,SACvC,AADuC,EACvC,CAAA,kBAAA,CAAI,CADN;QAEIjB,SAAS,EAAE,CADT;QAEFvC,OAAO,KAAKT,kDAAM,CAACU,SAAU,CAAA,CAAA,EAAGV,kDAAM,CAACiD,QAAS;QAChDL,UAAU,EAAE5C,kDAAM,CAAC6C,WAHjB;QAKF,CAAA,SAAU,CAAV;YACEuB,SAAS,EAAE,CAAXA;QADQ,CAAA;IALR,CAAJ;;;;;ADMK,KAAA,CAAM1N,yCAAgB,IAAIuC,KAAD,GAAkC,CAAlE;IACE,KAAA,CAAM,CAAN,WACEC,QADI,WAEJuF,MAAM,GAAG,CAFL,uCAGJC,SAHI,MAIDvF,UAAH,CAJI,CAAA,GAKFF,KALJ;IAOA,KAAA,CAAMmG,MAAM,GAAG6E,yCAAyB;IAExC,MAAA,kEACG,6CACC,CAFJ,AAEI,EAFJ,AAEI,8DAFJ;;QAGI,EAAA,AAAA,+DAAA;QACA,EAAA,AAAA,WAAA;QACA,CAAA,cAAY,CAJd;QAKE,MAAA,EAAQxF,MAAD;QACP,SAAA,EAAW,iBAAA,CAAGW,MAAH,EAAWV,SAAX;QACX,YAAA,EAAa,CAPf;WAQMvF,UAAJ;OAECD,QAAD;AAGL,CAxBM;;;;;;;;AEEP,KAAA,CAAMmL,oCAAc,GAAqB,CAAC;IAAA,EAAD;IAAK,CAAL;AAAA,CAAzC;AAYO,KAAA,CAAMzN,yCAAO,IAAIqC,KAAD,GAAyB,CAAhD;IACE,KAAA,CAAM,CAAN,UAAQJ,OAAF,WAAWD,MAAX,MAAsBO,UAAH,CAAnB,CAAA,GAAqCF,KAA3C;IAEA,KAAA,CAAM,CAAN,CACEP,MAAM,EAAE4L,gBADJ,WAEJ1K,MAFI,+BAGJkD,0BAAAA,EAHI,CAAA,GAIFW,yCAAc;IAElB,KAAA,CAAMjE,UAAU,GAAGzB,mBAAM,CAAoB,IAApB;IACzB,KAAA,CAAMwM,kBAAkB,GAAGxM,mBAAM,CAAC,IAAD;IAEjC,KAAA,EAAOW,MAAD,EAASwE,SAAT,IAAsBtF,qBAAQ,CAAC,KAAD;IACpC,KAAA,CAAMwB,UAAU,GAAGvB,wBAAW,KAAO,CAArC;QACEqF,SAAS,CAAC,IAAD;QACTsH,MAAM,CAACC,YAAP,CAAoBF,kBAAkB,CAACrK,OAAvC;QAEAtB,MAAM,aAANA,MAAM,KAANA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,MAAM;IACP,CAL6B,EAK3B,CAACA;QAAAA,MAAD;IAAA,CAL2B;IAM9B,KAAA,CAAMS,WAAW,GAAGxB,wBAAW,KAAO,CAAtC;QACEqF,SAAS,CAAC,KAAD;QACTsH,MAAM,CAACC,YAAP,CAAoBF,kBAAkB,CAACrK,OAAvC;QAEArB,OAAO,aAAPA,OAAO,KAAPA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,OAAO;IACR,CAL8B,EAK5B,CAACA;QAAAA,OAAD;IAAA,CAL4B;IAM/B,KAAA,CAAMkC,oBAAoB,GAAGlD,wBAAW,KAAO,CAA/C;YAEE2B,GAAA;QADAH,WAAW;SACXG,GAAA,GAAAA,UAAU,CAACU,OAAX,cAAAV,GAAA,KAAAA,IAAAA,CAAAA,CAAA,GAAAA,IAAAA,CAAAA,CAAA,GAAAA,GAAA,CAAoBgB,KAApB,CAA0B,CAA1BhB;YAA4BiB,aAAa,EAAE,IAAfA;QAAF,CAA1B;IACD,CAHuC,EAGrC,CAACpB;QAAAA,WAAD;IAAA,CAHqC;IAKxCrB,sBAAS,KAAO,CAAhBA;QACE,EAAA,AAAA,8BAAA;QACA,EAAA,EAAIsM,gBAAgB,KAAK,KAAzB,EACEpH,SAAS,CAAC,KAAD;IAEZ,CALQ,EAKN,CAACoH;QAAAA,gBAAD;IAAA,CALM;IAOT,KAAA,CAAMhJ,YAAY,GAAuBxD,oBAAO;eACvC,CADT;oBAEIY,MADK;YAEL8G,mBAAmB,GAAGhE,MAAD;uBAAa,CAAlCgE;oBACE,CAAA,mBAAoB5F,MADY;oBAEhC8K,WAAW,GAAGzJ,KAAD,GAAW,CAAxByJ;4BAGElJ,GAAA;wBAFApC,UAAU;yBAEVoC,GAAA,GAAAA,MAAM,CAACkJ,WAAP,cAAAlJ,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAeP,KAArB;oBACD,CAN+B;oBAOhC0J,YAAY,GAAG1J,KAAD,GAAW,CAAzB0J;4BAGEnJ,GAAA;wBAFAT,oBAAoB;yBAEpBS,GAAA,GAAAA,MAAM,CAACmJ,YAAP,cAAAnJ,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAgBP,KAAtB;oBACD,CAAA;gBAX+B,CAAb;;YAarB4E,sBAAsB,GAAGrE,MAAD,EAASC,IAAT;uBAAmB,CAA3CoE;oBACEjE,GAAG,EAAE3D,kCAAS,CAACuB,UAAD,EAAaiC,IAAb;oBACdK,SAAS,GAAGb,KAAD,GAAW,CAAtBa;4BAMEN,GAAA;wBALA,EAAA,EAAIP,KAAK,CAACE,GAAN,KAAc,CAAlB,aAAgC,CAAhC;4BACEF,KAAK,CAACG,cAAN;4BACAhC,UAAU;wBACX,CAAA;yBAEDoC,GAAA,GAAAA,MAAM,CAACM,SAAP,cAAAN,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAaP,KAAnB;oBACD,CATwC;oBAUzCyJ,WAAW,GAAGzJ,KAAD,GAAW,CAAxByJ;4BAGElJ,GAAA;wBAFApC,UAAU;yBAEVoC,GAAA,GAAAA,MAAM,CAACkJ,WAAP,cAAAlJ,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAeP,KAArB;oBACD,CAdwC;oBAezC0J,YAAY,GAAG1J,KAAD,GAAW,CAAzB0J;4BAMEnJ,GAAA;wBALA+I,kBAAkB,CAACrK,OAAnB,GAA6BsK,MAAM,CAAClK,UAAP,CAC3BS,oBAD2B,EAE3B,GAF2B;yBAK7BS,GAAA,GAAAA,MAAM,CAACmJ,YAAP,cAAAnJ,GAAA,KAAAA,IAAAA,CAAAA,CAAAA,GAAAA,IAAAA,CAAAA,CAAAA,GAAAA,GAAA,CAAAA,IAAAA,CAAAA,MAAM,EAAgBP,KAAtB;oBACD,CAAA;gBAtBwC,CAAnB;;QAfnB,CAAP;OAwCA,CAACvC;QAAAA,MAAD;QAASkB,MAAT;QAAiBR,UAAjB;QAA6B2B,oBAA7B;IAAA,CAzC8C;IA4ChD,MAAA,kEACG,yCAAD;QAAwB,KAAA,EAAOO,YAAD;wEAC3B,yCAAD;WACMwB,0BAAJ;WACI3D,UAAJ;QACA,MAAA,EAAQT,MAAD;QACP,OAAA,EAASW,WAAD;QACR,MAAA,EAAQD,UAAD;QACP,SAAA,EAAU,CANZ;QAOE,MAAA,EAAQiL,oCAAD;QACP,sBAAA,EAAwB,KAAD;;AAI9B,CA/FM;;;;;;;;;;;AErBA,KAAA,CAAMQ,yCAAuB,OAAS,CAA7C;IACE,MAAA,CAAO,CAAP;QACE1C,IAAI,GAAG,CAAPA,WAAS4C,QAAAA,EAAF,CAAD,GAAA,EACJ,AADI,SACJ,AADI,EACJ,CAAA,kBAAA,CAAI,CADC;gBAEH3C,OAAO,EAAE,CADP;gBAEF8C,UAAU,EAAE,CAFV;gBAGFC,YAAY,EAAEnF,kDAAM,CAACU,SAHnB;mBAIEqE,QAAQ,GACR,CADJ;oBAEM1E,eAAe,EAAEL,kDAAM,CAAC0D,OAAxBrD;gBADF,CADQ,GAIR,CAAA;gBAAA,CAJJ;YAJE,CAAJ;;QAUF2E,OAAO,EAAA,EAAE,AAAF,SAAE,AAAF,EAAE,CAAA,kBAAA,CAAI,CAAbA;YACEI,WAAW,EAAEpF,kDAAM,CAACiD,QAApBmC;QADW,CAAJ;QAGTH,IAAI,EAAA,EAAE,AAAF,SAAE,AAAF,EAAE,CAAA,kBAANA,CAAAA,CAAAA;YAAM,IAAA,EAAA,CAAA;YAAA,MAAA,EAAA,CAAA;QAAA,CAAA;IAfD,CAAP;AAoBD,CArBM;;;ADUP,KAAA,CAAMH,qCAAe,IACnB7L,KADsB,EAEtB2C,GAFsB,GAGnB,CAHL;IAIE,KAAA,CAAM,CAAN,YAAQ8C,SAAF,aAAaxF,QAAAA,EAAb,CAAA,GAA0BD,KAAhC;IACA,KAAA,CAAM,CAAN,yBAAQ4G,sBAAF,WAA0BnH,MAAAA,EAA1B,CAAA,GAAqCsF,yCAAiB;IAE5D,KAAA,CAAMoB,MAAM,GAAGyF,yCAAuB;IAEtC,MAAA,kEACG,yCAAD,yEACG,yCAAD;WACM5L,KAAJ;WACI4G,sBAAsB,CAAC5G,KAAD,EAAQ2C,GAAR;QAC1B,SAAA,EAAW,iBAAA,CAAGwD,MAAM,CAAC+C,IAAP,CAAY,CAHlC;YAGoC4C,QAAQ,EAAErM,MAAVqM;QAAF,CAAZ,GAAmCrG,SAAtC;wEAEV,CAAD;QAAM,SAAA,EAAWU,MAAM,CAAC4F,OAAR;OAAkB9L,QAAD,oEAChC,0CAAD;QAAkB,SAAA,EAAWkG,MAAM,CAAC6F,IAAR;;AAInC,CArBD;AAuBO,KAAA,CAAMnO,yCAAc,iBAAGa,oCAAK,CAAC+H,UAAN,CAAiBoF,qCAAjB;;;AhBbvB,KAAA,CAAM9O,yCAAI,GAAGgB,yCAAY;AAChChB,yCAAI,CAACoB,IAAL,GAAYlB,wCAAZ;AACAF,yCAAI,CAACqB,UAAL,GAAkBJ,yCAAlB;AACAjB,yCAAI,CAACsB,UAAL,GAAkBJ,yCAAlB;AACAlB,yCAAI,CAACuB,IAAL,GAAYnB,yCAAZ;AACAJ,yCAAI,CAACwB,OAAL,GAAelB,yCAAf;AACAN,yCAAI,CAACyB,OAAL,GAAejB,yCAAf;AACAR,yCAAI,CAAC0B,YAAL,GAAoBhB,yCAApB;AACAV,yCAAI,CAACY,OAAL,GAAeA,yCAAf;AACAZ,yCAAI,CAACc,cAAL,GAAsBA,yCAAtB","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from 'react';\nimport { mergeRefs, useId } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from '@contentful/f36-utils';\nimport { Popover, PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * If `true`, the Menu will be opened in controlled mode.\n * By default the Menu is uncontrolled\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const { isOpen, handleOpen, handleClose, isControlled } = useMenuOpenState(\n props,\n );\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n\ntype UseMenuOpenStateProps = Pick<\n MenuProps,\n 'isOpen' | 'defaultIsOpen' | 'onOpen' | 'onClose'\n>;\n\nconst useMenuOpenState = (props: UseMenuOpenStateProps) => {\n const { isOpen, defaultIsOpen, onOpen, onClose } = props;\n const [isOpenState, setIsOpen] = useState(defaultIsOpen || false);\n\n const isControlled = isOpen !== undefined;\n const isOpenValue = isControlled ? isOpen : isOpenState;\n\n const handleClose = useCallback(() => {\n if (!isControlled) {\n setIsOpen(false);\n }\n onClose?.();\n }, [isControlled, onClose]);\n\n const handleOpen = useCallback(() => {\n if (!isControlled) {\n setIsOpen(true);\n }\n onOpen?.();\n }, [isControlled, onOpen]);\n\n return { isOpen: isOpenValue, isControlled, handleClose, handleOpen };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport { CommonProps, PropsWithHTMLElement } from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (props: MenuListProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type { CommonProps, PropsWithHTMLElement } from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<MenuListHeaderProps> = (props) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type { CommonProps, PropsWithHTMLElement } from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<MenuListFooterProps> = (props) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport {\n CommonProps,\n mergeRefs,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(null, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\nexport const MenuItem: PolymorphicComponent<\n MenuItemInternalProps,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: MenuTriggerProps) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport { CommonProps, PropsWithHTMLElement } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: MenuDividerProps) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport {\n SectionHeading,\n SectionHeadingProps,\n} from '@contentful/f36-typography';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: MenuSectionTitleProps) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: SubmenuTriggerProps,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useState","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","useMenuOpenState","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","UseMenuOpenStateProps","Pick","isOpenState","setIsOpen","undefined","isOpenValue","ComponentPropsWithRef","Ref","MenuContext","createContext","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","items","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","container","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/components/menu/src/index.ts","packages/components/menu/src/CompoundMenu.tsx","packages/components/menu/src/Menu.tsx","packages/components/menu/src/useArrowKeyNavigation.ts","packages/components/menu/src/MenuContext.ts","packages/components/menu/src/MenuList/MenuList.tsx","packages/components/menu/src/SubmenuContext.ts","packages/components/menu/src/MenuList/MenuList.styles.ts","packages/components/menu/src/MenuList/MenuListHeader.tsx","packages/components/menu/src/MenuList/MenuListFooter.tsx","packages/components/menu/src/MenuItem/MenuItem.tsx","packages/components/menu/src/MenuItem/MenuItem.styles.ts","packages/components/menu/src/MenuTrigger/MenuTrigger.tsx","packages/components/menu/src/MenuDivider/MenuDivider.tsx","packages/components/menu/src/MenuDivider/MenuDivider.styles.ts","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.tsx","packages/components/menu/src/MenuSectionTitle/MenuSectionTitle.styles.ts","packages/components/menu/src/Submenu/Submenu.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.tsx","packages/components/menu/src/SubmenuTrigger/SubmenuTrigger.styles.ts"],"sourcesContent":["export { Menu } from './CompoundMenu';\nexport type { MenuProps } from './Menu';\nexport { MenuList } from './MenuList/MenuList';\nexport type { MenuListProps } from './MenuList/MenuList';\nexport { MenuItem } from './MenuItem/MenuItem';\nexport type { MenuItemProps } from './MenuItem/MenuItem';\nexport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nexport type { MenuTriggerProps } from './MenuTrigger/MenuTrigger';\nexport { MenuDivider } from './MenuDivider/MenuDivider';\nexport type { MenuDividerProps } from './MenuDivider/MenuDivider';\nexport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nexport type { MenuSectionTitleProps } from './MenuSectionTitle/MenuSectionTitle';\nexport { Submenu } from './Submenu/Submenu';\nexport type { SubmenuProps } from './Submenu/Submenu';\nexport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\nexport type { SubmenuTriggerProps } from './SubmenuTrigger/SubmenuTrigger';\n","import { Menu as OriginalMenu } from './Menu';\nimport { MenuList } from './MenuList/MenuList';\nimport { MenuListHeader } from './MenuList/MenuListHeader';\nimport { MenuListFooter } from './MenuList/MenuListFooter';\nimport { MenuItem } from './MenuItem/MenuItem';\nimport { MenuTrigger } from './MenuTrigger/MenuTrigger';\nimport { MenuDivider } from './MenuDivider/MenuDivider';\nimport { MenuSectionTitle } from './MenuSectionTitle/MenuSectionTitle';\nimport { Submenu } from './Submenu/Submenu';\nimport { SubmenuTrigger } from './SubmenuTrigger/SubmenuTrigger';\n\ntype CompoundMenu = typeof OriginalMenu & {\n List: typeof MenuList;\n ListHeader: typeof MenuListHeader;\n ListFooter: typeof MenuListFooter;\n Item: typeof MenuItem;\n Trigger: typeof MenuTrigger;\n Divider: typeof MenuDivider;\n SectionTitle: typeof MenuSectionTitle;\n Submenu: typeof Submenu;\n SubmenuTrigger: typeof SubmenuTrigger;\n};\n\nexport const Menu = OriginalMenu as CompoundMenu;\nMenu.List = MenuList;\nMenu.ListHeader = MenuListHeader;\nMenu.ListFooter = MenuListFooter;\nMenu.Item = MenuItem;\nMenu.Trigger = MenuTrigger;\nMenu.Divider = MenuDivider;\nMenu.SectionTitle = MenuSectionTitle;\nMenu.Submenu = Submenu;\nMenu.SubmenuTrigger = SubmenuTrigger;\n","import React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from 'react';\nimport { mergeRefs, useId } from '@contentful/f36-core';\nimport { useArrowKeyNavigation } from './useArrowKeyNavigation';\nimport { Popover, PopoverProps } from '@contentful/f36-popover';\nimport { MenuContextProvider, MenuContextType } from './MenuContext';\n\nconst MENU_ITEMS_SELECTOR = '[role=\"menuitem\"]:not(:disabled)';\n\nexport interface MenuProps\n extends Omit<PopoverProps, 'autoFocus' | 'id' | 'closeOnBlur'> {\n /**\n * If `true`, the Menu will be opened in controlled mode.\n * By default the Menu is uncontrolled\n */\n isOpen?: boolean;\n\n /**\n * If `true`, the Menu will be initially opened.\n */\n defaultIsOpen?: boolean;\n\n /**\n * Callback fired when the Menu opens\n */\n onOpen?: () => void;\n\n /**\n * Callback fired when the Menu closes\n */\n onClose?: () => void;\n\n /**\n * If `true`, the Menu will close when a menu item is\n * clicked\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnSelect?: boolean;\n\n /**\n * If true, the menu will close when you blur out it by clicking outside\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnBlur?: boolean;\n\n /**\n * If true, the menu will close when you hit the Esc key\n *\n * Note: This prop will be propagated to all submenus,\n * unless you will override it with props on submenu itself\n *\n * @default true\n */\n closeOnEsc?: boolean;\n}\n\nexport function Menu(props: MenuProps) {\n const {\n closeOnSelect = true,\n closeOnBlur = true,\n closeOnEsc = true,\n children,\n onOpen,\n ...otherProps\n } = props;\n const { isOpen, handleOpen, handleClose, isControlled } = useMenuOpenState(\n props,\n );\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const menuListRef = useRef<HTMLDivElement>(null);\n\n const menuId = useId(null, 'menu');\n\n const {\n focusedIndex,\n handleArrowsKeyDown,\n setFocusedIndex,\n } = useArrowKeyNavigation({\n itemsContainerRef: menuListRef,\n itemsSelector: MENU_ITEMS_SELECTOR,\n });\n\n useEffect(() => {\n if (isOpen && menuListRef.current) {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n if (menuItems.length > 0 && focusedIndex < menuItems.length) {\n // timeout trick to prevent scroll from jumping\n // when the popover is not positioned correctly yet in the opening phase\n setTimeout(() => {\n (menuItems[focusedIndex] as HTMLElement).focus({\n preventScroll: false,\n });\n }, 0);\n }\n }\n }, [isOpen, focusedIndex]);\n\n const focusMenuItem = useCallback(\n (item: HTMLElement) => {\n const menuItems = menuListRef.current.querySelectorAll(\n MENU_ITEMS_SELECTOR,\n );\n\n const itemIndex = [...menuItems].findIndex(\n (menuItem) => item === menuItem,\n );\n\n if (itemIndex !== -1) {\n setFocusedIndex(itemIndex);\n }\n },\n [setFocusedIndex],\n );\n\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n const handleMenuListKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n if (event.key === 'Tab') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n // we don't want to propagate other keydown events except `Tab`\n event.stopPropagation();\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n closeAndFocusTrigger();\n return;\n }\n\n handleArrowsKeyDown(event);\n },\n [closeAndFocusTrigger, handleArrowsKeyDown],\n );\n\n const contextValue: MenuContextType = useMemo(\n () => ({\n isOpen,\n menuId,\n focusMenuItem,\n getTriggerProps: (_props = {}, _ref = null) => ({\n onClick: (event) => {\n // if the user made component controlled by providing isOpen prop\n // but onOpen callback is not provided, we won't add toggle logic\n // to the trigger component. So they can make any toggle logic on their own.\n const isFullyControlled = isControlled && !onOpen;\n\n if (!isFullyControlled) {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n\n _props.onClick?.(event);\n },\n ref: mergeRefs(triggerRef, _ref),\n }),\n getMenuListProps: (_props = {}, _ref = null) => ({\n ref: mergeRefs(menuListRef, _ref),\n onKeyDown: (event) => {\n handleMenuListKeyDown(event);\n _props.onKeyDown?.(event);\n },\n onBlur: (event) => {\n _props.onBlur?.(event);\n\n if (!closeOnBlur) {\n return;\n }\n\n const relatedTarget = event.relatedTarget as Node;\n\n const targetIsMenu =\n menuListRef.current === relatedTarget ||\n menuListRef.current?.contains(relatedTarget);\n const targetIsTrigger =\n triggerRef.current === relatedTarget ||\n triggerRef.current?.contains(relatedTarget);\n const targetIsSubmenu =\n relatedTarget?.parentElement?.dataset.parentMenu === menuId;\n\n if (targetIsMenu || targetIsTrigger || targetIsSubmenu) {\n event.stopPropagation();\n return;\n }\n\n handleClose();\n },\n }),\n getMenuItemProps: (_props = {}) => ({\n onClick: (event) => {\n _props.onClick?.(event);\n\n const isSubmenuTrigger = Boolean(\n (event.target as HTMLElement).getAttribute('aria-haspopup'),\n );\n if (closeOnSelect && !isSubmenuTrigger) {\n closeAndFocusTrigger();\n }\n },\n }),\n propsToPropagateToSubmenus: {\n closeOnSelect,\n closeOnBlur,\n closeOnEsc,\n },\n }),\n [\n menuId,\n isOpen,\n handleMenuListKeyDown,\n closeOnSelect,\n handleClose,\n handleOpen,\n focusMenuItem,\n closeOnBlur,\n closeOnEsc,\n closeAndFocusTrigger,\n isControlled,\n onOpen,\n ],\n );\n\n return (\n <MenuContextProvider value={contextValue}>\n <Popover\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n id={menuId}\n closeOnEsc={closeOnEsc}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n closeOnBlur={false}\n >\n {children}\n </Popover>\n </MenuContextProvider>\n );\n}\n\ntype UseMenuOpenStateProps = Pick<\n MenuProps,\n 'isOpen' | 'defaultIsOpen' | 'onOpen' | 'onClose'\n>;\n\nconst useMenuOpenState = (props: UseMenuOpenStateProps) => {\n const { isOpen, defaultIsOpen, onOpen, onClose } = props;\n const [isOpenState, setIsOpen] = useState(defaultIsOpen || false);\n\n const isControlled = isOpen !== undefined;\n const isOpenValue = isControlled ? isOpen : isOpenState;\n\n const handleClose = useCallback(() => {\n if (!isControlled) {\n setIsOpen(false);\n }\n onClose?.();\n }, [isControlled, onClose]);\n\n const handleOpen = useCallback(() => {\n if (!isControlled) {\n setIsOpen(true);\n }\n onOpen?.();\n }, [isControlled, onOpen]);\n\n return { isOpen: isOpenValue, isControlled, handleClose, handleOpen };\n};\n","import { useState, useCallback } from 'react';\n\ninterface UseArrowKeyNavigationProps {\n itemsContainerRef: React.MutableRefObject<HTMLElement>;\n itemsSelector: string;\n keyType?: 'vertical' | 'horizontal';\n initialFocusedIndex?: number;\n}\n\nconst ARROW_KEY_TYPES = {\n vertical: {\n prev: 'ArrowUp',\n next: 'ArrowDown',\n },\n horizontal: {\n prev: 'ArrowLeft',\n next: 'ArrowRight',\n },\n};\n\nexport const useArrowKeyNavigation = ({\n itemsContainerRef,\n itemsSelector,\n keyType = 'vertical',\n}: UseArrowKeyNavigationProps) => {\n const [focusedIndex, setFocusedIndex] = useState<number>(0);\n\n const handleArrowsKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n const container = itemsContainerRef.current;\n if (!container) return;\n\n const items = container.querySelectorAll(itemsSelector);\n if (items.length === 0) return;\n\n const lastItemIndex = items.length - 1;\n\n const focusFirstItem = () => setFocusedIndex(0);\n const focusLastItem = () => setFocusedIndex(lastItemIndex);\n const focusNextItem = () => {\n if (focusedIndex === lastItemIndex) {\n focusFirstItem();\n } else {\n setFocusedIndex(focusedIndex + 1);\n }\n };\n const focusPrevItem = () => {\n if (focusedIndex === 0) {\n focusLastItem();\n } else {\n setFocusedIndex(focusedIndex - 1);\n }\n };\n\n const keyToFnMap = {\n [ARROW_KEY_TYPES[keyType].next]: focusNextItem,\n [ARROW_KEY_TYPES[keyType].prev]: focusPrevItem,\n };\n\n const fn = keyToFnMap[event.key];\n if (fn) {\n event.preventDefault();\n fn();\n }\n },\n [focusedIndex, itemsSelector, itemsContainerRef, keyType],\n );\n\n return { focusedIndex, handleArrowsKeyDown, setFocusedIndex };\n};\n","import React, { ComponentPropsWithRef } from 'react';\nimport { MenuProps } from '.';\n\nexport type MenuContextType = {\n isOpen: boolean;\n menuId: string;\n focusMenuItem: (item: HTMLElement) => void;\n getTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n getMenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n _ref: React.Ref<HTMLDivElement>,\n ) => ComponentPropsWithRef<'div'>;\n getMenuItemProps: (\n _props: ComponentPropsWithRef<'button'>,\n ) => ComponentPropsWithRef<'button'>;\n propsToPropagateToSubmenus: Pick<\n MenuProps,\n 'closeOnBlur' | 'closeOnEsc' | 'closeOnSelect'\n >;\n};\n\nconst MenuContext = React.createContext<MenuContextType | undefined>(undefined);\n\nexport const useMenuContext = () => {\n const context = React.useContext(MenuContext);\n\n if (context === undefined) {\n throw new Error('useMenuContext must be used within a MenuContextProvider');\n }\n\n return context;\n};\n\nexport const MenuContextProvider = MenuContext.Provider;\n","import React from 'react';\nimport {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { Popover } from '@contentful/f36-popover';\nimport { cx } from 'emotion';\nimport { getMenuListStyles } from './MenuList.styles';\nimport { MenuListHeader } from './MenuListHeader';\nimport { MenuListFooter } from './MenuListFooter';\n\ninterface MenuListInternalProps extends CommonProps {\n children?: React.ReactNode;\n}\n\nfunction assertChild(child: any): child is { type: { displayName: string } } {\n return Boolean(child?.type?.displayName);\n}\n\nexport type MenuListProps = PropsWithHTMLElement<MenuListInternalProps, 'div'>;\n\nconst _MenuList = (\n props: ExpandProps<MenuListProps>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list',\n className,\n ...otherProps\n } = props;\n\n const { getMenuListProps } = useMenuContext();\n const submenuContext = useSubmenuContext();\n\n let header: React.ReactElement | null = null;\n let footer: React.ReactElement | null = null;\n const items: React.ReactElement[] = [];\n\n React.Children.forEach(children, (child) => {\n let appendChild = true;\n if (assertChild(child)) {\n if (child.type.displayName === MenuListHeader.displayName) {\n header = (child as unknown) as React.ReactElement;\n appendChild = false;\n } else if (child.type.displayName === MenuListFooter.displayName) {\n footer = (child as unknown) as React.ReactElement;\n appendChild = false;\n }\n }\n if (appendChild) {\n items.push((child as unknown) as React.ReactElement);\n }\n });\n\n const styles = getMenuListStyles({\n hasStickyHeader: Boolean(header),\n hasStickyFooter: Boolean(footer),\n });\n\n const extendedOtherProps = submenuContext\n ? submenuContext.getSubmenuListProps(otherProps)\n : otherProps;\n\n return (\n <Popover.Content\n role=\"menu\"\n {...extendedOtherProps}\n {...getMenuListProps(extendedOtherProps, ref)}\n className={cx(styles.container, className)}\n testId={testId}\n >\n {header}\n {items}\n {footer}\n </Popover.Content>\n );\n};\n\nexport const MenuList = React.forwardRef(_MenuList);\n","import React, { ComponentPropsWithRef, ComponentPropsWithoutRef } from 'react';\n\nexport type SubmenuContextType = {\n isOpen: boolean;\n getSubmenuListProps: (\n _props: ComponentPropsWithRef<'div'>,\n ) => { 'data-parent-menu': string } & ComponentPropsWithoutRef<'div'>;\n getSubmenuTriggerProps: (\n _props: ComponentPropsWithRef<'button'>,\n _ref: React.Ref<HTMLButtonElement>,\n ) => ComponentPropsWithRef<'button'>;\n};\n\nconst SubmenuContext = React.createContext<SubmenuContextType | undefined>(\n undefined,\n);\n\nexport const useSubmenuContext = () => {\n const context = React.useContext(SubmenuContext);\n return context;\n};\n\nexport const SubmenuContextProvider = SubmenuContext.Provider;\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuHeaderStyles = () => {\n return css({\n position: 'sticky',\n top: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderBottom: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuFooterStyles = () => {\n return css({\n position: 'sticky',\n bottom: 0,\n left: 0,\n backgroundColor: tokens.colorWhite,\n borderTop: `1px solid ${tokens.gray300}`,\n padding: `${tokens.spacingXs} 0`,\n zIndex: 1001,\n });\n};\n\nexport const getMenuListStyles = (props: {\n hasStickyFooter?: boolean;\n hasStickyHeader?: boolean;\n}) => ({\n container: css({\n overflowY: 'auto',\n position: 'relative',\n padding: 0,\n paddingTop: props.hasStickyHeader ? 0 : tokens.spacingXs,\n paddingBottom: props.hasStickyFooter ? 0 : tokens.spacingXs,\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuHeaderStyles } from './MenuList.styles';\n\nexport type MenuListHeaderProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListHeader: React.FC<ExpandProps<MenuListHeaderProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-header',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuHeaderStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListHeader.displayName = 'MenuListHeader';\n","import React from 'react';\nimport { cx } from 'emotion';\nimport type {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\n\nimport { getMenuFooterStyles } from './MenuList.styles';\n\nexport type MenuListFooterProps = PropsWithHTMLElement<CommonProps, 'div'>;\n\nexport const MenuListFooter: React.FC<ExpandProps<MenuListFooterProps>> = (\n props,\n) => {\n const {\n children,\n testId = 'cf-ui-menu-list-footer',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuFooterStyles();\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n >\n {children}\n </div>\n );\n};\n\nMenuListFooter.displayName = 'MenuListFooter';\n","import React, { useEffect, useRef } from 'react';\nimport { cx } from 'emotion';\nimport {\n CommonProps,\n mergeRefs,\n PolymorphicComponent,\n PolymorphicProps,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { useMenuContext } from '../MenuContext';\nimport { useId } from '@contentful/f36-core';\nimport { getMenuItemStyles } from './MenuItem.styles';\n\nconst MENU_ITEM_DEFAULT_TAG = 'button';\n\ninterface MenuItemInternalProps extends CommonProps {\n children?: React.ReactNode;\n as?: 'a' | 'button';\n\n /**\n * Sets focus on item\n */\n isInitiallyFocused?: boolean;\n}\n\nexport type MenuItemProps<\n E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG\n> = PolymorphicProps<MenuItemInternalProps, E>;\n\nfunction _MenuItem<E extends React.ElementType = typeof MENU_ITEM_DEFAULT_TAG>(\n props: MenuItemProps<E>,\n ref: React.Ref<any>,\n) {\n const { testId, className, as, isInitiallyFocused, ...otherProps } = props;\n\n const id = useId(null, 'menu-item');\n const itemTestId = testId || `cf-ui-${id}`;\n const styles = getMenuItemStyles();\n\n const { getMenuItemProps, focusMenuItem } = useMenuContext();\n\n const itemRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (isInitiallyFocused && itemRef.current) {\n focusMenuItem(itemRef.current);\n }\n }, [isInitiallyFocused, focusMenuItem]);\n\n const Element = (as ?? MENU_ITEM_DEFAULT_TAG) as React.ElementType;\n\n return (\n <Element\n role=\"menuitem\"\n {...otherProps}\n {...getMenuItemProps(otherProps)}\n className={cx(styles.root, className)}\n data-test-id={itemTestId}\n ref={mergeRefs(itemRef, ref)}\n tabIndex={-1}\n >\n {props.children}\n </Element>\n );\n}\n\nexport const MenuItem: PolymorphicComponent<\n ExpandProps<MenuItemInternalProps>,\n typeof MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_MenuItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuItemStyles = () => {\n return {\n root: css({\n display: 'block',\n width: '100%',\n background: 'none',\n border: 0,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightNormal,\n position: 'relative',\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n minWidth: '150px',\n textDecoration: 'none',\n color: tokens.gray800,\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n '&:disabled': {\n opacity: 0.5,\n cursor: 'auto',\n },\n }),\n };\n};\n","import React from 'react';\nimport { Popover } from '@contentful/f36-popover';\nimport { useMenuContext } from '../MenuContext';\nimport { ExpandProps } from '@contentful/f36-core';\n\nexport interface MenuTriggerProps {\n children: React.ReactNode;\n}\n\nexport const MenuTrigger = (props: ExpandProps<MenuTriggerProps>) => {\n const child = React.Children.only(props.children) as any;\n const { getTriggerProps } = useMenuContext();\n\n return (\n <Popover.Trigger>\n {React.cloneElement(child, {\n ...getTriggerProps(child.props, child.ref),\n ['aria-haspopup']: 'menu',\n })}\n </Popover.Trigger>\n );\n};\n","import React from 'react';\nimport {\n CommonProps,\n PropsWithHTMLElement,\n ExpandProps,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getMenuDividerStyles } from './MenuDivider.styles';\n\nexport type MenuDividerProps = PropsWithHTMLElement<CommonProps, 'hr'>;\n\nexport const MenuDivider = (props: ExpandProps<MenuDividerProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-divider',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuDividerStyles();\n\n return (\n <hr\n aria-orientation=\"horizontal\"\n data-test-id={testId}\n className={cx(styles, className)}\n {...otherProps}\n />\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuDividerStyles = () =>\n css({\n border: 'none',\n width: '100%',\n height: '1px',\n background: tokens.gray300,\n margin: `${tokens.spacingXs} 0`,\n });\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getMenuSectionTitleStyles } from './MenuSectionTitle.styles';\nimport {\n SectionHeading,\n SectionHeadingProps,\n} from '@contentful/f36-typography';\nimport { ExpandProps } from '@contentful/f36-core';\n\nexport type MenuSectionTitleProps = SectionHeadingProps;\n\nexport const MenuSectionTitle = (props: ExpandProps<MenuSectionTitleProps>) => {\n const {\n children,\n testId = 'cf-ui-menu-section-title',\n className,\n ...otherProps\n } = props;\n\n const styles = getMenuSectionTitleStyles();\n\n return (\n <SectionHeading\n // Techincally, menus cannot contain headings according to ARIA.\n // We hide the heading from assistive technology, and only use it\n // as a label\n aria-hidden=\"true\"\n testId={testId}\n className={cx(styles, className)}\n marginBottom=\"none\"\n {...otherProps}\n >\n {children}\n </SectionHeading>\n );\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getMenuSectionTitleStyles = () =>\n css({\n textAlign: 'left',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n\n 'hr + &': {\n marginTop: '-8px',\n },\n });\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Menu, MenuProps } from '../Menu';\nimport { useMenuContext } from '../MenuContext';\nimport { SubmenuContextProvider, SubmenuContextType } from '../SubmenuContext';\nimport { mergeRefs } from '@contentful/f36-core';\n\nconst SUBMENU_OFFSET: [number, number] = [-8, 2];\n\nexport type SubmenuProps = Omit<\n MenuProps,\n | 'placement'\n | 'offset'\n | 'usePortal'\n | 'isOpen'\n | 'isAutoalignmentEnabled'\n | 'defaultIsOpen'\n>;\n\nexport const Submenu = (props: SubmenuProps) => {\n const { onClose, onOpen, ...otherProps } = props;\n\n const {\n isOpen: isParentMenuOpen,\n menuId,\n propsToPropagateToSubmenus,\n } = useMenuContext();\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const mouseLeaveTimerRef = useRef(null);\n\n const [isOpen, setIsOpen] = useState(false);\n const handleOpen = useCallback(() => {\n setIsOpen(true);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onOpen?.();\n }, [onOpen]);\n const handleClose = useCallback(() => {\n setIsOpen(false);\n window.clearTimeout(mouseLeaveTimerRef.current);\n\n onClose?.();\n }, [onClose]);\n const closeAndFocusTrigger = useCallback(() => {\n handleClose();\n triggerRef.current?.focus({ preventScroll: true });\n }, [handleClose]);\n\n useEffect(() => {\n // close when parent menu closed\n if (isParentMenuOpen === false) {\n setIsOpen(false);\n }\n }, [isParentMenuOpen]);\n\n const contextValue: SubmenuContextType = useMemo(\n () => ({\n isOpen,\n getSubmenuListProps: (_props) => ({\n 'data-parent-menu': menuId,\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n closeAndFocusTrigger();\n\n _props.onMouseLeave?.(event);\n },\n }),\n getSubmenuTriggerProps: (_props, _ref) => ({\n ref: mergeRefs(triggerRef, _ref),\n onKeyDown: (event) => {\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n handleOpen();\n }\n\n _props.onKeyDown?.(event);\n },\n onMouseOver: (event) => {\n handleOpen();\n\n _props.onMouseOver?.(event);\n },\n onMouseLeave: (event) => {\n mouseLeaveTimerRef.current = window.setTimeout(\n closeAndFocusTrigger,\n 300,\n );\n\n _props.onMouseLeave?.(event);\n },\n }),\n }),\n [isOpen, menuId, handleOpen, closeAndFocusTrigger],\n );\n\n return (\n <SubmenuContextProvider value={contextValue}>\n <Menu\n {...propsToPropagateToSubmenus}\n {...otherProps}\n isOpen={isOpen}\n onClose={handleClose}\n onOpen={handleOpen}\n placement=\"right-start\"\n offset={SUBMENU_OFFSET}\n isAutoalignmentEnabled={false}\n />\n </SubmenuContextProvider>\n );\n};\n","import React from 'react';\nimport { MenuTrigger } from '../MenuTrigger/MenuTrigger';\nimport { MenuItem, MenuItemProps } from '../MenuItem/MenuItem';\nimport { useSubmenuContext } from '../SubmenuContext';\nimport { ChevronRightIcon } from '@contentful/f36-icons';\nimport { ExpandProps } from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { getSubmenuTriggerStyles } from './SubmenuTrigger.styles';\n\nexport type SubmenuTriggerProps = Omit<\n MenuItemProps<'button'>,\n 'isInitiallyFocused' | 'as'\n>;\n\nconst _SubmenuTrigger = (\n props: ExpandProps<SubmenuTriggerProps>,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const { className, children } = props;\n const { getSubmenuTriggerProps, isOpen } = useSubmenuContext();\n\n const styles = getSubmenuTriggerStyles();\n\n return (\n <MenuTrigger>\n <MenuItem\n {...props}\n {...getSubmenuTriggerProps(props, ref)}\n className={cx(styles.root({ isActive: isOpen }), className)}\n >\n <span className={styles.content}>{children}</span>\n <ChevronRightIcon className={styles.icon} />\n </MenuItem>\n </MenuTrigger>\n );\n};\n\nexport const SubmenuTrigger = React.forwardRef(_SubmenuTrigger);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getSubmenuTriggerStyles = () => {\n return {\n root: ({ isActive }) =>\n css({\n display: 'flex',\n alignItems: 'center',\n paddingRight: tokens.spacingXs,\n ...(isActive\n ? {\n backgroundColor: tokens.gray100,\n }\n : {}),\n }),\n content: css({\n marginRight: tokens.spacingM,\n }),\n icon: css({\n marginLeft: 'auto',\n fill: 'currentColor',\n }),\n };\n};\n"],"names":["Menu","MenuProps","MenuList","MenuListProps","MenuItem","MenuItemProps","MenuTrigger","MenuTriggerProps","MenuDivider","MenuDividerProps","MenuSectionTitle","MenuSectionTitleProps","Submenu","SubmenuProps","SubmenuTrigger","SubmenuTriggerProps","OriginalMenu","MenuListHeader","MenuListFooter","CompoundMenu","List","ListHeader","ListFooter","Item","Trigger","Divider","SectionTitle","React","useState","useCallback","useMemo","useRef","useEffect","mergeRefs","useId","useArrowKeyNavigation","Popover","PopoverProps","MenuContextProvider","MenuContextType","MENU_ITEMS_SELECTOR","Omit","isOpen","defaultIsOpen","onOpen","onClose","closeOnSelect","closeOnBlur","closeOnEsc","props","children","otherProps","handleOpen","handleClose","isControlled","useMenuOpenState","triggerRef","HTMLButtonElement","menuListRef","HTMLDivElement","menuId","focusedIndex","handleArrowsKeyDown","setFocusedIndex","itemsContainerRef","itemsSelector","current","menuItems","querySelectorAll","length","setTimeout","HTMLElement","focus","preventScroll","focusMenuItem","item","itemIndex","findIndex","menuItem","closeAndFocusTrigger","handleMenuListKeyDown","event","KeyboardEvent","key","preventDefault","stopPropagation","contextValue","getTriggerProps","_props","_ref","onClick","isFullyControlled","ref","getMenuListProps","onKeyDown","onBlur","relatedTarget","Node","targetIsMenu","contains","targetIsTrigger","targetIsSubmenu","parentElement","dataset","parentMenu","getMenuItemProps","isSubmenuTrigger","Boolean","target","getAttribute","propsToPropagateToSubmenus","UseMenuOpenStateProps","Pick","isOpenState","setIsOpen","undefined","isOpenValue","UseArrowKeyNavigationProps","MutableRefObject","keyType","initialFocusedIndex","ARROW_KEY_TYPES","vertical","prev","next","horizontal","container","items","lastItemIndex","focusFirstItem","focusLastItem","focusNextItem","focusPrevItem","keyToFnMap","fn","ComponentPropsWithRef","Ref","MenuContext","createContext","useMenuContext","context","useContext","Error","Provider","CommonProps","PropsWithHTMLElement","ExpandProps","useSubmenuContext","getMenuListStyles","MenuListInternalProps","ReactNode","assertChild","child","type","displayName","_MenuList","testId","className","submenuContext","header","ReactElement","footer","Children","forEach","appendChild","push","styles","hasStickyHeader","hasStickyFooter","extendedOtherProps","getSubmenuListProps","forwardRef","ComponentPropsWithoutRef","SubmenuContextType","getSubmenuTriggerProps","SubmenuContext","SubmenuContextProvider","tokens","getMenuHeaderStyles","position","top","left","backgroundColor","colorWhite","borderBottom","gray300","padding","spacingXs","zIndex","getMenuFooterStyles","bottom","borderTop","overflowY","paddingTop","paddingBottom","MenuListHeaderProps","FC","MenuListFooterProps","PolymorphicComponent","PolymorphicProps","getMenuItemStyles","MENU_ITEM_DEFAULT_TAG","MenuItemInternalProps","as","isInitiallyFocused","ElementType","E","_MenuItem","id","itemTestId","itemRef","Element","root","display","width","background","border","margin","outline","fontSize","fontSizeM","lineHeight","lineHeightM","fontWeight","fontWeightNormal","textAlign","spacingM","wordBreak","whiteSpace","cursor","hyphens","minWidth","textDecoration","color","gray800","gray100","gray200","opacity","only","cloneElement","getMenuDividerStyles","height","getMenuSectionTitleStyles","SectionHeading","SectionHeadingProps","marginTop","SUBMENU_OFFSET","isParentMenuOpen","mouseLeaveTimerRef","window","clearTimeout","onMouseOver","onMouseLeave","ChevronRightIcon","getSubmenuTriggerStyles","_SubmenuTrigger","isActive","content","icon","alignItems","paddingRight","marginRight"],"version":3,"file":"main.js.map"}
|