@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
101 lines (98 loc) • 2.86 kB
JavaScript
;
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