Files

33 lines
810 B
JavaScript

.pragma library
const PERCENT = "%";
const PIXELS = "px";
function parse(value) {
const parts = String(value || "").trim().split(/\s+/);
if (parts[0] !== "proportion")
return {
unit: PIXELS,
amount: parts[parts.length - 1] || ""
};
const fraction = parseFloat(parts[1]);
return {
unit: PERCENT,
amount: isNaN(fraction) ? "" : String(Math.round(fraction * 10000) / 100)
};
}
function format(unit, amount) {
const number = parseFloat(amount);
if (isNaN(number) || number <= 0)
return "";
if (unit === PERCENT)
return "proportion " + Math.round(number * 100) / 10000;
return "fixed " + Math.round(number);
}
function label(value) {
const size = parse(value);
return size.amount + size.unit;
}