diff options
author | Nolan Lawson <nolan@nolanlawson.com> | 2017-07-07 16:57:22 -0700 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-07-08 01:57:22 +0200 |
commit | 63b77f23202a6dece419e2eb7180395b2e276b09 (patch) | |
tree | cfde074ee8cbecc3efa41ae85100f7c020b22e84 /app/javascript/mastodon/features/ui/util | |
parent | 8fecd8010801c17d0d086fbb27d4d9a67ccbb6af (diff) |
Avoid using getBoundingClientRect to calculate height (#4001)
Diffstat (limited to 'app/javascript/mastodon/features/ui/util')
-rw-r--r-- | app/javascript/mastodon/features/ui/util/get_rect_from_entry.js | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/javascript/mastodon/features/ui/util/get_rect_from_entry.js b/app/javascript/mastodon/features/ui/util/get_rect_from_entry.js new file mode 100644 index 000000000..c266cd7dc --- /dev/null +++ b/app/javascript/mastodon/features/ui/util/get_rect_from_entry.js @@ -0,0 +1,21 @@ + +// 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; |