UNPKG

@gechiui/block-editor

Version:
57 lines (53 loc) 1.67 kB
/** * External dependencies */ import { map } from 'lodash'; /** * GeChiUI dependencies */ import { useCallback } from '@gechiui/element'; import { cloneBlock } from '@gechiui/blocks'; import { useDispatch, useSelect } from '@gechiui/data'; import { __, sprintf } from '@gechiui/i18n'; import { store as noticesStore } from '@gechiui/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(map(blocks, block => cloneBlock(block)), pattern.name); createSuccessNotice(sprintf( /* translators: %s: block pattern title. */ __('区块样板“%s”已插入。'), pattern.title), { type: 'snackbar' }); }, []); return [patterns, patternCategories, onClickPattern]; }; export default usePatternsState; //# sourceMappingURL=use-patterns-state.js.map