@antv/g2
Version:
the Grammar of Graphics in Javascript
74 lines (63 loc) • 1.76 kB
text/typescript
import { MIN_CHART_HEIGHT, MIN_CHART_WIDTH } from '../constant';
import { Size } from '../interface';
/**
* get the element's bounding size
* @param ele dom element
* @returns the element width and height
*/
function getElementSize(ele: HTMLElement): Size {
const style = getComputedStyle(ele);
return {
width:
(ele.clientWidth || parseInt(style.width, 10)) -
parseInt(style.paddingLeft, 10) -
parseInt(style.paddingRight, 10),
height:
(ele.clientHeight || parseInt(style.height, 10)) -
parseInt(style.paddingTop, 10) -
parseInt(style.paddingBottom, 10),
};
}
/**
* is value a valid number
* @param v the input value
* @returns whether it is a number
*/
function isNumber(v: any): boolean {
return typeof v === 'number' && !isNaN(v);
}
/**
* @ignore
* calculate the chart size
* @param ele DOM element
* @param autoFit should auto fit
* @param width chart width which is set by user
* @param height chart height which is set by user
* @returns the chart width and height
*/
export function getChartSize(ele: HTMLElement, autoFit: boolean, width: number, height: number): Size {
let w = width;
let h = height;
if (autoFit) {
const size = getElementSize(ele);
w = size.width ? size.width : w;
h = size.height ? size.height : h;
}
return {
width: Math.max(isNumber(w) ? w : MIN_CHART_WIDTH, MIN_CHART_WIDTH),
height: Math.max(isNumber(h) ? h : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT),
};
}
/**
* @ignore
* remove html element from its parent
* @param dom
*/
export function removeDom(dom: HTMLElement) {
const parent = dom.parentNode;
if (parent) {
parent.removeChild(dom);
}
}
/** @ignore */
export { createDom, modifyCSS } from '@antv/dom-util';