@gechiui/block-editor
Version:
64 lines (55 loc) • 1.38 kB
JavaScript
/**
* External dependencies
*/
import { last } from 'lodash';
/**
* GeChiUI dependencies
*/
import { withSelect } from '@gechiui/data';
import { getDefaultBlockName } from '@gechiui/blocks';
/**
* Internal dependencies
*/
import DefaultBlockAppender from '../default-block-appender';
import styles from './style.scss';
import { store as blockEditorStore } from '../../store';
function BlockListAppender( {
blockClientIds,
rootClientId,
canInsertDefaultBlock,
isLocked,
renderAppender: CustomAppender,
showSeparator,
} ) {
if ( isLocked ) {
return null;
}
if ( CustomAppender ) {
return <CustomAppender showSeparator={ showSeparator } />;
}
if ( canInsertDefaultBlock ) {
return (
<DefaultBlockAppender
rootClientId={ rootClientId }
lastBlockClientId={ last( blockClientIds ) }
containerStyle={ styles.blockListAppender }
placeholder={ blockClientIds.length > 0 ? '' : null }
showSeparator={ showSeparator }
/>
);
}
return null;
}
export default withSelect( ( select, { rootClientId } ) => {
const { getBlockOrder, canInsertBlockType, getTemplateLock } = select(
blockEditorStore
);
return {
isLocked: !! getTemplateLock( rootClientId ),
blockClientIds: getBlockOrder( rootClientId ),
canInsertDefaultBlock: canInsertBlockType(
getDefaultBlockName(),
rootClientId
),
};
} )( BlockListAppender );