UNPKG

@wordpress/block-editor

Version:
72 lines (60 loc) 2.43 kB
"use strict"; 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