diff --git a/packages/block-editor/src/components/block-styles/menu-items.js b/packages/block-editor/src/components/block-styles/menu-items.js index 927a7f9d7a5099..321c4d79f81ba6 100644 --- a/packages/block-editor/src/components/block-styles/menu-items.js +++ b/packages/block-editor/src/components/block-styles/menu-items.js @@ -4,19 +4,14 @@ import { MenuItem, __experimentalText as Text } from '@wordpress/components'; import { check } from '@wordpress/icons'; -/** - * Internal dependencies - */ -import useStylesForBlocks from './use-styles-for-block'; - const noop = () => {}; -export default function BlockStylesMenuItems( { clientId, onSwitch = noop } ) { - const { onSelect, stylesToRender, activeStyle } = useStylesForBlocks( { - clientId, - onSwitch, - } ); - +export default function BlockStylesMenuItems( { + stylesToRender, + activeStyle, + onSelect = noop, + onHoverStyle = noop, +} ) { if ( ! stylesToRender || stylesToRender.length === 0 ) { return null; } @@ -29,6 +24,8 @@ export default function BlockStylesMenuItems( { clientId, onSwitch = noop } ) { key={ style.name } icon={ activeStyle.name === style.name ? check : null } onClick={ () => onSelect( style ) } + onMouseEnter={ () => onHoverStyle( style ) } + onMouseLeave={ () => onHoverStyle( null ) } > { + if ( ! hoveredStyle || ! genericPreviewBlock ) { + return null; + } + const previewClassName = replaceActiveStyle( + className, + activeStyle, + hoveredStyle + ); + return [ + { + ...genericPreviewBlock, + attributes: { + ...( genericPreviewBlock.attributes || {} ), + className: previewClassName, + }, + }, + ]; + }, [ hoveredStyle, genericPreviewBlock, className, activeStyle ] ); + + if ( ! stylesToRender || stylesToRender.length === 0 ) { + return null; + } return ( - + { previewBlocks && ( + + ) } + ); }