UNPKG

@wordpress/block-editor

Version:
63 lines (62 loc) 1.78 kB
/** * WordPress dependencies */ import { useSelect } from '@wordpress/data'; import { __ } from '@wordpress/i18n'; import { useMemo } from '@wordpress/element'; /** * 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'; import { jsx as _jsx } from "react/jsx-runtime"; function InserterSearchResults({ filterValue, onSelect, listProps, rootClientId, isFullScreen }) { const { inserterItems } = useSelect(select => { const items = select(blockEditorStore).getInserterItems(rootClientId); return { inserterItems: items }; }, [rootClientId]); const blockTypes = useMemo(() => { const availableItems = filterInserterItems(inserterItems, { allowReusable: true }); return searchItems(availableItems, filterValue); }, [inserterItems, filterValue]); const { items, trackBlockTypeSelected } = useBlockTypeImpressions(blockTypes); if (!items || items?.length === 0) { return /*#__PURE__*/_jsx(InserterNoResults, {}); } const handleSelect = (...args) => { trackBlockTypeSelected(...args); onSelect(...args); }; return /*#__PURE__*/_jsx(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