UNPKG

@gechiui/block-editor

Version:
66 lines (62 loc) 1.48 kB
/** * GeChiUI dependencies */ import { __ } from '@gechiui/i18n'; import { MenuGroup, MenuItem } from '@gechiui/components'; import { getBlockMenuDefaultClassName, switchToBlockType, } from '@gechiui/blocks'; import { useState } from '@gechiui/element'; /** * Internal dependencies */ import BlockIcon from '../block-icon'; import PreviewBlockPopover from './preview-block-popover'; const BlockTransformationsMenu = ( { className, possibleBlockTransformations, onSelect, blocks, } ) => { const [ hoveredTransformItemName, setHoveredTransformItemName, ] = useState(); return ( <MenuGroup label={ __( '转换为' ) } className={ className }> { hoveredTransformItemName && ( <PreviewBlockPopover blocks={ switchToBlockType( blocks, hoveredTransformItemName ) } /> ) } { possibleBlockTransformations.map( ( item ) => { const { name, icon, title, isDisabled } = item; return ( <MenuItem key={ name } className={ getBlockMenuDefaultClassName( name ) } onClick={ ( event ) => { event.preventDefault(); onSelect( name ); } } disabled={ isDisabled } onMouseLeave={ () => setHoveredTransformItemName( null ) } onMouseEnter={ () => setHoveredTransformItemName( name ) } > <BlockIcon icon={ icon } showColors /> { title } </MenuItem> ); } ) } </MenuGroup> ); }; export default BlockTransformationsMenu;