@gechiui/block-editor
Version:
58 lines (49 loc) • 1.44 kB
JavaScript
;
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