export function parseFontSize(fontSize) {
    return parseCSSAbsoluteUnit(fontSize.toLowerCase());
}
export function parseBorderWidth(width, fontSize, rootFontSize) {
    width = width.toLowerCase();
    var pixels = parseCSSAbsoluteUnit(width);
    if (pixels !== null) {
        return pixels;
    }
    return parseCSSFontRelativeUnit(width, fontSize, rootFontSize);
}
var CSS_ABSOLUTE_UNIT_REGEXP = /(^-?\d*\.?\d+)(cm|mm|in|px|pt|pc)$/;
function parseCSSAbsoluteUnit(value) {
    var result = CSS_ABSOLUTE_UNIT_REGEXP.exec(value);
    if (result) {
        var val = parseFloat(result[1]);
        switch (result[2]) {
            case 'cm':
                return (val * 9600) / 254;
            case 'mm':
                return (val * 960) / 254;
            case 'in':
                return val * 96;
            case 'pt':
                return (val * 4) / 3;
            case 'pc':
                return val * 16;
            case 'px':
                return val;
            default:
                return null;
        }
    }
    return null;
}
var CSS_FONT_RELATIVE_UNIT_REGEXP = /(^-?\d*\.?\d+)(em|rem)$/;
function parseCSSFontRelativeUnit(value, fontSize, rootFontSize) {
    var result = CSS_FONT_RELATIVE_UNIT_REGEXP.exec(value);
    if (result) {
        var val = parseFloat(result[1]);
        switch (result[2]) {
            case 'em': {
                var fs = fontSize();
                return fs !== null ? fs * val : null;
            }
            case 'rem': {
                var fs = rootFontSize();
                return fs !== null ? fs * val : null;
            }
            default:
                return null;
        }
    }
    return null;
}
