@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 3.54 kB
Source Map (JSON)
{"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"}