{"version":3,"file":"MenuTarget.cjs","names":["useProps","getSingleElementChild","useMenuContext","createEventHandler","Popover"],"sources":["../../../../src/components/Menu/MenuTarget/MenuTarget.tsx"],"sourcesContent":["import { cloneElement } from 'react';\nimport { createEventHandler, getSingleElementChild, useProps } from '../../../core';\nimport { Popover } from '../../Popover';\nimport { useMenuContext } from '../Menu.context';\n\nexport interface MenuTargetProps {\n  /** Target element */\n  children: React.ReactNode;\n\n  /** Key of the prop used to get element ref, useful for forwarding refs to custom components @default 'ref' */\n  refProp?: string;\n}\n\nconst defaultProps = {\n  refProp: 'ref',\n} satisfies Partial<MenuTargetProps>;\n\nexport function MenuTarget(props: MenuTargetProps) {\n  const { children, refProp, ...others } = useProps('MenuTarget', defaultProps, props);\n\n  const child = getSingleElementChild(children);\n  if (!child) {\n    throw new Error(\n      'Menu.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported'\n    );\n  }\n\n  const ctx = useMenuContext();\n  const _childProps = child.props as any;\n\n  const onClick = createEventHandler(_childProps.onClick, () => {\n    if (ctx.trigger === 'click') {\n      ctx.toggleDropdown();\n    } else if (ctx.trigger === 'click-hover') {\n      ctx.setOpenedViaClick(true);\n      if (!ctx.opened) {\n        ctx.openDropdown();\n      }\n    }\n  });\n\n  const onMouseEnter = createEventHandler(\n    _childProps.onMouseEnter,\n    () => (ctx.trigger === 'hover' || ctx.trigger === 'click-hover') && ctx.openDropdown()\n  );\n\n  const onMouseLeave = createEventHandler(_childProps.onMouseLeave, () => {\n    if (ctx.trigger === 'hover') {\n      ctx.closeDropdown();\n    } else if (ctx.trigger === 'click-hover' && !ctx.openedViaClick) {\n      ctx.closeDropdown();\n    }\n  });\n\n  return (\n    <Popover.Target refProp={refProp} popupType=\"menu\" {...others}>\n      {cloneElement(child, {\n        onClick,\n        onMouseEnter,\n        onMouseLeave,\n        'data-expanded': ctx.opened ? true : undefined,\n      } as any)}\n    </Popover.Target>\n  );\n}\n\nMenuTarget.displayName = '@mantine/core/MenuTarget';\n"],"mappings":";;;;;;;;;;AAaA,MAAM,eAAe,EACnB,SAAS,MACX;AAEA,SAAgB,WAAW,OAAwB;CACjD,MAAM,EAAE,UAAU,SAAS,GAAG,WAAWA,kBAAAA,SAAS,cAAc,cAAc,KAAK;CAEnF,MAAM,QAAQC,iCAAAA,sBAAsB,QAAQ;CAC5C,IAAI,CAAC,OACH,MAAM,IAAI,MACR,+JACF;CAGF,MAAM,MAAMC,qBAAAA,eAAe;CAC3B,MAAM,cAAc,MAAM;CAE1B,MAAM,UAAUC,6BAAAA,mBAAmB,YAAY,eAAe;EAC5D,IAAI,IAAI,YAAY,SAClB,IAAI,eAAe;OACd,IAAI,IAAI,YAAY,eAAe;GACxC,IAAI,kBAAkB,IAAI;GAC1B,IAAI,CAAC,IAAI,QACP,IAAI,aAAa;EAErB;CACF,CAAC;CAED,MAAM,eAAeA,6BAAAA,mBACnB,YAAY,qBACL,IAAI,YAAY,WAAW,IAAI,YAAY,kBAAkB,IAAI,aAAa,CACvF;CAEA,MAAM,eAAeA,6BAAAA,mBAAmB,YAAY,oBAAoB;EACtE,IAAI,IAAI,YAAY,SAClB,IAAI,cAAc;OACb,IAAI,IAAI,YAAY,iBAAiB,CAAC,IAAI,gBAC/C,IAAI,cAAc;CAEtB,CAAC;CAED,OACE,iBAAA,GAAA,kBAAA,KAACC,gBAAAA,QAAQ,QAAT;EAAyB;EAAS,WAAU;EAAO,GAAI;oCACvC,OAAO;GACnB;GACA;GACA;GACA,iBAAiB,IAAI,SAAS,OAAO,KAAA;EACvC,CAAQ;CACM,CAAA;AAEpB;AAEA,WAAW,cAAc"}