Block Editor: Second batch of fixes for 5.8 beta 2

This includes:

 - Fix regression emptying post content block in template mode.
 - Legacy Widget: Don't display "No preview" when widget has image tags.

See #53397. 

Built from https://develop.svn.wordpress.org/trunk@51156


git-svn-id: http://core.svn.wordpress.org/trunk@50765 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
youknowriad 2021-06-15 15:30:24 +00:00
parent aed608b98c
commit b018c55899
10 changed files with 107 additions and 31 deletions

File diff suppressed because one or more lines are too long

View File

@ -30410,12 +30410,11 @@ const postTitle = Object(external_wp_element_["createElement"])(external_wp_prim
*
* @param {string} kind Entity kind.
* @param {string} name Entity name.
* @param {number} key Record's key.
* @param {string} recordId Record's id.
*/
function useCanEditEntity(kind, name, key, recordId) {
return Object(external_wp_data_["useSelect"])(select => select(external_wp_coreData_["store"]).canUserEditEntityRecord(kind, name, key, recordId), [kind, name, key, recordId]);
function useCanEditEntity(kind, name, recordId) {
return Object(external_wp_data_["useSelect"])(select => select(external_wp_coreData_["store"]).canUserEditEntityRecord(kind, name, recordId), [kind, name, recordId]);
}
/* harmony default export */ var utils_hooks = ({
useCanEditEntity
@ -30461,7 +30460,7 @@ function PostTitleEdit({
}) {
const TagName = 0 === level ? 'p' : 'h' + level;
const isDescendentOfQueryLoop = !!queryId;
const userCanEdit = useCanEditEntity('root', 'postType', postType, postId);
const userCanEdit = useCanEditEntity('postType', postType, postId);
const [rawTitle = '', setTitle, fullTitle] = Object(external_wp_coreData_["useEntityProp"])('postType', postType, 'title', postId);
const [link] = Object(external_wp_coreData_["useEntityProp"])('postType', postType, 'link', postId);
const blockProps = Object(external_wp_blockEditor_["useBlockProps"])({
@ -30650,9 +30649,12 @@ function ReadOnlyContent({
function EditableContent({
layout,
postType,
postId
context = {}
}) {
const {
postType,
postId
} = context;
const themeSupportsLayout = Object(external_wp_data_["useSelect"])(select => {
var _getSettings;
@ -30704,7 +30706,7 @@ function Content(props) {
} = {}
} = props;
const isDescendentOfQueryLoop = !!queryId;
const userCanEdit = useCanEditEntity('root', 'postType', postType, postId);
const userCanEdit = useCanEditEntity('postType', postType, postId);
const isEditable = userCanEdit && !isDescendentOfQueryLoop;
return isEditable ? Object(external_wp_element_["createElement"])(EditableContent, props) : Object(external_wp_element_["createElement"])(ReadOnlyContent, {
userCanEdit: userCanEdit,
@ -31027,7 +31029,7 @@ function PostExcerptEditor({
}
}) {
const isDescendentOfQueryLoop = !!queryId;
const userCanEdit = useCanEditEntity('root', 'postType', postType, postId);
const userCanEdit = useCanEditEntity('postType', postType, postId);
const isEditable = userCanEdit && !isDescendentOfQueryLoop;
const [rawExcerpt, setExcerpt, {
rendered: renderedExcerpt,

File diff suppressed because one or more lines are too long

View File

@ -2044,7 +2044,8 @@ function* loadPostTypeEntities() {
return (record === null || record === void 0 ? void 0 : (_record$title = record.title) === null || _record$title === void 0 ? void 0 : _record$title.rendered) || (record === null || record === void 0 ? void 0 : record.title) || (isTemplate ? Object(external_lodash_["startCase"])(record.slug) : String(record.id));
},
__unstablePrePersist: isTemplate ? undefined : prePersistPostType
__unstablePrePersist: isTemplate ? undefined : prePersistPostType,
__unstable_rest_base: postType.rest_base
};
});
}
@ -3862,18 +3863,22 @@ function canUser(state, action, resource, id) {
*
* https://developer.wordpress.org/rest-api/reference/
*
* @param {Object} state Data state.
* @param {string} kind Entity kind.
* @param {string} name Entity name.
* @param {number} key Record's key.
* @param {Object} state Data state.
* @param {string} kind Entity kind.
* @param {string} name Entity name.
* @param {string} recordId Record's id.
* @return {boolean|undefined} Whether or not the user can edit,
* or `undefined` if the OPTIONS request is still being made.
*/
function canUserEditEntityRecord(state, kind, name, key, recordId) {
const entity = getEntityRecord(state, kind, name, key);
const resource = (entity === null || entity === void 0 ? void 0 : entity.rest_base) || '';
function canUserEditEntityRecord(state, kind, name, recordId) {
const entity = getEntity(state, kind, name);
if (!entity) {
return false;
}
const resource = entity.__unstable_rest_base;
return canUser(state, 'update', resource, recordId);
}
/**
@ -4325,15 +4330,23 @@ function* resolvers_canUser(action, resource, id) {
* Checks whether the current user can perform the given action on the given
* REST resource.
*
* @param {string} kind Entity kind.
* @param {string} name Entity name.
* @param {number} key Record's key.
* @param {string} kind Entity kind.
* @param {string} name Entity name.
* @param {string} recordId Record's id.
*/
function* resolvers_canUserEditEntityRecord(kind, name, key, recordId) {
const entity = yield external_wp_data_["controls"].select('core', 'getEntityRecord', kind, name, key);
const resource = (entity === null || entity === void 0 ? void 0 : entity.rest_base) || '';
function* resolvers_canUserEditEntityRecord(kind, name, recordId) {
const entities = yield getKindEntities(kind);
const entity = Object(external_lodash_["find"])(entities, {
kind,
name
});
if (!entity) {
return;
}
const resource = entity.__unstable_rest_base;
yield resolvers_canUser('update', resource, recordId);
}
/**

File diff suppressed because one or more lines are too long

View File

@ -14675,6 +14675,40 @@ function EditTemplateTitle() {
});
}
// CONCATENATED MODULE: ./node_modules/@wordpress/edit-post/build-module/components/header/template-title/template-description.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function TemplateDescription() {
const {
description
} = Object(external_wp_data_["useSelect"])(select => {
const {
getEditedPostTemplate
} = select(store["a" /* store */]);
return {
description: getEditedPostTemplate().description
};
}, []);
if (!description) {
return null;
}
return Object(external_wp_element_["createElement"])(external_wp_components_["__experimentalText"], {
size: "body"
}, description);
}
// CONCATENATED MODULE: ./node_modules/@wordpress/edit-post/build-module/components/header/template-title/index.js
@ -14696,6 +14730,7 @@ function EditTemplateTitle() {
function TemplateTitle() {
const {
template,
@ -14763,7 +14798,7 @@ function TemplateTitle() {
onClick: onToggle,
label: Object(external_wp_i18n_["__"])('Template Options')
}), templateTitle)),
renderContent: () => Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, Object(external_wp_element_["createElement"])(EditTemplateTitle, null), Object(external_wp_element_["createElement"])(DeleteTemplate, null))
renderContent: () => Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, template.has_theme_file ? Object(external_wp_element_["createElement"])(TemplateDescription, null) : Object(external_wp_element_["createElement"])(EditTemplateTitle, null), Object(external_wp_element_["createElement"])(DeleteTemplate, null))
});
});
}

File diff suppressed because one or more lines are too long

View File

@ -666,7 +666,33 @@ async function encodeWidget({
function isEmptyHTML(html) {
const element = document.createElement('div');
element.innerHTML = html;
return element.innerText.trim() === '';
return isEmptyNode(element);
}
function isEmptyNode(node) {
switch (node.nodeType) {
case node.TEXT_NODE:
// Text nodes are empty if it's entirely whitespace.
return node.nodeValue.trim() === '';
case node.ELEMENT_NODE:
// Elements that are "embedded content" are not empty.
// https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0
if (['AUDIO', 'CANVAS', 'EMBED', 'IFRAME', 'IMG', 'MATH', 'OBJECT', 'SVG', 'VIDEO'].includes(node.tagName)) {
return false;
} // Elements with no children are empty.
if (!node.hasChildNodes()) {
return true;
} // Elements with children are empty if all their children are empty.
return Array.from(node.childNodes).every(isEmptyNode);
default:
return true;
}
}
function serializeForm(form) {

File diff suppressed because one or more lines are too long

View File

@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
$wp_version = '5.8-beta1-51155';
$wp_version = '5.8-beta1-51156';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.