/// import { ClickOutsideHandler } from '../../hooks/useClickOutside/useClickOutside'; import { PropsWithHTMLAttributes, PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes'; import { Direction, Position } from '../Popover/Popover'; export declare const defaultGroupId = "context-menu-no-group"; export declare const contextMenuSizes: readonly ["m", "s", "l"]; export declare type ContextMenuPropSize = typeof contextMenuSizes[number]; export declare const contextMenuDefaultSize: ContextMenuPropSize; export declare const contextMenuAccent: readonly ["alert", "warning", "success"]; export declare type ContextMenuAccent = typeof contextMenuAccent[number]; export declare type ContextMenuPropGetLabel = (item: ITEM) => string | number; export declare type ContextMenuPropGetSide = (item: ITEM) => React.ReactNode | null; export declare type ContextMenuPropGetSubItems = (item: ITEM) => ITEM[] | undefined; export declare type ContextMenuPropGetAccent = (item: ITEM) => ContextMenuAccent | undefined; export declare type ContextMenuPropGetGroupId = (item: ITEM) => string | number | undefined; export declare type ContextMenuPropGetKey = (item: ITEM) => string | number; export declare type ContextMenuPropGetDisable = (item: ITEM) => boolean | undefined; export declare type ContextMenuPropGetGroupLabel = (id: string | number | undefined) => string | number | undefined; export declare type ContextMenuPropSortGroup = (a: string | number, b: string | number) => number; export declare type ContextMenuPropGetOnClick = (item: ITEM) => React.EventHandler>; export declare const contextMenuPropSubMenuDirections: readonly ["rightStartUp", "rightStartDown", "leftStartUp", "leftStartDown"]; export declare type ContextMenuPropSubMenuDirection = typeof contextMenuPropSubMenuDirections[number]; export declare const contextMenuPropDefaultSubMenuDirection: ContextMenuPropSubMenuDirection; declare type PositioningProps = { anchorRef: React.RefObject; position?: never; } | { anchorRef?: never; position: Position; }; export declare type ContextMenuProps = PropsWithHTMLAttributesAndRef<{ items: ITEM[]; getLabel: ContextMenuPropGetLabel; getLeftSideBar?: ContextMenuPropGetSide; getRightSideBar?: ContextMenuPropGetSide; getSubItems?: ContextMenuPropGetSubItems; getGroupId?: ContextMenuPropGetGroupId; getGroupLabel?: ContextMenuPropGetGroupLabel; getAccent?: ContextMenuPropGetAccent; size?: ContextMenuPropSize; sortGroup?: ContextMenuPropSortGroup; getOnClick?: ContextMenuPropGetOnClick; direction?: Direction; possibleDirections?: readonly Direction[]; subMenuDirection?: ContextMenuPropSubMenuDirection; getKey?: ContextMenuPropGetKey; getDisabled?: ContextMenuPropGetDisable; offset?: number; onClickOutside?: ClickOutsideHandler; spareDirection?: Direction; } & PositioningProps, HTMLDivElement>; export declare type AddLevel = (level: number, items: ITEM[], anchorRef: React.RefObject, activeItem: string) => void; export declare type DeleteLevel = (level: number) => void; declare type ContextMenuLevelProps = Omit & { level: number; addLevel: AddLevel; deleteLevel: DeleteLevel; activeItem?: string; onSetDirection?: (direction: Direction) => void; hoveredParenLevel: number; setHoveredParenLevel: (level: number) => void; }, 'subMenuDirection' | 'getKey' | 'onClickOutside' | 'offset' | 'isOpen'>; export declare type ContextMenuItemProps = PropsWithHTMLAttributes<{ label: string | number; rightSide?: React.ReactNode; leftSide?: React.ReactNode; size?: ContextMenuPropSize; active?: boolean; withSubMenu: boolean; accent?: ContextMenuAccent; disabled?: boolean; } & React.RefAttributes, HTMLDivElement>; export declare type Level = { items: ITEM[]; activeItem?: string; direction?: Direction; possibleDirections?: readonly Direction[]; offset?: number; } & PositioningProps; export declare type ContextMenuItem = (props: ContextMenuItemProps, ref: React.Ref) => React.ReactElement | null; export declare type ContextMenuType = (props: ContextMenuProps) => React.ReactElement | null; export declare type ContextMenuLevelType = (props: ContextMenuLevelProps, ref: React.Ref) => React.ReactElement | null; declare type Group = { items: ITEM[]; id: string | number; }; declare type getGroupsResult = Group[]; export declare function getGroups(items: ITEM[], getGroupId?: ContextMenuPropGetGroupId, sortGroup?: ContextMenuPropSortGroup): getGroupsResult; export {};