import { Component, ReactNode, SyntheticEvent } from 'react'; import PropTypes from 'prop-types'; import { MenuId, StyleProps } from '../types'; export interface MenuProviderProps extends StyleProps { /** * Unique id to identify the menu. Use to Trigger the corresponding menu */ id: MenuId; /** * Any valid node that can be rendered */ children: ReactNode; /** * Any valid node that can be rendered or a function returning a valid react node */ component: ReactNode | ((args?: any) => ReactNode); /** * Render props */ render?: (args?: any) => ReactNode; /** * Any react event * `onClick`, `onContextMenu`, ... */ event: string; /** * Store children ref * `default: true` */ storeRef: boolean; /** * Any valid object, data are passed to the menu item callback */ data?: object; } declare class MenuProvider extends Component { static propTypes: { id: PropTypes.Validator; children: PropTypes.Validator; component: PropTypes.Requireable; render: PropTypes.Requireable<(...args: any[]) => any>; event: PropTypes.Requireable; className: PropTypes.Requireable; style: PropTypes.Requireable; storeRef: PropTypes.Requireable; data: PropTypes.Requireable; }; static defaultProps: { component: string; event: string; storeRef: boolean; }; childrenRefs: HTMLElement[]; handleEvent: (e: SyntheticEvent) => void; setChildRef: (ref: HTMLElement) => number | true; getChildren(): ({} | null | undefined)[]; render(): {} | null | undefined; } export { MenuProvider };