@wordpress/server-side-render
Version:
The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.
47 lines (44 loc) • 1.42 kB
JavaScript
/**
* WordPress dependencies
*/
import { useMemo } from '@wordpress/element';
import { useSelect } from '@wordpress/data';
/**
* Internal dependencies
*/
import ServerSideRender from './server-side-render';
/**
* Constants
*/
import { jsx as _jsx } from "react/jsx-runtime";
const EMPTY_OBJECT = {};
export default function ExportedServerSideRender({
urlQueryArgs = EMPTY_OBJECT,
...props
}) {
const currentPostId = useSelect(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 postId = select('core/editor')?.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.
return postId && typeof postId === 'number' ? postId : null;
}, []);
const newUrlQueryArgs = useMemo(() => {
if (!currentPostId) {
return urlQueryArgs;
}
return {
post_id: currentPostId,
...urlQueryArgs
};
}, [currentPostId, urlQueryArgs]);
return /*#__PURE__*/_jsx(ServerSideRender, {
urlQueryArgs: newUrlQueryArgs,
...props
});
}
//# sourceMappingURL=index.js.map