@mapcss/preset-typography
Version:
Typography preset for MapCSS
64 lines (63 loc) • 2.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.outline = void 0;
const _utils_js_1 = require("./_utils.js");
const resolve_js_1 = require("../../core/resolve.js");
const deps_js_1 = require("../../deps.js");
const regexp_js_1 = require("../../core/utils/regexp.js");
const monad_js_1 = require("../../core/utils/monad.js");
const format_js_1 = require("../../core/utils/format.js");
function toOutlineColor(color) {
return { "outline-color": color };
}
exports.outline = [
["DEFAULT", { "outline-style": "solid" }],
["none", { outline: "2px solid transparent", "outline-offset": "2px" }],
["dashed", { "outline-style": "dashed" }],
["dotted", { "outline-style": "dotted" }],
["double", { "outline-style": "double" }],
["hidden", { "outline-style": "hidden" }],
["offset", [[
regexp_js_1.re$Numeric,
([, numeric]) => (0, monad_js_1.parseNumeric)(numeric).map(_utils_js_1.pxify).match((0, _utils_js_1.matcher)("outline-offset")),
]]],
[
regexp_js_1.re$Numeric,
([, numeric]) => (0, monad_js_1.parseNumeric)(numeric).map(_utils_js_1.pxify).match((0, _utils_js_1.matcher)("outline-width")),
],
[regexp_js_1.re$AllPer$PositiveNumber, ([, body, numeric], context) => {
const color = (0, resolve_js_1.resolveTheme)(body, "color", context);
if ((0, deps_js_1.isUndefined)(color))
return;
return (0, monad_js_1.parseNumeric)(numeric).match({
some: (number) => (0, monad_js_1.parseColor)(color).map((0, format_js_1.completionRGBA)((0, format_js_1.ratio)(number))).map(format_js_1.rgbFn).match({
some: toOutlineColor,
none: undefined,
}),
none: undefined,
});
}],
[regexp_js_1.re$AllPerBracket_$, ([, body, alpha], context) => {
const color = (0, resolve_js_1.resolveTheme)(body, "color", context);
if ((0, deps_js_1.isUndefined)(color))
return;
return (0, monad_js_1.parseColor)(color).map(({ r, g, b }) => ({ r, g, b, a: alpha })).map(format_js_1.rgbFn).match({
some: toOutlineColor,
none: undefined,
});
}],
[
regexp_js_1.re$All,
([body], context) => {
const color = (0, resolve_js_1.resolveTheme)(body, "color", context);
if ((0, deps_js_1.isUndefined)(color))
return;
return (0, monad_js_1.parseColor)(color).map((0, format_js_1.completionRGBA)(1, true))
.map(format_js_1.rgbFn)
.match({
some: toOutlineColor,
none: () => ({ "outline-color": color }),
});
},
],
];