@gechiui/block-editor
Version:
62 lines (55 loc) • 1.6 kB
JavaScript
import { createElement } from "@gechiui/element";
/**
* GeChiUI dependencies
*/
import { useSelect } from '@gechiui/data';
/**
* 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 { filterInserterItems } from './utils';
function InserterSearchResults(_ref) {
let {
filterValue,
onSelect,
listProps,
rootClientId,
isFullScreen
} = _ref;
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 === null || items === void 0 ? void 0 : items.length) === 0) {
return createElement(InserterNoResults, null);
}
const handleSelect = function () {
trackBlockTypeSelected(...arguments);
onSelect(...arguments);
};
return createElement(BlockTypesList, {
name: "Blocks",
initialNumToRender: isFullScreen ? 10 : 3,
items,
onSelect: handleSelect,
listProps
});
}
export default InserterSearchResults;
//# sourceMappingURL=search-results.native.js.map