{"version":3,"file":"HoverCardTarget.cjs","names":["useProps","getSingleElementChild","useHoverCardContext","HoverCardGroupContext","Popover","createEventHandler"],"sources":["../../../../src/components/HoverCard/HoverCardTarget/HoverCardTarget.tsx"],"sourcesContent":["import { cloneElement, use } from 'react';\nimport { createEventHandler, getSingleElementChild, useProps } from '../../../core';\nimport { Popover, PopoverTargetProps } from '../../Popover';\nimport { useHoverCardContext } from '../HoverCard.context';\nimport { HoverCardGroupContext } from '../HoverCardGroup/HoverCardGroup';\n\nexport interface HoverCardTargetProps extends PopoverTargetProps {\n  /**\n   * Name of the prop to wrap event listeners in.\n   * Use when the target component expects event listeners in a nested object.\n   * For example, some components expect `componentProps={{ onMouseEnter, onMouseLeave }}`.\n   * @default undefined (event listeners passed directly to component)\n   */\n  eventPropsWrapperName?: string;\n}\n\nconst defaultProps = {\n  refProp: 'ref',\n} satisfies Partial<HoverCardTargetProps>;\n\nexport function HoverCardTarget(props: HoverCardTargetProps) {\n  const { children, refProp, eventPropsWrapperName, ...others } = useProps(\n    'HoverCardTarget',\n    defaultProps,\n    props\n  );\n\n  const child = getSingleElementChild(children);\n  if (!child) {\n    throw new Error(\n      'HoverCard.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 = useHoverCardContext();\n  const groupContext = use(HoverCardGroupContext);\n\n  if (groupContext.withinGroup && ctx.getReferenceProps && ctx.reference) {\n    const referenceProps = ctx.getReferenceProps();\n\n    return (\n      <Popover.Target refProp={refProp} {...others}>\n        {cloneElement(\n          child,\n          eventPropsWrapperName\n            ? { [eventPropsWrapperName]: { ...referenceProps, ref: ctx.reference } }\n            : { ...referenceProps, ref: ctx.reference }\n        )}\n      </Popover.Target>\n    );\n  }\n\n  const onMouseEnter = createEventHandler((child.props as any).onMouseEnter, ctx.openDropdown);\n  const onMouseLeave = createEventHandler((child.props as any).onMouseLeave, ctx.closeDropdown);\n\n  const eventListeners = { onMouseEnter, onMouseLeave };\n\n  return (\n    <Popover.Target refProp={refProp} {...others}>\n      {cloneElement(\n        child,\n        eventPropsWrapperName ? { [eventPropsWrapperName]: eventListeners } : eventListeners\n      )}\n    </Popover.Target>\n  );\n}\n\nHoverCardTarget.displayName = '@mantine/core/HoverCardTarget';\n"],"mappings":";;;;;;;;;;;AAgBA,MAAM,eAAe,EACnB,SAAS,OACV;AAED,SAAgB,gBAAgB,OAA6B;CAC3D,MAAM,EAAE,UAAU,SAAS,uBAAuB,GAAG,WAAWA,kBAAAA,SAC9D,mBACA,cACA,MACD;CAED,MAAM,QAAQC,iCAAAA,sBAAsB,SAAS;AAC7C,KAAI,CAAC,MACH,OAAM,IAAI,MACR,qKACD;CAGH,MAAM,MAAMC,0BAAAA,qBAAqB;AAGjC,MAAA,GAAA,MAAA,KAFyBC,uBAAAA,sBAAsB,CAE9B,eAAe,IAAI,qBAAqB,IAAI,WAAW;EACtE,MAAM,iBAAiB,IAAI,mBAAmB;AAE9C,SACE,iBAAA,GAAA,kBAAA,KAACC,gBAAAA,QAAQ,QAAT;GAAyB;GAAS,GAAI;qCAElC,OACA,wBACI,GAAG,wBAAwB;IAAE,GAAG;IAAgB,KAAK,IAAI;IAAW,EAAE,GACtE;IAAE,GAAG;IAAgB,KAAK,IAAI;IAAW,CAC9C;GACc,CAAA;;CAOrB,MAAM,iBAAiB;EAAE,cAHJC,6BAAAA,mBAAoB,MAAM,MAAc,cAAc,IAAI,aAAa;EAGrD,cAFlBA,6BAAAA,mBAAoB,MAAM,MAAc,cAAc,IAAI,cAAc;EAExC;AAErD,QACE,iBAAA,GAAA,kBAAA,KAACD,gBAAAA,QAAQ,QAAT;EAAyB;EAAS,GAAI;oCAElC,OACA,wBAAwB,GAAG,wBAAwB,gBAAgB,GAAG,eACvE;EACc,CAAA;;AAIrB,gBAAgB,cAAc"}