UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

50 lines (49 loc) 2.04 kB
export class SizeUtils { static getWidthInfo(element) { const offsetSize = SizeUtils.getOffsetWidth(element); const style = getComputedStyle(element); const inset = parseCssValue(style.borderLeftWidth) + parseCssValue(style.borderRightWidth) + parseCssValue(style.paddingLeft) + parseCssValue(style.paddingRight); const sizeWithScrollBar = offsetSize - inset; const scrollBarSize = Math.round(sizeWithScrollBar) - element.clientWidth; return new DimensionInfo(offsetSize, sizeWithScrollBar - scrollBarSize, scrollBarSize); } static getClientWidth(element) { return this.getWidthInfo(element).clientSize; } static getHeightInfo(element) { const offsetSize = SizeUtils.getOffsetHeight(element); const style = getComputedStyle(element); const inset = parseCssValue(style.borderTopWidth) + parseCssValue(style.borderBottomWidth) + parseCssValue(style.paddingTop) + parseCssValue(style.paddingBottom); const sizeWithScrollBar = offsetSize - inset; const scrollBarSize = Math.round(sizeWithScrollBar) - element.clientHeight; return new DimensionInfo(offsetSize, sizeWithScrollBar - scrollBarSize, scrollBarSize); } static getClientHeight(element) { return this.getHeightInfo(element).clientSize; } static getOffsetSize(element) { return element.getBoundingClientRect(); } static getOffsetWidth(element) { return SizeUtils.getOffsetSize(element).width; } static getOffsetHeight(element) { return SizeUtils.getOffsetSize(element).height; } } function parseCssValue(value) { return value ? parseFloat(value) : 0; } export class DimensionInfo { constructor(offsetSize, clientSize, scrollbarSize) { this.offsetSize = offsetSize; this.clientSize = clientSize; this.scrollbarSize = scrollbarSize; } }