forked from treehouse/mastodon
22 lines
817 B
JavaScript
22 lines
817 B
JavaScript
|
|
||
|
// 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 getRectFromEntry(entry) {
|
||
|
if (typeof hasBoundingRectBug !== 'boolean') {
|
||
|
const boundingRect = entry.target.getBoundingClientRect();
|
||
|
const observerRect = entry.boundingClientRect;
|
||
|
hasBoundingRectBug = boundingRect.height !== observerRect.height ||
|
||
|
boundingRect.top !== observerRect.top ||
|
||
|
boundingRect.width !== observerRect.width ||
|
||
|
boundingRect.bottom !== observerRect.bottom ||
|
||
|
boundingRect.left !== observerRect.left ||
|
||
|
boundingRect.right !== observerRect.right;
|
||
|
}
|
||
|
return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect;
|
||
|
}
|
||
|
|
||
|
export default getRectFromEntry;
|