Skip to content

Commit

Permalink
Revert use-show-block-tools deletion
Browse files Browse the repository at this point in the history
  • Loading branch information
jeryj authored and scruffian committed Apr 19, 2024
1 parent f190649 commit 76532da
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 38 deletions.
49 changes: 11 additions & 38 deletions packages/block-editor/src/components/block-tools/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { isTextField } from '@wordpress/dom';
import { Popover } from '@wordpress/components';
import { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';
import { useRef } from '@wordpress/element';
import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';

/**
* Internal dependencies
Expand All @@ -21,55 +20,28 @@ import BlockToolbarBreadcrumb from './block-toolbar-breadcrumb';
import { store as blockEditorStore } from '../../store';
import usePopoverScroll from '../block-popover/use-popover-scroll';
import ZoomOutModeInserters from './zoom-out-mode-inserters';
import { useShowBlockTools } from './use-show-block-tools';
import { unlock } from '../../lock-unlock';

function selector( select ) {
const {
getBlock,
getSelectedBlockClientId,
getFirstMultiSelectedBlockClientId,
getSettings,
hasMultiSelection,
__unstableGetEditorMode,
isTyping,
getSelectedBlockClientIds,
getBlockRootClientId,
} = select( blockEditorStore );

const clientId =
getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();
const block = getBlock( clientId ) || { name: '', attributes: {} };
const hasSelectedBlock = clientId && block?.name;
const isEmptyDefaultBlock = isUnmodifiedDefaultBlock( block );

const editorMode = __unstableGetEditorMode();
const showEmptyBlockSideInserter =
clientId &&
! isTyping() &&
editorMode === 'edit' &&
isEmptyDefaultBlock;
const maybeShowBreadcrumb =
hasSelectedBlock &&
! hasMultiSelection() &&
( editorMode === 'navigation' || editorMode === 'zoom-out' );
const hasFixedToolbar = getSettings().hasFixedToolbar;

return {
clientId,
hasFixedToolbar,
hasFixedToolbar: getSettings().hasFixedToolbar,
isTyping: isTyping(),
isZoomOutMode: editorMode === 'zoom-out',
hasSelectedBlock,
showEmptyBlockSideInserter,
showBreadcrumb: ! showEmptyBlockSideInserter && maybeShowBreadcrumb,
showBlockToolbarPopover:
! hasFixedToolbar &&
! showEmptyBlockSideInserter &&
hasSelectedBlock &&
! isEmptyDefaultBlock &&
! maybeShowBreadcrumb,
getSelectedBlockClientIds,
getBlockRootClientId,
};
}

Expand All @@ -87,18 +59,19 @@ export default function BlockTools( {
__unstableContentRef,
...props
} ) {
const { clientId, hasFixedToolbar, isTyping, isZoomOutMode } = useSelect(
selector,
[]
);
const isMatch = useShortcutEventMatch();
const { getSelectedBlockClientIds, getBlockRootClientId } =
useSelect( blockEditorStore );

const {
clientId,
hasFixedToolbar,
isTyping,
isZoomOutMode,
showEmptyBlockSideInserter,
showBreadcrumb,
showBlockToolbarPopover,
getSelectedBlockClientIds,
getBlockRootClientId,
} = useSelect( selector, [] );
const isMatch = useShortcutEventMatch();
} = useShowBlockTools();

const {
duplicateBlocks,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* WordPress dependencies
*/
import { useSelect } from '@wordpress/data';
import { isUnmodifiedDefaultBlock } from '@wordpress/blocks';

/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';

/**
* Source of truth for which block tools are showing in the block editor.
*
* @return {Object} Object of which block tools will be shown.
*/
export function useShowBlockTools() {
return useSelect( ( select ) => {
const {
getSelectedBlockClientId,
getFirstMultiSelectedBlockClientId,
getBlock,
getSettings,
hasMultiSelection,
__unstableGetEditorMode,
isTyping,
} = select( blockEditorStore );

const clientId =
getSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();

const block = getBlock( clientId ) || { name: '', attributes: {} };
const editorMode = __unstableGetEditorMode();
const hasSelectedBlock = clientId && block?.name;
const isEmptyDefaultBlock = isUnmodifiedDefaultBlock( block );
const _showEmptyBlockSideInserter =
clientId &&
! isTyping() &&
editorMode === 'edit' &&
isEmptyDefaultBlock;
const maybeShowBreadcrumb =
hasSelectedBlock &&
! hasMultiSelection() &&
( editorMode === 'navigation' || editorMode === 'zoom-out' );

return {
showEmptyBlockSideInserter: _showEmptyBlockSideInserter,
showBreadcrumb:
! _showEmptyBlockSideInserter && maybeShowBreadcrumb,
showBlockToolbarPopover:
! getSettings().hasFixedToolbar &&
! _showEmptyBlockSideInserter &&
hasSelectedBlock &&
! isEmptyDefaultBlock &&
! maybeShowBreadcrumb,
};
}, [] );
}

0 comments on commit 76532da

Please sign in to comment.