@wordpress/block-editor
Version:
66 lines (55 loc) • 1.8 kB
JavaScript
;
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