@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
50 lines • 1.71 kB
JavaScript
import { ELEMENT_LIST_PADDING, FLEX_ITEMS_CONTAINER_BREAKPOINT_NUMBERS, SCROLLBAR_WIDTH } from '../../constants';
export function getColumnCount(clientWidth) {
const {
small,
medium,
large
} = FLEX_ITEMS_CONTAINER_BREAKPOINT_NUMBERS;
switch (true) {
case clientWidth < small:
return 1;
case clientWidth >= small && clientWidth < medium:
return Math.floor(clientWidth / 200);
case clientWidth >= large:
return Math.floor(clientWidth / 248);
default:
return Math.floor(clientWidth / 220);
}
}
export function generateVirtualizedContainerDatum(containerWidth, options) {
const {
scrollbarWidth
} = options;
const columnCount = getColumnCount(containerWidth);
const availableWidth = containerWidth - (scrollbarWidth + ELEMENT_LIST_PADDING);
return {
availableWidth,
columnCount
};
}
let CALCULATED_SCROLLBAR_WIDTH;
export function getScrollbarWidth() {
if (!CALCULATED_SCROLLBAR_WIDTH) {
var _container$parentNode;
const container = document.createElement('div');
container.style.visibility = 'hidden';
container.style.overflow = 'scroll';
document.body.appendChild(container);
const innerContainer = document.createElement('div');
container.appendChild(innerContainer);
const scrollbarWidth = container.offsetWidth - innerContainer.offsetWidth;
(_container$parentNode = container.parentNode) === null || _container$parentNode === void 0 ? void 0 : _container$parentNode.removeChild(container);
if (scrollbarWidth) {
CALCULATED_SCROLLBAR_WIDTH = scrollbarWidth;
return scrollbarWidth;
}
return SCROLLBAR_WIDTH;
} else {
return CALCULATED_SCROLLBAR_WIDTH;
}
}