Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Site Editor: use EditorProvider instead of custom logic #56000

Merged
merged 14 commits into from Nov 16, 2023

Conversation

youknowriad
Copy link
Contributor

Related to #52632
Follow up to #55970

What?

Refer to the discussion in #52632 for the reasoning. The ultimate goal is to be able to reuse more UI components (maybe the whole editor) between edit-post and edit-site.

So this PR updates the site editor to use EditorProvider instead of its custom BlockEditorProvider usage.

The biggest impact is going to be on three things which we'll have to test properly:

  • The different template/page modes in the site editor
  • Editing navigation in the site editor

@@ -1,114 +0,0 @@
/**
* WordPress dependencies
*/
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@draganescu I'm trying to absorb the logic that we had here within the EditorProvider of @wordpress/editor. Can you help ensure I didn't break anything for the navigation pages in the site editor.

@@ -1,75 +0,0 @@
/**
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic that was here need to be absorbed by the EditorProvider from the @wordpress/editor package so I'm trying to add a templateMode prop there to support that. I added a prop but I'm not there yet, I first need to understand the logic and what are all the modes, how to trigger them...

return defaultEditorSettings;
}

export default function useSiteEditorSettings() {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope I can remove this function entirely but we can only do so when all of the site editor is relying on EditorProvider and/or the BlockEditorProvider usage within the site editor doesn't need the extra settings provided in the EditorProvider

@@ -142,35 +161,7 @@ export default function Editor( { listViewToggleElement, isLoading } ) {
const secondarySidebarLabel = isListViewOpen
? __( 'List View' )
: __( 'Block Library' );
const blockContext = useMemo( () => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All this logic has been moved directly to the EditorProvider component. It's going to benefit the post editor as well.

type={ editedPostType }
id={ editedPostId }
>
<BlockContextProvider value={ blockContext }>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I basically just replaced these three providers with one EditorProvider

*
* @param {string} navigationBlockClientId ClientId.
*/
function useForceFocusModeForNavigation( navigationBlockClientId ) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The assumption here is that for all editors that render a "navigation" post type, we want to put the block in "contentOnly" mode.

{ id }
);
const actualBlocks = useMemo( () => {
if ( type === 'wp_navigation' ) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The assumption here is that for all editors that render a "navigation" post type, we want to create a wrapper block to ensure everything is rendered properly. The wrapper is "locked" but we can edit its content in contentOnly mode.

@youknowriad youknowriad added the [Type] Code Quality Issues or PRs that relate to code quality label Nov 9, 2023
Copy link

github-actions bot commented Nov 9, 2023

Size Change: +119 B (0%)

Total Size: 1.7 MB

Filename Size Change
build/block-editor/index.min.js 247 kB -14 B (0%)
build/block-library/blocks/image/style-rtl.css 1.61 kB +11 B (+1%)
build/block-library/blocks/image/style.css 1.6 kB +13 B (+1%)
build/block-library/blocks/image/view.min.js 2.05 kB +15 B (+1%)
build/block-library/style-rtl.css 14.5 kB +20 B (0%)
build/block-library/style.css 14.5 kB +22 B (0%)
build/components/style-rtl.css 12 kB +5 B (0%)
build/components/style.css 12 kB +4 B (0%)
build/core-data/index.min.js 71.9 kB +14 B (0%)
build/edit-post/index.min.js 35.9 kB -5 B (0%)
build/edit-site/index.min.js 208 kB -420 B (0%)
build/edit-widgets/index.min.js 17.2 kB -9 B (0%)
build/editor/index.min.js 46.5 kB +463 B (+1%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 964 B
build/annotations/index.min.js 2.71 kB
build/api-fetch/index.min.js 2.29 kB
build/autop/index.min.js 2.11 kB
build/blob/index.min.js 590 B
build/block-directory/index.min.js 7.25 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 4.28 kB
build/block-editor/content.css 4.27 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-editor/style-rtl.css 15.7 kB
build/block-editor/style.css 15.7 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 138 B
build/block-library/blocks/audio/theme.css 138 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 633 B
build/block-library/blocks/button/style.css 632 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 421 B
build/block-library/blocks/columns/style.css 421 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 98 B
build/block-library/blocks/details/style.css 98 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 320 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 228 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 343 B
build/block-library/blocks/form-submission-notification/editor.css 342 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 452 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 957 B
build/block-library/blocks/gallery/editor.css 962 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 340 B
build/block-library/blocks/html/editor.css 341 B
build/block-library/blocks/image/editor-rtl.css 849 B
build/block-library/blocks/image/editor.css 847 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 671 B
build/block-library/blocks/navigation-link/editor.css 672 B
build/block-library/blocks/navigation-link/style-rtl.css 103 B
build/block-library/blocks/navigation-link/style.css 103 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.27 kB
build/block-library/blocks/navigation/style.css 2.26 kB
build/block-library/blocks/navigation/view.min.js 1.07 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 666 B
build/block-library/blocks/post-featured-image/editor.css 662 B
build/block-library/blocks/post-featured-image/style-rtl.css 345 B
build/block-library/blocks/post-featured-image/style.css 345 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 409 B
build/block-library/blocks/post-template/style.css 408 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/style-rtl.css 312 B
build/block-library/blocks/query/style.css 308 B
build/block-library/blocks/query/view.min.js 637 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 140 B
build/block-library/blocks/read-more/style.css 140 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 613 B
build/block-library/blocks/search/style.css 613 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 471 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 329 B
build/block-library/blocks/shortcode/editor.css 329 B
build/block-library/blocks/site-logo/editor-rtl.css 760 B
build/block-library/blocks/site-logo/editor.css 760 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.45 kB
build/block-library/blocks/social-links/style.css 1.45 kB
build/block-library/blocks/spacer/editor-rtl.css 359 B
build/block-library/blocks/spacer/editor.css 359 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 432 B
build/block-library/blocks/table/editor.css 432 B
build/block-library/blocks/table/style-rtl.css 646 B
build/block-library/blocks/table/style.css 645 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 403 B
build/block-library/blocks/template-part/editor.css 403 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 191 B
build/block-library/blocks/video/style.css 191 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.5 kB
build/block-library/editor.css 12.4 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 212 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/theme-rtl.css 700 B
build/block-library/theme.css 705 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51.5 kB
build/commands/index.min.js 15.5 kB
build/commands/style-rtl.css 947 B
build/commands/style.css 942 B
build/components/index.min.js 256 kB
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 2.72 kB
build/customize-widgets/index.min.js 12.1 kB
build/customize-widgets/style-rtl.css 1.43 kB
build/customize-widgets/style.css 1.43 kB
build/data-controls/index.min.js 651 B
build/data/index.min.js 8.87 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 462 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/style-rtl.css 7.75 kB
build/edit-post/style.css 7.74 kB
build/edit-site/style-rtl.css 14.2 kB
build/edit-site/style.css 14.2 kB
build/edit-widgets/style-rtl.css 4.65 kB
build/edit-widgets/style.css 4.65 kB
build/editor/style-rtl.css 3.58 kB
build/editor/style.css 3.58 kB
build/element/index.min.js 4.87 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.76 kB
build/format-library/style-rtl.css 577 B
build/format-library/style.css 577 B
build/hooks/index.min.js 1.57 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.61 kB
build/interactivity/index.min.js 11.4 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.76 kB
build/keycodes/index.min.js 1.9 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 964 B
build/nux/index.min.js 2.01 kB
build/nux/style-rtl.css 775 B
build/nux/style.css 771 B
build/patterns/index.min.js 4.81 kB
build/patterns/style-rtl.css 567 B
build/patterns/style.css 566 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 1.85 kB
build/preferences/index.min.js 1.26 kB
build/primitives/index.min.js 994 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 988 B
build/react-i18n/index.min.js 631 B
build/react-refresh-entry/index.min.js 9.46 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.71 kB
build/reusable-blocks/index.min.js 2.76 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 9.96 kB
build/router/index.min.js 1.79 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 1.98 kB
build/token-list/index.min.js 587 B
build/url/index.min.js 3.83 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 967 B
build/warning/index.min.js 259 B
build/widgets/index.min.js 7.18 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

Copy link

github-actions bot commented Nov 9, 2023

Flaky tests detected in a3eed70e4b3ca20aee08e9189bfd3381d4611ca5.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/6847046823
📝 Reported issues:

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's something I couldn't yet work out when testing. When opening a page from the Design menu like this (don't edit anything, just navigate to a page and try to edit):

2023-11-10.14.58.09.mp4

The editor.BlockEdit filters are not firing, namely the ones that determine the content edit mode in withDisableNonPageContentBlocks.

The consequence is that I can't edit the post-content.

I didn't get to the bottom of it, but I noticed that when first editing a page this way, it looks like the blocks array returned from useEntityBlockEditor() is empty in edit-template, so maybe something to do with the edited record in that hook. Sorry I ran out of time!

Tricky thing is that if I open another template first, then navigate to a page to edit, then it's fine so I can only guess some context is loading at this stage. 🤔

export const ExperimentalEditorProvider = withRegistryProvider(
( {
__unstableTemplate,
templateMode = 'all',
post,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just noticed while testing editing pages in the editor that the post object isn't resolved in time so the properties id and type might need some optional chaining or something.

Copy link
Contributor

@draganescu draganescu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i tested the change only around the navigation section of the site editor (this PR removes the navigation provider, which is great) - so far things work as expected with one exception:

  • make sure to have one navigation block which only contains a page list
  • navigating to site editor -> navigation
  • selecting the navigation with page list
  • clicking edit
  • the page list block when selected shows two edit buttons for some reason
Screenshot ![Screenshot 2023-11-13 at 05 13 31](https://github.com/WordPress/gutenberg/assets/107534/b434eff7-4694-4a67-8652-eeb1be2b4b57)

@youknowriad
Copy link
Contributor Author

@draganescu I haven't been able to replicate the duplicated "edit" button.

@youknowriad
Copy link
Contributor Author

@ramonjd I think there's a pre-existing issue with these filters. I wonder if it's a bug in withFilters component. Basically I see the filter being added but the components are not re-rendered with the said filter. So maybe something within withFilters.

But Also, the way we're adding and removing these filters dynamically doesn't feel great to me to be honest.

@youknowriad
Copy link
Contributor Author

The last failing test is one that you've added @draganescu (focus loss on template part) I haven't been able to understand why it fails in this PR.

Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just catching up, and I see that 572dd72 removes the logic for the hidden template mode introduced in #52674 that grabs the real blocks used within the template. This means that the hidden template mode no longer shows the post featured image block if present (and doesn't factor in the order in which the content blocks appear in the template):

Trunk This PR
image image

Would it be worth preserving that behaviour so that the content matches the order used in the template? I think the main benefit of the prior behaviour is probably the visibility of the featured image block when present in the template.


Other than that, this is testing well for me so far!

Comment on lines -100 to -101
postType,
postId,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tiny nit: these are both still returned by the useSelect even though they're not retrieved in this destructuring. Is it worth removing them from within the useSelect callback, too (lines 133 and 134), since the corresponding lines are now handled in useSiteEditorSettings?

Comment on lines +221 to +231
{ hasLoadedPost && ! editedPost && (
<Notice status="warning" isDismissible={ false }>
{ __(
"You attempted to edit an item that doesn't exist. Perhaps it was deleted?"
) }
</Notice>
) }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moving this Notice changes where in the UI it's displayed. It now sits above the interface (including both sidebars), rather than within the editor canvas. Is that intentional? It looks decent to me, and I don't have a strong opinion, but thought I'd mention it since I wasn't sure if this PR was meaning to make visual changes 🙂

I'm not too sure how to trigger this warning to display manually, so locally I just made the condition true in order to render it:

Before This PR
image image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That was not my intention. How did you reproduce this? For me that message shows up only if the canvas doesn't show up (! editedPost) condition. So maybe I didn't understand it properly.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I couldn't actually get it to fire manually through real means, so my screenshot is somewhat artificial (via removing the condition). If it's looking fine for you when ! editedPost is true, then that sounds good to me!

@youknowriad
Copy link
Contributor Author

Would it be worth preserving that behaviour so that the content matches the order used in the template? I think the main benefit of the prior behaviour is probably the visibility of the featured image block when present in the template.

I can restore it (with a bit of code complexity) but to be honest, I'm not sure we should do, or either why this mode should be different than the post editor? In the post editor, the featured image is visible in the sidebar instead?

@youknowriad
Copy link
Contributor Author

I've restored the template preview mode like trunk (extract the blocks from the template) in c34e322. You can see the complexity in the commit and why I'm not sure it's worth it but I'm definitely ok with it for now.

@youknowriad
Copy link
Contributor Author

I bootstrapped some documentation about the EditorProvider component. There's a few things that stood out to me while writing the documentation, that would be good API changes but I didn't want to make breaking changes at the moment or deprecations (maybe later):

  • post prop: Why are we expecting a full object here, a couple post type, post id should be enough.
  • __unstableTemplate prop: We should probably deprecate this prop entirely because we can easily guess the template from core-data. I don't think we need to support rendering any random template here (we don't do that anywhere anyway)
  • mode prop: I like this new prop, it clarifies a lot of things but right now, it's not implemented fully within the EditorProvider. Some locking/unlocking behavior is still within edit-site and should be moved at some point.

With that I think the PR is ready to be considered for merge.

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

The site editor is working as expected for me:

✅ I can edit navigation post types
✅ Editing a page I can perform expected actions: toggling template editing mode, swapping templates.
✅ Template previews appear as expected. I can edit a page's template and the changes persist between preview modes (template hidden and displayed)
✅ Command center commands look good: testing editing template, editing various templates/pages

Also can't find any regressions when viewing or editing styles, patterns or templates.

Would be good to get a second review though.

You can see the complexity in the commit and why I'm not sure it's worth it but I'm definitely ok with it for now.

To maintain consistency between template and page editing in the site editor, from a user-facing perspective, I'd say it's worth maintaining it. There might be a case for a refactor, or even a review of the feature in general. It's pretty buried.

packages/editor/src/components/provider/README.md Outdated Show resolved Hide resolved
packages/editor/src/components/provider/README.md Outdated Show resolved Hide resolved
const { getEditedPostContext, getEditedPostType, getEditedPostId } =
select( editSiteStore );
const { getCanvasMode, getPageContentFocusType } = unlock(
select( editSiteStore )
);
const { getEditedEntityRecord, hasFinishedResolution } =
select( coreStore );
const { __experimentalGetGlobalBlocksByName } =
select( blockEditorStore );
const _context = getEditedPostContext();
const _postType = getEditedPostType();
const queryArgs = [
'postType',
getEditedPostType(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
getEditedPostType(),
_postType,

*
* @param {Array} post Block list.
* @param {boolean} template Whether the page content has focus (and the surrounding template is inert). If `true` return page content blocks. Default `false`.
* @param {boolean} mode Rendering mode.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be {string} ?

packages/editor/src/components/provider/index.js Outdated Show resolved Hide resolved
for ( let i = 0; i < blocks.length; i++ ) {
// Since the Query Block could contain PAGE_CONTENT_BLOCK_TYPES block types,
// we skip it because we only want to render stand-alone page content blocks in the block list.
if ( [ 'core/query' ].includes( blocks[ i ].name ) ) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Optional: remove premature multiblock checking and replace with string comparison, e.g., 'core/query' === blocks[ i ].name

Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wonderful, great follow-ups @youknowriad, thanks for preserving the behaviour on trunk for now and for adding in the extra documentation 👍

Nothing to add from me beyond what @ramonjd already mentioned. All testing nicely:

✅ Navigation editing is working correctly
✅ All site, template, page, post content with and without template preview modes are working correctly
✅ Code changes look good

You can see the complexity in the commit and why I'm not sure it's worth it but I'm definitely ok with it for now.

Yes, I see what you mean. Fortunately it looks like it'll be fairly straightforward to remove in follow-ups if we decide to scale back / simplify or remove the template preview toggle. As Ramon mentioned, it could be good to review the feature in general and figure out the desired level of prominence 👍

LGTM! ✨

*
* @return {Array} Flattened object.
*/
function extractedPageContentBlockTypesFromTemplateBlocks( blocks ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tiny nit (feel free to ignore since this function instead exported): would the imperative extract be clearer than extracted?

youknowriad and others added 2 commits November 16, 2023 08:52
Co-authored-by: Ramon <ramonjd@users.noreply.github.com>
@youknowriad
Copy link
Contributor Author

Thanks folks for the reviews, I appreciate it.

@youknowriad youknowriad merged commit f9b544d into trunk Nov 16, 2023
50 checks passed
@youknowriad youknowriad deleted the unify/editor-provider branch November 16, 2023 08:26
@github-actions github-actions bot added this to the Gutenberg 17.1 milestone Nov 16, 2023
@youknowriad youknowriad added the [Type] Performance Related to performance efforts label Nov 17, 2023
@youknowriad
Copy link
Contributor Author

Looks like this PR made the site editor navigation 3 or 4 times better and slowed a little bit the initial loading. I call that a win.

@youknowriad youknowriad removed the [Type] Code Quality Issues or PRs that relate to code quality label Nov 17, 2023
@bph bph added the Needs Dev Note Requires a developer note for a major WordPress release cycle label Nov 24, 2023
@youknowriad
Copy link
Contributor Author

The dev note should clarify that now the "editor" store is actually filled with a real entity and not just an empty useless store.

@andrewserong
Copy link
Contributor

andrewserong commented Nov 30, 2023

I think this has introduced a regression for the list view when editing a Navigation entity in the site editor, or when rearranging blocks within the post-only mode, due to createBlock being called too frequently in the useMemo. I have a potential fix up in #56666

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Dev Note Requires a developer note for a major WordPress release cycle [Type] Performance Related to performance efforts
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants