@testplane/webdriverio
Version:
Next-gen browser and mobile automation test framework for Node.js
17 lines (16 loc) • 2.53 kB
JavaScript
// src/scripts/isElementInViewport.ts
function isElementInViewport(elem) {
if (!elem.getBoundingClientRect) {
return false;
}
const rect = elem.getBoundingClientRect();
const windowHeight = window.innerHeight || document.documentElement.clientHeight;
const windowWidth = window.innerWidth || document.documentElement.clientWidth;
const vertInView = rect.top <= windowHeight && rect.top + rect.height > 0;
const horInView = rect.left <= windowWidth && rect.left + rect.width > 0;
return vertInView && horInView;
}
export {
isElementInViewport as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3NjcmlwdHMvaXNFbGVtZW50SW5WaWV3cG9ydC50cyJdLAogICJzb3VyY2VSb290IjogIi9Vc2Vycy9kdWRrZXZpY2gvam9iL3Byb2plY3RzL2dlbWluaS10ZXN0aW5nL3dlYmRyaXZlcmlvL3BhY2thZ2VzL3dlYmRyaXZlcmlvIiwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogY2hlY2sgaWYgZWxlbWVudCBpcyB3aXRoaW4gdGhlIHZpZXdwb3J0XG4gKiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9kYXZpZHRoZWNsYXJrLzU1MTU3MzMjZ2lzdGNvbW1lbnQtMjExMzIwNVxuICpcbiAqIFBsZWFzZSB1cGRhdGUgYGlzRWxlbWVudENsaWNrYWJsZS5qc2AgaWYgdGhlIHNjcmlwdCBpcyB1cGRhdGVkIVxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW0gIGVsZW1lbnQgdG8gY2hlY2tcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgICAgICAgICB0cnVlIGlmIGVsZW1lbnQgaXMgd2l0aGluIHZpZXdwb3J0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzRWxlbWVudEluVmlld3BvcnQgKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKCFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gKHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KVxuICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gKHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aClcblxuICAgIGNvbnN0IHZlcnRJblZpZXcgPSAocmVjdC50b3AgPD0gd2luZG93SGVpZ2h0KSAmJiAoKHJlY3QudG9wICsgcmVjdC5oZWlnaHQpID4gMClcbiAgICBjb25zdCBob3JJblZpZXcgPSAocmVjdC5sZWZ0IDw9IHdpbmRvd1dpZHRoKSAmJiAoKHJlY3QubGVmdCArIHJlY3Qud2lkdGgpID4gMClcblxuICAgIHJldHVybiAodmVydEluVmlldyAmJiBob3JJblZpZXcpXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBUWUsU0FBUixvQkFBc0MsTUFBbUI7QUFDNUQsTUFBSSxDQUFDLEtBQUssdUJBQXVCO0FBQzdCLFdBQU87QUFBQSxFQUNYO0FBRUEsUUFBTSxPQUFPLEtBQUssc0JBQXNCO0FBRXhDLFFBQU0sZUFBZ0IsT0FBTyxlQUFlLFNBQVMsZ0JBQWdCO0FBQ3JFLFFBQU0sY0FBZSxPQUFPLGNBQWMsU0FBUyxnQkFBZ0I7QUFFbkUsUUFBTSxhQUFjLEtBQUssT0FBTyxnQkFBbUIsS0FBSyxNQUFNLEtBQUssU0FBVTtBQUM3RSxRQUFNLFlBQWEsS0FBSyxRQUFRLGVBQWtCLEtBQUssT0FBTyxLQUFLLFFBQVM7QUFFNUUsU0FBUSxjQUFjO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=