UNPKG

@wordpress/block-editor

Version:
52 lines (49 loc) 1.66 kB
/** * WordPress dependencies */ import { useCallback } from '@wordpress/element'; import { cloneBlock } from '@wordpress/blocks'; import { useDispatch, useSelect } from '@wordpress/data'; import { __, sprintf } from '@wordpress/i18n'; import { store as noticesStore } from '@wordpress/notices'; /** * Internal dependencies */ import { store as blockEditorStore } from '../../../store'; /** * Retrieves the block patterns inserter state. * * @param {Function} onInsert function called when inserter a list of blocks. * @param {string=} rootClientId Insertion's root client ID. * * @return {Array} Returns the patterns state. (patterns, categories, onSelect handler) */ const usePatternsState = (onInsert, rootClientId) => { const { patternCategories, patterns } = useSelect(select => { const { __experimentalGetAllowedPatterns, getSettings } = select(blockEditorStore); return { patterns: __experimentalGetAllowedPatterns(rootClientId), patternCategories: getSettings().__experimentalBlockPatternCategories }; }, [rootClientId]); const { createSuccessNotice } = useDispatch(noticesStore); const onClickPattern = useCallback((pattern, blocks) => { onInsert((blocks !== null && blocks !== void 0 ? blocks : []).map(block => cloneBlock(block)), pattern.name); createSuccessNotice(sprintf( /* translators: %s: block pattern title. */ __('Block pattern "%s" inserted.'), pattern.title), { type: 'snackbar' }); }, []); return [patterns, patternCategories, onClickPattern]; }; export default usePatternsState; //# sourceMappingURL=use-patterns-state.js.map