UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 2.28 kB
import{jsx as e}from"react/jsx-runtime";import{useState as r,useRef as t,useCallback as n}from"react";import o from"../../__internal__/utils/helpers/tags/tags.js";import{StyledMenuWrapper as i}from"./menu.style.js";import{StrictMenuProvider as c}from"./__internal__/strict-menu.context.js";import l from"./__internal__/menu.context.js";import{menuKeyboardNavigation as u}from"./__internal__/keyboard-navigation/index.js";import{MENU_ITEM_CHILDREN_LOCATOR as s}from"./__internal__/locators.js";function p(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}const f=f=>{var{menuType:a="light",children:m}=f,y=function(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(f,["menuType","children"]);const[b,O]=r(null),j=t(null),[d,g]=r(void 0),[_,v]=r([]),P=n((e=>{v((r=>[...r,e]))}),[]),h=n((e=>{v((r=>r.filter((r=>r!==e))))}),[]);return e(i,(w=function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),n.forEach((function(r){p(e,r,t[r])}))}return e}({menuType:a},y,o("menu",y)),S=null!=(S={ref:j,role:"list",onKeyDown:e=>{if(j.current){const r=j.current.querySelectorAll(s);if(r){const t=u(e,Array.from(r));void 0!==t&&g(_[t])}}},children:e(c,{value:{menuType:a,openSubmenuId:b,setOpenSubmenuId:O,focusId:d,updateFocusId:g,registerItem:P,unregisterItem:h},children:e(l.Provider,{value:{inMenu:!0},children:m})})})?S:{},Object.getOwnPropertyDescriptors?Object.defineProperties(w,Object.getOwnPropertyDescriptors(S)):function(e){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r.push.apply(r,t)}return r}(Object(S)).forEach((function(e){Object.defineProperty(w,e,Object.getOwnPropertyDescriptor(S,e))})),w));var w,S};export{f as Menu,f as default};