UNPKG

@wordpress/block-editor

Version:
74 lines (72 loc) 3.04 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js var use_focus_first_element_exports = {}; __export(use_focus_first_element_exports, { useFocusFirstElement: () => useFocusFirstElement }); module.exports = __toCommonJS(use_focus_first_element_exports); var import_element = require("@wordpress/element"); var import_dom = require("@wordpress/dom"); var import_data = require("@wordpress/data"); var import_dom2 = require("../../../utils/dom"); var import_store = require("../../../store"); var import_lock_unlock = require("../../../lock-unlock"); function useFocusFirstElement({ clientId, initialPosition }) { const ref = (0, import_element.useRef)(); const { isBlockSelected, isMultiSelecting, isZoomOut } = (0, import_lock_unlock.unlock)( (0, import_data.useSelect)(import_store.store) ); (0, import_element.useEffect)(() => { if (!isBlockSelected(clientId) || isMultiSelecting() || isZoomOut()) { return; } if (initialPosition === void 0 || initialPosition === null) { return; } if (!ref.current) { return; } const { ownerDocument } = ref.current; if ((0, import_dom2.isInsideRootBlock)(ref.current, ownerDocument.activeElement)) { return; } const textInputs = import_dom.focus.tabbable.find(ref.current).filter((node) => (0, import_dom.isTextField)(node)); const isReverse = -1 === initialPosition; const target = textInputs[isReverse ? textInputs.length - 1 : 0] || ref.current; if (!(0, import_dom2.isInsideRootBlock)(ref.current, target)) { ref.current.focus(); return; } if (!ref.current.getAttribute("contenteditable")) { const focusElement = import_dom.focus.tabbable.findNext(ref.current); if (focusElement && (0, import_dom2.isInsideRootBlock)(ref.current, focusElement) && (0, import_dom.isFormElement)(focusElement)) { focusElement.focus(); return; } } (0, import_dom.placeCaretAtHorizontalEdge)(target, isReverse); }, [initialPosition, clientId]); return ref; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { useFocusFirstElement }); //# sourceMappingURL=use-focus-first-element.js.map