Port 0a49b26793
to glitch-soc
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
master
parent
4b181eba13
commit
7d79e1f31c
@ -0,0 +1,36 @@ |
|||||||
|
import { isMobile } from 'flavours/glitch/util/is_mobile'; |
||||||
|
|
||||||
|
/** @type {number | null} */ |
||||||
|
let cachedScrollbarWidth = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return {number} |
||||||
|
*/ |
||||||
|
const getActualScrollbarWidth = () => { |
||||||
|
const outer = document.createElement('div'); |
||||||
|
outer.style.visibility = 'hidden'; |
||||||
|
outer.style.overflow = 'scroll'; |
||||||
|
document.body.appendChild(outer); |
||||||
|
|
||||||
|
const inner = document.createElement('div'); |
||||||
|
outer.appendChild(inner); |
||||||
|
|
||||||
|
const scrollbarWidth = outer.offsetWidth - inner.offsetWidth; |
||||||
|
outer.parentNode.removeChild(outer); |
||||||
|
|
||||||
|
return scrollbarWidth; |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* @return {number} |
||||||
|
*/ |
||||||
|
export const getScrollbarWidth = () => { |
||||||
|
if (cachedScrollbarWidth !== null) { |
||||||
|
return cachedScrollbarWidth; |
||||||
|
} |
||||||
|
|
||||||
|
const scrollbarWidth = isMobile(window.innerWidth) ? 0 : getActualScrollbarWidth(); |
||||||
|
cachedScrollbarWidth = scrollbarWidth; |
||||||
|
|
||||||
|
return scrollbarWidth; |
||||||
|
}; |
Loading…
Reference in new issue