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

41 lines
1.2 KiB
JavaScript

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