From bf8eadf3e461fa4b70e1de6f2fda2a0f7b7ba0fa Mon Sep 17 00:00:00 2001 From: Robert Anderson Date: Tue, 15 Aug 2023 10:49:56 +1000 Subject: [PATCH] Use blocks in same order as template --- .../block-editor/block-editor-provider.js | 36 ------- .../default-block-editor-provider.js | 94 +++++++++++++++++++ .../block-editor-provider/index.js | 28 ++++++ .../navigation-block-editor-provider.js | 0 .../default-block-editor-provider.js | 73 -------------- 5 files changed, 122 insertions(+), 109 deletions(-) delete mode 100644 packages/edit-site/src/components/block-editor/block-editor-provider.js create mode 100644 packages/edit-site/src/components/block-editor/block-editor-provider/default-block-editor-provider.js create mode 100644 packages/edit-site/src/components/block-editor/block-editor-provider/index.js rename packages/edit-site/src/components/block-editor/{providers => block-editor-provider}/navigation-block-editor-provider.js (100%) delete mode 100644 packages/edit-site/src/components/block-editor/providers/default-block-editor-provider.js diff --git a/packages/edit-site/src/components/block-editor/block-editor-provider.js b/packages/edit-site/src/components/block-editor/block-editor-provider.js deleted file mode 100644 index e7f6833d754d3c..00000000000000 --- a/packages/edit-site/src/components/block-editor/block-editor-provider.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * WordPress dependencies - */ -import { useSelect } from '@wordpress/data'; - -/** - * Internal dependencies - */ -import { store as editSiteStore } from '../../store'; -import DefaultBlockEditor from './providers/default-block-editor-provider'; -import NavigationBlockEditor from './providers/navigation-block-editor-provider'; - -export default function BlockEditorProvider( { children } ) { - const { entityType, pageContentFocusMode } = useSelect( - ( select ) => ( { - entityType: select( editSiteStore ).getEditedPostType(), - pageContentFocusMode: - select( editSiteStore ).getPageContentFocusMode(), - } ), - [] - ); - - if ( entityType === 'wp_navigation' ) { - return { children }; - } - - if ( entityType === 'wp_template' || entityType === 'wp_template_part' ) { - return ( - - { children } - - ); - } -} diff --git a/packages/edit-site/src/components/block-editor/block-editor-provider/default-block-editor-provider.js b/packages/edit-site/src/components/block-editor/block-editor-provider/default-block-editor-provider.js new file mode 100644 index 00000000000000..1cfbdd25693f52 --- /dev/null +++ b/packages/edit-site/src/components/block-editor/block-editor-provider/default-block-editor-provider.js @@ -0,0 +1,94 @@ +/** + * WordPress dependencies + */ +import { useEntityBlockEditor } from '@wordpress/core-data'; +import { + privateApis as blockEditorPrivateApis, + store as blockEditorStore, +} from '@wordpress/block-editor'; +import { useSelect } from '@wordpress/data'; +import { useMemo } from '@wordpress/element'; +import { createBlock } from '@wordpress/blocks'; + +/** + * Internal dependencies + */ +import { store as editSiteStore } from '../../../store'; +import { unlock } from '../../../lock-unlock'; +import useSiteEditorSettings from '../use-site-editor-settings'; + +const { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis ); + +const noop = () => {}; + +export default function DefaultBlockEditorProvider( { children } ) { + const settings = useSiteEditorSettings(); + + const { templateType, pageContentFocusMode } = useSelect( ( select ) => { + const { getEditedPostType, getPageContentFocusMode } = + select( editSiteStore ); + + return { + templateType: getEditedPostType(), + pageContentFocusMode: getPageContentFocusMode(), + }; + }, [] ); + + const [ blocks, onInput, onChange ] = useEntityBlockEditor( + 'postType', + templateType + ); + + const pageBlocks = usePageBlocks(); + + return ( + + { children } + + ); +} + +function usePageBlocks() { + const pageBlockNames = useSelect( ( select ) => { + const { __experimentalGetGlobalBlocksByName, getBlockNamesByClientId } = + select( blockEditorStore ); + return getBlockNamesByClientId( + __experimentalGetGlobalBlocksByName( [ + 'core/post-title', + 'core/post-featured-image', + 'core/post-content', + ] ) + ); + }, [] ); + + return useMemo( () => { + return [ + createBlock( + 'core/group', + { + layout: { type: 'constrained' }, + style: { + spacing: { + margin: { + top: '4em', + }, + }, + }, + }, + pageBlockNames.map( ( name ) => createBlock( name ) ) + ), + ]; + }, [ pageBlockNames ] ); +} diff --git a/packages/edit-site/src/components/block-editor/block-editor-provider/index.js b/packages/edit-site/src/components/block-editor/block-editor-provider/index.js new file mode 100644 index 00000000000000..36c7c72066a88d --- /dev/null +++ b/packages/edit-site/src/components/block-editor/block-editor-provider/index.js @@ -0,0 +1,28 @@ +/** + * WordPress dependencies + */ +import { useSelect } from '@wordpress/data'; + +/** + * Internal dependencies + */ +import { store as editSiteStore } from '../../../store'; +import DefaultBlockEditorProvider from './default-block-editor-provider'; +import NavigationBlockEditorProvider from './navigation-block-editor-provider'; + +export default function BlockEditorProvider( { children } ) { + const entityType = useSelect( + ( select ) => select( editSiteStore ).getEditedPostType(), + [] + ); + if ( entityType === 'wp_navigation' ) { + return ( + + { children } + + ); + } + return ( + { children } + ); +} diff --git a/packages/edit-site/src/components/block-editor/providers/navigation-block-editor-provider.js b/packages/edit-site/src/components/block-editor/block-editor-provider/navigation-block-editor-provider.js similarity index 100% rename from packages/edit-site/src/components/block-editor/providers/navigation-block-editor-provider.js rename to packages/edit-site/src/components/block-editor/block-editor-provider/navigation-block-editor-provider.js diff --git a/packages/edit-site/src/components/block-editor/providers/default-block-editor-provider.js b/packages/edit-site/src/components/block-editor/providers/default-block-editor-provider.js deleted file mode 100644 index 7c2b2fb6f3650e..00000000000000 --- a/packages/edit-site/src/components/block-editor/providers/default-block-editor-provider.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * WordPress dependencies - */ -import { useEntityBlockEditor } from '@wordpress/core-data'; -import { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor'; -import { useSelect } from '@wordpress/data'; -import { useMemo } from '@wordpress/element'; -import { createBlock } from '@wordpress/blocks'; - -/** - * Internal dependencies - */ -import { store as editSiteStore } from '../../../store'; -import { unlock } from '../../../lock-unlock'; -import useSiteEditorSettings from '../use-site-editor-settings'; - -const { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis ); - -const noop = () => {}; - -export default function DefaultBlockEditorProvider( { - contentOnly, - children, -} ) { - const settings = useSiteEditorSettings(); - - const { templateType } = useSelect( ( select ) => { - const { getEditedPostType } = unlock( select( editSiteStore ) ); - - return { - templateType: getEditedPostType(), - }; - }, [] ); - - const [ entityBlocks, onInput, onChange ] = useEntityBlockEditor( - 'postType', - templateType - ); - - const contentOnlyBlocks = useMemo( () => { - return [ - createBlock( - 'core/group', - { - layout: { type: 'constrained' }, - style: { - spacing: { - margin: { - top: '4em', - }, - }, - }, - }, - [ - createBlock( 'core/post-title' ), - createBlock( 'core/post-content' ), - ] - ), - ]; - }, [] ); - - return ( - - { children } - - ); -}