diff options
author | Reverite <github@reverite.sh> | 2019-10-07 13:53:25 -0700 |
---|---|---|
committer | Reverite <github@reverite.sh> | 2019-10-07 13:53:25 -0700 |
commit | 38afc782051fe6faf06c2c9ca20304dd946cfb5c (patch) | |
tree | 2ff5e256635cbbeabe3347b6a0772415f9f1426c /app/javascript/flavours/glitch/util/scrollbar.js | |
parent | 46ada47e09af0da9c776ef83c0ff034c720a83d6 (diff) | |
parent | d2f7b8685cfd0ec9b69af505b56c791d9b5f1c82 (diff) |
Merge branch 'glitch' into production
Diffstat (limited to 'app/javascript/flavours/glitch/util/scrollbar.js')
-rw-r--r-- | app/javascript/flavours/glitch/util/scrollbar.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/util/scrollbar.js b/app/javascript/flavours/glitch/util/scrollbar.js new file mode 100644 index 000000000..929b036d6 --- /dev/null +++ b/app/javascript/flavours/glitch/util/scrollbar.js @@ -0,0 +1,34 @@ +/** @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 = getActualScrollbarWidth(); + cachedScrollbarWidth = scrollbarWidth; + + return scrollbarWidth; +}; |