@mapcss/preset-svg
Version:
SVG as CSS for MapCSS
34 lines (33 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCSSObject = void 0;
const _utils_js_1 = require("./_utils.js");
const format_js_1 = require("../core/utils/format.js");
const deps_js_1 = require("../deps.js");
const format_js_2 = require("../core/utils/format.js");
function createCSSObject(svgMarkup, { declaration }) {
return (_, { variablePrefix }) => {
const scale = "1";
const data = `"data:image/svg+xml;utf8,${(0, _utils_js_1.encodeSvg)(svgMarkup)}"`;
const $cssFn = (0, deps_js_1.curry)(format_js_1.cssFn);
const urlFn = $cssFn("url");
const varFn = $cssFn("var");
const url = (0, deps_js_1.chain)(data).map(urlFn).unwrap();
const varIcon = (0, format_js_2.stringifyCustomProperty)("icon", variablePrefix);
const varFnIcon = varFn(varIcon);
const mask = `${varFnIcon} no-repeat`;
const maskSize = "100% 100%";
return {
[varIcon]: url,
mask,
WebkitMask: mask,
maskSize,
WebkitMaskSize: maskSize,
backgroundColor: "currentColor",
height: `${scale}em`,
width: `${scale}em`,
...declaration,
};
};
}
exports.createCSSObject = createCSSObject;