// Get the bounding client rect from an IntersectionObserver entry. // This is to work around a bug in Chrome: https://crbug.com/737228 let hasBoundingRectBug function rectsAreEqual (rectA, rectB) { return rectA.height === rectB.height && rectA.top === rectB.top && rectA.width === rectB.width && rectA.bottom === rectB.bottom && rectA.left === rectB.left && rectA.right === rectB.right } export function getRectFromEntry (entry) { if (typeof hasBoundingRectBug !== 'boolean') { const boundingRect = entry.target.getBoundingClientRect() const observerRect = entry.boundingClientRect hasBoundingRectBug = !rectsAreEqual(boundingRect, observerRect) } return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect }