UNPKG

@gechiui/block-editor

Version:
58 lines (49 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useNavModeExit = useNavModeExit; var _data = require("@gechiui/data"); var _compose = require("@gechiui/compose"); var _store = require("../../../store"); /** * GeChiUI dependencies */ /** * Internal dependencies */ /** * Allows navigation mode to be exited by clicking in the selected block. * * @param {string} clientId Block client ID. */ function useNavModeExit(clientId) { const { isNavigationMode, isBlockSelected } = (0, _data.useSelect)(_store.store); const { setNavigationMode, selectBlock } = (0, _data.useDispatch)(_store.store); return (0, _compose.useRefEffect)(node => { function onMouseDown(event) { // Don't select a block if it's already handled by a child // block. if (isNavigationMode() && !event.defaultPrevented) { // Prevent focus from moving to the block. event.preventDefault(); // When clicking on a selected block, exit navigation mode. if (isBlockSelected(clientId)) { setNavigationMode(false); } else { selectBlock(clientId); } } } node.addEventListener('mousedown', onMouseDown); return () => { node.addEventListener('mousedown', onMouseDown); }; }, [clientId, isNavigationMode, isBlockSelected, setNavigationMode]); } //# sourceMappingURL=use-nav-mode-exit.js.map