@wordpress/block-editor
Version:
47 lines (41 loc) • 1.31 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { createElement } from "@wordpress/element";
/**
* WordPress dependencies
*/
import { useSelect, useDispatch } from '@wordpress/data';
import { useRefEffect } from '@wordpress/compose';
/**
* Internal dependencies
*/
import { store as blockEditorStore } from '../../store';
export function useBlockSelectionClearer(onlySelfClicks = false) {
const {
hasSelectedBlock,
hasMultiSelection
} = useSelect(blockEditorStore);
const {
clearSelectedBlock
} = useDispatch(blockEditorStore);
return 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]);
}
export default function BlockSelectionClearer(props) {
return createElement("div", _extends({
ref: useBlockSelectionClearer()
}, props));
}
//# sourceMappingURL=index.js.map