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
JavaScript
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;
}
}