/** * External dependencies */ // eslint-disable-next-line no-restricted-imports import type { Ref } from 'react'; /** * Internal dependencies */ import { useToolsPanelItem } from './hook'; import { View } from '../../view'; import { contextConnect, GeChiUIComponentProps } from '../../ui/context'; import type { ToolsPanelItemProps } from '../types'; // This wraps controls to be conditionally displayed within a tools panel. It // prevents props being applied to HTML elements that would make them invalid. const ToolsPanelItem = ( props: GeChiUIComponentProps< ToolsPanelItemProps, 'div' >, forwardedRef: Ref< any > ) => { const { children, isShown, shouldRenderPlaceholder, ...toolsPanelItemProps } = useToolsPanelItem( props ); if ( ! isShown ) { return shouldRenderPlaceholder ? ( ) : null; } return ( { children } ); }; const ConnectedToolsPanelItem = contextConnect( ToolsPanelItem, 'ToolsPanelItem' ); export default ConnectedToolsPanelItem;