UNPKG

@wordpress/block-editor

Version:
58 lines (45 loc) 1.36 kB
"use strict"; 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