@wordpress/block-editor
Version:
62 lines (48 loc) • 1.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useBlockSelectionClearer = useBlockSelectionClearer;
exports.default = BlockSelectionClearer;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _data = require("@wordpress/data");
var _compose = require("@wordpress/compose");
var _store = require("../../store");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function useBlockSelectionClearer(onlySelfClicks = false) {
const {
hasSelectedBlock,
hasMultiSelection
} = (0, _data.useSelect)(_store.store);
const {
clearSelectedBlock
} = (0, _data.useDispatch)(_store.store);
return (0, _compose.useRefEffect)(node => {
function onMouseDown(event) {
if (!hasSelectedBlock() && !hasMultiSelection()) {
return;
} // Only handle clicks on the canvas, not the content.
if (event.target.closest('.wp-block') || onlySelfClicks && event.target !== node) {
return;
}
clearSelectedBlock();
}
node.addEventListener('mousedown', onMouseDown);
return () => {
node.removeEventListener('mousedown', onMouseDown);
};
}, [hasSelectedBlock, hasMultiSelection, clearSelectedBlock]);
}
function BlockSelectionClearer(props) {
return (0, _element.createElement)("div", (0, _extends2.default)({
ref: useBlockSelectionClearer()
}, props));
}
//# sourceMappingURL=index.js.map