@wordpress/block-editor
Version:
58 lines (45 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useCanvasClickRedirect = useCanvasClickRedirect;
var _lodash = require("lodash");
var _compose = require("@wordpress/compose");
var _dom = require("@wordpress/dom");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Given an element, returns true if the element is a tabbable text field, or
* false otherwise.
*
* @param {Element} element Element to test.
*
* @return {boolean} Whether element is a tabbable text field.
*/
const isTabbableTextField = (0, _lodash.overEvery)([_dom.isTextField, _dom.focus.tabbable.isTabbableIndex]);
function useCanvasClickRedirect() {
return (0, _compose.useRefEffect)(node => {
function onMouseDown(event) {
// Only handle clicks on the canvas, not the content.
if (event.target !== node) {
return;
}
const focusableNodes = _dom.focus.focusable.find(node);
const target = (0, _lodash.findLast)(focusableNodes, isTabbableTextField);
if (!target) {
return;
}
(0, _dom.placeCaretAtHorizontalEdge)(target, true);
event.preventDefault();
}
node.addEventListener('mousedown', onMouseDown);
return () => {
node.addEventListener('mousedown', onMouseDown);
};
}, []);
}
//# sourceMappingURL=index.js.map