UNPKG

@gechiui/block-editor

Version:
54 lines (45 loc) 1.22 kB
/** * GeChiUI dependencies */ import { useSelect } from '@gechiui/data'; /** * Internal dependencies */ import BlockTypesList from '../block-types-list'; import useClipboardBlock from './hooks/use-clipboard-block'; import { store as blockEditorStore } from '../../store'; import useBlockTypeImpressions from './hooks/use-block-type-impressions'; import { filterInserterItems } from './utils'; function BlockTypesTab( { onSelect, rootClientId, listProps } ) { const clipboardBlock = useClipboardBlock( rootClientId ); const { blockTypes } = useSelect( ( select ) => { const { getInserterItems } = select( blockEditorStore ); const blockItems = filterInserterItems( getInserterItems( rootClientId ) ); return { blockTypes: clipboardBlock ? [ clipboardBlock, ...blockItems ] : blockItems, }; }, [ rootClientId ] ); const { items, trackBlockTypeSelected } = useBlockTypeImpressions( blockTypes ); const handleSelect = ( ...args ) => { trackBlockTypeSelected( ...args ); onSelect( ...args ); }; return ( <BlockTypesList name="Blocks" items={ items } onSelect={ handleSelect } listProps={ listProps } /> ); } export default BlockTypesTab;