import * as React from 'react'; import { NoCompactStyle } from '../space/Compact'; import type { MenuProps } from './menu'; import { supportNodeRef } from 'rc-util'; // Used for Dropdown only export interface OverrideContextProps { prefixCls?: string; expandIcon?: React.ReactNode; mode?: MenuProps['mode']; selectable?: boolean; validator?: (menuProps: Pick) => void; onClick?: () => void; } const OverrideContext = React.createContext(null); /** @internal Only used for Dropdown component. Do not use this in your production. */ export const OverrideProvider = React.forwardRef< HTMLElement, OverrideContextProps & { children: React.ReactNode } >((props, ref) => { const { children, ...restProps } = props; const override = React.useContext(OverrideContext); const context = React.useMemo( () => ({ ...override, ...restProps }), [ override, restProps.prefixCls, // restProps.expandIcon, Not mark as deps since this is a ReactNode restProps.mode, restProps.selectable, // restProps.validator, Not mark as deps since this is a function ], ); return ( {supportNodeRef(children) ? React.cloneElement(children as React.ReactElement, { ref }) : children} ); }); /** @internal Only used for Dropdown component. Do not use this in your production. */ export default OverrideContext;