@wordpress/block-editor
Version:
72 lines (60 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useShouldContextualToolbarShow = useShouldContextualToolbarShow;
var _data = require("@wordpress/data");
var _blocks = require("@wordpress/blocks");
var _compose = require("@wordpress/compose");
var _store = require("../store");
var _lockUnlock = require("../lock-unlock");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Returns true if the contextual block toolbar should show, or false if it should be hidden.
*
* @return {boolean} Whether the block toolbar is hidden.
*/
function useShouldContextualToolbarShow() {
const isLargeViewport = (0, _compose.useViewportMatch)('medium');
const {
shouldShowContextualToolbar,
canFocusHiddenToolbar,
fixedToolbarCanBeFocused
} = (0, _data.useSelect)(select => {
const {
__unstableGetEditorMode,
isMultiSelecting,
isTyping,
isBlockInterfaceHidden,
getBlock,
getSettings,
isNavigationMode,
getSelectedBlockClientId,
getFirstMultiSelectedBlockClientId
} = (0, _lockUnlock.unlock)(select(_store.store));
const isEditMode = __unstableGetEditorMode() === 'edit';
const hasFixedToolbar = getSettings().hasFixedToolbar;
const isDistractionFree = getSettings().isDistractionFree;
const selectedBlockId = getFirstMultiSelectedBlockClientId() || getSelectedBlockClientId();
const hasSelectedBlockId = !!selectedBlockId;
const isEmptyDefaultBlock = (0, _blocks.isUnmodifiedDefaultBlock)(getBlock(selectedBlockId) || {});
const _shouldShowContextualToolbar = isEditMode && !hasFixedToolbar && (!isDistractionFree || isNavigationMode()) && isLargeViewport && !isMultiSelecting() && !isTyping() && hasSelectedBlockId && !isEmptyDefaultBlock && !isBlockInterfaceHidden();
const _canFocusHiddenToolbar = isEditMode && hasSelectedBlockId && !_shouldShowContextualToolbar && !hasFixedToolbar && !isDistractionFree && !isEmptyDefaultBlock;
return {
shouldShowContextualToolbar: _shouldShowContextualToolbar,
canFocusHiddenToolbar: _canFocusHiddenToolbar,
fixedToolbarCanBeFocused: (hasFixedToolbar || !isLargeViewport) && selectedBlockId
};
}, [isLargeViewport]);
return {
shouldShowContextualToolbar,
canFocusHiddenToolbar,
fixedToolbarCanBeFocused
};
}
//# sourceMappingURL=use-should-contextual-toolbar-show.js.map