{"version":3,"file":"MenuDropdown.cjs","sources":["../../../../src/components/Menu/MenuDropdown/MenuDropdown.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useMergedRef } from '@raikou/hooks';\nimport {\n  BoxProps,\n  CompoundStylesApiProps,\n  createEventHandler,\n  ElementProps,\n  factory,\n  Factory,\n  useProps,\n} from '../../../core';\nimport { Popover } from '../../Popover';\nimport { useMenuContext } from '../Menu.context';\n\nexport type MenuDropdownStylesNames = 'dropdown';\n\nexport interface MenuDropdownProps\n  extends BoxProps,\n    CompoundStylesApiProps<MenuDropdownFactory>,\n    ElementProps<'div'> {}\n\nexport type MenuDropdownFactory = Factory<{\n  props: MenuDropdownProps;\n  ref: HTMLDivElement;\n  stylesNames: MenuDropdownStylesNames;\n  compound: true;\n}>;\n\nconst defaultProps: Partial<MenuDropdownProps> = {};\n\nexport const MenuDropdown = factory<MenuDropdownFactory>((props, ref) => {\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    vars,\n    onMouseEnter,\n    onMouseLeave,\n    onKeyDown,\n    children,\n    ...others\n  } = useProps('MenuDropdown', defaultProps, props);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n  const ctx = useMenuContext();\n\n  const handleKeyDown = createEventHandler<any>(onKeyDown, (event) => {\n    if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n      event.preventDefault();\n      wrapperRef.current\n        ?.querySelectorAll<HTMLButtonElement>('[data-menu-item]:not(:disabled)')[0]\n        ?.focus();\n    }\n  });\n\n  const handleMouseEnter = createEventHandler<any>(\n    onMouseEnter,\n    () => (ctx.trigger === 'hover' || ctx.trigger === 'click-hover') && ctx.openDropdown()\n  );\n\n  const handleMouseLeave = createEventHandler<any>(\n    onMouseLeave,\n    () => (ctx.trigger === 'hover' || ctx.trigger === 'click-hover') && ctx.closeDropdown()\n  );\n\n  return (\n    <Popover.Dropdown\n      {...others}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      role=\"menu\"\n      aria-orientation=\"vertical\"\n      ref={useMergedRef(ref, wrapperRef)}\n      {...ctx.getStyles('dropdown', {\n        className,\n        style,\n        styles,\n        classNames,\n        withStaticClass: false,\n      })}\n      tabIndex={-1}\n      data-menu-dropdown\n      onKeyDown={handleKeyDown}\n    >\n      <div tabIndex={-1} data-autofocus data-raikou-stop-propagation style={{ outline: 0 }} />\n      {children}\n    </Popover.Dropdown>\n  );\n});\n\nMenuDropdown.displayName = '@raikou/core/MenuDropdown';\n"],"names":["factory","useProps","useRef","useMenuContext","createEventHandler","jsxs","Popover","useMergedRef","jsx"],"mappings":";;;;;;;;;;;;;;;;;AA4BA,MAAM,eAA2C,EAAC;AAE3C,MAAM,YAAe,GAAAA,eAAA,CAA6B,CAAC,KAAA,EAAO,GAAQ,KAAA;AACvE,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAAC,iBAAA,CAAS,cAAgB,EAAA,YAAA,EAAc,KAAK,CAAA;AAEhD,EAAM,MAAA,UAAA,GAAaC,aAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,MAAMC,2BAAe,EAAA;AAE3B,EAAA,MAAM,aAAgB,GAAAC,qCAAA,CAAwB,SAAW,EAAA,CAAC,KAAU,KAAA;AAClE,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,SAAa,IAAA,KAAA,CAAM,QAAQ,WAAa,EAAA;AACxD,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,UAAA,CAAW,SACP,gBAAoC,CAAA,iCAAiC,CAAE,CAAA,CAAC,GACxE,KAAM,EAAA;AAAA;AACZ,GACD,CAAA;AAED,EAAA,MAAM,gBAAmB,GAAAA,qCAAA;AAAA,IACvB,YAAA;AAAA,IACA,MAAA,CAAO,IAAI,OAAY,KAAA,OAAA,IAAW,IAAI,OAAY,KAAA,aAAA,KAAkB,IAAI,YAAa;AAAA,GACvF;AAEA,EAAA,MAAM,gBAAmB,GAAAA,qCAAA;AAAA,IACvB,YAAA;AAAA,IACA,MAAA,CAAO,IAAI,OAAY,KAAA,OAAA,IAAW,IAAI,OAAY,KAAA,aAAA,KAAkB,IAAI,aAAc;AAAA,GACxF;AAEA,EACE,uBAAAC,eAAA;AAAA,IAACC,eAAQ,CAAA,QAAA;AAAA,IAAR;AAAA,MACE,GAAG,MAAA;AAAA,MACJ,YAAc,EAAA,gBAAA;AAAA,MACd,YAAc,EAAA,gBAAA;AAAA,MACd,IAAK,EAAA,MAAA;AAAA,MACL,kBAAiB,EAAA,UAAA;AAAA,MACjB,GAAA,EAAKC,kBAAa,CAAA,GAAA,EAAK,UAAU,CAAA;AAAA,MAChC,GAAG,GAAI,CAAA,SAAA,CAAU,UAAY,EAAA;AAAA,QAC5B,SAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAiB,EAAA;AAAA,OAClB,CAAA;AAAA,MACD,QAAU,EAAA,CAAA,CAAA;AAAA,MACV,oBAAkB,EAAA,IAAA;AAAA,MAClB,SAAW,EAAA,aAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAACC,cAAA,CAAA,KAAA,EAAA,EAAI,QAAU,EAAA,CAAA,CAAA,EAAI,gBAAc,EAAA,IAAA,EAAC,8BAA4B,EAAA,IAAA,EAAC,KAAO,EAAA,EAAE,OAAS,EAAA,CAAA,EAAK,EAAA,CAAA;AAAA,QACrF;AAAA;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,YAAA,CAAa,WAAc,GAAA,2BAAA;;;;"}