From 285ac09388d22943881e3eda228c37016905fa2d Mon Sep 17 00:00:00 2001 From: Robert Anderson Date: Fri, 21 Jun 2024 16:46:21 +1000 Subject: [PATCH] Don't use window global --- packages/block-editor/src/utils/dom.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/block-editor/src/utils/dom.js b/packages/block-editor/src/utils/dom.js index fbc0c122f9d628..97b040bf555012 100644 --- a/packages/block-editor/src/utils/dom.js +++ b/packages/block-editor/src/utils/dom.js @@ -95,7 +95,12 @@ function rectIntersect( rect1, rect2 ) { * @return {boolean} Whether the element is visible. */ function isElementVisible( element ) { - const style = window.getComputedStyle( element ); + const viewport = element.ownerDocument.defaultView; + if ( ! viewport ) { + return false; + } + + const style = viewport.getComputedStyle( element ); if ( style.display === 'none' || style.visibility === 'hidden' || @@ -140,6 +145,11 @@ function isElementVisible( element ) { * @return {DOMRect} Bounding client rect. */ export function getVisibleBoundingRect( element ) { + const viewport = element.ownerDocument.defaultView; + if ( ! viewport ) { + return new window.DOMRect(); + } + let bounds = element.getBoundingClientRect(); const stack = [ element ]; @@ -158,8 +168,8 @@ export function getVisibleBoundingRect( element ) { const viewportRect = new window.DOMRect( 0, 0, - window.innerWidth, - window.innerHeight + viewport.innerWidth, + viewport.innerHeight ); return rectIntersect( bounds, viewportRect ); }