UNPKG

@wordpress/block-editor

Version:
66 lines (55 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _blocks = require("@wordpress/blocks"); var _data = require("@wordpress/data"); var _i18n = require("@wordpress/i18n"); var _notices = require("@wordpress/notices"); var _store = require("../../../store"); /** * WordPress dependencies */ /** * Internal dependencies */ /** * 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 } = (0, _data.useSelect)(select => { const { __experimentalGetAllowedPatterns, getSettings } = select(_store.store); return { patterns: __experimentalGetAllowedPatterns(rootClientId), patternCategories: getSettings().__experimentalBlockPatternCategories }; }, [rootClientId]); const { createSuccessNotice } = (0, _data.useDispatch)(_notices.store); const onClickPattern = (0, _element.useCallback)((pattern, blocks) => { onInsert((blocks !== null && blocks !== void 0 ? blocks : []).map(block => (0, _blocks.cloneBlock)(block)), pattern.name); createSuccessNotice((0, _i18n.sprintf)( /* translators: %s: block pattern title. */ (0, _i18n.__)('Block pattern "%s" inserted.'), pattern.title), { type: 'snackbar' }); }, []); return [patterns, patternCategories, onClickPattern]; }; var _default = usePatternsState; exports.default = _default; //# sourceMappingURL=use-patterns-state.js.map