Skip to content

Commit

Permalink
Use blocks in same order as template
Browse files Browse the repository at this point in the history
  • Loading branch information
noisysocks committed Aug 21, 2023
1 parent 5b6ed73 commit bf8eadf
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 109 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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 (
<ExperimentalBlockEditorProvider
settings={ settings }
value={
pageContentFocusMode === 'withoutTemplate' ? pageBlocks : blocks
}
onInput={
pageContentFocusMode === 'withoutTemplate' ? noop : onInput
}
onChange={
pageContentFocusMode === 'withoutTemplate' ? noop : onChange
}
useSubRegistry={ false }
>
{ children }
</ExperimentalBlockEditorProvider>
);
}

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 ] );
}
Original file line number Diff line number Diff line change
@@ -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 (
<NavigationBlockEditorProvider>
{ children }
</NavigationBlockEditorProvider>
);
}
return (
<DefaultBlockEditorProvider>{ children }</DefaultBlockEditorProvider>
);
}

This file was deleted.

0 comments on commit bf8eadf

Please sign in to comment.