{"version":3,"file":"index.cjs","sources":["../../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import * as RightMenu from '@radix-ui/react-context-menu';\nimport {\n  ComponentProps,\n  ComponentPropsWithRef,\n  ElementType,\n  ReactNode,\n  forwardRef,\n} from 'react';\nimport type { HorizontalDirection } from '@/types';\nimport { Icon } from '@/components/Icon';\nimport type { IconName } from '@/components/Icon';\nimport { Arrow, GenericMenuItem, GenericMenuPanel } from '@/components/GenericMenu';\nimport { cn, cva } from '@/lib/cva';\nimport Popover_Arrow from '@/components/Assets/Icons/Popover-Arrow';\nimport { IconWrapper } from '@/components/IconWrapper/IconWrapper';\nimport { useInputModality } from '@/hooks/internal';\nimport type { ArrowProps, ContextMenuItemProps } from './ContextMenu.types';\nimport { useResolvedPortalContainer } from '@/providers/PortalContext';\nimport styles from './ContextMenu.module.css';\n\nexport const ContextMenu = (props: RightMenu.ContextMenuProps) => (\n  <RightMenu.Root {...props} />\n);\n\nconst ContextMenuTrigger = forwardRef<HTMLDivElement, RightMenu.ContextMenuTriggerProps>(\n  ({ disabled, className, ...props }, ref) => {\n    return (\n      <RightMenu.Trigger\n        asChild\n        disabled={disabled}\n      >\n        <div\n          ref={ref}\n          {...props}\n          className={cn(styles.trigger, className)}\n        />\n      </RightMenu.Trigger>\n    );\n  }\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\nContextMenu.Trigger = ContextMenuTrigger;\n\ninterface ContextMenuSubTriggerProps extends RightMenu.ContextMenuSubTriggerProps {\n  icon?: IconName;\n  iconDir?: HorizontalDirection;\n}\nconst ContextMenuSubTrigger = ({\n  icon,\n  iconDir,\n  children,\n  ...props\n}: ContextMenuSubTriggerProps) => {\n  return (\n    <GenericMenuItem\n      as={RightMenu.SubTrigger}\n      {...props}\n    >\n      <IconWrapper\n        icon={icon}\n        iconDir={iconDir}\n      >\n        {children}\n      </IconWrapper>\n      <div className=\"dropdown-arrow\">\n        <Icon name=\"chevron-right\" />\n      </div>\n    </GenericMenuItem>\n  );\n};\n\nContextMenuSubTrigger.displayName = 'ContextMenuSubTrigger';\nContextMenu.SubTrigger = ContextMenuSubTrigger;\n\ntype DeprecatedFields = {\n  /** @deprecated The side field have been deprecated. See https://github.com/ClickHouse/click-ui/pull/756/files#diff-801534275d6fc19b60543371f1055838e7d60942fa4005c3ab1623293e10fb7fR24 */\n  side?: string;\n  /** @deprecated The align field have been deprecated. See https://github.com/ClickHouse/click-ui/pull/756/files#diff-801534275d6fc19b60543371f1055838e7d60942fa4005c3ab1623293e10fb7fR24 */\n  align?: string;\n};\n\ntype ContextMenuContentProps = RightMenu.ContextMenuContentProps & {\n  sub?: true;\n  container?: HTMLElement | null;\n} & ArrowProps &\n  DeprecatedFields;\n\ntype ContextMenuSubContentProps = RightMenu.ContextMenuSubContentProps & {\n  sub?: never;\n  container?: HTMLElement | null;\n} & ArrowProps &\n  DeprecatedFields;\n\nconst rightMenuContentVariants = cva(styles['right-menu-content'], {\n  variants: {\n    showArrow: {\n      true: styles['right-menu-content_show-arrow'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    showArrow: false,\n  },\n});\n\ntype RightMenuContentComponent = <T extends ElementType = 'div'>(\n  props: ComponentProps<typeof GenericMenuPanel<T>> & { showArrow?: boolean }\n) => ReactNode;\n\nconst _RightMenuContent = <T extends ElementType = 'div'>(\n  {\n    showArrow,\n    className,\n    ...props\n  }: ComponentProps<typeof GenericMenuPanel<T>> & { showArrow?: boolean },\n  ref: ComponentPropsWithRef<T>['ref']\n) => (\n  <GenericMenuPanel\n    ref={ref}\n    showArrow={showArrow}\n    {...(props as ComponentProps<typeof GenericMenuPanel>)}\n    className={cn(rightMenuContentVariants({ showArrow }), className)}\n  />\n);\n\nconst RightMenuContent: RightMenuContentComponent = forwardRef(_RightMenuContent);\n\nconst ContextMenuContent = ({\n  sub,\n  children,\n  container,\n  showArrow,\n  // TODO: remove deprecated side and align\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  side,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  align,\n  ...props\n}: ContextMenuContentProps | ContextMenuSubContentProps) => {\n  const ContentElement = sub ? RightMenu.SubContent : RightMenu.Content;\n  const inputModalityProps = useInputModality();\n  const portalContainer = useResolvedPortalContainer(container);\n\n  return (\n    <RightMenu.Portal container={portalContainer}>\n      <RightMenuContent\n        {...props}\n        type=\"context-menu\"\n        showArrow={showArrow}\n        as={ContentElement}\n        {...inputModalityProps}\n      >\n        {showArrow && (\n          <Arrow\n            asChild\n            as={RightMenu.Arrow}\n            width={20}\n            height={10}\n          >\n            <Popover_Arrow className=\"popover-arrow\" />\n          </Arrow>\n        )}\n        {children}\n      </RightMenuContent>\n    </RightMenu.Portal>\n  );\n};\n\nContextMenuContent.displayName = 'ContextMenuContent';\nContextMenu.Content = ContextMenuContent;\n\nconst ContextMenuGroup = ({ className, ...props }: RightMenu.ContextMenuGroupProps) => {\n  return (\n    <RightMenu.Group\n      {...props}\n      className={cn(styles.group, className)}\n    />\n  );\n};\n\nContextMenuGroup.displayName = 'ContextMenuGroup';\nContextMenu.Group = ContextMenuGroup;\n\nconst ContextMenuSub = ({ ...props }: RightMenu.ContextMenuGroupProps) => {\n  return <RightMenu.Sub {...props} />;\n};\n\nContextMenuSub.displayName = 'ContextMenuSub';\nContextMenu.Sub = ContextMenuSub;\n\nconst ContextMenuItem = ({\n  icon,\n  iconDir,\n  type = 'default',\n  children,\n  ...props\n}: ContextMenuItemProps) => {\n  return (\n    <GenericMenuItem\n      as={RightMenu.Item}\n      type={type}\n      {...props}\n    >\n      <IconWrapper\n        icon={icon}\n        iconDir={iconDir}\n      >\n        {children}\n      </IconWrapper>\n    </GenericMenuItem>\n  );\n};\n\nContextMenuItem.displayName = 'ContextMenuItem';\nContextMenu.Item = ContextMenuItem;\n\nexport default ContextMenu;\n"],"names":["jsx","RightMenu","forwardRef","cn","styles","jsxs","GenericMenuItem","IconWrapper","Icon","cva","GenericMenuPanel","useInputModality","useResolvedPortalContainer","Arrow","Popover_Arrow"],"mappings":"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"}