@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
34 lines (33 loc) • 1.24 kB
JavaScript
//#region packages/@mantine/core/src/core/utils/units-converters/rem.ts
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(" ");
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");
//#endregion
exports.em = em;
exports.rem = rem;
//# sourceMappingURL=rem.cjs.map