{"version":3,"file":"index.mjs","sources":[""],"sourcesContent":["import { getDocument } from \"ssr-window\";\r\n\r\nexport type TGetScrollbarWidthArgs = Parameters<typeof getScrollbarWidth>;\r\n\r\nexport type TGetScrollbarWidthReturn = ReturnType<typeof getScrollbarWidth>;\r\n\r\n/**\r\n * Computes the width of the browser's scrollbar in pixels.\r\n *\r\n * @returns {number} Scrollbar width in pixels\r\n * @example\r\n * const scrollbarWidth = getScrollbarWidth();\n * console.log(scrollbarWidth); // => number\n * @example\n * // Prevent a layout shift when locking page scroll behind a modal\n * document.body.style.paddingRight = `${getScrollbarWidth()}px`;\n * document.body.style.overflow = \"hidden\";\n */\nexport const getScrollbarWidth = (): number => {\r\n  const doc = getDocument();\r\n  const outer = doc.createElement(\"div\");\n  outer.style.visibility = \"hidden\";\n  outer.style.overflow = \"scroll\";\n  (outer.style as CSSStyleDeclaration & { msOverflowStyle: string; }).msOverflowStyle = \"scrollbar\";\n  doc.body.appendChild(outer);\r\n\r\n  const inner = doc.createElement(\"div\");\r\n  outer.appendChild(inner);\r\n\r\n  const w = outer.offsetWidth - inner.offsetWidth;\r\n  outer.parentNode?.removeChild(outer);\r\n  return w;\r\n};\r\n"],"names":["getScrollbarWidth","doc","getDocument","outer","createElement","style","visibility","overflow","msOverflowStyle","body","appendChild","inner","w","offsetWidth","parentNode","removeChild"],"mappings":"oCAkBO,MAAMA,kBAAoB,KAC/B,MAAMC,IAAMC,cACZ,MAAMC,MAAQF,IAAIG,cAAc,OAChCD,MAAME,MAAMC,WAAa,SACzBH,MAAME,MAAME,SAAW,SACtBJ,MAAME,MAA6DG,gBAAkB,YACtFP,IAAIQ,KAAKC,YAAYP,OAErB,MAAMQ,MAAQV,IAAIG,cAAc,OAChCD,MAAMO,YAAYC,OAElB,MAAMC,EAAIT,MAAMU,YAAcF,MAAME,YACpCV,MAAMW,YAAYC,YAAYZ,OAC9B,OAAOS"}