export interface ScrollbarWidths { x : number ; y : number ; } let _scrollbarWidths ; export function getScrollbarWidths ( ) { if ( ! _scrollbarWidths ) { _scrollbarWidths = computeScrollbarWidths ( ) ; } return _scrollbarWidths ; } function computeScrollbarWidths ( ) { let el = document . createElement ( 'div' ) ; el . style . overflow = 'scroll' ; el . style . position = 'absolute' ; el . style . top = '-9999px' ; el . style . left = '-9999px' ; document . body . appendChild ( el ) ; let res = computeScrollbarWidthsForEl ( el ) ; document . body . removeChild ( el ) ; return res ; } export function computeScrollbarWidthsForEl ( el ) { return { x : el . offsetHeight - el . clientHeight , y : el . offsetWidth - el . clientWidth , } ; }