@gechiui/block-editor
Version:
54 lines (45 loc) • 1.22 kB
JavaScript
/**
* 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;