{"version":3,"sources":["../src/menu-context.ts"],"sourcesContent":["import type { CSSUIObject } from \"@yamada-ui/core\"\nimport type {\n  Dispatch,\n  KeyboardEventHandler,\n  MutableRefObject,\n  RefObject,\n  SetStateAction,\n} from \"react\"\nimport type { MenuOptions } from \"./menu\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { createContext } from \"@yamada-ui/utils\"\n\nexport const {\n  DescendantsContextProvider,\n  useDescendant: useMenuDescendant,\n  useDescendants,\n  useDescendantsContext: useMenuDescendantsContext,\n} = createDescendant()\n\ninterface MenuContext extends MenuOptions {\n  buttonRef: RefObject<HTMLButtonElement>\n  focusedIndex: number\n  menuRef: RefObject<HTMLDivElement>\n  nested: boolean\n  open: boolean\n  requestAnimationFrameId: MutableRefObject<null | number>\n  setFocusedIndex: Dispatch<SetStateAction<number>>\n  styles: { [key: string]: CSSUIObject | undefined }\n  onClose: () => void\n  onFocusFirstItem: () => void\n  onFocusLastItem: () => void\n  onOpen: () => void\n  onUpstreamClose?: () => void\n}\n\nexport const [MenuProvider, useMenu] = createContext<MenuContext>({\n  name: \"MenuContext\",\n  errorMessage: `useMenu returned is 'undefined'. Seems you forgot to wrap the components in \"<Menu />\"`,\n})\n\ninterface ContextMenuContext {\n  styles: { [key: string]: CSSUIObject | undefined }\n}\n\nexport const [ContextMenuProvider, useContextMenu] =\n  createContext<ContextMenuContext>({\n    name: \"ContextMenuContext\",\n    strict: false,\n  })\n\ninterface UpstreamMenuContext {\n  relatedRef: RefObject<HTMLElement>\n  onDownstreamCloseMapRef: MutableRefObject<Map<string, () => void>>\n  onUpstreamClose: () => void\n}\n\nexport const [UpstreamMenuProvider, useUpstreamMenu] =\n  createContext<UpstreamMenuContext>({\n    name: \"UpstreamMenuContext\",\n    strict: false,\n  })\n\ninterface UpstreamMenuItemContext {\n  hasDownstreamRef: MutableRefObject<boolean>\n  setDownstreamOpen: Dispatch<SetStateAction<boolean>>\n  onKeyDownRef: RefObject<KeyboardEventHandler<HTMLDivElement>>\n  onUpstreamRestoreFocus: () => void\n}\n\nexport const [UpstreamMenuItemProvider, useUpstreamMenuItem] =\n  createContext<UpstreamMenuItemContext>({\n    name: \"UpstreamMenuItemContext\",\n    strict: false,\n  })\n"],"mappings":";;;AASA,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAEvB,IAAM;AAAA,EACX;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,uBAAuB;AACzB,IAAI,iBAAiB;AAkBd,IAAM,CAAC,cAAc,OAAO,IAAI,cAA2B;AAAA,EAChE,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAMM,IAAM,CAAC,qBAAqB,cAAc,IAC/C,cAAkC;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AAQI,IAAM,CAAC,sBAAsB,eAAe,IACjD,cAAmC;AAAA,EACjC,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AASI,IAAM,CAAC,0BAA0B,mBAAmB,IACzD,cAAuC;AAAA,EACrC,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;","names":[]}