UNPKG

@wordpress/editor

Version:
101 lines (98 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = PostTransformPanel; var _data = require("@wordpress/data"); var _coreData = require("@wordpress/core-data"); var _components = require("@wordpress/components"); var _i18n = require("@wordpress/i18n"); var _compose = require("@wordpress/compose"); var _blockEditor = require("@wordpress/block-editor"); var _blocks = require("@wordpress/blocks"); var _store = require("../../store"); var _hooks = require("./hooks"); var _constants = require("../../store/constants"); var _jsxRuntime = require("react/jsx-runtime"); /** * WordPress dependencies */ /** * Internal dependencies */ function TemplatesList({ availableTemplates, onSelect }) { const shownTemplates = (0, _compose.useAsyncList)(availableTemplates); if (!availableTemplates || availableTemplates?.length === 0) { return null; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.__experimentalBlockPatternsList, { label: (0, _i18n.__)('Templates'), blockPatterns: availableTemplates, shownPatterns: shownTemplates, onClickPattern: onSelect, showTitlesAsTooltip: true }); } function PostTransform() { const { record, postType, postId } = (0, _data.useSelect)(select => { const { getCurrentPostType, getCurrentPostId } = select(_store.store); const { getEditedEntityRecord } = select(_coreData.store); const type = getCurrentPostType(); const id = getCurrentPostId(); return { postType: type, postId: id, record: getEditedEntityRecord('postType', type, id) }; }, []); const { editEntityRecord } = (0, _data.useDispatch)(_coreData.store); const availablePatterns = (0, _hooks.useAvailablePatterns)(record); const onTemplateSelect = async selectedTemplate => { await editEntityRecord('postType', postType, postId, { blocks: selectedTemplate.blocks, content: (0, _blocks.serialize)(selectedTemplate.blocks) }); }; if (!availablePatterns?.length) { return null; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.PanelBody, { title: (0, _i18n.__)('Design'), initialOpen: record.type === _constants.TEMPLATE_PART_POST_TYPE, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TemplatesList, { availableTemplates: availablePatterns, onSelect: onTemplateSelect }) }); } function PostTransformPanel() { const { postType } = (0, _data.useSelect)(select => { const { getCurrentPostType } = select(_store.store); return { postType: getCurrentPostType() }; }, []); if (![_constants.TEMPLATE_PART_POST_TYPE, _constants.TEMPLATE_POST_TYPE].includes(postType)) { return null; } return /*#__PURE__*/(0, _jsxRuntime.jsx)(PostTransform, {}); } //# sourceMappingURL=index.js.map