UNPKG

@wordpress/block-editor

Version:
62 lines (48 loc) 1.59 kB
"use strict"; 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