@wordpress/server-side-render
Version:
The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.
61 lines (58 loc) • 1.87 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@wordpress/element");
var _data = require("@wordpress/data");
var _serverSideRender = _interopRequireDefault(require("./server-side-render"));
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Constants
*/const EMPTY_OBJECT = {};
const ExportedServerSideRender = (0, _data.withSelect)(select => {
// FIXME: @wordpress/server-side-render should not depend on @wordpress/editor.
// It is used by blocks that can be loaded into a *non-post* block editor.
// eslint-disable-next-line @wordpress/data-no-store-string-literals
const coreEditorSelect = select('core/editor');
if (coreEditorSelect) {
const currentPostId = coreEditorSelect.getCurrentPostId();
// For templates and template parts we use a custom ID format.
// Since they aren't real posts, we don't want to use their ID
// for server-side rendering. Since they use a string based ID,
// we can assume real post IDs are numbers.
if (currentPostId && typeof currentPostId === 'number') {
return {
currentPostId
};
}
}
return EMPTY_OBJECT;
})(({
urlQueryArgs = EMPTY_OBJECT,
currentPostId,
...props
}) => {
const newUrlQueryArgs = (0, _element.useMemo)(() => {
if (!currentPostId) {
return urlQueryArgs;
}
return {
post_id: currentPostId,
...urlQueryArgs
};
}, [currentPostId, urlQueryArgs]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_serverSideRender.default, {
urlQueryArgs: newUrlQueryArgs,
...props
});
});
var _default = exports.default = ExportedServerSideRender;
//# sourceMappingURL=index.js.map