@mapcss/preset-typography
Version:
Typography preset for MapCSS
33 lines (32 loc) • 1.2 kB
JavaScript
import { re$PositiveNumber } from "../../core/utils/regexp.js";
import { parseNumeric } from "../../core/utils/monad.js";
import { transformValue } from "./_utils.js";
import { customProperty, ratio, shortDecimal, } from "../../core/utils/format.js";
import { associateWith } from "../../deps.js";
function handleScale(properties, value, varPrefix) {
return parseNumeric(value).map(ratio).map(shortDecimal).match({
some: (v) => ({
...associateWith(properties.map((property) => customProperty(property, varPrefix)), () => v),
transform: transformValue(varPrefix),
}),
none: undefined,
});
}
export const scale = [
["x", [
[
re$PositiveNumber,
([, pNumber], { variablePrefix }) => handleScale(["scale-x"], pNumber, variablePrefix),
],
]],
["y", [
[
re$PositiveNumber,
([, pNumber], { variablePrefix }) => handleScale(["scale-y"], pNumber, variablePrefix),
],
]],
[
re$PositiveNumber,
([, pNumber], { variablePrefix }) => handleScale(["scale-x", "scale-y"], pNumber, variablePrefix),
],
];