IOweb/node_modules/@iconify/tools/lib/svg/cleanup/svgo-style.cjs
2026-07-03 15:07:38 -05:00

43 lines
1.3 KiB
JavaScript

'use strict';
const svg_data_attributes = require('../data/attributes.cjs');
const svg_parseStyle = require('../parse-style.cjs');
const optimise_svgo = require('../../optimise/svgo.cjs');
require('../data/tags.cjs');
require('../../css/parse.cjs');
require('../../css/parser/tokens.cjs');
require('../../css/parser/error.cjs');
require('../../css/parser/strings.cjs');
require('../../css/parser/text.cjs');
require('../../css/parser/export.cjs');
require('../../css/parser/tree.cjs');
require('../parse.cjs');
require('svgo');
require('@iconify/utils/lib/svg/id');
function convertStyleToAttrs(svg) {
let hasStyle = false;
svg_parseStyle.parseSVGStyle(svg, (item) => {
if (item.type !== "inline" && item.type !== "global") {
return item.value;
}
const prop = item.prop;
if (
// Attributes / properties now allowed
svg_data_attributes.badAttributes.has(prop) || svg_data_attributes.badSoftwareAttributes.has(prop) || svg_data_attributes.badAttributePrefixes.has(prop.split("-").shift())
) {
return;
}
hasStyle = true;
return item.value;
});
if (!hasStyle) {
return;
}
optimise_svgo.runSVGO(svg, {
plugins: ["convertStyleToAttrs", "inlineStyles"],
multipass: true
});
}
exports.convertStyleToAttrs = convertStyleToAttrs;