aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/convertToCSSPTValue.js
blob: 179557953b0810d738ad1c2e1c41b08ea03ec620 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.PT_TO_PX_RATIO = exports.PX_TO_PT_RATIO = undefined;
exports.default = convertToCSSPTValue;
exports.toClosestFontPtSize = toClosestFontPtSize;

// var _FontSizeCommandMenuButton = require('./ui/FontSizeCommandMenuButton');

var SIZE_PATTERN = /([\d\.]+)(px|pt)/i;

var PX_TO_PT_RATIO = exports.PX_TO_PT_RATIO = 0.7518796992481203; // 1 / 1.33.
var PT_TO_PX_RATIO = exports.PT_TO_PX_RATIO = 1.33;

function convertToCSSPTValue(styleValue) {
    var matches = styleValue.match(SIZE_PATTERN);
    if (!matches) {
        return 0;
    }
    var value = parseFloat(matches[1]);
    var unit = matches[2];
    if (!value || !unit) {
        return 0;
    }
    if (unit === 'px') {
        value = PX_TO_PT_RATIO * value;
    }
    return value;
}

function toClosestFontPtSize(styleValue) {
    var originalPTValue = convertToCSSPTValue(styleValue);

    // if (_FontSizeCommandMenuButton.FONT_PT_SIZES.includes(originalPTValue)) {
    //     return originalPTValue;
    // }

    return _FontSizeCommandMenuButton.FONT_PT_SIZES.reduce(function (prev, curr) {
        return Math.abs(curr - originalPTValue) < Math.abs(prev - originalPTValue) ? curr : prev;
    }, Number.NEGATIVE_INFINITY);
}