@formant/ava-react
Version:
React components of AVA.
30 lines • 1.25 kB
JavaScript
import { seedToken } from "../../theme";
function getStyle(ele, style) {
var _ele$currentStyle;
// @ts-ignore currentStyle for IE
return window.getComputedStyle ? window.getComputedStyle(ele, null)[style] : ele === null || ele === void 0 || (_ele$currentStyle = ele.currentStyle) === null || _ele$currentStyle === void 0 ? void 0 : _ele$currentStyle[style];
}
function isAbsoluteUnitPx(str) {
return str === null || str === void 0 ? void 0 : str.endsWith('px');
}
function getPxNumber(str) {
var removeUnit = str.replace(/px$/, '');
var resultNumber = Number(removeUnit);
if (!Number.isNaN(resultNumber)) return resultNumber;
return undefined;
}
export function getElementFontSize(ele) {
var defaultSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : seedToken.fontSizeBase;
var FONT_SIZE = 'font-size';
var eleFontSizeStr = getStyle(ele, FONT_SIZE);
if (eleFontSizeStr && isAbsoluteUnitPx(eleFontSizeStr)) {
var px = getPxNumber(eleFontSizeStr);
if (px) return px;
}
var bodyFontSizeStr = getStyle(window.document.body, FONT_SIZE);
if (bodyFontSizeStr && isAbsoluteUnitPx(bodyFontSizeStr)) {
var _px = getPxNumber(bodyFontSizeStr);
if (_px) return _px;
}
return defaultSize;
}