PluginProbe
Gutenberg / 24.1.0
Gutenberg v24.1.0
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
← All changes | build/scripts/dom/index.js +52 -30 24.0.0 → 24.1.0 View file →
@@ -120,19 +120,13 @@
120 120 }
121 121 const img = element.ownerDocument.querySelector(
122 122 'img[usemap="#' + map.name + '"]'
123 123 );
124 - return !!img && isVisible(img);
124 + return !!img && !img.closest("[inert]") && isVisible(img);
125 125 }
126 126 function find(context, { sequential = false } = {}) {
127 127 const elements = context.querySelectorAll(buildSelector(sequential));
128 128 return Array.from(elements).filter((element) => {
129 - if (!isVisible(element)) {
130 - return false;
131 - }
132 - if (element.closest("[inert]")) {
133 - return false;
134 - }
135 129 const { nodeName } = element;
136 130 if ("AREA" === nodeName) {
137 131 return isValidFocusableArea(
138 132 /** @type {HTMLAreaElement} */
@@ -138,9 +132,12 @@
138 132 /** @type {HTMLAreaElement} */
139 133 element
140 134 );
141 135 }
142 - return true;
136 + if (element.closest("[inert]")) {
137 + return false;
138 + }
139 + return isVisible(element);
143 140 });
144 141 }
145 142
146 143 // packages/dom/build-module/tabbable.mjs
@@ -264,22 +261,57 @@
264 261 furthestRight - furthestLeft,
265 262 furthestBottom - furthestTop
266 263 );
267 264 }
268 - const { startContainer } = range;
265 + const { startContainer, startOffset } = range;
269 266 const { ownerDocument } = startContainer;
270 - if (startContainer.nodeName === "BR") {
271 - const { parentNode } = startContainer;
272 - assertIsDefined(parentNode, "parentNode");
273 - const index = (
274 - /** @type {Node[]} */
275 - Array.from(parentNode.childNodes).indexOf(startContainer)
276 - );
277 - assertIsDefined(ownerDocument, "ownerDocument");
267 + assertIsDefined(ownerDocument, "ownerDocument");
268 + if (startContainer.nodeType !== startContainer.TEXT_NODE && !startContainer.childNodes.length && startContainer.parentNode) {
278 269 range = ownerDocument.createRange();
279 - range.setStart(parentNode, index);
280 - range.setEnd(parentNode, index);
270 + range.setStartBefore(startContainer);
271 + range.collapse(true);
272 + return getRectangleFromRange(range);
281 273 }
274 + if (startContainer.nodeType !== startContainer.TEXT_NODE) {
275 + let before = startContainer.childNodes[startOffset - 1];
276 + while (before?.lastChild) {
277 + before = before.lastChild;
278 + }
279 + let after = startContainer.childNodes[startOffset];
280 + while (after?.firstChild) {
281 + after = after.firstChild;
282 + }
283 + let beforeRange;
284 + if (before && before.nodeType === before.TEXT_NODE) {
285 + beforeRange = ownerDocument.createRange();
286 + beforeRange.setStart(
287 + before,
288 + /** @type {Text} */
289 + before.length
290 + );
291 + beforeRange.collapse(true);
292 + }
293 + let afterRange;
294 + if (after && after.nodeType === after.TEXT_NODE) {
295 + afterRange = ownerDocument.createRange();
296 + afterRange.setStart(after, 0);
297 + afterRange.collapse(true);
298 + }
299 + if (beforeRange && afterRange) {
300 + const beforeRect = beforeRange.getClientRects()[0];
301 + const afterRect = afterRange.getClientRects()[0];
302 + if (beforeRect && afterRect && beforeRect.bottom <= afterRect.top) {
303 + return null;
304 + }
305 + }
306 + if (afterRange) {
307 + range = afterRange;
308 + } else if (beforeRange) {
309 + range = beforeRange;
310 + } else {
311 + return null;
312 + }
313 + }
282 314 const rects = range.getClientRects();
283 315 if (rects.length > 1) {
284 316 return null;
285 317 }
@@ -297,19 +329,9 @@
297 329 if (before.bottom <= after.top) {
298 330 return null;
299 331 }
300 332 }
301 - let rect = rects[0];
302 - if (!rect || rect.height === 0) {
303 - assertIsDefined(ownerDocument, "ownerDocument");
304 - const padNode = ownerDocument.createTextNode("\u200B");
305 - range = range.cloneRange();
306 - range.insertNode(padNode);
307 - rect = range.getClientRects()[0];
308 - assertIsDefined(padNode.parentNode, "padNode.parentNode");
309 - padNode.parentNode.removeChild(padNode);
310 - }
311 - return rect;
333 + return rects[0] ?? null;
312 334 }
313 335
314 336 // packages/dom/build-module/dom/compute-caret-rect.mjs
315 337 function computeCaretRect(win) {