// Returns true if element's center is within the visual viewport bounds. function isInViewport(element) { const viewportRect = { left: visualViewport.offsetLeft, top: visualViewport.offsetTop, right: visualViewport.offsetLeft + visualViewport.width, bottom: visualViewport.offsetTop + visualViewport.height }; const elementRect = element.getBoundingClientRect(); const elementCenter = { x: elementRect.left + elementRect.width / 2, y: elementRect.top + elementRect.height / 2 }; return elementCenter.x > viewportRect.left && elementCenter.x < viewportRect.right && elementCenter.y > viewportRect.top && elementCenter.y < viewportRect.bottom; }