UNPKG

@wordpress/block-editor

Version:
126 lines (124 loc) 4.66 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-editor/src/components/inserter/hooks/use-patterns-state.js var use_patterns_state_exports = {}; __export(use_patterns_state_exports, { default: () => use_patterns_state_default }); module.exports = __toCommonJS(use_patterns_state_exports); var import_element = require("@wordpress/element"); var import_blocks = require("@wordpress/blocks"); var import_data = require("@wordpress/data"); var import_i18n = require("@wordpress/i18n"); var import_notices = require("@wordpress/notices"); var import_store = require("../../../store"); var import_lock_unlock = require("../../../lock-unlock"); var import_utils = require("../block-patterns-tab/utils"); var import_utils2 = require("../../../store/utils"); var usePatternsState = (onInsert, rootClientId, selectedCategory, isQuick) => { const options = (0, import_element.useMemo)( () => ({ [import_utils2.isFiltered]: !!isQuick }), [isQuick] ); const { patternCategories, patterns, userPatternCategories } = (0, import_data.useSelect)( (select) => { const { getSettings, __experimentalGetAllowedPatterns } = (0, import_lock_unlock.unlock)( select(import_store.store) ); const { __experimentalUserPatternCategories, __experimentalBlockPatternCategories } = getSettings(); return { patterns: __experimentalGetAllowedPatterns( rootClientId, options ), userPatternCategories: __experimentalUserPatternCategories, patternCategories: __experimentalBlockPatternCategories }; }, [rootClientId, options] ); const { getClosestAllowedInsertionPointForPattern } = (0, import_lock_unlock.unlock)( (0, import_data.useSelect)(import_store.store) ); const allCategories = (0, import_element.useMemo)(() => { const categories = [...patternCategories]; userPatternCategories?.forEach((userCategory) => { if (!categories.find( (existingCategory) => existingCategory.name === userCategory.name )) { categories.push(userCategory); } }); return categories; }, [patternCategories, userPatternCategories]); const { createSuccessNotice } = (0, import_data.useDispatch)(import_notices.store); const onClickPattern = (0, import_element.useCallback)( (pattern, blocks) => { const destinationRootClientId = isQuick ? rootClientId : getClosestAllowedInsertionPointForPattern( pattern, rootClientId ); if (destinationRootClientId === null) { return; } const patternBlocks = pattern.type === import_utils.INSERTER_PATTERN_TYPES.user && pattern.syncStatus !== "unsynced" ? [(0, import_blocks.createBlock)("core/block", { ref: pattern.id })] : blocks; onInsert( (patternBlocks ?? []).map((block) => { const clonedBlock = (0, import_blocks.cloneBlock)(block); if (clonedBlock.attributes.metadata?.categories?.includes( selectedCategory )) { clonedBlock.attributes.metadata.categories = [ selectedCategory ]; } return clonedBlock; }), pattern.name, false, destinationRootClientId ); createSuccessNotice( (0, import_i18n.sprintf)( /* translators: %s: block pattern title. */ (0, import_i18n.__)('Block pattern "%s" inserted.'), pattern.title ), { type: "snackbar", id: "inserter-notice" } ); }, [ createSuccessNotice, onInsert, selectedCategory, rootClientId, getClosestAllowedInsertionPointForPattern, isQuick ] ); return [patterns, allCategories, onClickPattern]; }; var use_patterns_state_default = usePatternsState; //# sourceMappingURL=use-patterns-state.js.map