: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
/* harmony default export */ const panel = (panel_PostAuthor);
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-comments/index.js
const COMMENT_OPTIONS = [{
label: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [(0,external_wp_i18n_namespaceObject.__)('Open'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Visitors can add new comments and replies.')
label: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, {
children: [(0,external_wp_i18n_namespaceObject.__)('Closed'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Visitors cannot add new comments or replies.')
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, {
children: (0,external_wp_i18n_namespaceObject.__)('Existing comments remain visible.')
function PostComments() {
const commentStatus = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _select$getEditedPost;
return (_select$getEditedPost = select(store_store).getEditedPostAttribute('comment_status')) !== null && _select$getEditedPost !== void 0 ? _select$getEditedPost : 'open';
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
const handleStatus = newCommentStatus => editPost({
comment_status: newCommentStatus
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("form", {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RadioControl, {
className: "editor-change-status__options",
hideLabelFromVision: true,
label: (0,external_wp_i18n_namespaceObject.__)('Comment status'),
options: COMMENT_OPTIONS,
* A form for managing comment status.
* @return {JSX.Element} The rendered PostComments component.
/* harmony default export */ const post_comments = (PostComments);
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pingbacks/index.js
function PostPingbacks() {
const pingStatus = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _select$getEditedPost;
return (_select$getEditedPost = select(store_store).getEditedPostAttribute('ping_status')) !== null && _select$getEditedPost !== void 0 ? _select$getEditedPost : 'open';
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
const onTogglePingback = () => editPost({
ping_status: pingStatus === 'open' ? 'closed' : 'open'
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, {
__nextHasNoMarginBottom: true,
label: (0,external_wp_i18n_namespaceObject.__)('Enable pingbacks & trackbacks'),
checked: pingStatus === 'open',
onChange: onTogglePingback,
help: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/documentation/article/trackbacks-and-pingbacks/'),
children: (0,external_wp_i18n_namespaceObject.__)('Learn more about pingbacks & trackbacks')
* Renders a control for enabling or disabling pingbacks and trackbacks
/* harmony default export */ const post_pingbacks = (PostPingbacks);
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-discussion/panel.js
const panel_PANEL_NAME = 'discussion-panel';
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", {
className: "editor-post-discussion",
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__experimentalInspectorPopoverHeader, {
title: (0,external_wp_i18n_namespaceObject.__)('Discussion'),
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, {
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_type_support_check, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_comments, {})
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_type_support_check, {
supportKeys: "trackbacks",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_pingbacks, {})
function PostDiscussionToggle({
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
var _getEditedPostAttribu, _getEditedPostAttribu2;
} = select(external_wp_coreData_namespaceObject.store);
const postType = getPostType(getEditedPostAttribute('type'));
commentStatus: (_getEditedPostAttribu = getEditedPostAttribute('comment_status')) !== null && _getEditedPostAttribu !== void 0 ? _getEditedPostAttribu : 'open',
pingStatus: (_getEditedPostAttribu2 = getEditedPostAttribute('ping_status')) !== null && _getEditedPostAttribu2 !== void 0 ? _getEditedPostAttribu2 : 'open',
commentsSupported: !!postType.supports.comments,
trackbacksSupported: !!postType.supports.trackbacks
if (commentStatus === 'open') {
if (pingStatus === 'open') {
label = (0,external_wp_i18n_namespaceObject.__)('Open');
label = trackbacksSupported ? (0,external_wp_i18n_namespaceObject.__)('Comments only') : (0,external_wp_i18n_namespaceObject.__)('Open');
} else if (pingStatus === 'open') {
label = commentsSupported ? (0,external_wp_i18n_namespaceObject.__)('Pings only') : (0,external_wp_i18n_namespaceObject.__)('Pings enabled');
label = (0,external_wp_i18n_namespaceObject.__)('Closed');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, {
className: "editor-post-discussion__panel-toggle",
"aria-label": (0,external_wp_i18n_namespaceObject.__)('Change discussion options'),
* This component allows to update comment and pingback
* settings for the current post. Internally there are
* checks whether the current post has support for the
* above and if the `discussion-panel` panel is enabled.
* @return {JSX.Element|null} The rendered PostDiscussionPanel component.
function PostDiscussionPanel() {
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
isEnabled: isEditorPanelEnabled(panel_PANEL_NAME)
// Use internal state instead of a ref to make sure that the component
// re-renders when the popover's anchor updates.
const [popoverAnchor, setPopoverAnchor] = (0,external_wp_element_namespaceObject.useState)(null);
// Memoize popoverProps to avoid returning a new object every time.
const popoverProps = (0,external_wp_element_namespaceObject.useMemo)(() => ({
// Anchor the popover to the middle of the entire row so that it doesn't
// move around when the label changes.
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_type_support_check, {
supportKeys: ['comments', 'trackbacks'],
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_panel_row, {
label: (0,external_wp_i18n_namespaceObject.__)('Discussion'),
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, {
popoverProps: popoverProps,
className: "editor-post-discussion__panel-dropdown",
contentClassName: "editor-post-discussion__panel-dialog",
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PostDiscussionToggle, {
}) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ModalContents, {
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/index.js
* Renders an editable textarea for the post excerpt.
* Templates, template parts and patterns use the `excerpt` field as a description semantically.
* Additionally templates and template parts override the `excerpt` field as `description` in
* REST API. So this component handles proper labeling and updating the edited entity.
* @param {Object} props - Component props.
* @param {boolean} [props.hideLabelFromVision=false] - Whether to visually hide the textarea's label.
* @param {boolean} [props.updateOnBlur=false] - Whether to update the post on change or use local state and update on blur.
hideLabelFromVision = false,
shouldUseDescriptionLabel,
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
const postType = getCurrentPostType();
// This special case is unfortunate, but the REST API of wp_template and wp_template_part
// support the excerpt field throught the "description" field rather than "excerpt".
const _usedAttribute = ['wp_template', 'wp_template_part'].includes(postType) ? 'description' : 'excerpt';
excerpt: getEditedPostAttribute(_usedAttribute),
// There are special cases where we want to label the excerpt as a description.
shouldUseDescriptionLabel: ['wp_template', 'wp_template_part', 'wp_block'].includes(postType),
usedAttribute: _usedAttribute
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
const [localExcerpt, setLocalExcerpt] = (0,external_wp_element_namespaceObject.useState)((0,external_wp_htmlEntities_namespaceObject.decodeEntities)(excerpt));
const updatePost = value => {
const label = shouldUseDescriptionLabel ? (0,external_wp_i18n_namespaceObject.__)('Write a description (optional)') : (0,external_wp_i18n_namespaceObject.__)('Write an excerpt (optional)');
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {
className: "editor-post-excerpt",
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.TextareaControl, {
__nextHasNoMarginBottom: true,
hideLabelFromVision: hideLabelFromVision,
className: "editor-post-excerpt__textarea",
onChange: updateOnBlur ? setLocalExcerpt : updatePost,
onBlur: updateOnBlur ? () => updatePost(localExcerpt) : undefined,
value: updateOnBlur ? localExcerpt : excerpt,
help: !shouldUseDescriptionLabel ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, {
href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/documentation/article/page-post-settings-sidebar/#excerpt'),
children: (0,external_wp_i18n_namespaceObject.__)('Learn more about manual excerpts')
}) : (0,external_wp_i18n_namespaceObject.__)('Write a description')
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/check.js
* Component for checking if the post type supports the excerpt field.
* @param {Object} props Props.
* @param {Element} props.children Children to be rendered.
* @return {Component} The component to be rendered.
function PostExcerptCheck({
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(post_type_support_check, {
/* harmony default export */ const post_excerpt_check = (PostExcerptCheck);
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/plugin.js
* Defines as extensibility slot for the Excerpt panel.
} = (0,external_wp_components_namespaceObject.createSlotFill)('PluginPostExcerpt');
* Renders a post excerpt panel in the post sidebar.
* @param {Object} props Component properties.
* @param {string} [props.className] An optional class name added to the row.
* @param {Element} props.children Children to be rendered.
* var PluginPostExcerpt = wp.editPost.__experimentalPluginPostExcerpt;
* function MyPluginPostExcerpt() {
* return React.createElement(
* className: 'my-plugin-post-excerpt',
* __( 'Post excerpt custom content' )
* import { __ } from '@wordpress/i18n';
* import { __experimentalPluginPostExcerpt as PluginPostExcerpt } from '@wordpress/edit-post';
* const MyPluginPostExcerpt = () => (
* <PluginPostExcerpt className="my-plugin-post-excerpt">
* { __( 'Post excerpt custom content' ) }
* @return {Component} The component to be rendered.
const PluginPostExcerpt = ({
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(plugin_Fill, {
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.PanelRow, {
PluginPostExcerpt.Slot = plugin_Slot;
/* harmony default export */ const post_excerpt_plugin = (PluginPostExcerpt);
;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/panel.js
const post_excerpt_panel_PANEL_NAME = 'post-excerpt';
function ExcerptPanel() {
} = (0,external_wp_data_namespaceObject.useSelect)(select => {
isOpened: isEditorPanelOpened(post_excerpt_panel_PANEL_NAME),
isEnabled: isEditorPanelEnabled(post_excerpt_panel_PANEL_NAME),
postType: getCurrentPostType()
} = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
const toggleExcerptPanel = () => toggleEditorPanelOpened(post_excerpt_panel_PANEL_NAME);
// There are special cases where we want to label the excerpt as a description.