| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = getScrollBarSize;
- exports.getTargetScrollBarSize = getTargetScrollBarSize;
- /* eslint-disable no-param-reassign */
- var cached;
- function getScrollBarSize(fresh) {
- if (typeof document === 'undefined') {
- return 0;
- }
- if (fresh || cached === undefined) {
- var inner = document.createElement('div');
- inner.style.width = '100%';
- inner.style.height = '200px';
- var outer = document.createElement('div');
- var outerStyle = outer.style;
- outerStyle.position = 'absolute';
- outerStyle.top = '0';
- outerStyle.left = '0';
- outerStyle.pointerEvents = 'none';
- outerStyle.visibility = 'hidden';
- outerStyle.width = '200px';
- outerStyle.height = '150px';
- outerStyle.overflow = 'hidden';
- outer.appendChild(inner);
- document.body.appendChild(outer);
- var widthContained = inner.offsetWidth;
- outer.style.overflow = 'scroll';
- var widthScroll = inner.offsetWidth;
- if (widthContained === widthScroll) {
- widthScroll = outer.clientWidth;
- }
- document.body.removeChild(outer);
- cached = widthContained - widthScroll;
- }
- return cached;
- }
- function ensureSize(str) {
- var match = str.match(/^(.*)px$/);
- var value = Number(match === null || match === void 0 ? void 0 : match[1]);
- return Number.isNaN(value) ? getScrollBarSize() : value;
- }
- function getTargetScrollBarSize(target) {
- if (typeof document === 'undefined' || !target || !(target instanceof Element)) {
- return {
- width: 0,
- height: 0
- };
- }
- var _getComputedStyle = getComputedStyle(target, '::-webkit-scrollbar'),
- width = _getComputedStyle.width,
- height = _getComputedStyle.height;
- return {
- width: ensureSize(width),
- height: ensureSize(height)
- };
- }
|