UNPKG

@wordpress/block-editor

Version:
66 lines (59 loc) 1.69 kB
import { createElement } from "@wordpress/element"; /** * WordPress dependencies */ import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; /** * Internal dependencies */ import { searchItems } from './search-items'; import BlockTypesList from '../block-types-list'; import InserterNoResults from './no-results'; import { store as blockEditorStore } from '../../store'; import useBlockTypeImpressions from './hooks/use-block-type-impressions'; import { createInserterSection, filterInserterItems } from './utils'; function InserterSearchResults({ filterValue, onSelect, listProps, rootClientId, isFullScreen }) { const { blockTypes } = useSelect(select => { const allItems = select(blockEditorStore).getInserterItems(rootClientId); const availableItems = filterInserterItems(allItems, { allowReusable: true }); const filteredItems = searchItems(availableItems, filterValue); return { blockTypes: filteredItems }; }, [rootClientId, filterValue]); const { items, trackBlockTypeSelected } = useBlockTypeImpressions(blockTypes); if (!items || items?.length === 0) { return createElement(InserterNoResults, null); } const handleSelect = (...args) => { trackBlockTypeSelected(...args); onSelect(...args); }; return createElement(BlockTypesList, { name: "Blocks", initialNumToRender: isFullScreen ? 10 : 3, sections: [createInserterSection({ key: 'search', items })], onSelect: handleSelect, listProps: listProps, label: __('Blocks') }); } export default InserterSearchResults; //# sourceMappingURL=search-results.native.js.map