UNPKG

@wordpress/block-library

Version:
158 lines (156 loc) 6.15 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; 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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-library/src/query/edit/query-placeholder.js var query_placeholder_exports = {}; __export(query_placeholder_exports, { default: () => QueryPlaceholder }); module.exports = __toCommonJS(query_placeholder_exports); var import_data = require("@wordpress/data"); var import_blocks = require("@wordpress/blocks"); var import_element = require("@wordpress/element"); var import_block_editor = require("@wordpress/block-editor"); var import_components = require("@wordpress/components"); var import_i18n = require("@wordpress/i18n"); var import_compose = require("@wordpress/compose"); var import_utils = require("../utils"); var import_pattern_selection = require("./pattern-selection"); var import_query_toolbar = __toESM(require("./query-toolbar")); var import_jsx_runtime = require("react/jsx-runtime"); function QueryPlaceholder({ attributes, clientId, name, openPatternSelectionModal }) { const [isStartingBlank, setIsStartingBlank] = (0, import_element.useState)(false); const [containerWidth, setContainerWidth] = (0, import_element.useState)(0); const resizeObserverRef = (0, import_compose.useResizeObserver)(([entry]) => { setContainerWidth(entry.contentRect.width); }); const SMALL_CONTAINER_BREAKPOINT = 160; const isSmallContainer = containerWidth > 0 && containerWidth < SMALL_CONTAINER_BREAKPOINT; const { blockType, activeBlockVariation } = (0, import_data.useSelect)( (select) => { const { getActiveBlockVariation, getBlockType } = select(import_blocks.store); return { blockType: getBlockType(name), activeBlockVariation: getActiveBlockVariation( name, attributes ) }; }, [name, attributes] ); const hasPatterns = !!(0, import_pattern_selection.useBlockPatterns)(clientId, attributes).length; const icon = activeBlockVariation?.icon?.src || activeBlockVariation?.icon || blockType?.icon?.src; const label = activeBlockVariation?.title || blockType?.title; const blockProps = (0, import_block_editor.useBlockProps)({ ref: resizeObserverRef }); if (isStartingBlank) { return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( QueryVariationPicker, { clientId, attributes, icon, label } ); } return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ...blockProps, children: [ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_editor.BlockControls, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_query_toolbar.default, { clientId, attributes, hasInnerBlocks: false } ) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)( import_components.Placeholder, { className: "block-editor-media-placeholder", icon: !isSmallContainer && icon, label: !isSmallContainer && label, instructions: !isSmallContainer && (0, import_i18n.__)("Choose a pattern for the query loop or start blank."), withIllustration: isSmallContainer, children: [ !!hasPatterns && !isSmallContainer && /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_components.Button, { __next40pxDefaultSize: true, variant: "primary", onClick: openPatternSelectionModal, children: (0, import_i18n.__)("Choose") } ), !isSmallContainer && /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_components.Button, { __next40pxDefaultSize: true, variant: "secondary", onClick: () => { setIsStartingBlank(true); }, children: (0, import_i18n.__)("Start blank") } ) ] } ) ] }); } function QueryVariationPicker({ clientId, attributes, icon, label }) { const scopeVariations = (0, import_utils.useScopedBlockVariations)(attributes); const { replaceInnerBlocks } = (0, import_data.useDispatch)(import_block_editor.store); const blockProps = (0, import_block_editor.useBlockProps)(); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ...blockProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_block_editor.__experimentalBlockVariationPicker, { icon, label, variations: scopeVariations, onSelect: (variation) => { if (variation.innerBlocks) { replaceInnerBlocks( clientId, (0, import_blocks.createBlocksFromInnerBlocksTemplate)( variation.innerBlocks ), false ); } } } ) }); } //# sourceMappingURL=query-placeholder.js.map