{"version":3,"file":"WithContextMenu.mjs","sources":["../../../../src/components/ContextMenu/WithContextMenu.tsx"],"sourcesContent":["import { useState, type JSX } from 'react';\nimport * as React from 'react';\n\nimport { ContextMenu } from '../ContextMenu/ContextMenu';\n\nexport interface WithContextMenuProps {\n  /** Menu item trigger that accepts openMenu prop */\n  children: (props: { openMenu: React.MouseEventHandler<HTMLElement> }) => JSX.Element;\n  /** A function that returns an array of menu items */\n  renderMenuItems: () => React.ReactNode;\n  /** On menu open focus the first element */\n  focusOnOpen?: boolean;\n}\n\nexport const WithContextMenu = ({ children, renderMenuItems, focusOnOpen = true }: WithContextMenuProps) => {\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n  const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });\n  return (\n    <>\n      {children({\n        openMenu: (e) => {\n          setIsMenuOpen(true);\n          setMenuPosition({\n            x: e.pageX,\n            y: e.pageY - window.scrollY,\n          });\n        },\n      })}\n\n      {isMenuOpen && (\n        <ContextMenu\n          onClose={() => setIsMenuOpen(false)}\n          x={menuPosition.x}\n          y={menuPosition.y}\n          renderMenuItems={renderMenuItems}\n          focusOnOpen={focusOnOpen}\n        />\n      )}\n    </>\n  );\n};\n"],"names":[],"mappings":";;;;;AAcO,MAAM,kBAAkB,CAAC,EAAE,UAAU,eAAA,EAAiB,WAAA,GAAc,MAAK,KAA4B;AAC1G,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,QAAA,CAAS,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA;AAC/D,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,QAAA,CAAS;AAAA,MACR,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAA,eAAA,CAAgB;AAAA,UACd,GAAG,CAAA,CAAE,KAAA;AAAA,UACL,CAAA,EAAG,CAAA,CAAE,KAAA,GAAQ,MAAA,CAAO;AAAA,SACrB,CAAA;AAAA,MACH;AAAA,KACD,CAAA;AAAA,IAEA,UAAA,oBACC,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QAClC,GAAG,YAAA,CAAa,CAAA;AAAA,QAChB,GAAG,YAAA,CAAa,CAAA;AAAA,QAChB,eAAA;AAAA,QACA;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;;;;"}