@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
50 lines (47 loc) • 1.41 kB
JavaScript
function scaleRem(remValue) {
if (remValue === "0rem") {
return "0rem";
}
return `calc(${remValue} * var(--mantine-scale))`;
}
function createConverter(units, { shouldScale = false } = {}) {
function converter(value) {
if (value === 0 || value === "0") {
return `0${units}`;
}
if (typeof value === "number") {
const val = `${value / 16}${units}`;
return shouldScale ? scaleRem(val) : val;
}
if (typeof value === "string") {
if (value === "") {
return value;
}
if (value.startsWith("calc(") || value.startsWith("clamp(") || value.includes("rgba(")) {
return value;
}
if (value.includes(",")) {
return value.split(",").map((val) => converter(val)).join(",");
}
if (value.includes(" ")) {
return value.split(" ").map((val) => converter(val)).join(" ");
}
if (value.includes(units)) {
return shouldScale ? scaleRem(value) : value;
}
const replaced = value.replace("px", "");
if (!Number.isNaN(Number(replaced))) {
const val = `${Number(replaced) / 16}${units}`;
return shouldScale ? scaleRem(val) : val;
}
}
return value;
}
return converter;
}
const rem = createConverter("rem", { shouldScale: true });
const em = createConverter("em");
exports.em = em;
exports.rem = rem;
//# sourceMappingURL=rem.cjs.map
;